/* ---------- design tokens ---------- */
:root{
  --bg:#0b0f1a;
  --surface:#141a2b;
  --surface-2:#1c2540;
  --line:#26304d;
  --text:#eef2ff;
  --muted:#8b96b8;
  --accent:#00e6a0;
  --danger:#ff5c7a;
  --warn:#ffb648;
  --you:#00e6a0;
  --them:#7aa2ff;

  --fdr-1:#0fd17a; --fdr-2:#7ee08a; --fdr-3:#8b96b8; --fdr-4:#ff8a6b; --fdr-5:#ff4d6d;

  --r:14px;
  --pad:16px;
}

*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  background:var(--bg);color:var(--text);
  font:15px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,sans-serif;
  padding-bottom:40px;-webkit-font-smoothing:antialiased;
}
.hidden{display:none !important}
.muted{color:var(--muted)}
code{background:var(--surface-2);padding:1px 5px;border-radius:5px;font-size:.9em}

/* ---------- sticky header ---------- */
.app-header{
  position:sticky;top:0;z-index:30;
  background:rgba(11,15,26,.92);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:calc(10px + env(safe-area-inset-top)) var(--pad) 10px;
}
.brand{display:flex;align-items:center;gap:9px}
.brand h1{font-size:17px;margin:0;letter-spacing:-.2px}
.dot{width:9px;height:9px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent)}
.topbar-right{display:flex;align-items:center;gap:8px}
.gw-label{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.icon-btn{
  background:var(--surface-2);border:1px solid var(--line);color:var(--text);
  width:32px;height:32px;border-radius:9px;font-size:15px;cursor:pointer;
}
.icon-btn:active{transform:scale(.94)}
.icon-btn.spin{animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.status-strip{
  padding:7px var(--pad);font-size:12px;text-align:center;
  background:var(--surface-2);color:var(--muted);border-top:1px solid var(--line);
}
.status-strip.live{color:#04110c;background:var(--accent);font-weight:600}

.tabbar{display:flex;border-top:1px solid var(--line)}
.tab{
  flex:1;background:none;border:none;color:var(--muted);
  padding:9px 2px 8px;font-size:10px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:3px;font-weight:600;
  border-bottom:2px solid transparent;font-family:inherit;
}
.tab-ico{font-size:16px;line-height:1}
.tab.active{color:var(--accent);border-bottom-color:var(--accent)}

/* ---------- layout ---------- */
.view{padding:var(--pad);max-width:820px;margin:0 auto}
.loading{padding:60px 0;text-align:center;color:var(--muted)}
.card{
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);padding:var(--pad);margin-bottom:14px;
}
.card h2{margin:0 0 12px;font-size:14px;letter-spacing:.4px;text-transform:uppercase;color:var(--muted)}
.card h2 .h2-note{
  float:right;font-size:10px;letter-spacing:.3px;color:var(--muted);
  text-transform:none;font-weight:600;opacity:.9;
}
.section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}

/* ---------- scoreline ---------- */
.gw-banner{
  display:flex;align-items:center;gap:7px;margin:-4px 0 13px;
  padding-bottom:11px;border-bottom:1px solid var(--line);
  font-size:11px;color:var(--muted);
}
.gw-chip{
  font-size:9px;font-weight:800;letter-spacing:.5px;padding:3px 8px;
  border-radius:99px;flex:0 0 auto;
}
.chip-live{background:var(--accent);color:#04110c}
.chip-next{background:rgba(122,162,255,.2);color:var(--them)}
.chip-done{background:var(--surface-2);color:var(--muted)}
.gw-banner .gb-text{flex:1;min-width:0;line-height:1.45}
.gw-banner b{color:var(--text)}

.scoreline{display:flex;align-items:stretch;gap:10px}
.side{flex:1;min-width:0}
.side-name{font-size:13px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-name.you{color:var(--you)}
.side-name.them{color:var(--them)}
.side-score{font-size:40px;font-weight:800;line-height:1;letter-spacing:-1.5px;font-variant-numeric:tabular-nums;margin-top:4px}
.side.right{text-align:right}
.vs{align-self:center;color:var(--muted);font-size:12px;font-weight:600;padding:0 2px}

.ytp-row{display:flex;justify-content:space-between;margin-top:10px;font-size:12px;color:var(--muted)}
.ytp{display:flex;align-items:center;gap:5px}
.pips{display:flex;gap:3px}
.pip{width:6px;height:6px;border-radius:50%;background:var(--line)}
.pip.todo{background:var(--warn)}
.pip.live{background:var(--accent);animation:pulse 1.4s ease-in-out infinite}
@keyframes pulse{50%{opacity:.35}}

.wp{margin-top:16px}
.wp-bar{position:relative;height:10px;border-radius:99px;overflow:hidden;background:var(--them)}
.wp-fill{position:absolute;inset:0 auto 0 0;background:var(--you);transition:width .6s cubic-bezier(.4,0,.2,1)}
.wp-mid{position:absolute;top:-3px;bottom:-3px;left:50%;width:1px;background:rgba(255,255,255,.35)}
.wp-labels{display:flex;justify-content:space-between;margin-top:7px;font-size:12px;font-variant-numeric:tabular-nums}
.wp-labels .you{color:var(--you);font-weight:700}
.wp-labels .them{color:var(--them);font-weight:700}
.wp-note{margin-top:8px;font-size:12px;color:var(--muted);text-align:center}

/* bench watch, embedded in the scoreline card */
.bench-embed{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin-top:14px;padding-top:12px;border-top:1px solid var(--line);
  font-size:12px;color:var(--muted);
}
.bench-embed .be-lbl{
  font-size:9px;text-transform:uppercase;letter-spacing:.6px;font-weight:800;
  color:var(--muted);flex:0 0 auto;
}
.bench-embed .be-side{font-variant-numeric:tabular-nums}
.bench-embed .be-side b{font-size:15px;letter-spacing:-.3px}
.bench-embed .be-right{text-align:right}

/* preview state (future gameweek, no points yet) */
.preview-note{
  margin-top:14px;padding-top:12px;border-top:1px solid var(--line);
  font-size:12px;color:var(--muted);text-align:center;line-height:1.5;
}
.preview-note .nd-deadline{color:var(--warn);font-weight:700}

/* ---------- upcoming games ---------- */
.ug-context{
  font-size:11px;color:var(--muted);margin:-4px 0 12px;
  padding-bottom:10px;border-bottom:1px solid var(--line);line-height:1.5;
}
.ug-context b{color:var(--them)}
.ug-context .tag{
  display:inline-block;font-size:9px;font-weight:800;letter-spacing:.4px;
  padding:2px 6px;border-radius:99px;margin-right:6px;vertical-align:1px;
}
.tag-live{background:var(--accent);color:#04110c}
.tag-next{background:rgba(122,162,255,.2);color:var(--them)}

.ug{padding:11px 0;border-bottom:1px solid var(--line)}
.ug:last-child{border-bottom:none;padding-bottom:0}
.ug-top{display:flex;align-items:center;gap:10px}
.ug-fix{flex:1;min-width:0}
.ug-teams{font-size:15px;font-weight:700;letter-spacing:-.2px}
.ug-when{font-size:11px;color:var(--muted);margin-top:2px}
.ug-count{
  text-align:right;font-variant-numeric:tabular-nums;
  font-size:15px;font-weight:800;color:var(--warn);letter-spacing:-.3px;white-space:nowrap;
}
.ug-count small{
  display:block;font-size:8px;color:var(--muted);letter-spacing:.5px;
  text-transform:uppercase;font-weight:700;margin-top:1px;
}
.ug-count.livenow{color:var(--accent)}
.ug-players{display:flex;gap:10px;margin-top:9px}
.ug-col{flex:1;min-width:0}
.ug-col .who{font-size:8px;text-transform:uppercase;letter-spacing:.5px;font-weight:800;margin-bottom:3px}
.ug-col.you .who{color:var(--you)}
.ug-col.them .who{color:var(--them)}
.ug-col .names{font-size:11px;line-height:1.5;word-break:break-word}
.ug-col .names.none{color:var(--muted);font-style:italic}
.ug-empty{font-size:13px;color:var(--muted);margin:0}

/* ---------- next draft match ---------- */
.nd-head{display:flex;align-items:center;gap:12px}
.nd-main{flex:1;min-width:0}
.nd-vs{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:700}
.nd-team{font-size:19px;font-weight:800;letter-spacing:-.4px;color:var(--them);margin-top:2px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nd-mgr{font-size:12px;color:var(--muted);margin-top:2px}
.nd-gw{text-align:right;white-space:nowrap;font-size:17px;font-weight:800;color:var(--text);letter-spacing:-.3px}
.nd-gw small{display:block;font-size:8px;color:var(--muted);letter-spacing:.5px;
  text-transform:uppercase;font-weight:700;margin-top:2px}
.nd-meta{display:flex;gap:8px;margin-top:13px;padding-top:12px;border-top:1px solid var(--line)}
.nd-stat{flex:1;min-width:0;text-align:center}
.nd-stat b{display:block;font-size:16px;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.nd-stat span{font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-weight:700}
.nd-h2h{margin-top:12px;padding-top:11px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.nd-h2h b{color:var(--text)}
.nd-deadline{color:var(--warn);font-weight:700}

/* ---------- squads ---------- */
.squads{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.squad-col{min-width:0}
.squad-col h3{
  font-size:11px;margin:0 0 8px;text-transform:uppercase;letter-spacing:.4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.sub-head{
  font-size:9px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);
  font-weight:700;margin:10px 0 4px;padding-top:8px;border-top:1px dashed var(--line);
}
.p-row{
  display:flex;align-items:center;gap:6px;padding:7px 0;
  border-bottom:1px solid rgba(38,48,77,.6);font-size:13px;
}
.p-row:last-child{border-bottom:none}
.p-row.benched{opacity:.45}
.p-row.subbed-out{opacity:.5}
.p-row.subbed-out .p-name{text-decoration:line-through;text-decoration-color:var(--danger)}
.p-row.subbed-in{opacity:1;background:rgba(0,230,160,.07);border-radius:6px;padding-inline:5px}

.p-pos{font-size:9px;font-weight:700;color:var(--muted);width:24px;flex:0 0 24px;letter-spacing:.3px}
.p-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.p-pts{font-weight:700;font-variant-numeric:tabular-nums;min-width:20px;text-align:right}
.p-state{width:7px;height:7px;border-radius:50%;flex:0 0 7px}
.s-done{background:var(--line)}
.s-live{background:var(--accent);animation:pulse 1.4s ease-in-out infinite}
.s-todo{background:var(--warn)}
.diff-flag{font-size:8px;color:var(--warn);font-weight:700}

.badge{font-size:8px;font-weight:800;letter-spacing:.3px;padding:2px 4px;border-radius:4px;flex:0 0 auto}
.badge-out{background:rgba(255,92,122,.18);color:var(--danger)}
.badge-in{background:var(--accent);color:#04110c}
.badge-dnp{background:var(--surface-2);color:var(--muted)}

.subs-note{
  margin-top:12px;padding-top:10px;border-top:1px solid var(--line);
  font-size:11px;color:var(--muted);line-height:1.6;
}
.subs-note b{color:var(--text)}
.subs-note .arrow{color:var(--accent);font-weight:700}
.subs-note .prov{color:var(--warn)}

/* ---------- league table ---------- */
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);font-weight:600;padding:0 6px 8px}
td{padding:9px 6px;border-top:1px solid var(--line);font-variant-numeric:tabular-nums}
tr.me td{background:rgba(0,230,160,.07)}
tr.me .t-name{color:var(--accent);font-weight:700}
tr.nextopp td{background:rgba(122,162,255,.07)}
tr.nextopp .t-name{color:var(--them);font-weight:700}
.t-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}
.num{text-align:right}
.live-add{color:var(--accent);font-size:11px;font-weight:700}

/* matches list (moved to League tab) */
.tie{display:flex;align-items:center;gap:8px;padding:10px 0;border-top:1px solid var(--line);font-size:13px}
.tie:first-of-type{border-top:none}
.tie.mine{background:rgba(0,230,160,.06);border-radius:8px;padding-inline:8px}
.tie-name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tie-name.right{text-align:right}
.tie-score{font-weight:700;font-variant-numeric:tabular-nums;min-width:26px;text-align:center}
.tie-vs{color:var(--muted);font-size:11px;flex:0 0 auto}

/* ---------- free agents ---------- */
.filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.chip{
  background:var(--surface-2);border:1px solid var(--line);color:var(--muted);
  padding:6px 11px;border-radius:99px;font-size:12px;cursor:pointer;font-weight:600;font-family:inherit;
}
.chip.on{background:var(--accent);border-color:var(--accent);color:#04110c}
.search{
  width:100%;background:var(--surface-2);border:1px solid var(--line);
  color:var(--text);padding:10px 12px;border-radius:10px;font-size:14px;margin-bottom:12px;font-family:inherit;
}
.search::placeholder{color:var(--muted)}
.fa{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line)}
.fa:first-child{border-top:none}
.fa-main{flex:1;min-width:0}
.fa-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fa-meta{font-size:11px;color:var(--muted);margin-top:2px}
.fa-stat{text-align:right;min-width:42px}
.fa-stat b{display:block;font-size:15px;font-variant-numeric:tabular-nums}
.fa-stat span{font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}

.fdr-row{display:flex;gap:3px;margin-top:5px}
.fdr{font-size:9px;font-weight:700;padding:3px 5px;border-radius:5px;color:#04110c;min-width:30px;text-align:center;text-transform:uppercase;letter-spacing:.2px}
.fdr-1{background:var(--fdr-1)}.fdr-2{background:var(--fdr-2)}.fdr-3{background:var(--fdr-3)}
.fdr-4{background:var(--fdr-4);color:#180703}.fdr-5{background:var(--fdr-5);color:#fff}
.fdr-x{background:var(--surface-2);color:var(--muted)}

/* ---------- ticker ---------- */
.ticker-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.ticker{border-collapse:separate;border-spacing:3px;font-size:11px}
.ticker th{padding:0 0 6px;text-align:center;min-width:42px}
.ticker td.club{text-align:left;font-weight:700;padding-right:8px;white-space:nowrap;position:sticky;left:0;background:var(--surface);z-index:1}
.ticker td{padding:0}
.ticker .cell{border-radius:6px;padding:6px 4px;text-align:center;font-weight:700;color:#04110c;min-width:42px}
.legend{display:flex;gap:8px;align-items:center;margin-top:12px;font-size:11px;color:var(--muted);flex-wrap:wrap}
.legend .sw{width:14px;height:9px;border-radius:3px;display:inline-block}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;z-index:50;background:rgba(4,7,14,.82);display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(4px)}
.modal-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:22px;max-width:420px;width:100%}
.modal-card h2{margin:0 0 10px;font-size:18px}
.modal-card label{display:block;font-size:12px;color:var(--muted);margin-top:14px}
.modal-card input{width:100%;margin-top:6px;background:var(--surface-2);border:1px solid var(--line);color:var(--text);padding:10px 12px;border-radius:10px;font-size:15px;font-family:inherit}
.primary{width:100%;margin-top:18px;background:var(--accent);color:#04110c;border:none;padding:12px;border-radius:10px;font-size:15px;font-weight:700;cursor:pointer;font-family:inherit}
.error{color:var(--danger);font-size:12px;margin-top:10px}
.league-list{display:flex;flex-direction:column;gap:6px}
.league-opt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:var(--surface-2);border:1px solid var(--line);color:var(--text);padding:10px 12px;border-radius:10px;cursor:pointer;text-align:left;width:100%;font-family:inherit}
.league-opt b{font-size:14px}
.league-opt span{font-size:11px;color:var(--muted)}
.league-opt.on{border-color:var(--accent);background:rgba(0,230,160,.1)}
.manual{margin-top:16px}
.manual summary{font-size:12px;color:var(--muted);cursor:pointer}

/* ---------- identity ---------- */
.identity-btn{
  display:flex;align-items:center;gap:6px;
  background:var(--surface-2);border:1px solid var(--line);color:var(--text);
  padding:6px 10px;border-radius:99px;font-size:11px;font-weight:700;
  cursor:pointer;max-width:130px;font-family:inherit;
}
.identity-btn:active{transform:scale(.96)}
.ib-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 7px var(--accent);flex:0 0 6px}
.ib-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.identity-list{display:flex;flex-direction:column;gap:7px;margin-top:16px;max-height:52vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.identity-opt{
  display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  background:var(--surface-2);border:1px solid var(--line);color:var(--text);
  padding:11px 13px;border-radius:11px;cursor:pointer;font-family:inherit;
}
.identity-opt.on{border-color:var(--accent);background:rgba(0,230,160,.12)}
.identity-opt.on .io-main b{color:var(--accent)}
.io-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.io-main b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.io-main span{font-size:11px;color:var(--muted)}
.io-rank{text-align:center;font-size:16px;font-weight:800;color:var(--muted);font-variant-numeric:tabular-nums;flex:0 0 auto;line-height:1.1}
.io-rank small{display:block;font-size:8px;text-transform:uppercase;letter-spacing:.5px;font-weight:700;margin-top:1px}
.ghost-btn{width:100%;margin-top:14px;background:none;border:1px solid var(--line);color:var(--muted);padding:11px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}

/* ---------- narrow phones ---------- */
@media(max-width:430px){
  :root{--pad:12px}
  .side-score{font-size:32px}
  .squads{gap:7px}
  .p-row{gap:4px;font-size:12px;padding:6px 0}
  .p-pos{width:20px;flex:0 0 20px;font-size:8px}
  .p-pts{min-width:17px}
  .squad-col h3{font-size:10px}
  .tab{font-size:9px}
  .ug-teams{font-size:14px}
  .nd-team{font-size:17px}
  .identity-btn{max-width:96px;font-size:10px;padding:5px 9px}
  .gw-label{display:none}
}
@media(max-width:340px){
  .p-pos{display:none}
  .diff-flag{display:none}
}

/* =====================================================================
   v2 additions / overrides
   ===================================================================== */
:root{--pos:#ffa552}
.status-strip b{color:var(--text)}
.status-strip.live b{color:#04110c}
.status-strip.ahead{background:rgba(122,162,255,.16);color:var(--them)}
.status-strip.ahead b{color:#cfe0ff}

/* scoreline: manager names, no banner */
.scoreline{align-items:flex-start}
.side-name{font-weight:600}
.side-mgr{font-size:11px;color:var(--muted);margin-top:1px;opacity:.85;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vs{padding-top:18px}
.preview-note .dl{color:var(--warn);font-weight:700}

/* live feed */
.feed-row{display:flex;align-items:center;gap:8px;padding:6px 0;font-size:12.5px;
  border-bottom:1px solid rgba(38,48,77,.5)}
.feed-row:last-child{border-bottom:none}
.feed-tick{width:3px;align-self:stretch;border-radius:2px;flex:0 0 3px;min-height:16px}
.feed-tick.you{background:var(--you)}
.feed-tick.them{background:var(--them)}
.feed-txt{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.feed-when{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.feed-pts{font-weight:800;font-variant-numeric:tabular-nums;font-size:12.5px;min-width:22px;text-align:right}
.feed-pts.up{color:var(--accent)}
.feed-pts.down{color:var(--danger)}
.feed-prov{font-size:8px;color:var(--warn);font-weight:700;letter-spacing:.3px}
.feed-empty{font-size:12px;color:var(--muted);margin:0}
.more-btn{background:none;border:none;color:var(--muted);font-family:inherit;font-size:11px;
  font-weight:700;padding:8px 0 0;cursor:pointer;width:100%;text-align:center}

/* squads: amber position letter + opponent */
.p-row{cursor:pointer}
.p-pos{font-size:10px;font-weight:800;color:var(--pos);width:9px;flex:0 0 9px;text-align:center;letter-spacing:0}
.p-opp{font-size:9.5px;color:var(--muted);font-weight:600}
.p-prov{color:var(--warn);font-size:8px;font-weight:800;margin-left:1px;vertical-align:1px}

/* upcoming games: one row, owner-tinted chips */
.ug-row{display:flex;align-items:flex-start;gap:9px;padding:8px 0;border-bottom:1px solid rgba(38,48,77,.55)}
.ug-row:last-child{border-bottom:none;padding-bottom:0}
.ug-row:first-of-type{padding-top:0}
.ug-meta{flex:0 0 86px;min-width:0}
.ug-fix{font-size:12px;font-weight:700;letter-spacing:-.2px;white-space:nowrap}
.ug-fix .sc{color:var(--accent)}
.ug-ko{font-size:9.5px;color:var(--muted);margin-top:1px;white-space:nowrap}
.ug-ko.livenow{color:var(--accent);font-weight:700}
.ug-chips{flex:1;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.chipp{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;
  padding:2.5px 6px;border-radius:99px;border:1px solid transparent;white-space:nowrap;cursor:pointer}
.chipp.you{background:rgba(0,230,160,.13);border-color:rgba(0,230,160,.3);color:var(--you)}
.chipp.them{background:rgba(122,162,255,.13);border-color:rgba(122,162,255,.3);color:var(--them)}
.chipp .cp{font-variant-numeric:tabular-nums;font-weight:800}
.chipp.bench{opacity:.5}
.chip-div{width:1px;align-self:stretch;min-height:18px;background:var(--line);margin:0 3px;flex:0 0 1px}

/* next match: availability */
.dl{color:var(--warn);font-weight:700}
.avail{margin-top:10px;padding-top:9px;border-top:1px solid var(--line)}
.avail-grp{margin-bottom:7px}
.avail-grp:last-child{margin-bottom:0}
.avail-grp.theirs{opacity:.62}
.avail-lbl{font-size:8.5px;text-transform:uppercase;letter-spacing:.6px;font-weight:800;color:var(--muted);margin-bottom:3px}
.avail-grp.mine .avail-lbl{color:var(--you)}
.avail-grp.theirs .avail-lbl{color:var(--them)}
.avail-row{display:flex;align-items:center;gap:6px;font-size:12px;padding:2px 0}
.avail-row .an{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.avail-row .ap{font-size:9.5px;font-weight:700}
.avail-none{font-size:11.5px;color:var(--muted)}
.ap-o{color:var(--danger)}
.ap-d{color:var(--warn)}

/* league: info button, tappable ties */
.info-btn{background:none;border:1px solid var(--line);color:var(--muted);width:19px;height:19px;
  border-radius:50%;font-size:10px;line-height:1;font-family:inherit;padding:0;cursor:pointer;font-weight:700}
.info-btn.on{border-color:var(--accent);color:var(--accent)}
.legend-box{margin:10px 0 0;font-size:11px;color:var(--muted);line-height:1.6}
.tie .tie-name{cursor:pointer}

/* market */
.seg{display:flex;background:var(--surface-2);border:1px solid var(--line);border-radius:11px;padding:3px;margin-bottom:11px}
.seg button{flex:1;background:none;border:none;color:var(--muted);font-family:inherit;padding:8px 6px;
  border-radius:8px;font-size:12px;font-weight:700;cursor:pointer}
.seg button.on{background:var(--accent);color:#04110c}
.waiver{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:11px;
  padding:10px 12px;border-radius:11px;background:var(--surface-2);border:1px solid var(--line);font-size:11.5px}
.wv-l{font-size:8.5px;text-transform:uppercase;letter-spacing:.6px;font-weight:800;color:var(--muted)}
.wv-t{font-size:16px;font-weight:800;color:var(--warn);font-variant-numeric:tabular-nums;letter-spacing:-.3px;white-space:nowrap}
.wv-d{font-size:10.5px;color:var(--muted);margin-top:1px}
.mv{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--line)}
.mv:first-of-type{border-top:none}
.mv-ico{width:22px;height:22px;border-radius:7px;flex:0 0 22px;display:flex;align-items:center;
  justify-content:center;font-size:11px;background:var(--surface-2)}
.mv-ico.in{background:rgba(0,230,160,.15)}
.mv-ico.trade{background:rgba(122,162,255,.15)}
.mv-main{flex:1;min-width:0;display:flex;flex-direction:column}
.mv-l1{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mv-l1 .out{color:var(--danger)}
.mv-l1 .in{color:var(--accent)}
.mv-l1 .m{color:var(--muted)}
.mv-l2{font-size:10px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mv-when{font-size:9.5px;color:var(--muted);text-align:right;white-space:nowrap}
.mv-tag{font-size:7.5px;font-weight:800;padding:2px 5px;border-radius:99px;background:var(--surface-2);color:var(--muted)}
.fa{gap:8px;padding:6px 0;cursor:pointer}
.fa-l1{display:flex;align-items:baseline;gap:5px;min-width:0}
.fa-name{font-size:12.5px}
.fa-pos{font-size:9.5px;font-weight:800;color:var(--pos)}
.fa-club{font-size:9.5px;color:var(--muted)}
.fa-l2{font-size:9.5px;color:var(--muted);margin-top:2px;display:flex;gap:4px;align-items:center}
.fa-fix{display:flex;gap:2px}
.fa .fdr{font-size:8px;padding:2px 4px;border-radius:4px;min-width:25px;display:inline-block}
.fa-stat{min-width:30px}
.fa-stat b{font-size:13px;line-height:1.1}
.fa-stat span{font-size:7.5px;font-weight:700}

/* ticker: position + GF:GA */
.ticker{border-spacing:2px;font-size:10px}
.ticker th{min-width:34px;font-size:8.5px}
.ticker th.club{text-align:left}
.ticker .cell{border-radius:5px;padding:4.5px 3px;min-width:34px}
.tk-club{display:flex;align-items:center;gap:5px}
.tk-pos{font-size:9px;font-weight:800;color:var(--muted);min-width:13px;text-align:right;font-variant-numeric:tabular-nums}
.tk-name{font-weight:800;font-size:10.5px;min-width:28px}
.tk-gd{font-size:8.5px;color:var(--muted);font-variant-numeric:tabular-nums;min-width:34px;font-weight:600}

/* popups */
.modal-card.sheet{max-height:86vh;overflow-y:auto;-webkit-overflow-scrolling:touch}
.pm-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:12px}
.pm-main{flex:1;min-width:0}
.pm-name{font-size:19px;font-weight:800;letter-spacing:-.4px}
.pm-sub{font-size:11.5px;color:var(--muted);margin-top:2px}
.pm-sub .pos{color:var(--pos);font-weight:800}
.pm-tot{text-align:right}
.pm-tot b{display:block;font-size:30px;font-weight:800;letter-spacing:-1.2px;line-height:1;font-variant-numeric:tabular-nums}
.pm-tot span{font-size:8px;color:var(--muted);text-transform:uppercase;letter-spacing:.6px;font-weight:700}
.pm-flag{margin-bottom:11px;padding:8px 10px;border-radius:9px;font-size:11.5px;
  background:rgba(255,182,72,.12);color:var(--warn);border:1px solid rgba(255,182,72,.25)}
.pm-sect{font-size:8.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:800;margin:13px 0 6px}
.pm-empty{font-size:12px;color:var(--muted)}
.br-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid rgba(38,48,77,.5);font-size:12.5px}
.br-lbl{flex:1;min-width:0}
.br-val{color:var(--muted);font-variant-numeric:tabular-nums;font-size:11.5px}
.br-pts{font-weight:800;font-variant-numeric:tabular-nums;min-width:26px;text-align:right}
.br-pts.pos{color:var(--accent)}
.br-pts.neg{color:var(--danger)}
.br-total{display:flex;align-items:center;gap:8px;padding:8px 0 0;margin-top:4px;font-size:13px;font-weight:800}
.br-total .br-lbl{text-transform:uppercase;font-size:10px;letter-spacing:.5px;color:var(--muted)}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.stat-box{background:var(--surface-2);border-radius:9px;padding:8px 5px;text-align:center}
.stat-box b{display:block;font-size:15px;font-variant-numeric:tabular-nums;letter-spacing:-.3px}
.stat-box span{font-size:7.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-weight:700}
.tm-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:4px}
.tm-name{font-size:18px;font-weight:800;letter-spacing:-.3px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tm-tot{font-size:26px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums}
.tm-mgr{font-size:11.5px;color:var(--muted);margin-bottom:12px}
.tm-foot{margin-top:10px;padding-top:9px;border-top:1px solid var(--line);font-size:11px;color:var(--muted);
  display:flex;justify-content:space-between}

/* v2 fixes */
.fdr{text-transform:none}                       /* keep home UPPER / away lower */
.ytp-row{gap:10px;align-items:flex-start}
.ytp{flex-direction:column;align-items:flex-start;gap:4px;min-width:0}
.ytp:last-child{align-items:flex-end}
.ytp .pips{order:-1}
.ytp span{white-space:nowrap}
.legend .lg-scale{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.side-score{min-height:36px}

/* =====================================================================
   v3 · FLOODLIT
   Cinematic stadium backdrop, frosted-glass cards, condensed display
   type, floating tab bar, motion. Everything below overrides v2.
   ===================================================================== */
:root{
  --bg:#070a12;
  --glass:rgba(20,26,43,.72);
  --glass-line:rgba(255,255,255,.07);
  --display:'Barlow Condensed','Arial Narrow','Roboto Condensed','Helvetica Neue',Arial,sans-serif;
  --body:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --tabbar-h:64px;
}
body{background:var(--bg);font-family:var(--body);padding-bottom:calc(var(--tabbar-h) + 34px + env(safe-area-inset-bottom));
  position:relative;min-height:100vh;overflow-x:hidden}

/* ---- backdrop (sits behind everything; never over the header) ---- */
.backdrop{position:absolute;top:0;left:0;right:0;height:520px;z-index:0;pointer-events:none;
  background:url(/img/hero.jpg) center 30%/cover no-repeat;
  background-image:image-set(url(/img/hero.webp) type("image/webp"),url(/img/hero.jpg) type("image/jpeg"));
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 45%,transparent 100%);mask-image:linear-gradient(180deg,#000 0%,#000 45%,transparent 100%)}
.backdrop::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(7,10,18,.62) 0%,rgba(7,10,18,.38) 28%,rgba(7,10,18,.82) 70%,var(--bg) 100%)}

/* ---- header: plain and crisp — no background layer, no blur, scrolls away ---- */
.app-header{position:relative;z-index:2;background:none;border:none;
  -webkit-backdrop-filter:none;backdrop-filter:none}
.view{position:relative;z-index:1}
.topbar{padding:calc(12px + env(safe-area-inset-top)) var(--pad) 4px}
.brand{gap:9px}
.mark{width:26px;height:26px}
.brand h1{font:700 21px/1 var(--display);letter-spacing:.8px;text-transform:uppercase}
.brand h1 span{color:var(--accent)}
.dot{display:none}
.identity-btn{background:rgba(14,19,34,.85);border:1px solid rgba(255,255,255,.14)}
.icon-btn{display:flex;align-items:center;justify-content:center;background:rgba(14,19,34,.85);
  border:1px solid rgba(255,255,255,.14);border-radius:50%;width:32px;height:32px}
.icon-btn svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.status-strip,.gw-label{display:none!important}

/* ---- floating tab bar ---- */
.tabbar{position:fixed;left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:40;
  max-width:560px;margin:0 auto;border:1px solid rgba(255,255,255,.09);border-radius:22px;
  background:rgba(14,19,34,.8);-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3);
  box-shadow:0 12px 34px rgba(0,0,0,.55);padding:6px;display:flex}
.tab{border:none;border-radius:16px;padding:8px 2px 7px;font-size:10px;gap:4px;transition:color .2s,background .2s}
.tab-ico{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;font-size:inherit}
.tab.active{color:var(--accent);background:rgba(0,230,160,.09);border:none}

/* ---- glass cards ---- */
.card{background:var(--glass);border:1px solid var(--glass-line);border-radius:18px;
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 10px 30px rgba(0,0,0,.3)}
.card h2,.section-head h2{font:700 14px/1.2 var(--display);letter-spacing:1.4px;color:rgba(238,242,255,.62)}
.card h2 .h2-note{font:600 10px var(--body);letter-spacing:.2px}

/* ---- hero scoreline ---- */
.hero-card{background:none;border:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;padding:6px 4px 6px}
.scoreline{align-items:flex-end;gap:6px}
.side-name{display:flex;align-items:center;gap:6px;font:700 15px/1.15 var(--display);letter-spacing:.5px;text-transform:uppercase;color:var(--text)!important}
.side-name span:not(.sw){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.side.right .side-name{justify-content:flex-end}
.side-mgr{color:rgba(238,242,255,.58);font-size:11px}
.side-score{font:800 84px/.88 var(--display);letter-spacing:-1.5px;margin-top:8px;min-height:74px;
  text-shadow:0 8px 30px rgba(0,0,0,.65)}
.side-score span{display:inline-block}
.side-score .bump{animation:bump .9s ease-out}
@keyframes bump{0%{transform:scale(1)}25%{transform:scale(1.12);filter:brightness(1.5)}100%{transform:scale(1)}}
.vs{align-self:flex-end;padding:0 0 18px;text-align:center;font:600 12px var(--display);letter-spacing:1.6px;
  text-transform:uppercase;color:rgba(238,242,255,.55);white-space:nowrap}
.vs b{display:block;font-size:20px;color:#fff;letter-spacing:1px;margin-bottom:2px}
.vs-live{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:6px;font:700 10px var(--body);letter-spacing:1px;
  color:#04110c;background:var(--accent);padding:3px 8px;border-radius:99px;box-shadow:0 0 14px rgba(0,230,160,.45)}
.vs-live i{width:5px;height:5px;border-radius:50%;background:#04110c;animation:pulse 1.4s ease-in-out infinite}
.ytp-row{margin-top:14px}
.pip{width:6px;height:6px}
.pip.live{box-shadow:0 0 8px var(--accent)}
.wp{margin-top:14px}
.wp-bar{height:7px;background:rgba(122,162,255,.85)}
.wp-fill{background:linear-gradient(90deg,#00b884,var(--accent));box-shadow:0 0 14px var(--accent)}
.wp-labels{font-size:11px}
.bench-embed{border-top-color:rgba(255,255,255,.08)}
.preview-note{border-top-color:rgba(255,255,255,.08);color:rgba(238,242,255,.7)}
.sw{width:9px;height:9px;border-radius:3px;display:inline-block;flex:0 0 9px;margin-right:6px;vertical-align:0;
  box-shadow:0 0 0 1px rgba(0,0,0,.25)}
.side-name .sw,.tm-name .sw{margin:0}
.tie-name.right .sw{margin:0 0 0 6px}

/* numbers in the display face */
.p-pts,.feed-pts,.tie-score,.nd-gw,.nd-stat b,.stat-box b,.br-pts,.fa-stat b,.wv-t,.tm-tot,.pm-tot b,.io-rank{font-family:var(--display)}
.p-pts{font-size:15px;font-weight:700}
.feed-pts{font-size:15px}
.tie-score{font-size:17px}
.nd-team{font:800 22px/1.1 var(--display);letter-spacing:.3px;text-transform:uppercase}
.nd-gw{font-size:20px}
.stat-box b{font-size:19px}
.br-pts{font-size:16px}
.tm-tot{font-size:34px;font-weight:800}
.tm-name{display:flex;align-items:center;gap:8px;font:800 20px/1.1 var(--display);text-transform:uppercase;letter-spacing:.3px}
.wv-t{font-size:20px}

/* rows */
.p-row{border-bottom-color:rgba(255,255,255,.05)}
.p-pos{font-family:var(--display);font-size:12px}
.s-live{box-shadow:0 0 6px var(--accent)}
.s-done{background:#2c3656}
.subs-note .i,.pm-flag .i{width:13px;height:13px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-2px}
.subs-note .i{stroke:var(--accent)}
.flag{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;
  background:rgba(255,182,72,.18);color:var(--warn);font:800 9px var(--body);vertical-align:1px}

/* live feed */
.feed-row{border-bottom-color:rgba(255,255,255,.05)}
.feed-row.flash{animation:flash 2.4s ease-out;border-radius:8px}
@keyframes flash{0%{background:rgba(0,230,160,.28)}100%{background:transparent}}

.ug-row{border-bottom-color:rgba(255,255,255,.05)}
.ug-ko.livenow{text-shadow:0 0 8px rgba(0,230,160,.6)}

/* league */
td{border-top-color:rgba(255,255,255,.06)}
.t-name{max-width:150px}
tr.me td{background:rgba(0,230,160,.08)}
.tie{border-top-color:rgba(255,255,255,.06)}

/* market */
.seg{background:rgba(255,255,255,.05);border-color:var(--glass-line);border-radius:14px}
.seg button{border-radius:11px;transition:background .2s,color .2s}
.waiver{background:var(--glass);border-color:var(--glass-line);border-radius:16px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.search{background:rgba(255,255,255,.05);border-color:var(--glass-line)}
.chip{background:rgba(255,255,255,.05);border-color:var(--glass-line)}
.mv,.fa{border-top-color:rgba(255,255,255,.06)}
.fdr{text-transform:none}

/* ticker */
.ticker td.club{background:transparent}
.ticker-wrap{-webkit-mask-image:linear-gradient(90deg,#000 88%,transparent);mask-image:linear-gradient(90deg,#000 88%,transparent)}
.legend .lg-scale{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}

/* ---- modals: blurred backdrop, bottom sheet ---- */
.modal{background:rgba(4,7,14,.55);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fadeIn .2s ease-out}
.modal-card{background:linear-gradient(180deg,#18203a,#111727);border:1px solid rgba(255,255,255,.08);border-radius:22px;
  box-shadow:0 30px 70px rgba(0,0,0,.6)}
#sheet{align-items:flex-end;padding:0}
#sheet .modal-card.sheet{max-width:560px;width:100%;border-radius:24px 24px 0 0;max-height:88vh;
  padding:12px 18px calc(18px + env(safe-area-inset-bottom));animation:sheetUp .32s cubic-bezier(.2,.9,.3,1)}
#sheet .modal-card.sheet::before{content:"";display:block;width:38px;height:4px;border-radius:9px;background:#3a4568;margin:0 auto 12px}
@keyframes sheetUp{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* player popup headshot */
.pm-head{align-items:center;gap:12px}
.pm-shot{position:relative;width:76px;height:92px;flex:0 0 76px;border-radius:16px;overflow:hidden;
  background:linear-gradient(165deg,var(--club) 0%,color-mix(in srgb,var(--club) 45%,#05070d) 100%);
  box-shadow:0 10px 24px rgba(0,0,0,.45),inset 0 0 0 1px rgba(255,255,255,.12)}
.pm-shot svg{position:absolute;left:50%;bottom:-4px;transform:translateX(-50%);width:62px;fill:rgba(255,255,255,.82)}
.pm-shot img{position:absolute;left:50%;bottom:0;transform:translateX(-50%);height:100%;width:auto;opacity:0;transition:opacity .3s}
.pm-shot img.ok{opacity:1}
.pm-shot:has(img.ok) svg{display:none}
.pm-club{position:absolute;top:5px;left:7px;z-index:2;font:800 9px var(--body);letter-spacing:.8px;color:rgba(255,255,255,.9);
  text-shadow:0 1px 3px rgba(0,0,0,.6)}
.pm-name{font:800 26px/1 var(--display);text-transform:uppercase;letter-spacing:.3px}
.pm-tot b{font-size:44px;line-height:.9;color:var(--accent);text-shadow:0 0 22px rgba(0,230,160,.35)}
.stat-box{background:rgba(255,255,255,.05);border-radius:12px}

/* ---- motion ---- */
.view.enter > *{animation:rise .5s cubic-bezier(.2,.8,.3,1) both}
.view.enter > *:nth-child(2){animation-delay:.05s}
.view.enter > *:nth-child(3){animation-delay:.1s}
.view.enter > *:nth-child(4){animation-delay:.15s}
.view.enter > *:nth-child(5){animation-delay:.2s}
@keyframes rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.p-row:active,.chipp:active,.fa:active,.mv:active,.tie:active,tbody tr:active{background:rgba(255,255,255,.05)}

/* skeleton loading */
.skeleton{padding-top:6px}
.sk{height:12px;border-radius:7px;margin:10px 0;
  background:linear-gradient(90deg,rgba(255,255,255,.05) 0%,rgba(255,255,255,.11) 50%,rgba(255,255,255,.05) 100%);
  background-size:200% 100%;animation:shimmer 1.4s infinite linear}
.sk-hero{display:flex;justify-content:space-between;padding:18px 4px 6px}
.sk-s{width:96px;height:70px;border-radius:12px}
.sk-bar{height:7px;margin:12px 4px 18px}
.sk-l{width:88%}.sk-m{width:62%}
@keyframes shimmer{to{background-position:-200% 0}}

@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
@media(max-width:430px){
  .side-score{font-size:72px;min-height:64px}
  .vs b{font-size:18px}
}
@media(max-width:360px){
  .side-score{font-size:60px;min-height:54px}
  .side-name{font-size:13px}
  .vs{font-size:10px;letter-spacing:1px}
}

/* iOS home-screen app: solid band behind the status bar so nothing scrolls under it
   (iOS blurs content beneath the status bar, which read as a frosted header). */
body::before{content:"";position:fixed;top:0;left:0;right:0;height:env(safe-area-inset-top);
  background:var(--bg);z-index:60;pointer-events:none}

/* =====================================================================
   v3.3 · iOS fixes
   ===================================================================== */
/* 1. header starts clearly below the status-bar / notch zone */
.topbar{padding-top:calc(max(env(safe-area-inset-top), 12px) + 14px)}

/* 2. show the whole stadium: sky, stands and pitch */
.backdrop{height:600px;background-position:center top;
  -webkit-mask-image:linear-gradient(180deg,#000 0%,#000 62%,transparent 100%);
  mask-image:linear-gradient(180deg,#000 0%,#000 62%,transparent 100%)}
.backdrop::after{background:linear-gradient(180deg,rgba(7,10,18,.45) 0%,rgba(7,10,18,.22) 30%,
  rgba(7,10,18,.55) 62%,rgba(7,10,18,.9) 85%,var(--bg) 100%)}
@media(min-width:600px){.backdrop{height:680px}}

/* 3. tab bar docked to the very bottom edge, full width, nothing beneath it */
.tabbar{left:0;right:0;bottom:0;max-width:none;margin:0;border-radius:20px 20px 0 0;
  border:none;border-top:1px solid rgba(255,255,255,.09);
  padding:6px 8px calc(6px + env(safe-area-inset-bottom));
  background:rgba(10,14,25,.94);box-shadow:0 -8px 28px rgba(0,0,0,.5)}
.tabbar .tab{max-width:140px;margin:0 auto}
body{padding-bottom:calc(var(--tabbar-h) + 22px + env(safe-area-inset-bottom))}
/* bottom sheets sit above the tab bar's safe area too */
#sheet .modal-card.sheet{padding-bottom:calc(22px + env(safe-area-inset-bottom))}
