/* admin.css — 관리. app.css 에서 주제별로 나눔; layout.html 이 base → … 순서로 전부 링크한다. */
  .srow .logo { width: 34px; height: 34px; flex-basis: 34px; }
  .secrets { padding: 12px 16px 8px; }
  .secrets .sec { display: flex; align-items: center; gap: 8px; padding: 6px 0; flex-wrap: wrap; }
  .secrets .sec .k { min-width: 110px; color: var(--muted); font-size: 14px; }
  .secrets .sec .v { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 14px; letter-spacing: 1px; background: var(--bg); border: 1px solid var(--line); border-radius: 4px; padding: 4px 10px; min-width: 120px; }
  .secrets .sec .v.shown { letter-spacing: 0; background: #fff8e6; }
  .secrets .btn.sm { height: 28px; padding: 0 10px; font-size: 13px; cursor: pointer; }
  .srow { display: grid; grid-template-columns: 60px 70px 1fr 130px 1fr 130px; align-items: center; padding: 12px; border-bottom: 1px solid var(--line); gap: 8px; }
  .srow .t { font-weight: 700; }
  .srow .st { color: var(--muted); font-size: 13px; }
  .srow .team { font-weight: 700; font-size: 16px; }
  .srow .team small { display: block; font-weight: 400; color: var(--muted); font-size: 13px; }
  .srow .team .nm { line-height: 1.15; }
  .srow .team.r { text-align: right; display: flex; justify-content: flex-end; align-items: center; gap: 8px; }
  .srow .team.l { text-align: left; display: flex; align-items: center; gap: 8px; }
  .srow .mid { text-align: center; }
  .srow .mid .sc { font-size: 18px; font-weight: 800; }
  .srow .mid .sc small { font-size: 12px; color: var(--red); margin: 0 6px; }
  .srow .mid .pending { color: var(--blue); font-weight: 600; }
  .srow .mid .cancel { color: var(--red); font-weight: 600; }
  .srow .pk { text-align: right; font-size: 13px; }
  @media (max-width: 700px) {
    .srow { grid-template-columns: 44px minmax(0, 1fr) 76px minmax(0, 1fr); gap: 4px; padding: 10px 6px; }
    .srow .st, .srow .pk { display: none; }
    .srow .team { font-size: 14px; min-width: 0; }
    .srow .team .nm { min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
    .srow .mid .sc { font-size: 16px; }
    .srow .logo { width: 28px; height: 28px; flex-basis: 28px; }
  }
/* 관리 · 수집 현황: 운영 칩 · 그룹 접기 · 내용 칸 줄바꿈(가로 스크롤 대신) */
/* 관리 > 수집 현황: 문제 배너 + 소스별 한 줄(아이콘·이름·요약·갱신) + 접힌 그룹 + 작은 꼬리말 */
  .issues { margin: 0 16px 8px; padding: 8px 12px; border-radius: 6px; background: #fdeeee; border: 1px solid #f2c9c9; font-size: 13px; color: #8a2b2b; }
  .issues div + div { margin-top: 3px; }
  .issues.ok { background: #eef8f1; border-color: #bfe3c9; color: #1f6b3a; }
  .slist { padding: 0 4px; }
  .srow { display: flex; align-items: center; gap: 10px; padding: 7px 12px; border-top: 1px solid var(--line); font-size: 14px; }
  .srow i { font-style: normal; width: 18px; text-align: center; flex-shrink: 0; }
  .srow b { width: 150px; flex-shrink: 0; }
  .srow .d { flex: 1; min-width: 0; color: var(--text); word-break: keep-all; }
  .srow .t { color: var(--muted); font-size: 12px; white-space: nowrap; flex-shrink: 0; font-variant-numeric: tabular-nums; }
  .srow.stale b { color: var(--gold-text); }
  .srow.none b { color: var(--red); }
  .srow.unused { opacity: .55; }
  details.sgrp { border-top: 1px solid var(--line); }
  details.sgrp summary { cursor: pointer; padding: 8px 16px; font-weight: 700; color: var(--navy); }
  details.sgrp summary small { color: var(--muted); font-weight: 400; margin-left: 6px; }
  .sfoot { display: flex; flex-wrap: wrap; gap: 4px 14px; padding: 8px 16px 10px; border-top: 1px solid var(--line); font-size: 12px; color: var(--muted); }
  .sfoot .lg { width: 100%; }
  .sfoot code { font-size: 11px; }
  @media (max-width: 700px) {
    .srow { flex-wrap: wrap; gap: 3px 8px; }
    .srow b { width: auto; }
    .srow .t { margin-left: auto; order: 2; }
    .srow .d { order: 3; flex-basis: 100%; padding-left: 26px; font-size: 13px; }
  } /* 모바일: 아이콘·이름 … 시각 / 둘째 줄 요약 */
/* 관리 화면 개편 (2026-10-04): 머리 카드 + 1단 탭, 수집 현황 숫자 카드·상태 점, 회원 닉네임 → 포인트 선물 모달 */
  .adm .card { margin: 12px 0 0; }
  .adm .ahead { margin: 0; }
  .adm .ah { display: flex; align-items: baseline; gap: 8px; padding: 14px 16px 4px; }
  .adm .ah b { font-size: 18px; color: var(--navy); }
  .adm .ah small { color: var(--muted); font-size: 13px; }
  .adm .aflash { margin: 8px 16px 0; padding: 8px 12px; border-radius: 8px; font-size: 14px; }
  .adm .aflash.ok { background: #eef8f1; border: 1px solid #bfe3c9; color: #1f6b3a; }
  .adm .aflash.err { background: #fdeeee; border: 1px solid #f2c9c9; color: #8a2b2b; }
  .adm .ahead .subtabs { margin-top: 8px; }
  .adm .ch { padding: 12px 16px 8px; font-weight: 700; color: var(--navy); font-size: 15px; }
  .adm .ch small { font-weight: 400; color: var(--muted); font-size: 13px; margin-left: 6px; }
  .adm .akpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; margin-top: 12px; }
  .adm .akpis .kpi { display: flex; flex-direction: column; gap: 2px; padding: 12px 14px; min-width: 0; }
  .adm .akpis .kpi span { font-size: 12px; }
  .adm .akpis .kpi b { font-size: 20px; }
  .adm .akpis .kpi b.pos { color: var(--green); }
  .adm .akpis .kpi b.neg { color: var(--red); }
  .adm .akpis .kpi small { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .adm .issues { margin: 12px 0 0; }
  .adm .sdot { display: inline-block; width: 9px; height: 9px; border-radius: 50%; background: #22a559; flex: none; }
  .adm .srow i.sdot { width: 9px; }
  .adm .srow.stale .sdot, .adm .sdot.stale { background: #e3a008; }
  .adm .srow.none .sdot, .adm .sdot.none { background: transparent; border: 2px solid var(--red); box-sizing: border-box; }
  .adm .srow.unused .sdot, .adm .sdot.unused { background: #c0c5cd; }
  .adm .srow b { width: 170px; font-weight: 600; }
  .adm .srow.stale b { color: var(--gold-text); }
  .adm .sfoot .lg { display: flex; align-items: center; gap: 4px 6px; flex-wrap: wrap; }
  .adm .sfoot .lg .sdot { margin-left: 6px; }
  .adm .sfoot .lg .sdot:first-child { margin-left: 0; }
  .adm b.neg { color: var(--red); }
  .adm table.amem td, .adm table.amem th { padding: 9px 10px; }
  .adm table.amem .r { text-align: right; }
  .adm table.amem .mut { color: var(--muted); font-size: 13px; white-space: nowrap; }
  .adm .nick { border: 0; background: none; padding: 4px 0; font: inherit; font-weight: 700; color: var(--blue); cursor: pointer; text-decoration: underline; text-underline-offset: 3px; text-decoration-color: #bcd0f0; }
  .adm .danger .ch { color: var(--red); }
  .adm .warn { margin: 0 0 8px; padding: 8px 12px; background: var(--red-bg); border: 1px solid #f1b8b5; border-radius: 8px; font-size: 13px; color: var(--red); }
  .adm label small { font-weight: 400; color: var(--muted); }
  .gmodal { position: fixed; inset: 0; z-index: 90; display: flex; align-items: center; justify-content: center; }
  .gmodal[hidden] { display: none; }
  .gmodal .bd { position: absolute; inset: 0; background: rgba(15, 23, 42, .45); }
  .gmodal .pn { position: relative; width: min(400px, calc(100vw - 24px)); background: #fff; border-radius: 12px; box-shadow: 0 12px 40px rgba(0,0,0,.25); overflow: hidden; }
  .gmodal .gh { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; border-bottom: 1px solid var(--line); }
  .gmodal .gh b { font-size: 16px; color: var(--navy); }
  .gmodal .gh .x { border: 0; background: none; font-size: 18px; color: var(--muted); cursor: pointer; padding: 4px 8px; }
  .gmodal .gb { padding: 12px 16px 4px; display: flex; flex-direction: column; gap: 6px; max-height: calc(100vh - 160px); overflow-y: auto; }   /* 회원 관리 모달은 칸이 넷이라 짧은 화면에서 잘렸다 */
  .gmodal .gb > form { flex: none; }
  .gmodal .gbal { font-size: 13px; color: var(--muted); margin-bottom: 4px; }
  .gmodal .gbal b { color: var(--text); margin-left: 4px; }
  .gmodal label { font-size: 13px; font-weight: 700; color: var(--text-3); margin-top: 4px; }
  .gmodal input { height: 42px; padding: 0 12px; border: 1px solid var(--line-strong); border-radius: 8px; font: inherit; font-size: 15px; }
  .gmodal input[type=number] { text-align: right; font-weight: 700; }
  .gmodal .quick { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; }
  .gmodal .quick a { text-align: center; padding: 7px 0; border: 1px solid var(--line-strong); border-radius: 6px; font-size: 13px; cursor: pointer; }
  .gmodal .gf { display: flex; gap: 8px; padding: 14px 16px 16px; }
  .gmodal .gf .btn { flex: 1; height: 44px; border-radius: 8px; font-size: 15px; }
  @media (max-width: 700px) {
    .adm .akpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .adm .srow b { width: auto; }
    table.amem .m-hide { display: none; }
  }
  .botinfo { padding: 4px 14px 10px; }
  details.botcard > summary { cursor: pointer; list-style: none; display: flex; align-items: baseline; flex-wrap: wrap; gap: 0 6px; } details.botcard > summary::-webkit-details-marker { display: none; }
  details.botcard > summary::after { content: "펼치기 ▾"; margin-left: auto; font-size: 12px; font-weight: 600; color: var(--blue); } details.botcard[open] > summary::after { content: "접기 ▴"; }
  .botinfo .bi { padding: 8px 0; border-top: 1px solid var(--line); }
  .botinfo .bi:first-child { border-top: 0; }
  .botinfo .bi p { margin: 4px 0 2px; font-size: 13px; line-height: 1.5; }
  .botinfo .bi small { color: var(--muted); font-size: 12px; }
  /* 관리 · 성향 분포 (10/14) */
  .adm .tdist { display: grid; gap: 6px; padding: 0 16px 12px; }
  .adm .tdist > div { display: grid; grid-template-columns: 110px 1fr 44px 36px; align-items: center; gap: 8px; font-size: 13px; }
  .adm .tdist i { display: block; height: 10px; border-radius: 5px; background: var(--blue); }
  .adm .tdist b { text-align: right; } .adm .tdist small { color: var(--muted); text-align: right; }
  .adm .tmiss { padding: 0 16px 14px; font-size: 13px; color: var(--muted); line-height: 1.6; } .adm .tmiss b { color: var(--navy); margin-right: 6px; }
  /* 참가자별 (10/14 모바일 가독성): 표 대신 카드 — 이름·대표 성향 / 수치 4개 / 후보 점수 칩. PC 는 2열 */
  .adm .tplist { display: grid; grid-template-columns: 1fr; gap: 8px; padding: 0 12px 12px; }
  @media (min-width: 760px) { .adm .tplist { grid-template-columns: 1fr 1fr; } }
  .adm .tp { padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; background: var(--white); min-width: 0; }
  .adm .tp.wait { background: var(--surface); }
  .adm .tp-h { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
  .adm .tp-who { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 14px; font-weight: 700; color: var(--text); }
  .adm .tp-t { flex: none; font-size: 14px; font-weight: 800; color: var(--navy); }
  .adm .tp.wait .tp-t { color: var(--muted); font-weight: 700; }
  .adm .tp-m { display: flex; flex-wrap: wrap; gap: 4px 12px; margin-top: 6px; font-size: 12px; color: var(--muted); }
  .adm .tp-m b { color: var(--text); font-weight: 700; }
  .adm .tp-m .sp { color: #1f6391; font-weight: 700; }
  .adm .tp-c { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 8px; }
  .adm .tp-c span { padding: 2px 8px; border-radius: 10px; background: var(--soft, #e9edf4); font-size: 12px; color: var(--slate); white-space: nowrap; }
  .adm .tp-c span b { color: var(--navy); font-weight: 800; }
  .adm .tp-c span.on { background: var(--navy); color: #fff; } .adm .tp-c span.on b { color: #fff; }
  @media (max-width: 700px) { .adm .tdist { padding: 0 12px 12px; } .adm .tdist > div { grid-template-columns: 96px 1fr 38px 32px; gap: 6px; } .adm .tmiss { padding: 0 12px 12px; } }
/* FA 시장 PoC (/admin/fa, 10/15) — 관리자 전용 */
  .fa .sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .fa .ah { align-items: center; flex-wrap: wrap; }
  .fa .faback { font-size: 13px; font-weight: 700; color: var(--muted); text-decoration: none; margin-right: 4px; }
  .fa .poc { background: var(--amber-bg); color: var(--amber); font-weight: 700; padding: 1px 7px; border-radius: 6px; }
  .fa .fays { margin-left: auto; } .fa .fays select { height: 32px; font-size: 13px; }
  .fa .farun { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; padding: 4px 16px 14px; font-size: 13px; color: var(--text-2); }
  .fa .farun form { margin-left: auto; } .fa .farun .btn { height: 36px; }
  .fa .btn.ghost { background: none; color: var(--muted); }
  .fa .pos { color: var(--green); } .fa .neg { color: var(--red); }
  .fa .fapend { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 4px 12px; padding: 12px 16px; border-top: 1px solid var(--line); align-items: center; }
  .fa .fapend .fpw small, .fa .fapend .fps { color: var(--muted); font-size: 12.5px; }
  .fa .fapend .fpc { grid-column: 1; font-size: 14px; } .fa .fapend .fps { grid-column: 1; }
  .fa .fapend .fpa { grid-column: 2; grid-row: 1 / span 3; display: flex; gap: 6px; }
  .fa .falg { display: flex; flex-wrap: wrap; gap: 4px 14px; padding: 0 16px 6px; font-size: 12.5px; color: var(--text-3); }
  .fa .falg i, .fa .stk i { display: inline-block; }
  .fa .falg i { width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; vertical-align: -1px; }
  .fa .s1 { background: #2a78d6; } .fa .s2 { background: #eb6834; } .fa .s3 { background: #1baf7a; } .fa .s0 { background: #c3c9d4; }   /* 계약금·연봉·옵션 = 범주 팔레트 1~3번 (검증된 순서) */
  .fa .farow { display: grid; grid-template-columns: 22px 170px minmax(0, 1fr) 96px; align-items: center; gap: 12px; padding: 7px 16px; }
  .fa .farow .n, .fa .fahr .n { font-weight: 800; color: var(--navy); text-align: center; }
  .fa .farow .who { display: flex; flex-direction: column; min-width: 0; } .fa .farow .who small { color: var(--text-2); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .fa .stk { display: flex; gap: 2px; height: 18px; min-width: 6px; }
  .fa .stk i { height: 18px; } .fa .stk i:first-child { border-radius: 4px 0 0 4px; } .fa .stk i:last-child { border-radius: 0 4px 4px 0; } .fa .stk i:only-child { border-radius: 4px; }
  .fa .tot { text-align: right; font-weight: 800; white-space: nowrap; } .fa .tot small { display: block; font-size: 11.5px; font-weight: 500; color: var(--muted); }
  .fa .fapl { border-top: 1px solid var(--line); }
  .fa .fapl > summary { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 10px; padding: 11px 16px; cursor: pointer; list-style: none; }
  .fa .fapl > summary::-webkit-details-marker { display: none; }
  .fa .fapl > summary small { color: var(--muted); font-size: 12.5px; }
  .fa .fst { margin-left: auto; font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 6px; background: var(--hover); color: var(--text-2); }
  .fa .fst.neg { background: var(--amber-bg); color: var(--amber); } .fa .fst.signed { background: var(--blue-light); color: var(--blue); }
  .fa .famt { font-size: 13px; font-weight: 700; min-width: 90px; text-align: right; }
  .fa .fcf { font-style: normal; font-size: 11px; font-weight: 700; padding: 1px 6px; border-radius: 6px; background: var(--hover); color: var(--text-2); }
  .fa .fcf.neg { background: var(--red-bg); color: var(--red); }
  .fa .faed { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 4px 16px 14px; }
  .fa .faed label { display: flex; flex-direction: column; gap: 3px; font-size: 12px; color: var(--text-2); }
  .fa .faed input, .fa .faed select { height: 36px; font-size: 14px; }
  .fa .faed .fab { grid-column: 1 / -1; display: flex; gap: 8px; }
  .fa .fatx { display: flex; flex-direction: column; gap: 8px; padding: 0 16px 14px; } .fa .fatx textarea { font: inherit; font-size: 14px; padding: 8px 10px; }
  .fa .fatx .btn { align-self: flex-start; }
  .fa .fanw { display: flex; flex-direction: column; gap: 2px; padding: 10px 16px; border-top: 1px solid var(--line); color: var(--text); text-decoration: none; }
  .fa .fanw:hover { background: var(--surface-2); } .fa .fanw small { color: var(--muted); font-size: 12px; } .fa .fanw small i { font-style: normal; color: var(--blue); }
  .fa .fahr { display: grid; grid-template-columns: 22px minmax(0, 1fr) 96px; gap: 10px; align-items: center; padding: 7px 16px; border-top: 1px solid var(--line); }
  .fa .fahr small { color: var(--muted); font-size: 12px; }
  @media (max-width: 700px) {
    .fa .farow { grid-template-columns: 18px minmax(0, 1fr) 80px; } .fa .farow .stk { grid-column: 2 / 4; grid-row: 2; }
    .fa .faed { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .fa .fapend { grid-template-columns: minmax(0, 1fr); } .fa .fapend .fpa { grid-column: 1; grid-row: auto; }
  }
/* 예매 시계 (/admin/clock, 10/15) — 관리자 전용. 10/15 개편: 글은 줄이고 시계·카운트다운을 크게, 설명은 ⓘ 로 */
  .clk .chead { display: flex; align-items: center; gap: 8px; padding: 4px 2px 12px; }
  .clk .chead b { font-size: 20px; color: var(--navy); }
  .clk .faback { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 8px; font-size: 22px; color: var(--muted); text-decoration: none; }
  .clk .faback:hover { background: var(--hover); }
  .clk .poc { margin-left: auto; background: var(--amber-bg); color: var(--amber); font-weight: 700; font-size: 12px; padding: 2px 8px; border-radius: 6px; }
  .clk .tip { margin-left: 0; }
  .clk .tip .ti { display: block; } .clk .tip .ti + .ti { margin-top: 4px; }
  .clk .card { border-radius: 14px; }
  .clk .clkmain { padding: 18px 16px 22px; display: flex; flex-direction: column; align-items: center; gap: 10px; }
  .clk .csw { display: inline-flex; border: 1px solid var(--line-strong); border-radius: 999px; overflow: hidden; background: #fff; }   /* 사이트 공통 .seg(높이 30px·overflow hidden)와 이름이 겹쳐 버튼이 잘렸다 (10/15) → 따로 */
  .clk .csw button { -webkit-appearance: none; appearance: none; margin: 0; height: 40px; min-width: 104px; padding: 0 16px; border: 0; background: none; font: inherit; font-size: 14px; font-weight: 700; color: var(--muted); cursor: pointer; line-height: 1; }
  .clk .csw button + button { border-left: 1px solid var(--line); }
  .clk .csw button.on { background: var(--navy); color: #fff; }
  .clk .cbig { margin-top: 6px; font-size: clamp(48px, 14vw, 84px); font-weight: 800; letter-spacing: -2px; line-height: 1; font-variant-numeric: tabular-nums; color: var(--text); }
  .clk .cbig small, .clk .cdbig small { font-size: .42em; font-weight: 700; letter-spacing: 0; color: var(--muted); margin-left: 2px; }
  .clk .cmeta { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); }
  .clk .cmeta .bad { color: var(--red); } .clk .cmeta .warn { color: var(--amber); } .clk .cmeta .note { color: var(--blue); font-weight: 700; }
  .clk .cre.spin svg { animation: clkspin .8s linear infinite; } @keyframes clkspin { to { transform: rotate(360deg); } }
  .clk .cre { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: 0; border-radius: 8px; background: none; color: var(--blue); cursor: pointer; }
  .clk .cre:hover { background: var(--blue-light); } .clk .cre:disabled { color: var(--line-strong); }
  .clk .cdev { font-size: 14px; color: var(--text-2); background: var(--surface-2); border-radius: 999px; padding: 6px 14px; }
  .clk .cdev b { color: var(--navy); } .clk .cdev.warn { background: var(--amber-bg); } .clk .cdev.warn b { color: var(--amber); }
  .clk .cstd { font-size: 12px; color: var(--text-3); margin-top: 6px; text-align: center; } .clk .cstd:empty { display: none; } .clk .cstd.bad { color: var(--amber); }
  .clk .clkcd { padding: 16px; display: flex; flex-direction: column; gap: 12px; }
  .clk .cdh { display: flex; align-items: center; } .clk .cdh b { font-size: 16px; color: var(--navy); }
  .clk .cbeep { margin-left: auto; display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--text-2); cursor: pointer; }
  .clk .cdbig { display: flex; align-items: baseline; justify-content: center; min-height: 92px; align-items: center; border-radius: 12px; background: var(--surface-2); font-size: clamp(40px, 12vw, 64px); font-weight: 800; letter-spacing: -1px; font-variant-numeric: tabular-nums; color: var(--navy); transition: background .2s; }
  .clk .cdempty { font-size: 15px; font-weight: 600; letter-spacing: 0; color: var(--muted); }
  .clk .clkcd.soon .cdbig { background: var(--red-bg); color: var(--red-strong); }
  .clk .clkcd.open .cdbig { background: var(--green-bg); color: var(--green); }
  .clk .cdset { display: flex; flex-direction: column; gap: 8px; }
  .clk .cdbig em { font-style: normal; font-size: .55em; color: var(--text-2); margin-right: 10px; }
  .clk .cdsrc { text-align: center; font-size: 14px; color: var(--text-2); font-variant-numeric: tabular-nums; } .clk .cdsrc:empty { display: none; }
  .clk .cdsrc b { display: block; color: var(--navy); font-size: 14.5px; } .clk .cdsrc span { display: block; margin-top: 2px; font-size: 15px; font-weight: 700; color: var(--text); }
  .clk .cdman[hidden] { display: none; }
  .clk .cdman > summary { cursor: pointer; list-style: none; text-align: center; font-size: 13.5px; font-weight: 700; color: var(--muted); padding: 4px; }
  .clk .cdman > summary::-webkit-details-marker { display: none; } .clk .cdman[open] > summary { margin-bottom: 8px; }
  .clk .cday { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .clk .cday button { height: 52px; border: 1px solid var(--line); border-radius: 10px; background: #fff; font: inherit; font-size: 14.5px; font-weight: 800; color: var(--text); cursor: pointer; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px; font-variant-numeric: tabular-nums; }
  .clk .cday button small { font-size: 11.5px; font-weight: 700; color: var(--muted); }
  .clk .cday button.on { background: var(--navy); border-color: var(--navy); color: #fff; } .clk .cday button.on small { color: #c9d4ea; }
  .clk .ctime { display: flex; align-items: center; gap: 6px; }
  .clk .ctime select { flex: 1; min-width: 0; height: 44px; box-sizing: border-box; border: 1px solid var(--line-strong); border-radius: 10px; background: #fff; font: inherit; font-size: 15px; font-weight: 700; color: var(--text); padding: 0 10px; font-variant-numeric: tabular-nums; }
  .clk .ctime .cclr { flex: none; border: 0; background: none; font: inherit; font-size: 13px; color: var(--muted); cursor: pointer; padding: 8px 4px; }
  .clk .sr, .rkm .sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .clk .cdadv { margin-top: -4px; text-align: center; font-size: 13.5px; font-weight: 700; color: var(--blue); }
  .clk .cdadv b { font-weight: 800; }
  .clk .cdadv small { display: block; margin-top: 2px; font-size: 12px; font-weight: 500; color: var(--muted); }   /* 맞춤 타이밍 근거 (가운데·흔들림) */
  .clk .clkpr { padding: 16px; display: flex; flex-direction: column; gap: 10px; }
  .clk .clkgame { padding: 14px 16px; display: flex; flex-direction: column; gap: 8px; }
  .clk .clkpr .cdh .tip { margin-left: 6px; }
  .clk .plab { font-size: 12.5px; font-weight: 700; color: var(--muted); margin: 2px 0 -4px; }
  .clk .clkpr > .preset { align-self: center; margin: -4px 0 0; }
  .clk .prow { display: flex; align-items: center; gap: 2px; } .clk .prow .tip { font-size: 14px; margin-left: 4px; }
  [data-tipsheet] .tip:hover .tipbox, [data-tipsheet] .tip:focus .tipbox, [data-tipsheet] .tip:focus-within .tipbox { display: none; }
  .rkm .rkh .tip { margin-left: 2px; }
  .clk .preset { margin-left: auto; border: 0; background: none; font: inherit; font-size: 12.5px; color: var(--muted); cursor: pointer; padding: 6px 4px; }
  .clk .ptap { -webkit-appearance: none; appearance: none; height: 88px; border: 0; border-radius: 14px; background: var(--navy); color: #fff; font: inherit; font-size: 20px; font-weight: 800; cursor: pointer; touch-action: manipulation; -webkit-user-select: none; user-select: none; transition: background .12s; }
  .clk .ptap:active { transform: scale(.99); }
  .clk .ptap.ok { background: var(--green); } .clk .ptap.late { background: var(--red-strong); } .clk .ptap.early { background: var(--amber); }
  .clk .pres { text-align: center; font-size: 14px; color: var(--text-2); } .clk .pres b { color: var(--navy); } .clk .pres small { color: var(--muted); font-size: 12px; }
  /* 내 타이밍 진단 (10/17): 연습 카드 · 연습 결과 창 — 진행 막대 → 다 차면 조언 */
  .pdiag { width: 100%; box-sizing: border-box; display: flex; flex-direction: column; align-items: center; gap: 5px; padding: 10px 12px; border-radius: 10px; background: var(--bg); text-align: center; font-size: 14px; color: var(--text); word-break: keep-all; }
  .pdiag:empty { display: none; }
  .pdiag .dgt { font-size: 13px; font-weight: 800; color: var(--navy); } .pdiag .dgt em { font-style: normal; color: var(--blue); }
  .pdiag .dgbar { display: block; width: 100%; max-width: 220px; height: 6px; border-radius: 3px; background: var(--line); overflow: hidden; }
  .pdiag .dgbar i { display: block; height: 100%; border-radius: 3px; background: var(--navy); transition: width .3s; }
  .pdiag small { font-size: 12.5px; color: var(--muted); } .pdiag .dgx { font-size: 12px; }
  .pdiag .dgv { display: block; font-weight: 700; color: var(--blue); line-height: 1.45; } .pdiag .dgv small { display: block; margin-top: 2px; } .pdiag .dgv b { font-weight: 800; } .pdiag .dgv small { font-weight: 500; }
  .clk .plast { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; min-height: 22px; }   /* 최근 10번 = 5×2 (10/17: 줄바꿈 들쭉날쭉 방지) */
  .clk .plast:empty { display: none; }
  .clk .plast i { text-align: center; white-space: nowrap; font-style: normal; font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; padding: 2px 7px; border-radius: 6px; background: var(--hover); color: var(--text-2); }
  .clk .plast i.ok { color: var(--navy); }
  .clk .plast i.blk { background: #fbe4e4; color: var(--red-strong); }   /* 연타로 막힌 판 */
  /* 예매 연습 (10/15): 몇 초 뒤 오픈 고르기 + 예매 화면처럼 생긴 모달 */
  .gbtn { width: 100%; min-height: 56px; display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto; column-gap: 8px; align-items: center; text-align: left; padding: 8px 12px; box-sizing: border-box; border: 1px solid var(--line-strong); border-radius: 12px; background: #fff; font: inherit; cursor: pointer; }
  .gbtn .gt { font-size: 15px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gbtn .gs { grid-row: 2; font-size: 13px; color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gbtn svg { grid-row: 1 / 3; grid-column: 2; color: var(--muted); }
  .gpk { position: fixed; inset: 0; z-index: 230; } .gpk[hidden] { display: none; }
  .gpk .gpbd { position: absolute; inset: 0; background: rgba(15, 23, 42, .45); }
  .gpk .gppn { position: absolute; left: 0; right: 0; bottom: 0; max-height: 78vh; display: flex; flex-direction: column; background: #fff; border-radius: 16px 16px 0 0; box-shadow: 0 -6px 24px rgba(0, 0, 0, .2); padding-bottom: env(safe-area-inset-bottom); }
  @media (min-width: 560px) { .gpk .gppn { left: 50%; right: auto; bottom: auto; top: 50%; width: 440px; transform: translate(-50%, -50%); border-radius: 16px; } }
  .gpk .gph { display: flex; align-items: center; padding: 14px 10px 10px 18px; border-bottom: 1px solid var(--line); } .gpk .gph b { font-size: 17px; color: var(--navy); }
  .gpk .gpx { margin-left: auto; width: 36px; height: 36px; border: 0; background: none; font-size: 18px; color: var(--muted); cursor: pointer; border-radius: 8px; }
  .gpk .gpl { overflow-y: auto; padding: 4px 10px 12px; }
  .gpk .gpr { font-size: 12.5px; font-weight: 800; color: var(--muted); padding: 12px 8px 4px; }
  .gpk .gpl button { width: 100%; display: grid; grid-template-columns: 52px 76px minmax(0, 1fr) auto; align-items: center; column-gap: 6px; min-height: 46px; padding: 0 10px; border: 0; border-radius: 10px; background: none; font: inherit; text-align: left; cursor: pointer; font-variant-numeric: tabular-nums; }
  @media (hover: hover) { .gpk .gpl button:hover:not(:disabled) { background: var(--bg); } }   /* 터치에선 누른 줄이 계속 칠해져 두 개 고른 것처럼 보이던 것 */
  .gpk .gpl button.on { background: var(--bg); }
  .gpk .gpl button b { font-size: 14.5px; color: var(--text); } .gpk .gpl button.on b { color: var(--navy); }
  .gpk .gpl button.rs { grid-template-columns: 52px minmax(0, 1fr) auto; }   /* 정규시즌: 날짜는 묶음 제목에 있으니 줄에선 뺌 */
  .gpk .gpl .gd { font-size: 13.5px; color: var(--text-2); }
  .gpk .gpl .gm { font-size: 13.5px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .gpk .gpl button i { font-style: normal; font-size: 11px; font-weight: 700; color: var(--muted); }
  .gpk .gpl button:disabled { cursor: default; } .gpk .gpl button:disabled b, .gpk .gpl button:disabled span { color: #b6bdc9; }
  .clk .psel, .rkm .psel { width: 100%; height: 44px; box-sizing: border-box; border: 1px solid var(--line-strong); border-radius: 10px; background: #fff; font: inherit; font-size: 14.5px; font-weight: 700; color: var(--text); padding: 0 10px; }
  .clk .pref { margin-left: 0; }
  .pm { position: fixed; inset: 0; z-index: 200; background: var(--bg); display: flex; flex-direction: column; overflow-y: auto; }
  .pm.in { animation: pmin .22s ease-out; } @keyframes pmin { from { transform: translateX(28%); opacity: .3; } to { transform: none; opacity: 1; } }
  .pm .pmbar { position: sticky; top: 0; display: flex; align-items: center; gap: 8px; height: 54px; padding: 0 10px; background: #fff; border-bottom: 1px solid var(--line); }
  .pm .pmx { width: 40px; height: 40px; border: 0; background: none; font-size: 26px; color: var(--text-2); cursor: pointer; border-radius: 8px; }
  .pm .pmbar b { font-size: 17px; } .pm .pmbar b small { font-size: 12px; font-weight: 700; color: var(--amber); background: var(--amber-bg); padding: 1px 6px; border-radius: 6px; margin-left: 4px; vertical-align: 2px; }
  .pm .pmclk { padding: 34px 0 8px; text-align: center; font-size: clamp(40px, 13vw, 64px); white-space: nowrap; font-weight: 800; letter-spacing: -.5px; font-variant-numeric: tabular-nums; color: var(--navy); }   /* 10/17: 가운데 큰 시계 (ms 보면서 연습) */
  .pm .pmclk small { font-size: .62em; color: var(--muted); }
  .pm .pmfoot { position: sticky; bottom: 0; margin-top: auto; display: flex; flex-direction: column; gap: 8px; width: 100%; max-width: 480px; align-self: center; box-sizing: border-box;
                padding: 10px 16px calc(10px + env(safe-area-inset-bottom)); background: var(--bg); }   /* NOL 처럼 아래 고정 */
  .pm .pmfoot .pmbuy { width: 100%; }
  .pm .pmbody { width: 100%; max-width: 480px; margin: 0 auto; box-sizing: border-box; padding: 16px; display: flex; flex-direction: column; gap: 14px; }
  .pm .pmposter { display: flex; flex-direction: column; gap: 6px; padding: 26px 20px; border-radius: 16px; background: var(--navy-dark); color: #fff; }
  .pm .pmtag { align-self: flex-start; font-size: 12px; font-weight: 800; padding: 3px 9px; border-radius: 6px; background: rgba(255,255,255,.18); }
  .pm .pmposter b { font-size: 26px; } .pm .pmposter small { font-size: 14px; color: #dbe4f3; }
  .pm .pmopen { display: flex; align-items: center; justify-content: space-between; background: var(--navy-dark); color: #fff; border-radius: 16px; padding: 16px 20px; }   /* 10/17: 예매 오픈 박스 — 포스터와 같은 디자인 */
  .pm .pmopen small { font-size: 14px; color: #dbe4f3; } .pm .pmopen b { font-size: 22px; font-weight: 800; font-variant-numeric: tabular-nums; }
  .pm .pmbuy { height: 64px; border: 0; border-radius: 14px; font: inherit; font-size: 20px; font-weight: 800; cursor: pointer; touch-action: manipulation; -webkit-user-select: none; user-select: none; }
  .pm .pmbuy.wait { background: #c3c9d4; color: #fff; cursor: not-allowed; }
  .pm .pmbuy.open { background: var(--buy); color: #fff; }
  .pm .pmbuy.done { background: var(--navy); color: #fff; }   /* '다시 연습' */
  .pm .pmbuy.block { background: #e9b4b4; color: #fff; cursor: not-allowed; }
  .pm .pmalert { position: fixed; inset: 0; z-index: 210; display: flex; align-items: center; justify-content: center; padding: 16px; background: rgba(15,23,42,.45); }
  .pm .pmalert[hidden] { display: none; }
  .pm .pmalert div { width: 100%; max-width: 300px; background: #fff; border-radius: 14px; padding: 22px 18px 14px; text-align: center; box-shadow: 0 10px 30px rgba(0,0,0,.2); }
  .pm .pmalert p { margin: 0 0 16px; font-size: 16px; font-weight: 700; color: var(--text); }
  .pm .pmalert button { width: 100%; height: 46px; border: 0; border-radius: 10px; background: var(--navy); color: #fff; font: inherit; font-size: 16px; font-weight: 800; cursor: pointer; }
  .pm .pmbuy.shake { animation: pmshake .25s; } @keyframes pmshake { 25% { transform: translateX(-6px); } 75% { transform: translateX(6px); } }
  .pm .pmref { height: 44px; border: 1px solid var(--line-strong); border-radius: 12px; background: #fff; font: inherit; font-size: 15px; font-weight: 700; color: var(--text-2); cursor: pointer; }
  .pm .pmmsg { min-height: 20px; text-align: center; font-size: 14px; font-weight: 700; color: var(--amber); }
  .pm .pmres { scroll-margin-bottom: calc(100px + env(safe-area-inset-bottom)); display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 18px 14px; border-radius: 14px; background: #fff; border: 1px solid var(--line); text-align: center; }
  .pm .pmres > b { font-size: 22px; color: var(--navy); }
  .pm .pmres.ok { border-color: var(--navy); } .pm .pmres.mid > b, .pm .pmres.no > b { color: var(--text-2); }
  .pm .pmres > span { display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: 15px; color: var(--text); }
  .pm .pmres > span em { font-style: normal; } .pm .pmres > span b { font-variant-numeric: tabular-nums; }
  .pm .pmres > span small { font-size: 12.5px; color: var(--muted); }
  .pm .pmres .pmtags { display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; margin-top: 2px; }
  .pm .pmres .pmtags i { font-style: normal; font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 6px; background: var(--bg); color: var(--text-2); }
  .pm .pmres .ptap { width: 100%; height: 52px; border: 0; border-radius: 12px; background: var(--navy); color: #fff; font: inherit; font-size: 16px; font-weight: 800; cursor: pointer; }
  /* 예매 연습 랭킹 (10/16): 결과 창 알림 · 랭킹 버튼 · 랭킹 모달 */
  .pm .pmbtns { display: grid; grid-template-columns: 1fr; gap: 8px; width: 100%; }
  .pm .pmres .ptap.sub { background: #fff; color: var(--navy); border: 1px solid var(--line-strong); }
  .pm .pmnew { width: 100%; box-sizing: border-box; padding: 10px 12px; border-radius: 10px; font-size: 14px; line-height: 1.5; }
  .pm .pmnew.up { background: var(--bg); color: var(--text); font-weight: 700; animation: pmpop .35s ease-out; }
  .pm .pmnew.up b { font-size: 15px; color: var(--navy); }
  .pm .pmnew.mut { background: var(--bg); color: var(--muted); } .pm .pmnew.mut b { font-size: inherit; color: inherit; }
  @keyframes pmpop { 0% { transform: scale(.94); opacity: 0; } 100% { transform: none; opacity: 1; } }
  .clk .prank { margin-left: auto; border: 1px solid var(--line-strong); background: #fff; border-radius: 999px; font: inherit; font-size: 13px; font-weight: 800; color: var(--navy); padding: 6px 14px; cursor: pointer; }
  .clk .prank + .preset { margin-left: 4px; }
  .rkm { position: fixed; inset: 0; z-index: 210; background: rgba(15, 23, 42, .45); display: flex; align-items: center; justify-content: center; padding: 16px; }
  .rkm[hidden] { display: none; }
  .rkm .rkbox { width: 100%; max-width: 440px; max-height: calc(100vh - 32px); display: flex; flex-direction: column; overflow: hidden; background: #fff; border-radius: 18px; box-sizing: border-box; box-shadow: 0 16px 40px rgba(15, 23, 42, .25); }
  .rkm .rkbody { flex: 1 1 auto; min-height: 0; overflow-y: auto; }
  .rkm .rkh { flex: none; display: flex; align-items: center; gap: 8px; padding: 16px 12px 4px 18px; background: #fff; }
  .rkm .rkh b { font-size: 18px; color: var(--navy); } .rkm .rkh small { font-size: 12.5px; font-weight: 700; color: var(--muted); background: var(--bg); padding: 2px 8px; border-radius: 999px; }
  .rkm .rkx { margin-left: auto; width: 36px; height: 36px; border: 0; background: none; font-size: 18px; color: var(--muted); cursor: pointer; border-radius: 8px; }
  .rkm .rkmode { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; margin-top: 8px; padding: 3px; border-radius: 10px; background: var(--bg); }
  .rkm .rkmode button { height: 34px; border: 0; border-radius: 8px; background: none; font: inherit; font-size: 13.5px; font-weight: 700; color: var(--text-2); cursor: pointer; }
  .rkm .rkmode button.on { background: #fff; color: var(--navy); box-shadow: 0 1px 3px rgba(15, 23, 42, .12); }
  .pm .pmclk.soon { color: var(--red-strong); }
  .rkm .rkp { flex: none; display: block; padding: 10px 14px; background: #fff; border-bottom: 1px solid var(--line); scrollbar-width: none; }
  .rkm .rkp::-webkit-scrollbar { display: none; }
  .rkm .rkl { list-style: none; margin: 0; padding: 6px 10px; }
  .rkm .rkl li { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; column-gap: 10px; align-items: center; padding: 10px 8px; border-radius: 12px; }
  .rkm .rkl li + li { margin-top: 2px; }
  .rkm .rkl li.me { background: var(--bg); }
  .rkm .rkl li.rke { display: block; text-align: center; color: var(--muted); padding: 26px 0; }
  .rkm .rkl li.gap { display: block; text-align: center; color: var(--muted); padding: 0; line-height: 14px; letter-spacing: 2px; }
  .rkm .rkme { padding-top: 0; }
  .rkm .rr { width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 800; background: var(--bg); color: var(--text-2); font-variant-numeric: tabular-nums; }
  .rkm .rr.r1, .rkm .rr.r2, .rkm .rr.r3 { background: var(--navy); color: #fff; }
  .rkm .rm { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
  .rkm .rn { font-size: 15px; font-weight: 800; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .rkm .rn em { font-style: normal; font-size: 11px; font-weight: 800; color: var(--navy); border: 1px solid var(--navy); padding: 0 5px; border-radius: 6px; vertical-align: 2px; }
  .rkm .rg { display: block; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; }
  .rkm .rg small { font-size: inherit; }
  .rkm .rg i { font-style: normal; font-weight: 700; } .rkm .rg i::before { content: '·'; margin: 0 5px; color: var(--line-strong); font-weight: 400; }
  .rkm .rg i { color: var(--text-2); }
  .rkm .rs { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; }
  .rkm .rt { font-size: 17px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--navy); }
  .rkm .rq { font-size: 11.5px; font-weight: 700; white-space: nowrap; font-variant-numeric: tabular-nums; color: var(--muted); }
  .rkm .rq.ok { color: var(--navy); }
  .rkm .rkhint { margin: 4px 0 0; text-align: center; font-size: 14px; color: var(--text-2); } .rkm .rkhint:empty { display: none; }
  .rkm .rkf { margin: 0; padding: 10px 18px 16px; font-size: 12px; line-height: 1.5; color: var(--muted); text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
