/* =====================================================================
   admin-v10.css — 관리자 v10 「Aurora Console」 (v0.4.6)
   ---------------------------------------------------------------------
   · 새 base.html + 새 dashboard.html 전용 셸 스타일 + 나머지 27개 화면
     콘텐츠 오버라이드를 한 파일에 담는다. app.css 뒤에 로드.
   · 크롬/설치앱 표시 통일: color-scheme:light 강제.
   ===================================================================== */
@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable-dynamic-subset.min.css");

:root{color-scheme:light}
html{background:#eef0f7}

:root{
  --bg:#eef0f7;
  --bg-soft:#e6e9f2;
  --panel:#ffffff;
  --panel-glass:rgba(255,255,255,.78);
  --ink:#14161d;
  --ink-2:#2a2d38;
  --muted:#687080;
  --muted-2:#9aa2b2;
  --line:#e6e9f1;
  --line-2:#eef0f6;
  --accent:#4f46e5;
  --accent-2:#7263f2;
  --accent-ink:#4038c7;
  --accent-soft:rgba(79,70,229,.09);
  --accent-soft-2:rgba(79,70,229,.14);
  --violet:#8b5cf6;
  --seal:#d64530;
  --success:#0ba672;
  --success-soft:#e6f8f1;
  --warn:#d97706;
  --warn-soft:#fdf3e3;
  --danger:#dc2626;
  --danger-soft:#fdecec;
  --info:#0284c7;
  --info-soft:#e6f3fb;
  --shadow-sm:0 1px 2px rgba(20,22,29,.04),0 4px 16px rgba(48,56,84,.05);
  --shadow:0 1px 2px rgba(20,22,29,.04),0 14px 36px rgba(48,56,84,.08);
  --shadow-md:0 2px 5px rgba(20,22,29,.05),0 22px 52px rgba(48,56,84,.11);
  --shadow-glow:0 14px 40px rgba(79,70,229,.30);
  --radius-sm:14px;
  --radius:18px;
  --radius-lg:24px;
  --grad-hero:linear-gradient(128deg,#4438d8 0%,#5b4fee 42%,#7a5df4 78%,#9a6cf6 100%);
  --grad-accent:linear-gradient(135deg,#4f46e5,#7263f2);
  --ease:cubic-bezier(.4,0,.2,1);
}

/* ── 0. 바탕: 오로라 워시 + 미세 노이즈 ─────────────────────────── */
body{
  margin:0;
  font-family:"Pretendard Variable","Pretendard","Noto Sans KR",system-ui,-apple-system,sans-serif;
  color:var(--ink);
  background:
    radial-gradient(1000px 460px at 82% -12%,rgba(122,93,244,.13),transparent 62%),
    radial-gradient(760px 420px at -8% 18%,rgba(79,70,229,.08),transparent 58%),
    radial-gradient(640px 380px at 55% 118%,rgba(2,132,199,.06),transparent 60%),
    var(--bg);
  background-attachment:fixed;
  -webkit-font-smoothing:antialiased;
}
body:before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='.022'/%3E%3C/svg%3E");
}
.shell{position:relative;z-index:1}
::selection{background:rgba(79,70,229,.18)}
.main strong,.main b,td.money,.money-list strong,.metric strong,
.live-sync-numbers b,.status-item strong,.count,
.hx-hero-amount,.hx-chip b,.hx-ledger-row strong,.hx-check strong,.hx-tile strong{
  font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;
}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}

/* ── 1. 셸 레이아웃: 떠 있는 유리 사이드바 ──────────────────────── */
@media (min-width:781px){
  .shell{padding-left:104px}
  .shell.sidebar-expanded{padding-left:296px}
  .sidebar{
    top:14px;left:14px;bottom:14px;height:auto;
    border-radius:var(--radius-lg);
    background:var(--panel-glass);
    backdrop-filter:blur(22px) saturate(160%);
    -webkit-backdrop-filter:blur(22px) saturate(160%);
    border:1px solid rgba(255,255,255,.9);
    border-right:1px solid rgba(255,255,255,.9);
    box-shadow:var(--shadow);
    color:var(--ink-2);
  }
}
@media (max-width:780px){
  .sidebar{background:#fff;color:var(--ink-2);border-right:1px solid var(--line)}
}
.brand{border-bottom:1px solid var(--line)}
.brand:hover{background:var(--bg-soft)}
.brand-logo{box-shadow:0 8px 22px rgba(79,70,229,.35)}
.brand-text strong{color:var(--ink)}
.brand-text small{color:var(--muted-2)}
.sidebar-toggle{background:transparent;color:var(--muted);border-radius:10px}
.sidebar-toggle:hover{background:var(--bg-soft);color:var(--ink)}
.nav-label{color:var(--muted-2);letter-spacing:.15em}
.nav-item{color:var(--muted);border-radius:13px;font-weight:700}
.nav-item:hover{color:var(--ink);background:rgba(20,22,29,.05)}
.nav-item.active{
  background:var(--grad-accent);
  color:#fff;
  box-shadow:0 8px 20px rgba(79,70,229,.35);
}
.nav-item.active:before{display:none!important}
.nav-item.active .nav-icon{filter:none!important;opacity:1}
.side-footer{border-top:1px solid var(--line)}
.side-user-info strong{color:var(--ink)}
.side-user-info small{color:var(--muted-2)}
.side-avatar{background:var(--grad-accent);border-radius:12px;box-shadow:0 6px 14px rgba(79,70,229,.28)}
.side-logout{background:var(--bg-soft);color:var(--muted);border-radius:11px}
.side-logout:hover{background:var(--danger-soft);color:var(--danger)}

/* ── 2. 헤더 ────────────────────────────────────────────────────── */
.topbar.hx-head{
  background:transparent;border:0;box-shadow:none;border-radius:0;
  position:static;
  padding:16px 2px 2px;margin-bottom:26px;
  display:flex;justify-content:space-between;align-items:flex-end;gap:24px;
  backdrop-filter:none;-webkit-backdrop-filter:none;
}
.hx-eyebrow{
  display:inline-flex;align-items:center;gap:7px;
  font-size:12px;font-weight:800;letter-spacing:.04em;color:var(--accent-ink);
  margin-bottom:8px;
}
.hx-eyebrow-dot{width:7px;height:7px;border-radius:50%;background:var(--grad-accent);
  box-shadow:0 0 0 3px var(--accent-soft)}
.topbar.hx-head h1{
  margin:0;font-size:32px;font-weight:850;letter-spacing:-.035em;color:var(--ink);
  background:none;-webkit-background-clip:initial;background-clip:initial;
}
.topbar.hx-head p{margin:6px 0 0;color:var(--muted);font-size:14.5px}
.status-pill{
  background:rgba(255,255,255,.85);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  color:#067a55;border:1px solid rgba(255,255,255,.95);
  border-radius:999px;box-shadow:var(--shadow-sm);
}
.status-pill span{background:var(--success);box-shadow:0 0 0 3px rgba(11,166,114,.16)}

/* ── 3. 대시보드 히어로 ─────────────────────────────────────────── */
.hx-hero{
  position:relative;overflow:hidden;
  background:var(--grad-hero);
  border-radius:calc(var(--radius-lg) + 4px);
  box-shadow:var(--shadow-glow);
  color:#fff;
  padding:34px 36px 30px;
  margin-bottom:20px;
  display:grid;grid-template-columns:1.15fr .85fr;gap:28px;align-items:center;
}
.hx-hero-glow{
  position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(420px 240px at 85% 0%,rgba(255,255,255,.16),transparent 60%),
    radial-gradient(340px 220px at 8% 110%,rgba(255,255,255,.10),transparent 55%);
}
.hx-hero-label{
  display:inline-block;font-size:12.5px;font-weight:800;letter-spacing:.10em;
  color:rgba(255,255,255,.85);text-transform:uppercase;margin-bottom:10px;
}
.hx-hero-amount{
  display:block;font-size:clamp(34px,4.6vw,52px);font-weight:900;
  letter-spacing:-.04em;line-height:1.05;text-shadow:0 2px 18px rgba(28,20,90,.25);
}
.hx-hero-amount em{font-style:normal;font-size:.5em;font-weight:800;margin-left:6px;color:rgba(255,255,255,.85)}
.hx-hero-main small{display:block;margin-top:12px;font-size:13px;color:rgba(255,255,255,.72)}
.hx-hero-chips{display:grid;gap:10px}
.hx-chip{
  display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;
  align-items:center;column-gap:12px;
  background:rgba(255,255,255,.13);
  border:1px solid rgba(255,255,255,.22);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  border-radius:16px;padding:12px 16px;
  transition:background .18s var(--ease),transform .18s var(--ease);
}
.hx-chip:hover{background:rgba(255,255,255,.19);transform:translateX(3px)}
.hx-chip span{font-size:12.5px;font-weight:800;color:rgba(255,255,255,.82)}
.hx-chip b{grid-row:1/3;font-size:24px;font-weight:900;letter-spacing:-.02em}
.hx-chip b i{font-style:normal;font-size:.58em;font-weight:800;margin-left:2px;color:rgba(255,255,255,.8)}
.hx-chip small{font-size:11px;color:rgba(255,255,255,.6)}

/* ── 4. 카드 공통 ───────────────────────────────────────────────── */
.hx-duo{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}
.hx-card{
  background:var(--panel);
  border:1px solid rgba(255,255,255,.9);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);
  padding:24px 26px;
  margin-bottom:20px;
  transition:box-shadow .22s var(--ease),transform .22s var(--ease);
}
.hx-duo .hx-card{margin-bottom:0}
.hx-card:hover{box-shadow:var(--shadow)}
.hx-card-head{
  display:flex;justify-content:space-between;align-items:flex-start;gap:16px;
  margin-bottom:16px;
}
.hx-card-head h2{margin:0;font-size:17.5px;font-weight:800;letter-spacing:-.015em;color:var(--ink)}
.hx-card-head p{margin:4px 0 0;font-size:12.5px;color:var(--muted-2)}
.hx-more{
  flex-shrink:0;display:inline-flex;align-items:center;gap:4px;
  font-size:13px;font-weight:800;color:var(--accent-ink);text-decoration:none;
  padding:7px 13px;border-radius:999px;background:var(--accent-soft);
  transition:background .16s,gap .16s;
}
.hx-more:hover{background:var(--accent-soft-2);gap:7px}
.hx-more em{font-style:normal}

/* ── 5. 금액 누적(원장) ─────────────────────────────────────────── */
.hx-ledger{display:grid}
.hx-ledger-row{
  display:flex;justify-content:space-between;align-items:center;gap:14px;
  padding:15px 6px;border-bottom:1px solid var(--line-2);font-size:14px;
}
.hx-ledger-row:last-child{border-bottom:0}
.hx-ledger-row span{color:var(--muted)}
.hx-ledger-row strong{font-size:16.5px;font-weight:850;letter-spacing:-.01em;color:var(--ink)}

/* ── 6. 점검 필요 항목 ──────────────────────────────────────────── */
.hx-checks{display:grid;gap:6px}
.hx-check{
  display:flex;align-items:center;gap:11px;
  padding:11px 13px;border-radius:13px;
  background:#f8f9fd;font-size:13.5px;
  color:var(--ink-2);text-decoration:none;
  transition:background .15s;
}
.hx-check span{flex:1;min-width:0;color:var(--muted);font-weight:600}
.hx-check span b{display:block;color:var(--ink);font-weight:800}
.hx-check span small{display:block;font-size:11px;color:var(--muted-2);margin-top:1px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hx-check strong{font-size:14.5px;font-weight:850}
.hx-check em{font-style:normal;color:var(--muted-2);font-weight:800}
.hx-check-dot{flex-shrink:0;width:9px;height:9px;border-radius:50%}
.hx-check.ok .hx-check-dot{background:var(--success);box-shadow:0 0 0 3px rgba(11,166,114,.14)}
.hx-check.ok strong{color:var(--success)}
.hx-check.warn{background:var(--warn-soft)}
.hx-check.warn .hx-check-dot{background:var(--warn);box-shadow:0 0 0 3px rgba(217,119,6,.14)}
.hx-check.warn strong{color:#b3620a}
.hx-check.danger{background:var(--danger-soft)}
.hx-check.danger .hx-check-dot{background:var(--danger);box-shadow:0 0 0 3px rgba(220,38,38,.14)}
.hx-check.danger strong{color:var(--danger)}
.hx-check-link:hover{background:var(--accent-soft)}

/* ── 7. 세무 타일 ───────────────────────────────────────────────── */
.hx-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.hx-tile{
  position:relative;display:grid;gap:6px;
  padding:18px 20px;border-radius:16px;
  background:#f8f9fd;border:1px solid transparent;
  color:var(--ink);text-decoration:none;
  transition:background .18s,border-color .18s,transform .18s var(--ease);
}
.hx-tile:hover{background:#fff;border-color:rgba(79,70,229,.35);transform:translateY(-3px);
  box-shadow:var(--shadow-sm)}
.hx-tile span{font-size:12.5px;font-weight:800;color:var(--muted)}
.hx-tile strong{font-size:23px;font-weight:900;letter-spacing:-.02em}
.hx-tile small{font-size:11.5px;color:var(--muted-2)}
.hx-tile-arrow{
  position:absolute;top:16px;right:16px;font-style:normal;font-weight:800;
  color:var(--muted-2);transition:color .18s,transform .18s;
}
.hx-tile:hover .hx-tile-arrow{color:var(--accent-ink);transform:translateX(3px)}

/* ── 8. 동기화 스트립 ───────────────────────────────────────────── */
.hx-sync{
  display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;
  padding:15px 22px;margin-bottom:20px;border-radius:16px;
  background:var(--success-soft);
}
.hx-sync-left{display:flex;align-items:center;gap:10px}
.hx-sync-left strong{color:#066a4b;font-size:14px}
.hx-sync-left small{color:#4e8f78;font-size:12px}
.hx-sync-dot{
  width:9px;height:9px;border-radius:50%;background:var(--success);
  box-shadow:0 0 0 3px rgba(11,166,114,.18);
  animation:hxPulse 2.2s var(--ease) infinite;
}
.hx-sync-nums{display:flex;gap:16px;font-size:13px;color:#3f7c67}
.hx-sync-nums b{font-weight:850;color:#066a4b}
.hx-sync.warning{background:var(--warn-soft)}
.hx-sync.warning .hx-sync-left strong{color:#93540c}
.hx-sync.warning .hx-sync-left small,.hx-sync.warning .hx-sync-nums{color:#a86e23}
.hx-sync.warning .hx-sync-nums b{color:#93540c}
.hx-sync.warning .hx-sync-dot{background:var(--warn);box-shadow:0 0 0 3px rgba(217,119,6,.18)}
@keyframes hxPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.35)}}

/* ── 9. 표 (전 화면 공통) ───────────────────────────────────────── */
.table-wrap{
  border:0;border-radius:var(--radius-sm);
  box-shadow:inset 0 0 0 1px var(--line);
  background:var(--panel);
}
thead th{
  background:#f7f8fc;color:#7a8194;
  border-bottom:1px solid var(--line);
  font-size:10.5px;font-weight:800;letter-spacing:.09em;
  padding-top:12px;padding-bottom:12px;
}
tbody td{border-bottom:1px solid var(--line-2);padding-top:13px;padding-bottom:13px}
tbody tr:last-child td{border-bottom:0}
tbody tr:nth-child(even){background:transparent}
tbody tr{transition:background .12s}
tbody tr:hover{background:#f5f6fd}
td.money{text-align:right;font-weight:800}
.row-link{color:var(--ink)}
.row-link:hover{color:var(--accent-ink)}
.text-link{color:var(--accent-ink);font-weight:700}
.truncate{color:var(--muted-2)}
.empty{color:var(--muted-2)}

/* ── 10. 나머지 27개 화면 콘텐츠 오버라이드 ─────────────────────── */
.panel{
  background:var(--panel);border:1px solid rgba(255,255,255,.9);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);
}
.panel:hover{box-shadow:var(--shadow-sm)}
.panel-head{border-bottom:0;padding-bottom:12px;margin-bottom:12px}
.panel-head h2{font-size:17.5px;font-weight:800;letter-spacing:-.015em;color:var(--ink)}
.panel-head p{color:var(--muted-2);font-size:12.5px}
.overline,.eyebrow{color:var(--accent-ink);letter-spacing:.12em;font-weight:800}
.page-head h1{font-size:32px;font-weight:850;letter-spacing:-.035em}

.grid.metrics{gap:16px}
.metric{border:1px solid rgba(255,255,255,.9);border-radius:var(--radius-lg);
  box-shadow:var(--shadow-sm);transition:transform .18s var(--ease),box-shadow .18s}
.metric:hover{transform:translateY(-3px);box-shadow:var(--shadow)}
.metric:before,.metric:after{display:none}
.metric strong{font-size:28px;font-weight:850;letter-spacing:-.03em;color:var(--ink)}
.metric .metric-icon{border:0;border-radius:13px;box-shadow:none;background:var(--accent-soft);color:var(--accent-ink)}
.metric.accent{background:var(--grad-accent)!important;border:0;color:#fff;box-shadow:var(--shadow-glow)}
.metric.accent .metric-label span{color:rgba(255,255,255,.85)!important}
.metric.accent small{color:rgba(255,255,255,.66)}
.metric.accent strong{color:#fff}
.metric.accent .metric-icon{background:rgba(255,255,255,.18)!important;color:#fff!important}

.badge{border-radius:999px;padding:4px 11px;font-weight:800;letter-spacing:.02em;border:0}
.badge.success{background:var(--success-soft);color:#067a55}
.badge.info{background:var(--info-soft);color:#026da5}
.badge.warning,.badge.warn{background:var(--warn-soft);color:#b3620a}
.badge.danger{background:var(--danger-soft);color:#b91c1c}
.badge.muted{background:#eef0f6;color:var(--muted)}
.badge.ok{background:#fff;color:var(--seal);border:1.5px solid var(--seal);border-radius:8px;letter-spacing:.06em}

.primary,.btn-primary{
  background:var(--grad-accent);border:0;border-radius:999px;color:#fff;
  box-shadow:0 8px 20px rgba(79,70,229,.30);
  transition:filter .15s,transform .12s,box-shadow .15s;
}
.primary:hover,.btn-primary:hover{transform:none;filter:brightness(1.07);box-shadow:0 10px 24px rgba(79,70,229,.36)}
.primary:active,.btn-primary:active{transform:scale(.98)}
.primary:before,.primary:after{display:none}
.secondary,.btn-secondary,.ghost{
  background:var(--panel);border:1px solid var(--line);border-radius:999px;
  color:var(--ink-2);box-shadow:var(--shadow-sm);
}
.secondary:hover,.btn-secondary:hover,.ghost:hover{
  border-color:rgba(79,70,229,.4);color:var(--accent-ink);background:#f4f4fe;transform:none;
}
.btn-danger{background:var(--danger);border:0;border-radius:999px;color:#fff}
.btn-warn{background:var(--warn);border:0;border-radius:999px;color:#fff}
.btn-mini{border-radius:999px}
.count{background:#fff;border:1px solid var(--line);color:var(--ink-2);border-radius:999px;box-shadow:var(--shadow-sm)}

.money-list>div,.check-list>div{border-bottom:1px solid var(--line-2)}
.money-list>div:last-child,.check-list>div:last-child{border-bottom:0}
.money-list span,.check-list span{color:var(--muted)}
.check-list .ok strong{color:var(--success)}
.check-list .warn strong{color:var(--warn)}
.check-list .danger strong{color:var(--danger)}
.check-link:hover{background:var(--accent-soft)}

.summary-link{border:1px solid var(--line);border-radius:16px;box-shadow:none;background:#f8f9fd;
  transition:border-color .18s,background .18s,transform .18s}
.summary-link:before{display:none}
.summary-link:hover{transform:translateY(-3px);border-color:rgba(79,70,229,.4);background:#fff;box-shadow:var(--shadow-sm)}
.summary-link strong{font-size:22px;font-weight:850;letter-spacing:-.02em}

.live-sync-panel{background:var(--success-soft);border:0;border-radius:16px;box-shadow:none}
.live-sync-panel:before{width:0}
.live-sync-panel.warning{background:var(--warn-soft)}
.live-dot{background:var(--success)}

.flash,.alert,.page-alert{border-radius:14px;box-shadow:none;border:0}

input,select,textarea{
  border-radius:12px!important;border:1px solid var(--line)!important;
  background:#fff!important;color:var(--ink)!important;
}
input:focus,select:focus,textarea:focus{
  border-color:var(--accent)!important;
  box-shadow:0 0 0 3px var(--accent-soft-2)!important;outline:none!important;
}
label span,.form-field span{color:var(--muted);font-weight:700}
.filter-result-banner{background:var(--accent-soft);border:0;border-radius:12px;color:var(--accent-ink)}

.login-page{
  background:
    radial-gradient(800px 460px at 82% -8%,rgba(122,93,244,.18),transparent 60%),
    radial-gradient(600px 360px at -8% 108%,rgba(79,70,229,.10),transparent 55%),
    var(--bg);
}
.login-card,.login-panel{background:#fff;border:0;border-radius:26px;box-shadow:var(--shadow-md)}
.login-visual{background:var(--grad-hero);border-radius:26px}

.mission-control-card,.mission-preview-card,.promo-form-card,.promo-list-card,
.tax-review-decision-panel,.tax-review-recommendation,.coverage-panel,
.warning-card,.success-card{
  background:var(--panel);border:1px solid rgba(255,255,255,.9);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);
}
.status-grid .status-item{background:#f7f8fc;border:0;border-radius:14px}
.status-ACTIVE{color:var(--success)}
.status-error{color:var(--danger)}
.mission-bar{background:#e9ebf3;border-radius:999px}
.mission-fill{background:var(--grad-accent);border-radius:999px}
.admin-install-hero{background:var(--grad-hero);color:#fff;border-radius:var(--radius-lg)}
.app-url-box,.qr-wrap{border:1px dashed #ccd2e2;border-radius:14px;background:#f7f8fc}
.audit-storage-grid>*,.detail-metrics>*,.insurance-metrics>*{border-color:var(--line);border-radius:14px}

.admin-mobile-nav{
  background:rgba(255,255,255,.9);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-top:1px solid var(--line);
  box-shadow:0 -8px 28px rgba(48,56,84,.10);
}
.admin-mobile-nav-item{color:var(--muted)}
.admin-mobile-nav-item.active{color:var(--accent-ink)}

/* ── 11. 등장 애니메이션 ────────────────────────────────────────── */
@keyframes hxRise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
.hx-anim{animation:hxRise .5s var(--ease) both}
.hx-anim:nth-of-type(2){animation-delay:.06s}
.hx-anim:nth-of-type(3){animation-delay:.12s}
.hx-anim:nth-of-type(4){animation-delay:.18s}
.hx-anim:nth-of-type(5){animation-delay:.24s}
.hx-duo .hx-card:nth-child(2){animation-delay:.10s}
@media (prefers-reduced-motion:reduce){
  .hx-anim{animation:none}
  *{transition-duration:.01ms!important}
}

/* ── 12. 반응형 ─────────────────────────────────────────────────── */
@media (max-width:1100px){
  .hx-hero{grid-template-columns:1fr;gap:18px;padding:26px 24px 22px}
  .hx-tiles{grid-template-columns:1fr}
}
@media (max-width:900px){
  .hx-duo{grid-template-columns:1fr}
}
@media (max-width:780px){
  .topbar.hx-head{flex-direction:column;align-items:flex-start;gap:10px;padding-top:8px}
  .topbar.hx-head h1{font-size:26px}
  .hx-hero-amount{font-size:34px}
}

/* ── 13. 스크롤바 ───────────────────────────────────────────────── */
::-webkit-scrollbar{height:9px;width:9px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#cfd4e2;border-radius:9px;border:2px solid var(--bg)}
::-webkit-scrollbar-thumb:hover{background:#b4bbd0}

/* =====================================================================
   v0.4.7 추가 — 데이터 인사이트 (주차 추이 · 플랫폼 비중 · TOP 라이더)
   ===================================================================== */
.hx-wow{
  display:inline-flex;align-items:center;gap:5px;margin-left:10px;
  font-style:normal;font-size:12px;font-weight:900;letter-spacing:0;
  padding:4px 10px;border-radius:999px;vertical-align:2px;
  background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.28);
}
.hx-wow i{font-style:normal;font-weight:700;color:rgba(255,255,255,.75)}
.hx-wow.up{color:#b8ffdf}
.hx-wow.down{color:#ffd0cb}

.hx-insights{display:grid;grid-template-columns:1.45fr 1fr;gap:20px;margin-bottom:20px}
.hx-insights .hx-card{margin-bottom:0}

/* 주차별 막대 차트 */
.hx-bars{
  display:flex;align-items:flex-end;gap:10px;
  height:190px;padding:8px 2px 0;
}
.hx-bar{
  flex:1;min-width:0;height:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;
}
.hx-bar i{
  width:100%;max-width:38px;border-radius:9px 9px 4px 4px;
  background:linear-gradient(180deg,#7263f2,#4f46e5);
  box-shadow:0 6px 14px rgba(79,70,229,.22);
  transition:filter .15s,transform .15s;
  transform-origin:bottom;
  animation:hxGrow .6s cubic-bezier(.4,0,.2,1) both;
}
.hx-bar:nth-child(odd) i{animation-delay:.05s}
.hx-bar:hover i{filter:brightness(1.1);transform:scaleY(1.02)}
.hx-bar:last-child i{
  background:linear-gradient(180deg,#34d399,#0ba672);
  box-shadow:0 6px 14px rgba(11,166,114,.24);
}
.hx-bar b{
  font-size:10.5px;font-weight:800;color:var(--muted);
  opacity:0;transform:translateY(3px);transition:opacity .15s,transform .15s;
  white-space:nowrap;
}
.hx-bar:hover b,.hx-bar:last-child b{opacity:1;transform:none}
.hx-bar:last-child b{color:#067a55}
.hx-bar span{font-size:10.5px;color:var(--muted-2);font-weight:700;white-space:nowrap}
@keyframes hxGrow{from{transform:scaleY(0)}to{transform:scaleY(1)}}

/* 플랫폼 비중 */
.hx-share-track{
  display:flex;gap:3px;height:14px;border-radius:999px;overflow:hidden;
  margin:4px 0 16px;
}
.hx-share-track i{display:block;height:100%;border-radius:3px}
.hx-share-track i:nth-child(1){background:linear-gradient(90deg,#4f46e5,#7263f2)}
.hx-share-track i:nth-child(2){background:linear-gradient(90deg,#0ea5e9,#38bdf8)}
.hx-share-track i:nth-child(3){background:linear-gradient(90deg,#f59e0b,#fbbf24)}
.hx-share-track i:nth-child(4){background:linear-gradient(90deg,#94a3b8,#cbd5e1)}
.hx-share-rows{display:grid;gap:4px}
.hx-share-row{
  display:flex;align-items:center;gap:10px;
  padding:10px 12px;border-radius:12px;background:#f8f9fd;font-size:13px;
}
.hx-share-row span{flex:1;font-weight:800;color:var(--ink-2)}
.hx-share-row small{color:var(--muted-2);font-variant-numeric:tabular-nums}
.hx-share-row strong{font-weight:900;color:var(--ink);font-variant-numeric:tabular-nums}
.hx-share-dot{width:10px;height:10px;border-radius:4px;flex-shrink:0}
.hx-share-row:nth-child(1) .hx-share-dot{background:#4f46e5}
.hx-share-row:nth-child(2) .hx-share-dot{background:#0ea5e9}
.hx-share-row:nth-child(3) .hx-share-dot{background:#f59e0b}
.hx-share-row:nth-child(4) .hx-share-dot{background:#94a3b8}

/* 하단 분할: 최근 정산 + TOP 라이더 */
.hx-split{display:grid;grid-template-columns:1.45fr 1fr;gap:20px;margin-bottom:20px}
.hx-split .hx-card{margin-bottom:0}

/* TOP 라이더 */
.hx-top{display:grid;gap:8px}
.hx-top-row{
  display:flex;align-items:center;gap:12px;
  padding:10px 12px;border-radius:14px;background:#f8f9fd;
  transition:background .15s;
}
.hx-top-row:hover{background:var(--accent-soft)}
.hx-top-rank{
  flex-shrink:0;width:28px;height:28px;border-radius:9px;
  display:grid;place-items:center;
  font-size:13px;font-weight:900;color:#fff;
  background:#aab1c2;
}
.hx-top-rank.r1{background:linear-gradient(135deg,#f59e0b,#fbbf24);box-shadow:0 4px 10px rgba(245,158,11,.3)}
.hx-top-rank.r2{background:linear-gradient(135deg,#94a3b8,#cbd5e1)}
.hx-top-rank.r3{background:linear-gradient(135deg,#b45309,#d97706)}
.hx-top-info{flex:1;min-width:0}
.hx-top-info strong{display:block;font-size:13.5px;font-weight:800;color:var(--ink);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hx-top-info small{font-size:11px;color:var(--muted-2)}
.hx-top-track{
  display:block;height:4px;border-radius:999px;background:#e9ebf3;
  margin-top:6px;overflow:hidden;
}
.hx-top-track em{display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,#4f46e5,#7263f2)}
.hx-top-amount{
  flex-shrink:0;font-size:13.5px;font-weight:850;color:var(--ink);
  font-variant-numeric:tabular-nums;
}

@media (max-width:1100px){
  .hx-insights{grid-template-columns:1fr}
  .hx-split{grid-template-columns:1fr}
  .hx-bars{height:160px}
}

/* =====================================================================
   v0.4.8 추가 — 기사 관리 · 정산 조회 · 미션 수집 재작성 화면
   ===================================================================== */
/* 카드 헤더 액션 */
.hx-head-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.hx-count{
  display:inline-flex;align-items:baseline;gap:2px;
  padding:7px 14px;border-radius:999px;
  background:#fff;border:1px solid var(--line);box-shadow:var(--shadow-sm);
  font-size:14px;font-weight:900;color:var(--ink);
  font-variant-numeric:tabular-nums;
}
.hx-count i{font-style:normal;font-size:11px;font-weight:700;color:var(--muted-2)}
.hx-btn-add{
  display:inline-flex;align-items:center;gap:7px;
  padding:11px 19px;border:0;border-radius:999px;cursor:pointer;
  background:var(--grad-accent);color:#fff;
  font-size:13.5px;font-weight:800;text-decoration:none;
  box-shadow:0 8px 20px rgba(79,70,229,.30);
  transition:filter .15s,transform .12s;
}
.hx-btn-add:hover{filter:brightness(1.08)}
.hx-btn-add:active{transform:scale(.98)}

/* 세그먼트 필터 */
.hx-seg{
  display:inline-flex;gap:4px;padding:5px;margin-bottom:18px;
  background:#eef0f6;border-radius:999px;
}
.hx-seg-item{
  padding:8px 16px;border-radius:999px;
  font-size:13px;font-weight:800;color:var(--muted);text-decoration:none;
  transition:background .15s,color .15s,box-shadow .15s;
}
.hx-seg-item:hover{color:var(--ink)}
.hx-seg-item.on{background:#fff;color:var(--accent-ink);box-shadow:var(--shadow-sm)}

/* 기사 셀 */
.hx-rider-cell{display:flex;align-items:center;gap:11px}
.hx-avatar{
  flex-shrink:0;width:34px;height:34px;border-radius:11px;
  display:grid;place-items:center;
  background:var(--grad-accent);color:#fff;
  font-size:14px;font-weight:900;
  box-shadow:0 4px 10px rgba(79,70,229,.22);
}
.hx-rider-name strong{display:block;font-size:13.5px;font-weight:800;color:var(--ink)}
.hx-rider-name small{font-size:11px;color:var(--muted-2)}
.hx-chip-row{display:flex;gap:5px;flex-wrap:wrap}
.hx-mono{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;color:var(--muted)}
.hx-strong{font-weight:850;color:var(--ink)}

/* 플랫폼 칩 */
.hx-pchip{
  display:inline-flex;align-items:center;
  padding:4px 11px;border-radius:999px;
  font-size:11.5px;font-weight:800;letter-spacing:.01em;white-space:nowrap;
}
.hx-pchip.baemin{background:#e2f6f5;color:#0b7a72}
.hx-pchip.coupang{background:var(--info-soft);color:#026da5}
.hx-pchip.na{background:#eef0f6;color:var(--muted)}

/* 인감 스탬프 (검증완료) */
.hx-stamp{
  display:inline-flex;align-items:center;
  padding:3px 10px;border-radius:8px;
  background:#fff;color:var(--seal);
  border:1.5px solid var(--seal);
  font-size:11.5px;font-weight:900;letter-spacing:.06em;white-space:nowrap;
}

/* 이체 토글 */
.hx-toggle{
  display:inline-flex;align-items:center;gap:7px;
  font-size:12px;font-weight:800;color:var(--muted-2);white-space:nowrap;
}
.hx-toggle i{
  width:30px;height:17px;border-radius:999px;background:#d7dbe7;position:relative;
  transition:background .18s;
}
.hx-toggle i:after{
  content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;
  border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);
  transition:left .18s;
}
.hx-toggle.on{color:#067a55}
.hx-toggle.on i{background:var(--success)}
.hx-toggle.on i:after{left:15px}

/* 행 액션 */
.hx-act{
  display:inline-flex;padding:6px 13px;border-radius:999px;
  background:#eef0f6;color:var(--ink-2);
  font-size:12px;font-weight:800;text-decoration:none;white-space:nowrap;
  transition:background .15s,color .15s;
}
.hx-act:hover{background:var(--accent-soft);color:var(--accent-ink)}
.hx-act.primary{background:var(--accent-soft);color:var(--accent-ink)}
.hx-act.primary:hover{background:var(--accent-soft-2)}

/* 정산 요약 스트립 */
.hx-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}
.hx-stat{
  background:var(--panel);border:1px solid rgba(255,255,255,.9);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);
  padding:18px 22px;
}
.hx-stat span{display:block;font-size:12.5px;font-weight:800;color:var(--muted);margin-bottom:6px}
.hx-stat strong{font-size:24px;font-weight:900;letter-spacing:-.02em;color:var(--ink);
  font-variant-numeric:tabular-nums}
.hx-stat strong i{font-style:normal;font-size:.6em;font-weight:800;color:var(--muted-2);margin-left:2px}
.hx-stat.accent{background:var(--grad-accent);border:0;box-shadow:var(--shadow-glow)}
.hx-stat.accent span{color:rgba(255,255,255,.82)}
.hx-stat.accent strong{color:#fff}
.hx-stat.accent strong i{color:rgba(255,255,255,.75)}

/* 미션 수집 */
.hx-collect{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin-bottom:20px}
.hx-field{display:flex;flex-direction:column;gap:6px}
.hx-field span{font-size:12.5px;font-weight:800;color:var(--muted)}
.hx-field select{min-width:170px;padding:11px 14px;font-size:14px;font-weight:700}
.hx-mstatus{
  display:grid;grid-template-columns:repeat(4,1fr);gap:12px;
  padding-top:18px;border-top:1px solid var(--line-2);
}
.hx-mstat{background:#f8f9fd;border-radius:14px;padding:14px 16px;text-align:center}
.hx-mstat span{display:block;font-size:11.5px;font-weight:800;color:var(--muted-2);margin-bottom:5px}
.hx-mstat strong{font-size:14.5px;font-weight:850;color:var(--ink)}
.hx-engine{display:inline-flex;align-items:center;gap:7px}
.hx-engine i{width:8px;height:8px;border-radius:50%;background:var(--muted-2)}
.hx-engine.status-ACTIVE,.hx-engine.status-정상{color:var(--success)}
.hx-engine.status-ACTIVE i,.hx-engine.status-정상 i{background:var(--success);
  box-shadow:0 0 0 3px rgba(11,166,114,.16);animation:hxPulse 2.2s var(--ease) infinite}
.hx-engine.status-오류{color:var(--danger)}
.hx-engine.status-오류 i{background:var(--danger)}
.hx-engine.status-로그인중{color:var(--warn)}
.hx-engine.status-로그인중 i{background:var(--warn)}
.hx-merror{
  margin-top:14px;padding:12px 16px;border-radius:12px;
  background:var(--danger-soft);color:#991b1b;font-size:13px;
}
.hx-mgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.hx-mcard{
  padding:20px 18px;border-radius:18px;text-align:center;
  background:var(--grad-accent);color:#fff;
  box-shadow:0 10px 26px rgba(79,70,229,.24);
  transition:transform .18s var(--ease);
}
.hx-mcard:hover{transform:translateY(-3px)}
.hx-mcard.empty{background:#f1f2f8;color:var(--muted);box-shadow:none}
.hx-mcard-label{display:block;font-size:12.5px;font-weight:800;opacity:.85;margin-bottom:6px}
.hx-mcard-count{display:block;font-size:26px;font-weight:900;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;margin-bottom:12px}
.hx-mcard-count i{font-style:normal;font-size:.55em;font-weight:800;opacity:.75;margin-left:3px}
.hx-mbar{height:6px;border-radius:999px;background:rgba(255,255,255,.28);overflow:hidden;margin-bottom:7px}
.hx-mcard.empty .hx-mbar{background:#e2e4ee}
.hx-mbar i{display:block;height:100%;border-radius:999px;background:#fbbf24;max-width:100%}
.hx-mcard.empty .hx-mbar i{background:#b9bfd2}
.hx-mcard small{font-size:12px;font-weight:800;opacity:.85}
.hx-mtotal{
  display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:13px 18px;border-radius:14px;background:#f8f9fd;
  font-size:13px;color:var(--muted);
}
.hx-mtotal b{font-weight:850;color:var(--ink);font-variant-numeric:tabular-nums}
.hx-mempty{padding:34px;text-align:center;color:var(--muted-2)}
.hx-mempty strong{display:block;margin-bottom:5px;color:var(--ink);font-size:15px}

@media (max-width:900px){
  .hx-stats{grid-template-columns:repeat(2,1fr)}
  .hx-mstatus,.hx-mgrid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:640px){
  .hx-seg{display:flex;overflow-x:auto;max-width:100%}
}

/* =====================================================================
   v0.4.9 추가 — 나머지 전 화면 심층 통일
   (이체 · 세무 4종 · 보험 검증 · 시스템 · 기기 승인 · 프로모션 · 공지 ·
    업로드 · 상세 · 검토 · 재인증 · 설치 · 다운로드 · 로그인)
   ===================================================================== */

/* 페이지 상단 툴바 · 필터 */
.page-toolbar{
  display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  padding:14px 18px;margin-bottom:20px;
  background:var(--panel);border:1px solid rgba(255,255,255,.9);
  border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);
}
.inline-filter,.month-filter{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.inline-filter label,.month-filter label{
  display:flex;align-items:center;gap:9px;
  font-size:13px;font-weight:800;color:var(--muted);
}
.filter-panel{padding:16px 20px}
.month-filter div label{color:var(--ink);font-size:14px}
.month-filter div small{display:block;color:var(--muted-2);font-weight:600;font-size:12px}
.head-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.head-actions .secondary.compact,.head-actions .primary.compact,
.page-toolbar .secondary.compact{border-radius:999px}

/* 빠른 링크 (세무 기능) */
.quick-links{display:grid;gap:8px}
.quick-links a{
  display:grid;gap:3px;
  padding:14px 17px;border-radius:14px;
  background:#f8f9fd;border:1px solid transparent;
  color:var(--ink);text-decoration:none;
  transition:background .16s,border-color .16s,transform .16s var(--ease);
}
.quick-links a:hover{background:#fff;border-color:rgba(79,70,229,.35);transform:translateX(3px)}
.quick-links a b{font-size:14px;font-weight:800}
.quick-links a span{font-size:12px;color:var(--muted-2)}

/* 안내 패널 · 정의 목록 · 범례 */
.notice-panel{
  background:var(--info-soft);border:0;border-radius:var(--radius-sm);
  padding:16px 20px;box-shadow:none;
}
.notice-panel strong{color:#02537e}
.notice-panel p{color:#1a6a94;font-size:13px}
.definition{display:grid;gap:0}
.definition>div{
  display:flex;justify-content:space-between;gap:14px;
  padding:11px 4px;border-bottom:1px solid var(--line-2);font-size:13.5px;
}
.definition>div:last-child{border-bottom:0}
.definition dt{color:var(--muted);font-weight:700}
.definition dd{margin:0;font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}
.legend-note{
  margin-top:16px;padding:14px 18px;border-radius:12px;
  background:#f8f9fd;font-size:12.5px;color:var(--muted);
  display:grid;gap:4px;
}
.legend-note strong{color:var(--ink-2)}
.coverage-message{color:var(--muted);font-size:13px}
.page-note,.inline-note{color:var(--muted-2)}

/* 지표 변형: 경고·정상 카드 */
.metric.warning-card{background:var(--warn-soft);border-color:transparent}
.metric.warning-card strong{color:#93540c}
.metric.success-card{background:var(--success-soft);border-color:transparent}
.metric.success-card strong{color:#067a55}
.metric-link{text-decoration:none;cursor:pointer}
.metric-link:hover{transform:translateY(-3px)}

/* 시스템: 범위 그리드 · 감사 저장소 */
.scope-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.scope{
  padding:14px 16px;border-radius:14px;font-size:13px;
  background:#f8f9fd;border:1px solid transparent;
}
.scope.done{background:var(--success-soft)}
.scope.next{background:var(--accent-soft);border-color:rgba(79,70,229,.2)}
.scope.later{background:#f1f2f8;color:var(--muted)}
.audit-storage-grid .metric{padding:18px 20px}
.audit-storage-note{color:var(--muted-2);font-size:12.5px}

/* 기기 승인: 소형 버튼 */
.small-button{
  display:inline-flex;align-items:center;
  padding:7px 14px;border:0;border-radius:999px;cursor:pointer;
  background:#eef0f6;color:var(--ink-2);
  font-size:12px;font-weight:800;text-decoration:none;
  transition:background .15s,color .15s,filter .15s;
}
.small-button:hover{background:var(--accent-soft);color:var(--accent-ink)}
.small-button.approve{background:var(--success);color:#fff}
.small-button.approve:hover{filter:brightness(1.08)}
.small-button.block{background:var(--danger-soft);color:var(--danger)}
.small-button.block:hover{background:#f8d7d7}
.table-actions{display:flex;gap:6px;flex-wrap:wrap}

/* 프로모션 · 공지 */
.promo-form-card,.promo-list-card{padding:24px 26px;margin-bottom:20px}
.promo-form-head h2,.promo-list-head h2{font-size:17.5px;font-weight:800;letter-spacing:-.015em}
.promo-form-head p,.promo-list-head p{color:var(--muted-2);font-size:12.5px}
.promo-form-row{display:flex;gap:14px;flex-wrap:wrap}
.promo-field{display:flex;flex-direction:column;gap:6px;font-size:12.5px;font-weight:800;color:var(--muted)}
.promo-field-wide{flex:1;min-width:240px}
.promo-form-actions{display:flex;gap:8px;margin-top:14px}
.promo-status{
  display:inline-flex;padding:4px 11px;border-radius:999px;
  font-size:11.5px;font-weight:800;
}
.promo-status.status-ACTIVE{background:var(--success-soft);color:#067a55}
.promo-status.status-DRAFT{background:#eef0f6;color:var(--muted)}
.promo-raw-preview{
  background:#f8f9fd;border:1px dashed #ccd2e2;border-radius:12px;
  padding:12px 15px;font-size:12.5px;color:var(--muted);
}
.promo-empty{padding:30px;text-align:center;color:var(--muted-2)}
.promo-card-stack{display:grid;gap:14px}
.promo-actions{display:flex;gap:6px;flex-wrap:wrap}
.page-head{margin-bottom:22px}
.page-head .overline{display:block;margin-bottom:6px}
.page-head p{color:var(--muted)}

/* 업로드 · 프로세스 플로우 · 확인 필드 */
.process-flow{
  display:flex;gap:10px;flex-wrap:wrap;
  padding:14px 16px;border-radius:14px;background:#f8f9fd;
  font-size:12.5px;color:var(--muted);
}
.check-field{
  display:flex;align-items:center;gap:10px;
  padding:11px 14px;border-radius:12px;background:#f8f9fd;font-size:13px;
}
.form-grid.two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-vertical{display:grid;gap:12px}
.form-vertical label,.form-grid label{
  display:grid;gap:6px;font-size:12.5px;font-weight:800;color:var(--muted);
}
.form-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.danger-action,.warning-action{border-radius:14px}
.approval-blockers{border-radius:12px}

/* 세무 검토 · 정산 검토 화면 */
.tax-review-toolbar,.settlement-review-toolbar{border-radius:var(--radius-lg)}
.tax-review-summary-grid,.settlement-review-summary-grid{gap:14px}
.tax-review-alert{background:var(--warn-soft);border:0;padding:14px 18px}
.tax-review-checks>*,.tax-review-history>*{border-color:var(--line-2)}
.tax-review-ref,.tax-review-definition{color:var(--muted)}
.tax-review-decision-form{display:grid;gap:12px}
.tax-classification-choice-grid{gap:10px}
.tax-classification-choice-grid label{
  border:1px solid var(--line);border-radius:14px;padding:12px 15px;
  transition:border-color .15s,background .15s;
}
.tax-classification-choice-grid label:hover{border-color:rgba(79,70,229,.4);background:#f8f8fe}
.tax-treatment-guide{background:#f8f9fd;border-radius:14px}
.recommendation-body{color:var(--muted)}
.review-blocker-link{color:var(--accent-ink)}
.review-confirm-check{background:#f8f9fd;border-radius:12px;padding:12px 15px}
.comparison-diff{color:var(--danger);font-weight:800}
.comparison-zero{color:var(--muted-2)}
.detail-metrics{gap:12px}
.mismatched{color:var(--danger)}
.mismatched-0{color:var(--success)}

/* 결과 행 강조 (보험 검증) */
.result-row.warning td{background:#fffaf1}
.result-row.danger td{background:#fdf3f3}
.result-row.success td{background:transparent}

/* 다운로드 · 설치 안내 */
.qr-section{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
.qr-label{font-size:12.5px;font-weight:800;color:var(--muted)}
.install-guide-list{color:var(--muted);font-size:13.5px}
.install-guide-list b{color:var(--ink)}
.os-toggle{display:inline-flex;gap:4px;padding:5px;background:#eef0f6;border-radius:999px}
.os-btn{
  padding:8px 16px;border:0;border-radius:999px;cursor:pointer;
  background:transparent;color:var(--muted);font-size:13px;font-weight:800;
}
.os-btn.on,.os-btn[aria-pressed="true"]{background:#fff;color:var(--accent-ink);box-shadow:var(--shadow-sm)}
.install-btn,.install-button{border-radius:999px}
.admin-install-grid{gap:14px}
.admin-install-status{border-radius:12px}
.muted-link{color:var(--muted-2)}

/* 로그인: 오로라 무대 + 유리 카드 */
.login-page{
  min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr;
  background:
    radial-gradient(820px 480px at 85% -10%,rgba(122,93,244,.16),transparent 60%),
    radial-gradient(620px 380px at -8% 110%,rgba(79,70,229,.10),transparent 55%),
    var(--bg);
}
.login-visual{
  margin:18px 0 18px 18px;border-radius:28px;
  background:var(--grad-hero);color:#fff;
  display:flex;align-items:center;padding:56px;
  position:relative;overflow:hidden;
  box-shadow:var(--shadow-glow);
}
.login-visual:before{
  content:"";position:absolute;inset:0;
  background:
    radial-gradient(460px 280px at 88% 4%,rgba(255,255,255,.16),transparent 60%),
    radial-gradient(380px 240px at 6% 108%,rgba(255,255,255,.10),transparent 55%);
}
.visual-content{position:relative;max-width:480px}
.login-visual .brand{border-bottom:0;margin-bottom:26px;padding:0;cursor:default}
.login-visual .brand:hover{background:transparent}
.login-visual .brand-text strong{color:#fff}
.login-visual .brand-text small{color:rgba(255,255,255,.7)}
.login-visual h1{font-size:34px;font-weight:900;letter-spacing:-.035em;line-height:1.25;margin:0 0 14px}
.login-visual p{color:rgba(255,255,255,.82);font-size:14.5px;line-height:1.65}
.hx-login-feats{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0 6px}
.hx-login-feat{
  padding:7px 14px;border-radius:999px;font-size:12.5px;font-weight:800;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.24);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
.security-note{
  margin-top:20px;padding:12px 16px;border-radius:12px;
  background:rgba(255,255,255,.12);border:1px dashed rgba(255,255,255,.3);
  font-size:12.5px;color:rgba(255,255,255,.85);
}
.login-panel{display:grid;place-items:center;padding:32px}
.login-card{
  width:min(420px,100%);
  background:rgba(255,255,255,.86);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,.95);
  border-radius:26px;box-shadow:var(--shadow-md);
  padding:36px 34px;display:grid;gap:14px;
}
.login-card h2{margin:0;font-size:24px;font-weight:850;letter-spacing:-.02em}
.login-card>p{margin:0;color:var(--muted);font-size:13.5px}
.login-card label{display:grid;gap:6px;font-size:12.5px;font-weight:800;color:var(--muted)}
.login-card .primary.full{width:100%;justify-content:center;padding:14px;font-size:15px}
.login-card small{color:var(--muted-2);font-size:11.5px;line-height:1.55}
.alert{border-radius:12px;border:0}
.alert.info{background:var(--info-soft);color:#02537e}
.alert.error{background:var(--danger-soft);color:#b91c1c}
@media (max-width:900px){
  .login-page{grid-template-columns:1fr}
  .login-visual{display:none}
}

@media (max-width:900px){
  .scope-grid{grid-template-columns:1fr}
  .form-grid.two-col{grid-template-columns:1fr}
}
