/* ============================================================================
   CFlix — cinematic-glass design system
   ----------------------------------------------------------------------------
   Everything is built on tokens (spacing / radius / type / elevation / glass).
   Dark is the default palette; [data-theme="light"] overrides colour + glass
   tokens only. An inline <head> guard sets data-theme before first paint;
   theme.js owns the auto|light|dark preference + toggle UI.
   ========================================================================= */

:root{
  color-scheme: dark;

  /* ----- colour ----- */
  --bg:#0b0e14; --panel:#161b22; --panel2:#1c2330; --border:#293040;
  --text:#e6edf3; --muted:#9aa4b2; --dim:#6e7681;
  --accent:#58a6ff; --accent2:#7ee787;
  --up:#3fb950; --down:#f85149; --wait:#d29922;
  --bg-glow-1:#12203a; --bg-glow-2:#1a1230;
  --scrim-rgb:11,14,20;
  --err-text:#ffb4ad; --ok-text:#8ff0a4; --warn-text:#f0d18a;
  --on-accent:#08111f;

  /* ----- glass ----- */
  --glass-bg:rgba(22,27,34,.62);
  --glass-brd:rgba(255,255,255,.09);
  --glass-hi:rgba(255,255,255,.14);   /* hover border */
  --glass-blur:16px;
  --field-bg:rgba(10,13,20,.55);

  /* ----- status glows ----- */
  --glow-up:0 0 26px rgba(63,185,80,.32);
  --glow-wait:0 0 26px rgba(210,153,34,.28);
  --glow-down:0 0 26px rgba(248,81,73,.28);
  --up-rgb:63,185,80; --down-rgb:248,81,73; --wait-rgb:210,153,34; --accent-rgb:88,166,255;

  /* ----- elevation ----- */
  --sh-1:0 1px 2px rgba(0,0,0,.35);
  --sh-2:0 8px 24px rgba(0,0,0,.38);
  --sh-3:0 20px 48px rgba(0,0,0,.48);

  /* ----- spacing scale ----- */
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px;
  --sp-5:24px; --sp-6:32px; --sp-7:48px; --sp-8:64px;

  /* ----- radius scale ----- */
  --rad-sm:10px; --rad-md:14px; --rad-lg:20px; --rad-pill:999px;

  /* ----- type scale ----- */
  --fs-cap:12px; --fs-sm:13px; --fs-base:15px; --fs-md:17px;
  --fs-lg:22px; --fs-xl:30px; --fs-2xl:42px;
  --fw-normal:400; --fw-medium:500; --fw-semibold:650;

  --mono:'SFMono-Regular',ui-monospace,'JetBrains Mono','Cascadia Code',Menlo,Consolas,monospace;
  --sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}
[data-theme="light"]{
  color-scheme: light;
  --bg:#eef1f6; --panel:#ffffff; --panel2:#eef1f5; --border:#d0d7de;
  --text:#1f2328; --muted:#57606a; --dim:#818b98;
  --accent:#0969da; --accent2:#1a7f37;
  --up:#1a7f37; --down:#cf222e; --wait:#9a6700;
  --bg-glow-1:#dbe7fb; --bg-glow-2:#eadef7;
  --scrim-rgb:238,241,246;
  --err-text:#b3261e; --ok-text:#1a7f37; --warn-text:#7a5c00;
  --on-accent:#ffffff;

  --glass-bg:rgba(255,255,255,.72);
  --glass-brd:rgba(20,30,50,.10);
  --glass-hi:rgba(20,30,50,.22);
  --field-bg:rgba(255,255,255,.85);

  --glow-up:0 0 22px rgba(26,127,55,.20);
  --glow-wait:0 0 22px rgba(154,103,0,.18);
  --glow-down:0 0 22px rgba(207,34,46,.18);
  --up-rgb:26,127,55; --down-rgb:207,34,46; --wait-rgb:154,103,0; --accent-rgb:9,105,218;

  --sh-1:0 1px 2px rgba(20,30,50,.06);
  --sh-2:0 8px 24px rgba(20,30,50,.10);
  --sh-3:0 20px 48px rgba(20,30,50,.16);
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--bg);
  background-image:radial-gradient(circle at 18% -12%,var(--bg-glow-1) 0%,transparent 46%),
                   radial-gradient(circle at 92% 0%,var(--bg-glow-2) 0%,transparent 42%);
  background-attachment:fixed;
  color:var(--text); font-family:var(--sans);
  min-height:100vh; padding:var(--sp-6) var(--sp-5) var(--sp-7); line-height:1.5;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
}
.wrap{max-width:1080px;margin:0 auto;position:relative;z-index:1}
.wrap.narrow{max-width:760px}
a{color:var(--accent)}

/* ---------- accessibility utility ---------- */
/* Visually hidden but present for assistive tech (e.g. a <label> for an input
   that already has a visible placeholder). */
.vh{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ---------- glass primitive ---------- */
.glass{
  background:var(--glass-bg);
  border:1px solid var(--glass-brd);
  border-radius:var(--rad-md);
  box-shadow:var(--sh-2);
  backdrop-filter:blur(var(--glass-blur)) saturate(1.1);
  -webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.1);
}

/* ---------- cinematic background (live Jellyfin backdrops) ---------- */
.cine-bg{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.cine-img{
  position:absolute;inset:0;background-size:cover;background-position:center;
  opacity:0;transition:opacity 1.6s ease;transform:scale(1.06);filter:blur(2px) saturate(1.05);
}
.cine-img.on{opacity:1}
/* Scrim so content stays readable over the art (tinted to match the theme). */
.cine-bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(var(--scrim-rgb),.80) 0%,rgba(var(--scrim-rgb),.90) 55%,rgba(var(--scrim-rgb),.97) 100%),
             radial-gradient(circle at 50% 0%,rgba(var(--scrim-rgb),.45),rgba(var(--scrim-rgb),.92) 70%);
}
/* When real art is behind, deepen the panel blur a touch for extra depth. */
.has-cine .glass{--glass-blur:20px}

/* ---------- app bar (top of every page) ---------- */
.appbar{
  display:flex; align-items:center; justify-content:space-between;
  gap:var(--sp-3); flex-wrap:wrap;
  padding:var(--sp-1) 0 var(--sp-4); margin-bottom:var(--sp-1);
}
.brand-link{display:inline-flex;align-items:center;gap:var(--sp-2);text-decoration:none;color:inherit}
.brand-logo{width:32px;height:32px;display:block}
.brand-logo-lg{width:56px;height:56px;margin:0 auto}
.brand-word{font-size:var(--fs-md);font-weight:700;letter-spacing:-.01em;color:var(--text)}
.appbar-tools{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.appbar-btn{
  font-family:var(--mono);font-size:var(--fs-cap);color:var(--text);cursor:pointer;text-decoration:none;
  background:var(--glass-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);
  padding:var(--sp-2) var(--sp-3);transition:border-color .15s,background .15s;
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
}
.appbar-btn:hover{border-color:var(--glass-hi)}

/* ---------- segmented toggles (language + theme) ---------- */
.lang-toggle,.theme-toggle{
  display:inline-flex;border:1px solid var(--glass-brd);border-radius:var(--rad-sm);overflow:hidden;
  background:var(--glass-bg);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
}
.lang-toggle button,.theme-toggle button{
  font-family:var(--mono);font-size:var(--fs-cap);line-height:1;color:var(--muted);cursor:pointer;
  background:transparent;border:0;padding:var(--sp-2) var(--sp-3);transition:background .15s,color .15s;
}
.lang-toggle button + button,.theme-toggle button + button{border-left:1px solid var(--glass-brd)}
.lang-toggle button:hover,.theme-toggle button:hover{color:var(--text)}
.lang-toggle button.active,.theme-toggle button.active{background:var(--accent);color:var(--on-accent);font-weight:var(--fw-semibold)}
.lang-toggle-float{position:fixed;top:var(--sp-5);right:var(--sp-5);z-index:10}
.theme-toggle-float{position:fixed;top:var(--sp-5);left:var(--sp-5);z-index:10}

/* ---------- greeting bar (dashboard) ---------- */
.greetbar{
  display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between;
  gap:var(--sp-5); padding-bottom:var(--sp-5); margin-bottom:var(--sp-5);
  border-bottom:1px solid var(--glass-brd);
}
.brand{display:flex;flex-direction:column;gap:var(--sp-1)}
.kicker{font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.18em;text-transform:uppercase;color:var(--dim)}
.greeting{font-size:var(--fs-xl);font-weight:var(--fw-semibold);letter-spacing:-.02em}
.greeting b{color:var(--accent2);font-weight:var(--fw-semibold)}
.clockbox{text-align:right;font-family:var(--mono)}
.clock{font-size:var(--fs-2xl);font-weight:var(--fw-semibold);letter-spacing:.02em;line-height:1.1}
.clock .sec{color:var(--dim);font-size:var(--fs-lg)}
.date{color:var(--muted);font-size:var(--fs-sm);margin-top:var(--sp-1)}
/* Connection page reuses the greetbar rhythm (no clock); a subtitle sits under
   the title so both pages open with the same visual language. */
.pagehead .brand{gap:var(--sp-2)}
.pagehead-sub{color:var(--muted);font-size:var(--fs-base);max-width:60ch}

/* ---------- section headers ---------- */
.sec-title{
  display:flex;align-items:center;gap:var(--sp-3);
  font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.16em;text-transform:uppercase;
  color:var(--dim); margin:var(--sp-6) 0 var(--sp-4);
}
.sec-title::after{content:"";flex:1;height:1px;background:var(--glass-brd)}
.sec-title .count{color:var(--dim);font-size:var(--fs-cap);text-transform:none;letter-spacing:0}
.sec-title .sec-hint{margin-left:auto;font-family:var(--sans);font-size:var(--fs-cap);font-weight:var(--fw-normal);color:var(--accent);text-decoration:none;text-transform:none;letter-spacing:0}
.sec-title .sec-hint:hover{text-decoration:underline}

/* ============================================================================
   HERO STATUS CARD  (shared: dashboard + /connection)
   ========================================================================= */
.hero-status{
  display:flex;flex-direction:column;gap:var(--sp-4);
  padding:var(--sp-5);border-radius:var(--rad-lg);
  margin:var(--sp-2) 0 var(--sp-4);
  border:1px solid var(--glass-brd);background:var(--glass-bg);box-shadow:var(--sh-2);
  backdrop-filter:blur(var(--glass-blur)) saturate(1.1);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.1);
  transition:border-color .3s,box-shadow .3s;
}
.hs-top{display:flex;align-items:flex-start;gap:var(--sp-3)}
.hs-led{
  width:14px;height:14px;border-radius:var(--rad-pill);flex-shrink:0;margin-top:5px;
  background:var(--wait);transition:background .3s,box-shadow .3s;
}
.hs-titles{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.hs-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);letter-spacing:-.01em;line-height:1.2}
.hs-sub{font-size:var(--fs-sm);color:var(--muted)}
.hs-detail{display:flex;align-items:center;gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;font-size:var(--fs-sm);color:var(--muted)}
.hs-detail:empty{display:none}
.hs-ip{
  font-family:var(--mono);font-size:var(--fs-sm);color:var(--text);
  background:var(--field-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);
  padding:var(--sp-1) var(--sp-2);user-select:all;
}
.hs-lease{font-family:var(--mono);font-size:var(--fs-cap);color:var(--dim)}
/* Compact list of active addresses shown in the hero when this device is off
   but others are reachable. Full width below the current-IP chip. */
.hs-iplist{display:flex;flex-direction:column;gap:var(--sp-1);width:100%;margin-top:var(--sp-1)}
.hs-ipitem{display:flex;align-items:center;gap:var(--sp-2) var(--sp-3);flex-wrap:wrap;font-size:var(--fs-sm)}
.hs-ipitem .adot{width:9px;height:9px;border-radius:var(--rad-pill);flex-shrink:0;background:var(--dim)}
.hs-ipitem .adot.on{background:var(--up);box-shadow:0 0 6px var(--up)}
.hs-ipitem .adot.off{background:var(--down);box-shadow:0 0 6px var(--down)}
.hs-ip-you{
  margin-left:auto;
  font-family:var(--mono);font-size:var(--fs-cap);text-transform:uppercase;letter-spacing:.06em;
  color:var(--accent);border:1px solid rgba(var(--accent-rgb),.4);border-radius:var(--rad-pill);padding:1px var(--sp-2);
}
.hs-actions{display:flex;gap:var(--sp-3);flex-wrap:wrap;align-items:center}
.hs-actions .btn{width:auto}

/* hero states */
.hero-status.up{border-color:rgba(var(--up-rgb),.5);box-shadow:var(--sh-2),var(--glow-up)}
.hero-status.up .hs-led{background:var(--up);box-shadow:0 0 12px var(--up)}
.hero-status.up .hs-title{color:var(--accent2)}
.hero-status.wait .hs-led{background:var(--wait);animation:pulse 1.1s infinite}
.hero-status.down{border-color:rgba(var(--down-rgb),.5);box-shadow:var(--sh-2),var(--glow-down)}
.hero-status.down .hs-led{background:var(--down);box-shadow:0 0 12px var(--down)}
.hero-status.down .hs-title{color:var(--down)}
@keyframes pulse{50%{opacity:.35}}

/* ---------- buttons ---------- */
.btn{
  width:100%;font-family:var(--sans);font-size:var(--fs-base);font-weight:var(--fw-semibold);
  color:var(--on-accent);cursor:pointer;background:var(--accent);border:0;border-radius:var(--rad-sm);
  padding:var(--sp-3) var(--sp-5);transition:filter .15s,transform .15s;
  display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);text-decoration:none;
}
.btn:hover{filter:brightness(1.08)}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:.6;cursor:progress;filter:none}
.btn.secondary{
  background:var(--glass-bg);color:var(--text);border:1px solid var(--glass-brd);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
}
.btn.secondary:hover{border-color:var(--glass-hi);filter:none}

/* ---------- services grid ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:var(--sp-4)}
/* min-width:0 stops a card with long nowrap content (e.g. TR "yanıt veriyor")
   from growing past its grid track and overlapping the next card. */
.card-wrap{position:relative;display:flex;min-width:0}
.card-wrap .card{flex:1;min-width:0}
.card{
  position:relative;display:flex;flex-direction:column;gap:var(--sp-3);min-width:0;
  border:1px solid var(--glass-brd);background:var(--glass-bg);box-shadow:var(--sh-2);
  border-radius:var(--rad-md);padding:var(--sp-4);text-decoration:none;color:inherit;
  backdrop-filter:blur(var(--glass-blur)) saturate(1.1);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.1);
  transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease;
}
.card:hover{border-color:var(--glass-hi);transform:translateY(-3px);box-shadow:var(--sh-3)}
/* Short "Guide" pill in the corner. Kept short in every language so its width
   is small + predictable and never overlaps the title. */
.card-howto{
  position:absolute;top:var(--sp-3);right:var(--sp-3);z-index:2;white-space:nowrap;
  display:inline-flex;align-items:center;gap:var(--sp-1);
  font-family:var(--mono);font-size:var(--fs-cap);font-weight:var(--fw-semibold);text-decoration:none;
  color:var(--accent);background:rgba(var(--accent-rgb),.12);border:1px solid rgba(var(--accent-rgb),.45);
  border-radius:var(--rad-pill);padding:var(--sp-1) var(--sp-3);transition:color .15s,background .15s,border-color .15s;
}
.card-howto::after{content:"→";font-weight:var(--fw-normal)}
.card-howto:hover{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}
/* Reserve room on the right for the "Guide →" pill so it never touches the title. */
.card-top{display:flex;align-items:center;gap:var(--sp-3);padding-right:92px;min-width:0}
.card-top h3{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ico{
  width:44px;height:44px;flex-shrink:0;border-radius:var(--rad-sm);
  display:grid;place-items:center;font-size:var(--fs-lg);
  background:var(--field-bg);border:1px solid var(--glass-brd);
}
.tile-logo{width:26px;height:26px;display:block}
.card h3{font-size:var(--fs-md);font-weight:var(--fw-semibold);letter-spacing:-.01em}
.desc{font-size:var(--fs-sm);color:var(--muted);min-height:34px}
.card-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);font-family:var(--mono);font-size:var(--fs-cap)}
.host{color:var(--dim);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.status{display:inline-flex;align-items:center;gap:var(--sp-2);color:var(--muted);flex-shrink:0;white-space:nowrap}
.sdot{width:9px;height:9px;border-radius:var(--rad-pill);background:var(--wait);transition:background .3s}
.sdot.up{background:var(--up);box-shadow:0 0 7px var(--up)}
.sdot.down{background:var(--down);box-shadow:0 0 7px var(--down)}
.sdot.wait{background:var(--wait);animation:pulse 1s infinite}

/* ============================================================================
   DEVICES & IPs  (/connection)
   ========================================================================= */
.devices{margin:0 0 var(--sp-3)}
.dev-empty{
  border:1px solid var(--glass-brd);border-radius:var(--rad-md);background:var(--glass-bg);box-shadow:var(--sh-2);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
  padding:var(--sp-4) var(--sp-5);font-size:var(--fs-sm);color:var(--dim);
}
.dev{
  border:1px solid var(--glass-brd);border-radius:var(--rad-md);background:var(--glass-bg);box-shadow:var(--sh-2);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
  padding:var(--sp-4);margin-top:var(--sp-3);
}
.dev-head{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;margin-bottom:var(--sp-1)}
.dev-name{font-size:var(--fs-base);font-weight:var(--fw-semibold);display:flex;align-items:center;gap:var(--sp-2)}
.dev-name .ico{width:auto;height:auto;background:none;border:0;font-size:var(--fs-md)}
.dev-state{
  font-family:var(--mono);font-size:var(--fs-cap);text-transform:uppercase;letter-spacing:.08em;
  padding:2px var(--sp-2);border-radius:var(--rad-pill);border:1px solid var(--glass-brd);color:var(--muted);
}
.dev-state.healthy{color:var(--up);border-color:rgba(var(--up-rgb),.4)}
.dev-state.stale,.dev-state.disabled{color:var(--down);border-color:rgba(var(--down-rgb),.4)}
.dev-seen{font-family:var(--mono);font-size:var(--fs-cap);color:var(--dim);margin-left:auto}
.dev-type{font-family:var(--mono);font-size:var(--fs-cap);text-transform:uppercase;letter-spacing:.08em;color:var(--dim)}
.addr{
  display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap;
  padding:var(--sp-2) 0;border-top:1px solid var(--glass-brd);font-size:var(--fs-sm);
}
.addr .adot{width:9px;height:9px;border-radius:var(--rad-pill);flex-shrink:0;background:var(--dim)}
.addr.on .adot{background:var(--up);box-shadow:0 0 6px var(--up)}
.addr.off .adot{background:var(--down)}
.addr .ip{font-family:var(--mono);font-size:var(--fs-sm);color:var(--text)}
.addr-loc{
  font-size:var(--fs-cap);color:var(--muted);
  display:inline-flex;align-items:center;gap:var(--sp-1);
}
.addr-loc::before{content:"📍";font-size:var(--fs-cap);opacity:.8}
.addr .you{
  font-family:var(--mono);font-size:var(--fs-cap);text-transform:uppercase;letter-spacing:.06em;
  color:var(--accent);border:1px solid rgba(var(--accent-rgb),.4);border-radius:var(--rad-pill);padding:1px var(--sp-2);
}
.addr .why{font-size:var(--fs-cap);color:var(--muted);margin-left:auto;text-align:right}
.addr .why.ok{color:var(--accent2)}
.addr .why.bad{color:var(--down)}
.addr-none{padding:var(--sp-2) 0;border-top:1px solid var(--glass-brd);font-size:var(--fs-sm);color:var(--dim)}

/* ---------- companion app pairing + advanced (/connection) ---------- */
.pairwrap{margin:0 0 var(--sp-3)}
/* Standalone "Connect this device" block on the connection page: a primary
   accent button (the main action) with a short description below. */
.connect-block .btn{width:auto}
.pair-btn{
  font-family:var(--sans);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text);cursor:pointer;
  background:var(--glass-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);padding:var(--sp-3) var(--sp-4);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
  transition:border-color .15s,background .15s;
}
.pair-btn:hover{border-color:var(--glass-hi)}
.pair-btn:disabled{opacity:.6;cursor:progress}
.pair-hint{font-size:var(--fs-cap);color:var(--dim);margin-top:var(--sp-2);max-width:70ch}
.pair-card{
  position:relative;margin-top:var(--sp-3);
  border:1px solid var(--glass-brd);border-radius:var(--rad-md);background:var(--glass-bg);box-shadow:var(--sh-2);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));padding:var(--sp-5);
}
.pair-close{position:absolute;top:var(--sp-3);right:var(--sp-4);color:var(--dim);cursor:pointer;font-size:var(--fs-base)}
.pair-close:hover{color:var(--text)}
.pair-card h4{font-size:var(--fs-md);margin-bottom:var(--sp-3)}
.pair-steps{margin:0 0 var(--sp-4) var(--sp-4);padding:0}
.pair-steps li{font-size:var(--fs-sm);color:var(--muted);margin:var(--sp-1) 0}
.pair-body{display:flex;gap:var(--sp-5);align-items:center;flex-wrap:wrap}
.pair-qr{
  width:160px;height:160px;flex-shrink:0;background:#fff;border-radius:var(--rad-sm);padding:var(--sp-2);
  display:grid;place-items:center;
}
.pair-qr img,.pair-qr svg{width:100%;height:100%;display:block}
.pair-qr.empty{background:var(--field-bg);border:1px dashed var(--glass-brd)}
.pair-codewrap{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}
.pair-label{font-family:var(--mono);font-size:var(--fs-cap);letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}
.pair-code{
  font-family:var(--mono);font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--accent2);letter-spacing:.04em;
  background:var(--field-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);padding:var(--sp-3) var(--sp-4);
  word-break:break-all;user-select:all;
}
.pair-copy{
  align-self:flex-start;font-family:var(--mono);font-size:var(--fs-cap);color:var(--text);cursor:pointer;
  background:var(--glass-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);padding:var(--sp-2) var(--sp-3);
}
.pair-copy:hover{border-color:var(--accent)}
.pair-expiry{font-size:var(--fs-cap);color:var(--wait)}
.pair-msg{margin-top:var(--sp-3);border-radius:var(--rad-sm);padding:var(--sp-3) var(--sp-3);font-size:var(--fs-sm)}
.pair-msg.err{background:rgba(var(--down-rgb),.12);border:1px solid rgba(var(--down-rgb),.4);color:var(--err-text)}
.pair-msg.ok{background:rgba(var(--up-rgb),.12);border:1px solid rgba(var(--up-rgb),.4);color:var(--ok-text)}

.adv-body{display:flex;flex-direction:column;gap:var(--sp-4);margin-top:var(--sp-4)}
.adv-snip{display:flex;flex-direction:column;gap:var(--sp-2)}
.adv-code{
  background:var(--field-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);
  padding:var(--sp-3) var(--sp-4);margin:0;overflow-x:auto;
}
.adv-code code{font-family:var(--mono);font-size:var(--fs-cap);color:var(--text);white-space:pre;word-break:normal}
#advKey{color:var(--accent2)}

/* ---------- dashboard help CTA ---------- */
.helpcta{
  display:flex;align-items:center;gap:var(--sp-4);margin:var(--sp-4) 0 var(--sp-2);
  border:1px solid var(--glass-brd);border-radius:var(--rad-md);background:var(--glass-bg);box-shadow:var(--sh-2);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
  padding:var(--sp-4) var(--sp-5);text-decoration:none;color:inherit;
  transition:border-color .15s,transform .15s,box-shadow .15s;
}
.helpcta:hover{border-color:var(--glass-hi);transform:translateY(-2px);box-shadow:var(--sh-3)}
.helpcta-ic{font-size:var(--fs-lg);line-height:1;flex-shrink:0}
.helpcta-text{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.helpcta-title{font-size:var(--fs-base);font-weight:var(--fw-semibold)}
.helpcta-sub{font-size:var(--fs-sm);color:var(--muted)}
.helpcta-arrow{font-size:var(--fs-lg);color:var(--accent);flex-shrink:0}

/* ---------- guides: jump nav ---------- */
.jump{display:flex;flex-wrap:wrap;gap:var(--sp-2);justify-content:center;margin:var(--sp-1) 0 var(--sp-2)}
.jump-chip{
  display:inline-flex;align-items:center;gap:var(--sp-2);cursor:pointer;
  font-family:var(--sans);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text);
  background:var(--glass-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-pill);padding:var(--sp-2) var(--sp-4);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
  transition:border-color .15s,transform .15s;
}
.jump-chip span{font-size:var(--fs-md)}
.jump-chip:hover{border-color:var(--glass-hi);transform:translateY(-2px)}

/* ---------- guides: how-to accordions ---------- */
.howto{
  border:1px solid var(--glass-brd);border-radius:var(--rad-md);background:var(--glass-bg);box-shadow:var(--sh-2);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
  margin-top:var(--sp-3);overflow:hidden;
}
.howto > summary{
  cursor:pointer;list-style:none;padding:var(--sp-4) var(--sp-5);
  font-size:var(--fs-md);font-weight:var(--fw-semibold);color:var(--text);
  display:flex;align-items:center;gap:var(--sp-3);
}
.howto > summary::-webkit-details-marker{display:none}
.howto > summary::after{content:"▸";margin-left:auto;color:var(--dim);font-weight:var(--fw-normal)}
.howto[open] > summary::after{content:"▾"}
.howto[open] > summary{border-bottom:1px solid var(--glass-brd)}
.howto > summary .ic{font-size:var(--fs-lg)}
.howto .inner{padding:var(--sp-2) var(--sp-5) var(--sp-4)}
.howto .step{padding:var(--sp-3) 0;border-bottom:1px solid var(--glass-brd)}
.howto .step:last-of-type{border-bottom:0}
.act-row{margin-top:var(--sp-4);display:flex;flex-wrap:wrap;gap:var(--sp-3)}
.act-btn{
  display:inline-flex;align-items:center;gap:var(--sp-2);text-decoration:none;
  font-family:var(--sans);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--on-accent);
  background:var(--accent);border-radius:var(--rad-sm);padding:var(--sp-3) var(--sp-4);transition:filter .15s;
}
.act-btn:hover{filter:brightness(1.08)}
.act-btn.secondary{background:var(--glass-bg);color:var(--text);border:1px solid var(--glass-brd)}
.hidden{display:none!important}
.howto .platform-block{
  margin-top:var(--sp-3);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);
  background:var(--field-bg);padding:0 var(--sp-4);
}
.pill-row{display:flex;flex-wrap:wrap;gap:var(--sp-2);margin-top:var(--sp-3)}
.pill{
  font-family:var(--mono);font-size:var(--fs-cap);color:var(--text);cursor:pointer;text-decoration:none;
  background:var(--field-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);padding:var(--sp-2) var(--sp-3);
}
.pill.active{border-color:var(--accent);color:var(--accent)}
.pill:hover{border-color:var(--accent)}

/* generic <details> used by guides technical section */
details.plain,details:not([class]){
  margin-top:var(--sp-4);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);background:var(--field-bg);
}
details:not([class]) summary{cursor:pointer;padding:var(--sp-3) var(--sp-4);font-size:var(--fs-sm);color:var(--text);list-style:none}
details:not([class]) summary::-webkit-details-marker{display:none}
details:not([class]) summary::before{content:"▸ ";color:var(--dim)}
details:not([class])[open] summary::before{content:"▾ "}
details:not([class]) .inner{padding:0 var(--sp-4) var(--sp-4);font-size:var(--fs-sm);color:var(--muted)}
.inner code,pre code{font-family:var(--mono);font-size:var(--fs-cap);color:var(--accent)}
pre{background:var(--field-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);padding:var(--sp-3);overflow:auto;margin:var(--sp-3) 0;font-size:var(--fs-cap)}

.faq dt{font-weight:var(--fw-semibold);font-size:var(--fs-base);margin-top:var(--sp-4);color:var(--text)}
.faq dd{font-size:var(--fs-sm);color:var(--muted);margin-top:var(--sp-1)}
.helpbtns{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-2)}
.helpbtns .btn{width:auto;flex:1;min-width:180px}
.applist{margin:var(--sp-2) 0 0 var(--sp-4);padding:0}
.applist li{font-size:var(--fs-sm);color:var(--muted);margin:var(--sp-1) 0}
.step{display:flex;gap:var(--sp-4);padding:var(--sp-4) 0;border-bottom:1px solid var(--glass-brd)}
.step:last-child{border-bottom:0}
.step .num{
  flex-shrink:0;width:30px;height:30px;border-radius:var(--rad-pill);display:grid;place-items:center;
  font-family:var(--mono);font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--accent);
  background:var(--field-bg);border:1px solid var(--glass-brd);
}
.step .body h3{font-size:var(--fs-md);margin-bottom:var(--sp-1)}
.step .body p{font-size:var(--fs-sm);color:var(--muted)}
.step .body .platform{margin-top:var(--sp-2);font-size:var(--fs-sm)}

/* ---------- at-a-glance stats ---------- */
.statgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--sp-3)}
.stat{
  display:flex;flex-direction:column;gap:var(--sp-1);
  background:var(--glass-bg);border:1px solid var(--glass-brd);box-shadow:var(--sh-2);
  border-radius:var(--rad-md);padding:var(--sp-4);
  backdrop-filter:blur(var(--glass-blur)) saturate(1.1);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.1);
  transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease;
}
.stat:hover{border-color:var(--glass-hi);transform:translateY(-2px);box-shadow:var(--sh-3)}
.stat-ic{font-size:var(--fs-md);line-height:1}
.stat-num{font-family:var(--mono);font-size:var(--fs-xl);font-weight:var(--fw-semibold);letter-spacing:-.01em;line-height:1.1;color:var(--text)}
/* Secondary line under the big number (e.g. episode total on the shows card). */
.stat-sub{font-family:var(--mono);font-size:var(--fs-cap);color:var(--muted);margin-top:calc(-1 * var(--sp-1))}
.stat-label{font-size:var(--fs-cap);color:var(--muted)}
.stat.go .stat-num{color:var(--accent)}
.stat.wait .stat-num{color:var(--wait)}
.stat.down .stat-num{color:var(--down)}

/* ---------- info hub (widgets) ---------- */
.hub{display:grid;grid-template-columns:1.2fr 1fr;gap:var(--sp-4)}
.hub-col{display:flex;flex-direction:column;gap:var(--sp-4)}
.panel{
  background:var(--glass-bg);border:1px solid var(--glass-brd);box-shadow:var(--sh-2);border-radius:var(--rad-md);padding:var(--sp-4) var(--sp-5);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
}
.panel h4{font-size:var(--fs-sm);margin-bottom:var(--sp-3);display:flex;align-items:center;gap:var(--sp-2);color:var(--text)}
.panel h4 .badge{font-size:var(--fs-base)}
.panel .empty{font-size:var(--fs-sm);color:var(--dim)}
.panel-link{margin-left:auto;font-family:var(--mono);font-size:var(--fs-cap);font-weight:var(--fw-normal);color:var(--accent);text-decoration:none;white-space:nowrap}
.panel-link:hover{text-decoration:underline}

.news-card{
  display:flex;gap:var(--sp-2);align-items:flex-start;
  padding:var(--sp-3);margin-bottom:var(--sp-2);border-radius:var(--rad-sm);
  border:1px solid var(--glass-brd);border-left:3px solid var(--glass-brd);background:var(--field-bg);
  transition:border-color .15s,transform .15s;
}
.news-card:last-child{margin-bottom:0}
.news-card.has-link{border-left-color:var(--accent);cursor:pointer}
.news-card.has-link:hover{transform:translateY(-1px)}
.news-main{flex:1;min-width:0}
.news-head{display:flex;align-items:center;gap:var(--sp-2)}
.news-card .t{font-size:var(--fs-sm);font-weight:var(--fw-semibold);color:var(--text);line-height:1.35;text-decoration:none}
a.t:hover{color:var(--accent);text-decoration:underline}
.news-link-chip{font-size:var(--fs-cap);line-height:1;flex-shrink:0;opacity:.85}
.news-body{font-size:var(--fs-sm);color:var(--muted);margin-top:var(--sp-1);line-height:1.45}
/* mini-markdown blocks in the body */
.news-body p{margin:0}
.news-body p + p,.news-body ul + p,.news-body p + ul{margin-top:var(--sp-2)}
.news-body ul{margin:0;padding-left:var(--sp-5);list-style:disc}
.news-body li{margin:2px 0}
.news-body strong{color:var(--text);font-weight:var(--fw-semibold)}
.news-body a{color:var(--accent);text-decoration:none}
.news-body a:hover{text-decoration:underline}
.news-foot{display:flex;align-items:center;gap:var(--sp-3);margin-top:var(--sp-2)}
.news-foot .m{font-family:var(--mono);font-size:var(--fs-cap);color:var(--dim)}
.news-open{font-family:var(--mono);font-size:var(--fs-cap);color:var(--accent);text-decoration:none;margin-left:auto;white-space:nowrap}
.news-open:hover{text-decoration:underline}
.news-del{flex-shrink:0;cursor:pointer;color:var(--dim);background:none;border:0;font-size:var(--fs-sm);padding:2px var(--sp-2)}
.news-del:hover{color:var(--down)}

#sweepList{max-height:340px;overflow-y:auto}
.sweep-item{display:flex;gap:var(--sp-3);padding:var(--sp-2) 0;border-bottom:1px solid var(--glass-brd);align-items:center}
.sweep-item:last-child{border-bottom:0}
a.sweep-item{text-decoration:none;color:inherit}
a.sweep-item.linkable:hover .sweep-title{color:var(--accent)}
.sweep-poster{width:38px;height:57px;flex-shrink:0;border-radius:var(--rad-sm);object-fit:cover;background:var(--field-bg);border:1px solid var(--glass-brd)}
.sweep-meta{min-width:0}
.sweep-title{font-size:var(--fs-sm);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sweep-sub{font-family:var(--mono);font-size:var(--fs-cap);color:var(--dim);margin-top:2px}
.sweep-when{font-family:var(--mono);font-size:var(--fs-cap);margin-top:2px}
.sweep-when.soon{color:var(--down)}
.sweep-when.later{color:var(--wait)}

.tip{display:flex;gap:var(--sp-3);align-items:flex-start}
.tip .icon{font-size:var(--fs-lg);line-height:1}
.tip .text{font-size:var(--fs-sm);color:var(--muted)}
/* Rotating tip under the greeting: a compact, single-line pill. */
.greet-tip{
  gap:var(--sp-2);align-items:center;margin-top:var(--sp-2);max-width:64ch;
  background:var(--field-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-pill);
  padding:var(--sp-1) var(--sp-3);width:fit-content;
}
.greet-tip .icon{font-size:var(--fs-base)}
.greet-tip .text.empty{color:var(--dim)}

/* ---------- info cards (how this works / protection) ---------- */
.info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--sp-4)}
.info{
  background:var(--glass-bg);border:1px solid var(--glass-brd);box-shadow:var(--sh-2);border-radius:var(--rad-md);padding:var(--sp-4) var(--sp-5);
  backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));
}
.info h4{font-size:var(--fs-sm);margin-bottom:var(--sp-2);display:flex;align-items:center;gap:var(--sp-2)}
.info h4 .badge{font-size:var(--fs-base)}
.info p{font-size:var(--fs-sm);color:var(--muted)}
.info code{font-family:var(--mono);font-size:var(--fs-cap);color:var(--accent);background:var(--field-bg);padding:1px 5px;border-radius:6px}

/* ---------- footer ---------- */
footer{
  margin-top:var(--sp-7);padding-top:var(--sp-4);border-top:1px solid var(--glass-brd);
  display:flex;flex-wrap:wrap;gap:var(--sp-2) var(--sp-5);justify-content:space-between;
  font-family:var(--mono);font-size:var(--fs-cap);color:var(--dim);
}
footer a{color:var(--accent);text-decoration:none}
footer a:hover{text-decoration:underline}

/* ---------- centered layouts (login / hero) ---------- */
.center{max-width:560px;margin:0 auto}
.hero{text-align:center;margin:var(--sp-2) 0 var(--sp-6)}
.hero .logo{font-size:var(--fs-2xl);line-height:1}
.hero h1{font-size:var(--fs-xl);font-weight:var(--fw-semibold);letter-spacing:-.02em;margin-top:var(--sp-3)}
.hero p{color:var(--muted);font-size:var(--fs-base);margin-top:var(--sp-2)}
.box{
  background:var(--glass-bg);border:1px solid var(--glass-brd);box-shadow:var(--sh-3);border-radius:var(--rad-lg);padding:var(--sp-5);
  backdrop-filter:blur(var(--glass-blur)) saturate(1.1);-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(1.1);
}
.box + .box{margin-top:var(--sp-4)}

/* ---------- discreet login ---------- */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--sp-5)}
.login-body .wrap{max-width:360px}
.login-box{width:100%}
.login-mark{font-size:var(--fs-lg);text-align:center;margin-bottom:var(--sp-4);opacity:.7}
.field{display:flex;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-4)}
.field label{font-size:var(--fs-sm);color:var(--muted)}
.field input{
  font-family:var(--sans);font-size:var(--fs-base);color:var(--text);
  background:var(--field-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);padding:var(--sp-3) var(--sp-3);
}
.field input:focus{outline:none;border-color:var(--accent)}
.note{font-size:var(--fs-sm);color:var(--muted);margin-top:var(--sp-4);text-align:center}
.msg{border-radius:var(--rad-sm);padding:var(--sp-3);font-size:var(--fs-sm);margin-bottom:var(--sp-4);display:none}
.msg.show{display:block}
.msg.err{background:rgba(var(--down-rgb),.12);border:1px solid rgba(var(--down-rgb),.4);color:var(--err-text)}
.msg.ok{background:rgba(var(--up-rgb),.12);border:1px solid rgba(var(--up-rgb),.4);color:var(--ok-text)}
.msg.warn{background:rgba(var(--wait-rgb),.12);border:1px solid rgba(var(--wait-rgb),.4);color:var(--warn-text)}

/* ---------- poster rows (library + trending) ---------- */
.rowstrip{
  display:flex;gap:var(--sp-3);overflow-x:auto;padding:2px 2px var(--sp-3);
  scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;
}
.rowstrip::-webkit-scrollbar{height:8px}
.rowstrip::-webkit-scrollbar-thumb{background:var(--glass-brd);border-radius:var(--rad-pill)}
.poster-card{
  position:relative;flex:0 0 auto;width:140px;text-decoration:none;color:inherit;
  scroll-snap-align:start;transition:transform .2s ease;
}
.poster-card:hover{transform:translateY(-6px) scale(1.04);z-index:2}
.poster{
  width:140px;height:210px;border-radius:var(--rad-md);object-fit:cover;display:block;
  background:var(--field-bg);border:1px solid var(--glass-brd);
  box-shadow:var(--sh-2);transition:box-shadow .2s ease,border-color .2s ease;
}
.poster-card:hover .poster{border-color:var(--accent);box-shadow:var(--sh-3),0 0 0 1px var(--accent)}
.poster.empty{display:grid;place-items:center}
.poster.empty::after{content:"🎞️";font-size:var(--fs-xl);opacity:.4}
.poster-title{font-size:var(--fs-sm);color:var(--text);margin-top:var(--sp-2);line-height:1.25;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.poster-card:hover .poster-title{color:var(--accent)}
.poster-year{font-family:var(--mono);font-size:var(--fs-cap);color:var(--dim);margin-top:1px}
.poster-badge{
  position:absolute;top:var(--sp-2);left:var(--sp-2);font-family:var(--mono);font-size:var(--fs-cap);font-weight:var(--fw-semibold);
  padding:2px var(--sp-2);border-radius:var(--rad-pill);backdrop-filter:blur(4px);
  background:rgba(var(--scrim-rgb),.72);border:1px solid var(--glass-brd);color:var(--text);
}
.poster-badge.go{color:var(--on-accent);background:var(--accent);border-color:var(--accent)}
.poster-badge.ok{color:var(--accent2);border-color:rgba(var(--up-rgb),.5)}
.poster-badge.wait{color:var(--wait);border-color:rgba(var(--wait-rgb),.5)}

/* ---------- news editor (admin) ---------- */
.news-editor{display:none;flex-direction:column;gap:var(--sp-2);margin-bottom:var(--sp-4);
  padding:var(--sp-3);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);background:var(--field-bg)}
.news-editor.open{display:flex}
.news-editor input,.news-editor textarea{
  font-family:var(--sans);font-size:var(--fs-sm);color:var(--text);
  background:var(--field-bg);border:1px solid var(--glass-brd);border-radius:var(--rad-sm);padding:var(--sp-2) var(--sp-3);
}
.news-editor input:focus,.news-editor textarea:focus{outline:none;border-color:var(--accent)}
.news-editor-actions{display:flex;align-items:center;gap:var(--sp-3)}
.news-editor .btn{width:auto;padding:var(--sp-2) var(--sp-4);font-size:var(--fs-sm)}
.news-editor-msg{font-size:var(--fs-cap);color:var(--muted)}
.news-editor-hint{font-size:var(--fs-cap);color:var(--dim);line-height:1.5}
.news-editor-hint code{font-family:var(--mono);color:var(--accent);background:var(--field-bg);padding:1px 4px;border-radius:6px}

/* ============================================================================
   RESPONSIVE  (mobile-first tuning on top of the desktop base)
   ========================================================================= */
@media(max-width:820px){
  .hub{grid-template-columns:1fr}
}
@media(max-width:560px){
  body{padding:var(--sp-5) var(--sp-4) var(--sp-6)}
  .greetbar{gap:var(--sp-3)}
  .statgrid{grid-template-columns:repeat(2,1fr)}
  .greeting{font-size:var(--fs-lg)}
  .clock{font-size:var(--fs-xl)}
  .clock .sec{font-size:var(--fs-md)}
  .hero-status{padding:var(--sp-4)}
  .hs-title{font-size:var(--fs-md)}
  .hs-actions{flex-direction:column;align-items:stretch}
  .hs-actions .btn{width:100%}
  .grid{grid-template-columns:1fr}
  .pair-body{gap:var(--sp-4)}
  .lang-toggle-float{top:var(--sp-3);right:var(--sp-3)}
  .theme-toggle-float{top:var(--sp-3);left:var(--sp-3)}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .cine-img{transition:none}
}
