/* 로그인 · 설정 게이트 + 플랜 카드 */
.gate{position:fixed;inset:0;background:var(--plane);display:grid;place-items:center;padding:24px;z-index:200;overflow:auto}
.gate-card{width:min(420px,100%);background:var(--surface);border:1px solid var(--line);border-radius:18px;
  box-shadow:var(--sh-2);padding:28px}
.gate-logo{width:46px;height:46px;border-radius:13px;display:block;margin-bottom:14px}
.gate-card h2{font-size:20px;margin-bottom:4px}
.gate-card>.sub{margin-bottom:16px;display:block;line-height:1.55}
.acct-box{padding:2px}
.acct-mail{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plan{border:1px solid var(--line);border-radius:14px;padding:16px;position:relative;background:var(--surface)}
.plan.cur{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in oklab,var(--accent) 15%,transparent)}
.plan-badge{position:absolute;top:-9px;left:50%;transform:translateX(-50%);background:var(--accent);color:#fff;
  font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap}
.plan-name{font-weight:750;font-size:15px}
.plan-price{font-size:22px;font-weight:750;margin:4px 0 10px;letter-spacing:-.02em}
.plan-feats{list-style:none;margin:0 0 14px;padding:0;font-size:12.5px;color:var(--ink-2);line-height:1.9}
.plan-feats li::before{content:'✓ ';color:var(--good-ink);font-weight:700}

.gbtn{width:100%;justify-content:center;gap:9px;padding:10px 12px;font-weight:650;font-size:14px}
.or{display:flex;align-items:center;gap:10px;margin:14px 0;color:var(--muted);font-size:12px}
.or::before,.or::after{content:'';flex:1;height:1px;background:var(--line)}

.wsbtn{width:100%;display:flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid var(--ring);
  background:var(--surface);border-radius:9px;font-size:12.5px;font-weight:650;color:var(--ink);text-align:left}
.wsbtn:hover{background:var(--surface-2);border-color:var(--accent)}
.wsbtn .dot{width:7px;height:7px;border-radius:50%;background:var(--good);flex:none}
.wsbtn .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wsbtn .cv{color:var(--muted);font-size:10px}

/* 읽기 전용 모드 — 쓰기 버튼 잠금 */
body.readonly .btn.pri,
body.readonly [data-derive],body.readonly [data-mkcopy],body.readonly [data-addvar],
body.readonly [data-delp],body.readonly [data-delch],body.readonly [data-addcopy],
body.readonly [data-derive2],body.readonly .qadd,body.readonly [data-addimg]{
  opacity:.45;pointer-events:none}

/* 리포트 */
.rep{font-size:13px;color:var(--ink)}
.rep-h{display:flex;align-items:flex-end;gap:12px;border-bottom:2px solid var(--ink);padding-bottom:10px;margin-bottom:14px}
.rep-title{font-size:19px;font-weight:750;letter-spacing:-.02em}
.rep-sub{font-size:12px;color:var(--muted);margin-top:2px}
.rep-brand{margin-left:auto;font-weight:750;color:var(--accent)}
.rep-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;margin-bottom:18px}
.rep-kpi{border:1px solid var(--line);border-radius:9px;padding:9px 10px}
.rep-kpi .k{font-size:10.5px;color:var(--muted);font-weight:650}
.rep-kpi .v{font-size:15px;font-weight:750;margin-top:2px;letter-spacing:-.02em}
.rep h3{font-size:14px;margin:16px 0 7px}
.rep-t{width:100%;border-collapse:collapse;font-size:12.5px}
.rep-t th,.rep-t td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left}
.rep-t th{font-size:11px;color:var(--muted);font-weight:650}
.rep-t .n{text-align:right;font-variant-numeric:tabular-nums}
.rep-t .sm{font-size:11px;color:var(--muted)}
.rep-empty{color:var(--muted);font-size:12.5px}
.rep-note{margin-top:14px;font-size:11px;color:var(--muted);line-height:1.6}
.rep-mark{margin-top:18px;padding:9px;border:1px dashed var(--axis);border-radius:8px;
  text-align:center;font-size:11px;color:var(--muted)}
#print-root{display:none}
@media print{
  body.printing #app,body.printing .modal-bg,body.printing #toast{display:none !important}
  body.printing #print-root{display:block !important;padding:0}
  body.printing{background:#fff}
  .rep-kpis{grid-template-columns:repeat(3,1fr)}
  .rep-t{page-break-inside:auto}
  .rep h3{page-break-after:avoid}
}

/* 파생 소구 자동 ID 표시 (유료 잠금이 아님) */
.tcode .auto{font-size:9.5px;font-weight:700;color:var(--muted);background:var(--surface-2);
  border:1px solid var(--ring);border-radius:5px;padding:0 4px;margin-left:4px;letter-spacing:0}
.brand:hover b{color:var(--accent)}

/* 소재 ID 칩 — 표에서 눌러 그 ID의 성과로 들어간다 */
.aidchip{display:inline-block;padding:2px 7px;border-radius:6px;cursor:pointer;
  font:600 11.5px/1.5 var(--mono,ui-monospace,SFMono-Regular,Menlo,monospace);
  background:color-mix(in oklab,var(--s1) 13%,transparent);color:var(--s1);
  border:1px solid color-mix(in oklab,var(--s1) 26%,transparent);white-space:nowrap}
.aidchip:hover{background:color-mix(in oklab,var(--s1) 24%,transparent)}
tr.aidrow:hover{background:var(--surface-2)}

/* 채널 규격 순서 바꾸기 버튼 — 좁게, 조용하게 */
.btn.ord{padding:3px 5px;min-width:0;line-height:1;font-size:10px;letter-spacing:-.05em}
.btn.ord[disabled]{opacity:.28;cursor:default}

/* 소재 형태 접기 */
.fmt .fh .cv{color:var(--muted);font-size:11px;width:11px;display:inline-block;text-align:center}
.fmt.shut{padding-bottom:6px}
.fmt.shut .fh{margin-bottom:0}
.fmt .fh:hover .cv{color:var(--ink-2)}
.wrap1{display:inline-block;max-width:46ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}

/* 소재 평가 — 🔴 중단 / 🟢 우수 / 🟡 유지 */
.evalsel{font:inherit;font-size:11.5px;padding:2px 6px;border-radius:7px;cursor:pointer;
  border:1px solid var(--ring);background:var(--surface);color:var(--ink-2)}
.evalsel.e-stop{border-color:color-mix(in oklab,var(--crit) 45%,transparent);color:var(--crit);font-weight:650}
.evalsel.e-good{border-color:color-mix(in oklab,var(--good-ink) 45%,transparent);color:var(--good-ink);font-weight:650}
.evalsel.e-keep{border-color:color-mix(in oklab,var(--warn) 50%,transparent);color:var(--warn);font-weight:650}
.evchip{display:inline-block;padding:1px 7px;border-radius:6px;font-size:11px;font-weight:650;white-space:nowrap;
  border:1px solid var(--ring);background:var(--surface-2)}
.evchip.e-stop{color:var(--crit);border-color:color-mix(in oklab,var(--crit) 38%,transparent)}
.evchip.e-good{color:var(--good-ink);border-color:color-mix(in oklab,var(--good-ink) 38%,transparent)}
.evchip.e-keep{color:var(--warn);border-color:color-mix(in oklab,var(--warn) 42%,transparent)}
.evh{border:1px solid var(--ring);border-radius:9px;overflow:hidden}
.evi{display:flex;align-items:baseline;gap:8px;padding:5px 9px;border-bottom:1px solid var(--ring);font-size:12px}
.evi:last-child{border-bottom:0}
.evd{font-variant-numeric:tabular-nums;color:var(--muted);font-size:11px;white-space:nowrap}
.evi.evmore:hover{background:var(--surface-2)}
.evi .cv{color:var(--muted);font-size:10px;width:10px;display:inline-block;text-align:center}

/* 카드 뷰 소구 묶음 접기 */
.card-h.libh .cv{color:var(--muted);font-size:11px;width:12px;display:inline-block;text-align:center}
.card-h.libh:hover .cv{color:var(--ink-2)}

/* KO | EN 전환 — 지금 언어가 채워져 보이는 2단 스위치 */
.langseg{display:inline-flex;border:1px solid var(--ring);border-radius:8px;overflow:hidden;flex:none}
.langseg button{appearance:none;border:0;background:var(--surface);color:var(--ink-2);
  font:inherit;font-size:11.5px;font-weight:700;letter-spacing:.02em;
  padding:5px 10px;cursor:pointer;line-height:1.1}
.langseg button+button{border-left:1px solid var(--ring)}
.langseg button:hover:not(.on){background:var(--surface-2);color:var(--ink)}
.langseg button.on{background:var(--accent);color:#fff;cursor:default}

/* 월간 · 연간 전환 */
.cycleseg{grid-column:1/-1;display:inline-flex;justify-self:center;margin-bottom:4px;
  border:1px solid var(--ring);border-radius:9px;overflow:hidden}
.cycleseg button{appearance:none;border:0;background:var(--surface);color:var(--ink-2);
  font:inherit;font-size:12.5px;font-weight:650;padding:7px 15px;cursor:pointer;display:flex;align-items:center;gap:6px}
.cycleseg button+button{border-left:1px solid var(--ring)}
.cycleseg button:hover:not(.on){background:var(--surface-2);color:var(--ink)}
.cycleseg button.on{background:var(--accent);color:#fff}
.cycleseg .save{font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:5px;
  background:color-mix(in oklab,var(--good-ink) 22%,transparent);color:var(--good-ink)}
.cycleseg button.on .save{background:rgba(255,255,255,.24);color:#fff}

/* 연간 요금 — 원래 금액을 삭선으로 같이 보여준다 */
.plan-was{font-size:13px;color:var(--muted);line-height:1.2;margin-bottom:1px}
.plan-was s{text-decoration-thickness:1.5px}
.plan-save{display:inline-block;margin:2px 0 6px;padding:2px 8px;border-radius:6px;
  font-size:11.5px;font-weight:700;
  background:color-mix(in oklab,var(--good-ink) 15%,transparent);color:var(--good-ink)}
