/* Hallway — cinematic, poster-forward design system for a private streamer.
   Tokens and components ported from design/hallway-styleguide.html.
   Served at /static/hallway.css (compile-time embedded). */

*{box-sizing:border-box}

:root{
  --bg:oklch(0.145 0.006 65);
  --surface-1:oklch(0.185 0.006 65);
  --surface-2:oklch(0.225 0.007 65);
  --surface-3:oklch(0.275 0.008 65);
  --line:oklch(0.32 0.008 65);
  --line-soft:oklch(0.26 0.007 65);
  --text:oklch(0.965 0.004 75);
  --text-dim:oklch(0.74 0.006 75);
  --text-faint:oklch(0.56 0.006 75);
  --accent:oklch(0.56 0.216 27);
  --accent-press:oklch(0.49 0.196 27);
  --accent-ink:oklch(0.98 0.012 27);
  --accent-wash:oklch(0.56 0.216 27 / 0.18);
  --ok:oklch(0.78 0.13 152);
  --warn:oklch(0.82 0.13 82);
  --bad:oklch(0.68 0.16 27);
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--sp-7:48px;--sp-8:64px;
  --r-1:6px;--r-2:10px;--r-3:14px;--r-4:20px;--r-pill:999px;
  --sh-1:0 1px 2px oklch(0 0 0/0.4);
  --sh-2:0 8px 24px oklch(0 0 0/0.45);
  --sh-3:0 24px 60px oklch(0 0 0/0.55);
  --sh-glow:0 0 0 3px var(--accent-wash),0 12px 30px oklch(0 0 0/0.5);
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,monospace;
  --sans:'Manrope',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
}

html{scroll-behavior:smooth}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--text);font-family:var(--sans);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh}
a{color:var(--accent);text-decoration:none}
a:hover{color:var(--text)}
img{max-width:100%;display:block}
::selection{background:var(--accent);color:var(--accent-ink)}
::-webkit-scrollbar{height:10px;width:10px}
::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:99px;border:2px solid var(--bg)}
::-webkit-scrollbar-track{background:transparent}

/* ---- typography helpers ---- */
.overline{font:600 12px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--text-faint)}
.muted{color:var(--text-dim)}
.faint{color:var(--text-faint)}
.mono{font-family:var(--mono)}

/* ---- buttons ---- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:11px 18px;border-radius:var(--r-2);border:1px solid var(--line);
  background:var(--surface-2);color:var(--text);font:700 14px/1 var(--sans);
  letter-spacing:-.01em;cursor:pointer;transition:transform .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}
.btn:hover{background:var(--surface-3);border-color:var(--line);color:var(--text);transform:translateY(-1px)}
.btn:focus-visible{outline:none;box-shadow:var(--sh-glow)}
.btn:active{transform:translateY(0)}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent-press));
  border-color:transparent;color:var(--accent-ink)}
.btn-primary:hover{color:var(--accent-ink);box-shadow:0 10px 26px var(--accent-wash);transform:translateY(-1px)}
.btn-ghost{background:transparent;border-color:var(--line-soft)}
.btn-ghost:hover{background:var(--surface-1)}
.btn-danger{background:transparent;border-color:color-mix(in oklch,var(--bad),transparent 55%);color:var(--bad)}
.btn-danger:hover{background:color-mix(in oklch,var(--bad),transparent 85%);color:var(--bad)}
.btn-sm{padding:7px 12px;font-size:12.5px;border-radius:var(--r-1)}
.btn-block{width:100%}

/* ---- badges / pills ---- */
.badge{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:var(--r-pill);
  background:var(--surface-2);border:1px solid var(--line-soft);
  font:600 11.5px/1 var(--mono);letter-spacing:.04em;color:var(--text-dim)}
.badge .dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint)}
.badge-ok{color:var(--ok)}.badge-ok .dot{background:var(--ok)}
.badge-warn{color:var(--warn)}.badge-warn .dot{background:var(--warn)}
.badge-bad{color:var(--bad)}.badge-bad .dot{background:var(--bad)}
.badge-accent{color:var(--accent-ink);background:var(--accent-wash);border-color:transparent}
/* server-emitted state classes (members / requests / rejections) */
.badge.approved,.badge.enabled,.badge.done{color:var(--ok);border-color:color-mix(in oklch,var(--ok),transparent 66%)}
.badge.pending,.badge.new{color:var(--warn);border-color:color-mix(in oklch,var(--warn),transparent 60%)}
.badge.blocked,.badge.dismissed{color:var(--bad);border-color:color-mix(in oklch,var(--bad),transparent 55%)}
.badge.google,.badge.movie{color:var(--accent-ink);background:var(--accent-wash);border-color:transparent}
.badge.home,.badge.series{color:var(--text);border-color:var(--line)}
.badge.seeding,.badge.watched{color:var(--ok);border-color:color-mix(in oklch,var(--ok),transparent 66%)}
.badge.downloading{color:var(--accent-ink);background:var(--accent-wash);border-color:transparent}
.badge.paused,.badge.in-progress{color:var(--warn);border-color:color-mix(in oklch,var(--warn),transparent 60%)}

/* ---- app shell + header ---- */
.shell{max-width:1360px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.appbar{position:sticky;top:0;z-index:20;backdrop-filter:blur(14px);
  background:color-mix(in oklch,var(--bg),transparent 22%);
  border-bottom:1px solid var(--line-soft)}
.appbar-inner{display:flex;align-items:center;gap:18px;height:64px;
  max-width:1360px;margin:0 auto;padding:0 clamp(16px,4vw,40px)}
.brand{display:flex;align-items:center;gap:10px;font:800 16px/1 var(--sans);letter-spacing:-.02em;color:var(--text)}
.brand .mark{width:22px;height:22px;border-radius:6px;
  background:linear-gradient(135deg,var(--accent),var(--accent-press));box-shadow:0 0 18px var(--accent-wash)}
.appbar .spacer{flex:1}
.appbar .nav-link{color:var(--text-dim);font:600 13.5px/1 var(--sans);padding:8px 10px;border-radius:var(--r-1)}
.appbar .nav-link:hover{color:var(--text);background:var(--surface-1)}
.who{display:flex;align-items:center;gap:9px;padding:5px 6px 5px 12px;border-radius:var(--r-pill);
  border:1px solid var(--line-soft);background:var(--surface-1);color:var(--text-dim);font:600 13px/1 var(--sans)}
.who .chip{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;
  background:linear-gradient(145deg,var(--surface-3),var(--accent-press));color:#fff;font:800 13px/1 var(--sans)}

/* search input */
.search{display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:var(--r-pill);
  background:var(--surface-1);border:1px solid var(--line-soft);min-width:min(320px,40vw)}
.search input{flex:1;background:transparent;border:0;outline:none;color:var(--text);font:500 14px/1 var(--sans)}
.search input::placeholder{color:var(--text-faint)}

/* ---- sections & rows ---- */
.section{margin:clamp(28px,4vw,48px) 0}
.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin:0 0 16px}
.section-head h2{font:700 clamp(19px,2.2vw,24px)/1.05 var(--sans);letter-spacing:-.02em;margin:0}
.row-scroll{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(150px,168px);
  gap:16px;overflow-x:auto;padding-bottom:8px;scroll-snap-type:x proximity;scrollbar-width:thin}
.row-scroll>*{scroll-snap-align:start}

/* poster grid */
.grid{display:grid;gap:clamp(14px,1.6vw,20px);
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}

/* ---- poster card ---- */
.card{appearance:none;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;
  display:block;border-radius:var(--r-3);overflow:hidden;
  background:var(--surface-2);border:1px solid var(--line-soft);
  transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}
.card:hover{transform:translateY(-4px);box-shadow:var(--sh-2);border-color:var(--line)}
.card:focus-visible{outline:none;box-shadow:var(--sh-glow)}
.card .poster-wrap{position:relative;aspect-ratio:2/3;overflow:hidden;background:var(--surface-3)}
.card .poster{width:100%;height:100%;object-fit:cover;transition:transform .3s ease}
.card:hover .poster,.card:focus-visible .poster{transform:scale(1.05)}
.card .poster-fallback{position:absolute;inset:0;display:grid;place-items:center;text-align:center;
  padding:14px;background:linear-gradient(160deg,var(--surface-3),var(--surface-1));
  color:var(--text-faint);font:800 30px/1 var(--sans)}
.card .cap{padding:10px 12px 12px}
.card .title{font:700 14px/1.25 var(--sans);letter-spacing:-.01em;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card .sub{font:600 11px/1.3 var(--mono);color:var(--text-faint);margin-top:5px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.card .flag{position:absolute;top:9px;right:9px;z-index:2;
  padding:3px 9px;border-radius:var(--r-pill);font:700 10.5px/1 var(--mono);letter-spacing:.03em;
  background:var(--accent);color:var(--accent-ink)}
.card .flag.left{left:9px;right:auto;background:color-mix(in oklch,var(--surface-1),transparent 8%);color:var(--text-dim)}
.card .play-fab{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.82);
  width:50px;height:50px;border-radius:50%;display:grid;place-items:center;
  background:var(--accent);color:var(--accent-ink);box-shadow:var(--sh-2);font-size:18px;
  opacity:0;transition:opacity .18s ease,transform .18s ease}
.card:hover .play-fab,.card:focus-visible .play-fab{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* progress bar (continue watching) */
.progress{height:4px;border-radius:99px;background:oklch(1 0 0/0.18);overflow:hidden;margin-top:9px}
.progress>span{display:block;height:100%;background:var(--accent);border-radius:99px}

/* ---- centered auth / holding screens ---- */
.stage{min-height:100vh;display:grid;place-items:center;padding:clamp(24px,6vw,64px) 20px;
  background:radial-gradient(120% 80% at 50% -10%,color-mix(in oklch,var(--accent),transparent 82%),transparent 60%),var(--bg)}
.stage-card{width:min(440px,100%);text-align:center}
.stage h1{font:800 clamp(26px,4vw,38px)/1.05 var(--sans);letter-spacing:-.03em;margin:0 0 10px}
.stage p{color:var(--text-dim);font:400 15px/1.6 var(--sans);margin:0 auto 26px;max-width:36ch}
.g-btn{display:inline-flex;align-items:center;gap:11px;padding:13px 22px;border-radius:var(--r-2);
  background:#fff;color:#18181b;font:700 15px/1 var(--sans);box-shadow:var(--sh-2);transition:transform .15s ease,box-shadow .15s ease}
.g-btn:hover{color:#18181b;transform:translateY(-1px);box-shadow:var(--sh-3)}
.g-btn:focus-visible{outline:none;box-shadow:var(--sh-glow)}
.g-btn .g{width:20px;height:20px;border-radius:50%;background:conic-gradient(from -45deg,#ea4335,#fbbc05,#34a853,#4285f4,#ea4335);flex:none}

/* ---- profile picker ---- */
.profiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));
  gap:clamp(16px,4vw,32px);max-width:760px;margin:36px auto 0}
.profiles form{margin:0}
.profile{width:100%;padding:0;border:0;background:transparent;color:var(--text-dim);font:inherit;cursor:pointer}
.profile .avatar{display:grid;place-items:center;width:100%;max-width:160px;aspect-ratio:1;margin:0 auto;
  border:2px solid var(--line);border-radius:var(--r-4);
  background:linear-gradient(150deg,var(--surface-2),var(--accent-press));color:#fff;
  font:800 clamp(38px,9vw,64px)/1 var(--sans);box-shadow:var(--sh-2);
  transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}
.profile .pname{display:block;margin-top:13px;font:600 15px/1.3 var(--sans);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .18s ease}
.profile:hover .avatar,.profile:focus-visible .avatar{border-color:var(--accent);
  box-shadow:0 14px 34px var(--accent-wash);transform:translateY(-4px)}
.profile:hover .pname,.profile:focus-visible .pname{color:var(--text)}
.profile:focus-visible{outline:none}

/* ---- generic surface panel / forms ---- */
.panel{background:var(--surface-1);border:1px solid var(--line-soft);border-radius:var(--r-3);padding:clamp(18px,2.4vw,26px)}
.panel>h2{font:700 16px/1.2 var(--sans);letter-spacing:-.01em;margin:0 0 12px}
.field{display:flex;flex-direction:column;gap:7px;margin-bottom:14px;text-align:left}
.field label{font:600 12.5px/1 var(--sans);color:var(--text-dim)}
.input{padding:11px 14px;border-radius:var(--r-2);border:1px solid var(--line);
  background:var(--surface-2);color:var(--text);font:500 14px/1.2 var(--sans);outline:none}
.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-wash)}
.error{color:var(--bad);font:600 13px/1.4 var(--sans)}

/* ---- admin tables ---- */
.table-wrap{overflow-x:auto;border:1px solid var(--line-soft);border-radius:var(--r-3);background:var(--surface-1)}
table.tbl{width:100%;border-collapse:collapse;font:500 13.5px/1.4 var(--sans);min-width:640px}
.tbl th{text-align:left;padding:12px 16px;font:600 11px/1 var(--mono);letter-spacing:.12em;
  text-transform:uppercase;color:var(--text-faint);border-bottom:1px solid var(--line-soft);white-space:nowrap}
.tbl td{padding:13px 16px;border-bottom:1px solid var(--line-soft);color:var(--text);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl tr:hover td{background:color-mix(in oklch,var(--surface-2),transparent 40%)}
.actions{display:flex;gap:7px;flex-wrap:wrap}

/* ---- stat tiles + storage gauge ---- */
.tiles{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));margin:0 0 8px}
.tile{background:var(--surface-1);border:1px solid var(--line-soft);border-radius:var(--r-3);padding:18px 20px}
.tile .k{font:600 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint)}
.tile .v{font:800 26px/1 var(--sans);letter-spacing:-.02em;margin-top:10px}
.gauge{margin-top:12px;height:9px;border-radius:99px;background:var(--surface-3);overflow:hidden}
.gauge>span{display:block;height:100%;border-radius:99px;background:var(--ok)}
.gauge.warn>span{background:var(--warn)}
.gauge.bad>span{background:var(--bad)}

/* storage widget (admin) — state class comes from the server */
.storage-reading{font:800 24px/1.1 var(--sans);letter-spacing:-.02em;margin:0}
.storage-ok .storage-reading{color:var(--ok)}
.storage-warn .storage-reading{color:var(--warn)}
.storage-critical .storage-reading{color:var(--bad)}
.storage-ok{border-color:color-mix(in oklch,var(--ok),transparent 62%)}
.storage-warn{border-color:color-mix(in oklch,var(--warn),transparent 55%)}
.storage-critical{border-color:color-mix(in oklch,var(--bad),transparent 48%)}
.danger{border-color:color-mix(in oklch,var(--bad),transparent 55%)}
.job,.title-delete{padding-top:16px;margin-top:16px;border-top:1px solid var(--line-soft)}
.job:first-of-type,.title-delete:first-of-type{border-top:0;margin-top:0}
.job code,.job pre{display:block;overflow-wrap:anywhere;white-space:pre-wrap;
  font:500 12.5px/1.5 var(--mono);color:var(--text-dim);margin:6px 0}

/* utilities */
.hidden{display:none}
.stack{display:flex;flex-direction:column;gap:14px}
.rowflex{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.empty{padding:34px;text-align:center;color:var(--text-dim);border:1px dashed var(--line);border-radius:var(--r-3)}
.page-pad{padding:clamp(20px,3vw,34px) 0 80px}

/* ---- admin console ---- */
.admin-page .btn{min-height:38px;padding:var(--sp-2) var(--sp-3);border-radius:var(--r-2);
  font:600 11px/1 var(--mono);letter-spacing:0;white-space:nowrap}
.admin-page .btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.admin-page .btn-primary:hover{background:var(--accent-press);border-color:var(--accent-press);box-shadow:none}
.admin-page .panel{border-radius:var(--r-2);box-shadow:var(--sh-1)}
.admin-page form{margin:0}
.admin-console{min-height:100vh;display:grid;grid-template-columns:232px minmax(0,1fr);grid-template-rows:auto 1fr}
.admin-sidebar{grid-row:1/3;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;
  padding:var(--sp-5) var(--sp-4);background:var(--surface-1);border-right:1px solid var(--line-soft)}
.admin-brand{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2);color:var(--text);
  font:700 13px/1 var(--mono);letter-spacing:.06em}
.admin-brand:hover{color:var(--text)}
.admin-brand-mark{width:18px;height:18px;border-radius:var(--r-1);background:var(--accent);box-shadow:var(--sh-glow)}
.admin-brand-copy span,.admin-topbar-brand span{color:var(--accent)}
.admin-nav-label{margin:var(--sp-3) var(--sp-2) var(--sp-2);color:var(--text-faint);
  font:600 10px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase}
.admin-nav{display:grid;gap:var(--sp-3);margin-top:var(--sp-4)}
.admin-nav-group{display:grid;gap:var(--sp-1)}
.admin-nav-link{width:100%;min-height:42px;display:flex;align-items:center;gap:var(--sp-3);
  padding:var(--sp-3);border:1px solid var(--surface-1);border-radius:var(--r-2);
  background:var(--surface-1);color:var(--text-dim);font:600 13px/1 var(--sans)}
.admin-nav-link:hover{background:var(--surface-2);color:var(--text)}
.admin-page-dashboard .admin-nav-dashboard,.admin-page-analytics .admin-nav-analytics,
.admin-page-library .admin-nav-library,.admin-page-organize .admin-nav-organize,
.admin-page-members .admin-nav-members,.admin-page-requests .admin-nav-requests,
.admin-page-rejections .admin-nav-rejections,.admin-page-torrents .admin-nav-torrents{
  background:var(--accent-wash);border-color:var(--accent);color:var(--text)}
.admin-nav-icon{width:16px;color:var(--text-faint);font:600 12px/1 var(--mono);text-align:center}
.admin-page-dashboard .admin-nav-dashboard .admin-nav-icon,.admin-page-analytics .admin-nav-analytics .admin-nav-icon,
.admin-page-library .admin-nav-library .admin-nav-icon,.admin-page-organize .admin-nav-organize .admin-nav-icon,
.admin-page-members .admin-nav-members .admin-nav-icon,.admin-page-requests .admin-nav-requests .admin-nav-icon,
.admin-page-rejections .admin-nav-rejections .admin-nav-icon,.admin-page-torrents .admin-nav-torrents .admin-nav-icon{color:var(--accent)}
.admin-count{margin-left:auto;min-width:22px;padding:var(--sp-1) var(--sp-2);border-radius:var(--r-pill);
  background:var(--surface-3);color:var(--text-dim);font:600 10px/1 var(--mono);text-align:center;font-variant-numeric:tabular-nums}
.admin-count.warn{color:var(--warn)}.admin-count.bad{color:var(--bad)}
.admin-sidebar-foot{margin-top:auto;padding:var(--sp-4) var(--sp-2) 0;border-top:1px solid var(--line-soft);display:grid;gap:var(--sp-3)}
.admin-operator{color:var(--text-faint);font:500 11px/1.5 var(--mono)}
.admin-operator strong{display:block;color:var(--text-dim);font-weight:600}
.admin-sidebar-foot .btn{width:100%}
.admin-topbar{grid-column:2;min-height:62px;display:flex;align-items:center;gap:var(--sp-4);
  padding:var(--sp-3) var(--sp-5);border-bottom:1px solid var(--line-soft);background:var(--surface-1);position:sticky;top:0;z-index:5}
.admin-topbar-brand{font:600 12px/1 var(--mono)}
.admin-top-meta{margin-left:auto;color:var(--text-faint);font:500 11px/1 var(--mono);font-variant-numeric:tabular-nums}
.admin-content{grid-column:2;min-width:0;max-width:1500px;width:100%;margin:0 auto;padding:var(--sp-6)}
.admin-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-5);margin-bottom:var(--sp-6)}
.admin-overline{margin-bottom:var(--sp-3);color:var(--accent);font:500 11px/1 var(--mono);letter-spacing:.18em;text-transform:uppercase}
.admin-page h1{margin:0;font:700 clamp(28px,3vw,38px)/1.05 var(--sans);letter-spacing:-.028em}
.admin-page h2{margin:0;font:700 20px/1.1 var(--sans);letter-spacing:-.015em}
.admin-page h3{margin:0;font:700 15px/1.2 var(--sans)}
.admin-lede{margin:var(--sp-2) 0 0;color:var(--text-dim);font-size:14px;line-height:1.6}
.admin-section{margin-top:var(--sp-6)}
.admin-section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4)}
.admin-grid{display:grid;gap:var(--sp-4)}
.admin-stats{grid-template-columns:repeat(3,minmax(0,1fr))}
.admin-attention-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.admin-split{grid-template-columns:repeat(2,minmax(0,1fr))}
.admin-ingest-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.admin-stat{padding:var(--sp-4) var(--sp-5);border:1px solid var(--line-soft);border-radius:var(--r-2);background:var(--surface-1);box-shadow:var(--sh-1)}
.admin-stat-label{color:var(--text-faint);font:600 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.admin-stat-value{margin-top:var(--sp-3);font:700 30px/1 var(--sans);font-variant-numeric:tabular-nums}
.admin-attention-card{color:var(--text)}
.admin-attention-card:hover{border-color:var(--accent);color:var(--text);transform:translateY(-1px)}
.admin-storage{padding:var(--sp-5)}
.admin-storage-copy{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-4);color:var(--text-dim);font:500 12px/1 var(--mono);font-variant-numeric:tabular-nums}
.admin-storage-copy strong{color:var(--text)}
.admin-meter{height:14px;margin-top:var(--sp-4);border-radius:var(--r-pill);overflow:hidden;background:var(--surface-3)}
.admin-meter-fill{height:100%;width:0;background:var(--accent);transition:width .2s ease}
.storage-warn .admin-meter-fill{background:var(--warn)}.storage-critical .admin-meter-fill{background:var(--bad)}
.admin-storage-legend{display:flex;flex-wrap:wrap;gap:var(--sp-5);margin-top:var(--sp-3);color:var(--text-faint);font:500 11px/1 var(--mono)}
.admin-legend-key{display:inline-flex;align-items:center;gap:var(--sp-2)}
.admin-legend-box{width:9px;height:9px;border-radius:var(--r-1);background:var(--accent)}
.admin-legend-box.free{background:var(--surface-3);border:1px solid var(--line)}
.admin-state{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3);
  border:1px solid var(--line);border-radius:var(--r-pill);font:600 10px/1 var(--mono);white-space:nowrap}
.admin-state::before{content:"";width:7px;height:7px;flex:none;background:currentColor}
.admin-state-approved,.admin-state-done,.admin-state-seeding,.admin-state-watched,.admin-state-storage.storage-ok{color:var(--ok)}
.admin-state-approved::before,.admin-state-done::before,.admin-state-seeding::before,.admin-state-watched::before{border-radius:var(--r-pill)}
.admin-state-pending,.admin-state-new,.admin-state-paused,.admin-state-progress,.admin-state-storage.storage-warn{color:var(--warn)}
.admin-state-pending::before,.admin-state-new::before,.admin-state-progress::before{border-radius:var(--r-1);transform:rotate(45deg)}
.admin-state-blocked,.admin-state-stalled,.admin-state-dismissed,.admin-state-storage.storage-critical{color:var(--bad)}
.admin-state-blocked::before,.admin-state-stalled::before,.admin-state-dismissed::before{border-radius:var(--r-1)}
.admin-state-downloading{color:var(--accent)}.admin-state-downloading::before{border-radius:var(--r-pill)}
.admin-state-paused::before{border-radius:var(--r-1)}
.admin-job-list{padding:0;overflow:hidden}
.admin-job-card{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(0,1.3fr);gap:var(--sp-5);padding:var(--sp-5);border-top:1px solid var(--line-soft)}
.admin-job-card:first-child{border-top:0}
.admin-job-kind{color:var(--accent);font:600 11px/1 var(--mono);text-transform:uppercase}
.admin-code{margin:var(--sp-2) 0 0;padding:var(--sp-3);border-radius:var(--r-1);background:var(--surface-2);color:var(--text-dim);font:500 11px/1.5 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}
.admin-job-form,.admin-job-action{margin-top:var(--sp-3)!important}
.admin-job-field-label{margin-top:var(--sp-3);color:var(--text-faint);font:600 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.admin-job-dismiss{margin-top:var(--sp-2)!important}
.admin-subline{margin-top:var(--sp-1);color:var(--text-faint);font:500 11px/1.3 var(--mono)}
.admin-screen-note{margin-top:var(--sp-5);color:var(--text-faint);font:500 11px/1.6 var(--mono)}
.admin-job-form .admin-screen-note{margin:0;align-self:center}
.admin-flush{margin:0}
.admin-notice{display:flex;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4);border:1px solid var(--line);border-radius:var(--r-2);background:var(--surface-2);color:var(--text-dim);font-size:13px;line-height:1.5}
.admin-notice-mark{color:var(--warn);font:700 15px/1 var(--mono)}
.admin-danger-zone{border-color:var(--bad)}
.admin-delete-row{display:grid;grid-template-columns:minmax(160px,.7fr) minmax(280px,1.3fr);align-items:center;gap:var(--sp-4);padding:var(--sp-4) 0;border-top:1px solid var(--line-soft)}
.admin-delete-row:first-of-type{margin-top:var(--sp-4)}
.admin-delete-row .input{max-width:320px}
.admin-actions-end{justify-content:flex-end}
.admin-member-cards{display:grid;gap:var(--sp-5)}
.admin-member-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-4)}
.admin-member-name{font:700 18px/1.1 var(--sans)}
.admin-table-wrap{overflow-x:auto;border:1px solid var(--line-soft);border-radius:var(--r-2);background:var(--surface-1);box-shadow:var(--sh-1)}
.admin-table{width:100%;min-width:920px;border-collapse:collapse;font-variant-numeric:tabular-nums}
.admin-table th{padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--line-soft);background:var(--surface-2);color:var(--text-faint);font:600 10px/1 var(--mono);letter-spacing:.1em;text-align:left;text-transform:uppercase;white-space:nowrap}
.admin-table td{padding:var(--sp-4);border-bottom:1px solid var(--line-soft);color:var(--text-dim);font-size:13px;vertical-align:middle}
.admin-table tbody tr:last-child td{border-bottom:0}.admin-table tbody tr:hover td{background:var(--surface-2)}
.admin-table td strong{color:var(--text)}
.admin-history{min-width:760px}
.admin-profile-line{display:flex;align-items:center;gap:var(--sp-3)}
.admin-avatar{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:var(--r-2);background:var(--surface-3);color:var(--text-dim);font:700 13px/1 var(--sans)}
.admin-source{color:var(--text-faint);font:600 10px/1 var(--mono);text-transform:uppercase}
.admin-create-profile{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-5);margin-bottom:var(--sp-5)}
.admin-create-profile .input{width:280px}
.admin-request-match{display:flex;align-items:center;gap:var(--sp-2);min-width:230px}
.admin-rejection-notice{margin-bottom:var(--sp-4)}
.admin-health{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--ok);font:500 11px/1 var(--mono)}
.admin-health-dot{width:7px;height:7px;border-radius:var(--r-pill);background:var(--ok);box-shadow:0 0 8px var(--ok)}
.admin-torrent-storage{margin-bottom:var(--sp-5)}
.admin-library-ingest,.admin-download-ingest{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--sp-5);margin-bottom:var(--sp-5)}
.admin-library-ingest .input{max-width:420px}
.admin-library-notice{margin-bottom:var(--sp-4)}
.admin-library-table .input{min-width:240px}
.admin-download-form{grid-template-columns:minmax(240px,1fr) minmax(240px,1fr) auto;align-items:end}
.admin-progress-track{width:150px;height:5px;margin-top:var(--sp-2);border-radius:var(--r-pill);background:var(--surface-3);overflow:hidden}
.admin-progress-value{height:100%;background:var(--accent)}
.admin-error-line{margin-top:var(--sp-2);color:var(--bad);font:500 11px/1.4 var(--mono)}

/* ---- unified edge-state cards ---- */
.status-stage{min-height:100vh;display:grid;place-items:center;padding:var(--sp-7) var(--sp-5);
  background:radial-gradient(120% 80% at 50% -10%,var(--accent-wash),transparent 60%),var(--bg)}
.status-card{width:min(100%,440px);display:flex;flex-direction:column;align-items:center;padding:var(--sp-7) var(--sp-6);
  border:1px solid var(--line);border-radius:var(--r-4);background:var(--surface-1);box-shadow:var(--sh-3);text-align:center}
.status-card.form-card{align-items:stretch;text-align:left}
.status-icon{width:52px;height:52px;display:grid;place-items:center;margin-bottom:var(--sp-5);border:1px solid var(--line);border-radius:var(--r-3);background:var(--surface-2);color:var(--accent);font:700 20px/1 var(--mono)}
.status-icon.pending{color:var(--warn)}.status-icon.sent{color:var(--ok)}.status-icon.blocked{color:var(--bad)}
.status-card h1,.status-card h2{margin:0;font:700 22px/1.15 var(--sans);letter-spacing:-.02em}
.status-card p{margin:var(--sp-3) 0 0;color:var(--text-dim);font-size:14px;line-height:1.65;text-wrap:pretty}
.status-card strong{color:var(--text)}
.status-eyebrow{margin-bottom:var(--sp-3);color:var(--accent);font:500 11px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase}
.status-state{display:inline-flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-4);padding:var(--sp-2) var(--sp-3);border:1px solid var(--line);border-radius:var(--r-pill);color:var(--warn);font:600 10px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase}
.status-state::before{content:"";width:7px;height:7px;border-radius:var(--r-1);background:currentColor;transform:rotate(45deg)}
.status-state.sent{color:var(--ok)}.status-state.sent::before{border-radius:var(--r-pill);transform:none}
.status-state.blocked{color:var(--bad)}.status-state.blocked::before{transform:none}
.status-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-2);width:100%;margin-top:var(--sp-5)}
.status-card .btn{min-height:42px;padding:var(--sp-3) var(--sp-4);font-size:13px}
.status-detail-list{width:100%;display:grid;gap:var(--sp-3);margin:var(--sp-5) 0 0;padding:var(--sp-4) 0;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);text-align:left}
.status-detail-row{display:grid;grid-template-columns:88px minmax(0,1fr);gap:var(--sp-3);align-items:baseline}
.status-detail-label{color:var(--text-faint);font:500 10px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase}
.status-detail-value{color:var(--text);font-size:13px}
.status-form-head{display:flex;align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5)}
.status-form-head .status-icon{flex:none;margin:0}
.status-form-copy{margin:var(--sp-2) 0 0!important;font-size:13px!important;line-height:1.5!important}
.status-card .field{display:grid;gap:var(--sp-2);margin:0}
.status-card .input{min-height:46px;padding:var(--sp-3) var(--sp-4)}
.status-card .input.input-error{border-color:var(--bad)}
.status-error{display:flex;align-items:center;gap:var(--sp-2);margin:var(--sp-2) 0 0;color:var(--bad);font:500 11px/1.4 var(--mono)}
.status-error::before{content:"!";width:18px;height:18px;display:grid;place-items:center;border:1px solid var(--bad);border-radius:var(--r-pill);font-weight:700}
.form-card .btn{width:100%;margin-top:var(--sp-4)}
.status-security-note{margin-top:var(--sp-4);color:var(--text-faint);font:500 10px/1.5 var(--mono);text-align:center}

@media (max-width:1050px){
  .admin-console{grid-template-columns:84px minmax(0,1fr)}
  .admin-sidebar{padding:var(--sp-5) var(--sp-3)}
  .admin-brand-copy,.admin-nav-copy,.admin-nav-label,.admin-sidebar-foot{display:none}
  .admin-brand,.admin-nav-link{justify-content:center}
  .admin-count{position:absolute;transform:translate(var(--sp-4),calc(var(--sp-3) * -1));min-width:18px;padding:var(--sp-1)}
  .admin-ingest-grid,.admin-attention-grid{grid-template-columns:1fr 1fr}
  .admin-download-form{grid-template-columns:1fr}
}
@media (max-width:720px){
  .admin-console{display:block}
  .admin-sidebar{position:sticky;z-index:6;width:100%;height:auto;display:block;padding:var(--sp-2);border-right:0;border-bottom:1px solid var(--line-soft);overflow-x:auto}
  .admin-brand{display:none}.admin-nav{display:flex;min-width:max-content;margin-top:0}.admin-nav-group{display:contents}.admin-nav-link{width:auto;padding:var(--sp-3)}
  .admin-nav-copy{display:inline}.admin-nav-icon{display:none}.admin-count{position:static;transform:none;margin-left:var(--sp-1)}
  .admin-topbar{position:static;padding:var(--sp-3) var(--sp-4)}.admin-top-meta{display:none}
  .admin-content{padding:var(--sp-5) var(--sp-4)}
  .admin-page-head,.admin-storage-copy,.admin-member-head,.admin-create-profile,.admin-library-ingest,.admin-download-ingest{align-items:flex-start;flex-direction:column}
  .admin-stats,.admin-split,.admin-attention-grid{grid-template-columns:1fr}.admin-job-card,.admin-delete-row{grid-template-columns:1fr}
  .admin-actions-end{justify-content:flex-start}
  .status-stage{padding:var(--sp-5) var(--sp-3)}.status-card{padding:var(--sp-6) var(--sp-5)}
  .status-actions{flex-direction:column}.status-actions .btn{width:100%}
}
