/* SpecterTV website: dark, like the app. */
:root{
  --bg:#0b0f14; --panel:#11171e; --panel-2:#151c24; --raise:#1a222c; --line:#1f2933; --line-2:#2a3642;
  --fg:#e4ecef; --soft:#b7c5cc; --muted:#8a9ca5; --accent:#7fe3d4; --accent-ink:#06201c; --danger:#ff8a8e;
  --body:'IBM Plex Sans',Roboto,system-ui,-apple-system,'Segoe UI',sans-serif;
  --display:'Barlow Condensed','Arial Narrow',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 var(--body)}
a{color:var(--accent)}a:hover{color:#b6f1e8}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3{text-wrap:balance}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* Top bar */
.top{display:flex;justify-content:center;padding:20px max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left))}
.pill{display:flex;flex-wrap:wrap;align-items:center;gap:6px 22px;background:#121820;border:1px solid #222c36;border-radius:999px;padding:8px 10px 8px 18px;max-width:100%}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--fg)}
.brand svg{width:26px;height:26px}
.brand b{font:700 21px/1 var(--display);letter-spacing:.06em;text-transform:uppercase}
.pill > a:not(.brand){color:var(--soft);text-decoration:none;font-weight:500}
.pill > a:not(.brand):hover,.pill > a.on{color:var(--fg)}
.chip{display:inline-flex;align-items:center;gap:8px;background:var(--raise);border:1px solid var(--line-2);border-radius:999px;padding:5px 12px 5px 5px;font-weight:600;cursor:pointer}
.av{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none}
.av svg{width:16px;height:16px}

/* Buttons and fields */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--panel-2);border:1px solid var(--line-2);color:var(--fg);border-radius:8px;padding:9px 14px;font-weight:600;font-size:14px;cursor:pointer;text-decoration:none;white-space:nowrap}
.btn:hover{border-color:#3a4855;color:var(--fg)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.primary:hover{background:#9beadf}
.btn.danger{color:var(--danger)}
.btn.sm{padding:6px 10px;font-size:13px;border-radius:7px}
.btn:disabled{opacity:.45;cursor:default}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-weight:600}
.in{width:100%;background:var(--bg);border:1px solid var(--line-2);border-radius:8px;padding:10px 12px;color:var(--fg)}
.in:focus{border-color:var(--accent);outline:none}
textarea.in{min-height:84px;resize:vertical;font-size:14px}
.muted{color:var(--muted)}
.err{color:var(--danger);min-height:1.2em;font-size:14px}
.note{color:var(--muted);font-size:13px}

/* Cards (sign in, link) */
.center{display:flex;justify-content:center;padding:56px max(16px,env(safe-area-inset-right)) 60px max(16px,env(safe-area-inset-left))}
.card{width:100%;max-width:460px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:32px;display:flex;flex-direction:column;gap:18px}
.eyebrow{font:600 11px var(--body);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.card h1{margin:0;font:600 26px/1.15 var(--body)}
.tabs{display:flex;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:4px}
.tabs button{flex:1;background:none;border:0;border-radius:7px;padding:8px;font-weight:600;color:var(--muted);cursor:pointer}
.tabs button.on{background:var(--raise);color:var(--fg)}
.code-in{font:600 28px var(--mono);letter-spacing:.35em;text-align:center;text-transform:uppercase}

/* Account layout */
.acct{display:flex;align-items:stretch;min-height:calc(100vh - 80px)}
.side{width:236px;flex:none;border-right:1px solid #1c242d;padding:28px 14px 24px;display:flex;flex-direction:column;gap:3px}
.side .h{font:600 11px var(--body);letter-spacing:.12em;text-transform:uppercase;color:#7d8f98;padding:14px 8px 6px}
.side .who{padding:2px 8px 10px;display:flex;flex-direction:column}
.side .who b{font-weight:500;word-break:break-all}
.side a{display:flex;justify-content:space-between;align-items:center;padding:8px;border-radius:8px;text-decoration:none;color:var(--soft);font-weight:500}
.side a:hover{color:var(--fg);background:#141b23}
.side a.on{background:var(--raise);color:var(--fg);font-weight:600}
.side a small{color:#7d8f98;font-size:12px}
.side .gap{flex:1;min-height:20px}
.main{flex:1;min-width:0;padding:40px 40px 64px;display:flex;justify-content:center}
.wrap{width:100%;max-width:920px;display:flex;flex-direction:column;gap:20px}
.head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px}
.head h1{margin:0;font:600 26px/1.1 var(--body)}
.head .acts{display:flex;flex-wrap:wrap;gap:8px}
.box{background:var(--panel);border:1px solid var(--line);border-radius:12px}
.pad{padding:16px}
.list > .row{display:flex;flex-wrap:wrap;align-items:center;gap:14px;padding:14px 16px}
.list > .row + .row{border-top:1px solid #1c242d}
.row .ic{width:34px;height:34px;flex:none;border-radius:8px;background:var(--raise);display:grid;place-items:center;font-weight:600;color:var(--soft);overflow:hidden}
.row .ic img{width:100%;height:100%;object-fit:cover}
.row .tx{flex:1;min-width:180px;display:flex;flex-direction:column;gap:3px}
.row .tx b{font-weight:600;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.row .tx b i{width:7px;height:7px;border-radius:50%;background:var(--accent);flex:none}
.row .tx small{color:var(--muted)}
.url{font:12px var(--mono);color:#7d8f98;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.row .bt{display:flex;flex-wrap:wrap;gap:6px}
.empty{padding:28px 16px;text-align:center;color:var(--muted)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px}
.tile{display:flex;flex-direction:column;gap:6px}
.tile .pic{aspect-ratio:2/3;border-radius:10px;background:var(--panel-2);overflow:hidden;display:grid;place-items:center;color:var(--muted);font-weight:600;text-align:center;padding:6px;position:relative}
.tile .pic img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tile .pic .bar{position:absolute;left:0;right:0;bottom:0;height:4px;background:rgba(228,236,239,.25)}
.tile .pic .bar i{display:block;height:100%;background:var(--accent)}
.tile b{font-weight:600;font-size:14px}
.tile small{color:var(--muted);font-size:12px}
.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:2px;text-decoration:none;color:var(--fg)}
.stat:hover{border-color:var(--line-2);color:var(--fg)}
.stat b{font:700 30px/1.1 var(--display);letter-spacing:.02em}
.stat span{color:var(--muted);font-size:13px}
.swatches{display:flex;gap:6px;flex-wrap:wrap}
.swatch{width:26px;height:26px;flex:none;border-radius:7px;border:0;cursor:pointer;padding:0}
.swatch.on{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--fg)}
.err:empty{min-height:0}
.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translateX(-50%);background:var(--fg);color:var(--bg);padding:10px 16px;border-radius:999px;font-weight:600;font-size:14px;z-index:50;max-width:calc(100% - 32px);text-align:center}
.menu{position:absolute;right:0;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--line-2);border-radius:12px;padding:6px;min-width:200px;z-index:20;display:flex;flex-direction:column;box-shadow:0 12px 40px rgba(0,0,0,.5)}
.menu button{display:flex;align-items:center;gap:10px;background:none;border:0;border-radius:8px;padding:8px 10px;text-align:left;cursor:pointer;font-weight:500}
.menu button:hover,.menu button.on{background:var(--raise)}

/* Landing */
.hero{max-width:1080px;margin:0 auto;padding:72px max(16px,env(safe-area-inset-right)) 40px max(16px,env(safe-area-inset-left));display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center}
.hero h1{margin:0;font:700 clamp(44px,7vw,76px)/.95 var(--display);letter-spacing:.01em;text-transform:uppercase}
.hero p{color:var(--soft);font-size:18px;max-width:34em;margin:16px 0 26px}
.hero .acts{display:flex;flex-wrap:wrap;gap:10px}
.hero .acts .btn{padding:13px 20px;font-size:16px;border-radius:10px}
.tvpic{aspect-ratio:16/10;border-radius:18px;background:#0f151b;border:1px solid var(--line);position:relative;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.tvpic .rail{position:absolute;left:0;top:0;bottom:0;width:11%;border-right:1px solid #18212a;display:flex;flex-direction:column;align-items:center;gap:8%;padding-top:7%}
.tvpic .rail i{width:34%;aspect-ratio:1;border-radius:6px;background:#1e2832}
.tvpic .rail i.on{background:#2f3f4a}
.tvpic .hd{position:absolute;left:16%;top:14%;width:44%;display:flex;flex-direction:column;gap:7px}
.tvpic .hd i{height:9px;border-radius:4px;background:#26323c}
.tvpic .hd i:first-child{height:26px;width:70%;background:#33434f}
.tvpic .rw{position:absolute;left:16%;right:0;bottom:8%;display:flex;gap:3%}
.tvpic .rw i{flex:none;width:17%;aspect-ratio:2/3;border-radius:6px;background:#1c262f}
.tvpic .rw i.on{outline:3px solid var(--accent);outline-offset:3px;background:#26343f}
.feats{max-width:1080px;margin:0 auto;padding:20px max(16px,env(safe-area-inset-right)) 80px max(16px,env(safe-area-inset-left));display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.feat{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:6px}
.feat h3{margin:0;font:600 17px var(--body)}
.feat p{margin:0;color:var(--muted);font-size:14px}
.foot{border-top:1px solid #1c242d;padding:22px max(16px,env(safe-area-inset-right)) 28px max(16px,env(safe-area-inset-left));display:flex;flex-wrap:wrap;justify-content:center;gap:8px 20px;color:#6f818a;font-size:13px}
.foot a{color:#8a9ca5;text-decoration:none}

@media (max-width:860px){
  .hero{grid-template-columns:1fr;padding-top:40px}
  .acct{flex-direction:column}
  .side{width:auto;border-right:0;border-bottom:1px solid #1c242d;flex-direction:row;flex-wrap:nowrap;overflow-x:auto;padding:12px 16px;gap:4px}
  .side .h,.side .who,.side .gap{display:none}
  .side a{flex:none}
  .side a small{margin-left:8px}
  .main{padding:24px 16px 56px}
  .card{padding:24px 20px}
}
