:root {
  --bg:#080b10;
  --surface:#10151c;
  --surface2:#161d27;
  --surface3:#1d2632;
  --text:#f5f7fa;
  --muted:#98a4b3;
  --line:#273241;
  --accent:#b8ff5a;
  --accentText:#0b0f14;
  --warn:#ffd66b;
  --danger:#ff8d8d;
  --radius:18px;
  --shadow:0 12px 36px rgba(0,0,0,.26);
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",sans-serif}
body{padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}
button,input,select{font:inherit}
button{color:inherit}
.app-shell{min-height:100dvh;max-width:560px;margin:0 auto;background:var(--bg);position:relative}
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:18px 18px 12px;background:linear-gradient(180deg,rgba(8,11,16,.98),rgba(8,11,16,.91),rgba(8,11,16,0));backdrop-filter:blur(10px)}
.eyebrow{font-size:10px;letter-spacing:.12em;color:var(--muted);font-weight:800}
h1{font-size:28px;line-height:1.05;margin:3px 0 0;letter-spacing:-.03em}
.icon-btn{border:1px solid var(--line);background:var(--surface2);width:42px;height:42px;border-radius:14px;font-size:22px}
.content{padding:6px 16px 104px}
.stack{display:flex;flex-direction:column;gap:12px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}
.card.compact{padding:13px}
.hero{background:linear-gradient(145deg,#18231b,#10151c 58%);border-color:#334227}
.hero-row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.score{font-size:48px;font-weight:850;letter-spacing:-.05em;line-height:.95}
.score small{font-size:17px;color:var(--muted);letter-spacing:0}
.label{font-size:12px;color:var(--muted);font-weight:700}
.subtle{color:var(--muted);font-size:13px;line-height:1.4}
.title-row{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
.title-row h2,.card h2{font-size:17px;margin:0;letter-spacing:-.01em}
.pill{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:var(--surface2);border-radius:999px;padding:6px 9px;font-size:11px;font-weight:750;white-space:nowrap}
.pill.accent{background:var(--accent);color:var(--accentText);border-color:var(--accent)}
.pill.warn{border-color:#5a4b24;color:var(--warn)}
.pill.danger{border-color:#5b3033;color:var(--danger)}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}
.kpi{background:rgba(255,255,255,.035);border:1px solid var(--line);border-radius:14px;padding:10px}
.kpi strong{display:block;font-size:18px}.kpi span{font-size:10px;color:var(--muted);font-weight:700}
.list{display:flex;flex-direction:column;gap:8px}
.row{display:flex;align-items:center;gap:10px;background:var(--surface2);border:1px solid var(--line);border-radius:15px;padding:11px 12px;min-width:0}
.row.clickable{cursor:pointer}
.row-main{min-width:0;flex:1}
.row-title{font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-sub{font-size:11px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-value{text-align:right;white-space:nowrap}.row-value strong{display:block;font-size:16px}.row-value small{color:var(--muted);font-size:10px}
.badge{min-width:34px;height:34px;border-radius:11px;background:var(--surface3);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:850}
.badge.pos-GKP{outline:1px solid #52606f}.badge.pos-DEF{outline:1px solid #636f7e}.badge.pos-MID{outline:1px solid #75808d}.badge.pos-FWD{outline:1px solid #8a939d}
.btn{border:0;border-radius:14px;padding:11px 14px;font-weight:800;background:var(--accent);color:var(--accentText)}
.btn.secondary{background:var(--surface3);color:var(--text);border:1px solid var(--line)}
.btn.full{width:100%}
.btn-row{display:flex;gap:8px}.btn-row>*{flex:1}
.search{width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);padding:13px 14px;border-radius:14px;outline:none}
.filters{display:flex;gap:7px;overflow-x:auto;padding:2px 0 3px;scrollbar-width:none}.filters::-webkit-scrollbar{display:none}
.filter-btn{border:1px solid var(--line);background:var(--surface2);border-radius:999px;padding:8px 12px;font-size:12px;white-space:nowrap;font-weight:750}
.filter-btn.active{background:var(--text);color:var(--bg)}
.section-label{font-size:11px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.08em;margin:8px 2px 2px}
.bottom-nav{position:fixed;z-index:20;bottom:0;left:50%;transform:translateX(-50%);width:min(560px,100%);display:grid;grid-template-columns:repeat(5,1fr);padding:8px 9px calc(7px + env(safe-area-inset-bottom));background:rgba(12,16,22,.96);border-top:1px solid var(--line);backdrop-filter:blur(18px)}
.nav-item{border:0;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px;padding:5px 2px}.nav-item span{font-size:15px;font-weight:850}.nav-item small{font-size:9px;font-weight:750}.nav-item.active{color:var(--text)}
.module-grid{display:grid;grid-template-columns:1fr;gap:8px}
.module{display:flex;gap:10px;align-items:flex-start;background:var(--surface2);border:1px solid var(--line);border-radius:14px;padding:12px}.module-num{min-width:27px;height:27px;border-radius:9px;background:var(--surface3);display:flex;align-items:center;justify-content:center;font-weight:850;font-size:11px}.module h3{font-size:13px;margin:0 0 3px}.module p{margin:0;color:var(--muted);font-size:11px;line-height:1.35}
.module-status{font-size:10px;margin-top:5px;font-weight:800}
.status-connected{color:var(--accent)}.status-partial{color:var(--warn)}.status-planned{color:var(--muted)}
.sheet{position:fixed;inset:0;z-index:50}.sheet.hidden{display:none}.sheet-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.62)}.sheet-panel{position:absolute;left:50%;transform:translateX(-50%);bottom:0;width:min(560px,100%);max-height:88dvh;overflow:auto;background:var(--surface);border:1px solid var(--line);border-bottom:0;border-radius:24px 24px 0 0;padding:8px 16px calc(20px + env(safe-area-inset-bottom));box-shadow:0 -18px 50px rgba(0,0,0,.45)}.sheet-handle{width:44px;height:5px;border-radius:99px;background:#4b5664;margin:2px auto 14px}
.detail-title{font-size:25px;letter-spacing:-.03em;margin:0}.detail-meta{color:var(--muted);margin:3px 0 14px;font-size:12px}.metric-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.metric{background:var(--surface2);border:1px solid var(--line);border-radius:14px;padding:11px}.metric strong{display:block;font-size:17px}.metric span{font-size:10px;color:var(--muted)}
.notice{font-size:12px;line-height:1.45;padding:12px;border:1px dashed #495564;border-radius:14px;color:#c8d0da;background:rgba(255,255,255,.025)}
.loading{padding:30px;text-align:center;color:var(--muted)}
.empty{text-align:center;padding:28px 14px;color:var(--muted)}
.progress{height:8px;border-radius:999px;background:var(--surface3);overflow:hidden}.progress>span{display:block;height:100%;background:var(--accent);border-radius:inherit}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:8px}
select{width:100%;background:var(--surface2);color:var(--text);border:1px solid var(--line);border-radius:12px;padding:10px}
@media (min-width:540px){.content{padding-left:22px;padding-right:22px}.module-grid{grid-template-columns:1fr 1fr}}
@media (prefers-reduced-motion:no-preference){.card,.row,.btn{transition:transform .15s ease}.clickable:active,.btn:active{transform:scale(.985)}}
/* v2 mobile/accessibility refinements */
.filters{display:flex;flex-wrap:wrap;gap:7px;overflow:visible}
.small-score{font-size:38px}.mini-rating{font-weight:850;font-size:24px}.top-gap{margin-top:10px}
.decision{background:var(--surface2);border:1px solid var(--line);border-radius:14px;padding:12px;font-size:13px;line-height:1.4}.decision span{color:var(--muted);font-size:11px}
.setting-grid{display:grid;grid-template-columns:1fr;gap:10px}.setting-grid label{font-size:11px;color:var(--muted);font-weight:750}.setting-grid input,.setting-grid select{display:block;width:100%;margin-top:5px;background:var(--surface2);border:1px solid var(--line);border-radius:12px;padding:11px;color:var(--text)}
.transfer-card{display:grid;grid-template-columns:32px 1fr;gap:10px;background:var(--surface2);border:1px solid var(--line);border-radius:14px;padding:12px;font-size:12px}.transfer-rank{width:28px;height:28px;border-radius:9px;background:var(--surface3);display:flex;align-items:center;justify-content:center;font-weight:850}.transfer-card small{display:block;color:var(--muted);margin-top:4px;line-height:1.35}
.breakdown{display:grid;grid-template-columns:1fr 1fr;gap:7px}.breakdown>div{background:var(--surface2);border:1px solid var(--line);border-radius:12px;padding:10px;font-size:11px}.breakdown b{float:right}
.module-status{color:var(--text)}
@media (min-width:420px){.setting-grid{grid-template-columns:repeat(3,1fr)}}

/* v4 decision lab */
.scenario-box{display:flex;flex-direction:column;gap:12px;background:var(--surface2);border:1px solid var(--line);border-radius:14px;padding:12px}.scenario-box label{font-size:12px;color:var(--muted);font-weight:700}.scenario-box input[type=range]{width:100%;margin-top:8px;accent-color:var(--text)}.fatal{margin:18px}.top-gap{margin-top:10px}

/* v5 — mobile squad pitch */
.team-page{gap:14px}
.team-summary-card,.pitch-card,.bench-card-wrap{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:15px;box-shadow:var(--shadow)}
.team-summary-card{background:linear-gradient(145deg,#151b24,#0f141b 62%)}
.team-summary-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.team-count{font-size:31px;font-weight:900;letter-spacing:-.04em;margin-top:2px}.team-count span{font-size:12px;color:var(--muted);font-weight:700;letter-spacing:0;margin-left:4px}
.team-rating-box{min-width:82px;text-align:center;background:var(--surface2);border:1px solid var(--line);border-radius:15px;padding:9px 10px}.team-rating-box strong{display:block;font-size:25px}.team-rating-box span{display:block;font-size:9px;color:var(--muted);font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.finance-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}.finance-item{background:rgba(255,255,255,.035);border:1px solid var(--line);border-radius:13px;padding:10px}.finance-item span{display:block;color:var(--muted);font-size:10px;font-weight:750}.finance-item strong{display:block;font-size:17px;margin-top:2px}
.team-settings-inline{display:grid;grid-template-columns:1.25fr .75fr 1fr;gap:7px;margin-top:9px}.team-settings-inline label{font-size:9px;color:var(--muted);font-weight:800;text-transform:uppercase}.team-settings-inline input,.team-settings-inline select{width:100%;height:38px;margin-top:4px;border:1px solid var(--line);background:var(--surface2);color:var(--text);border-radius:10px;padding:0 8px;font-size:12px}.team-issue{margin-top:10px}
.pitch-card{padding:0;overflow:hidden}.pitch-card-head{display:flex;align-items:center;justify-content:space-between;padding:14px 15px 12px;gap:10px}.pitch-card-head h2{font-size:21px;margin:2px 0 0}.pitch-xpts{text-align:right}.pitch-xpts strong{display:block;font-size:22px}.pitch-xpts span{display:block;font-size:9px;color:var(--muted);font-weight:800}
.football-pitch{position:relative;min-height:520px;background:linear-gradient(180deg,#17302b,#122722);border-top:1px solid #375047;border-bottom:1px solid #375047;overflow:hidden}.pitch-markings{position:absolute;inset:12px;border:1px solid rgba(255,255,255,.48);pointer-events:none}.halfway-line{position:absolute;left:0;right:0;top:50%;border-top:1px solid rgba(255,255,255,.42)}.centre-circle{position:absolute;width:84px;height:84px;border:1px solid rgba(255,255,255,.42);border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%)}.box{position:absolute;width:48%;height:72px;border:1px solid rgba(255,255,255,.42);left:26%}.top-box{top:-1px;border-top:0}.bottom-box{bottom:-1px;border-bottom:0}
.pitch-content{position:relative;z-index:2;min-height:520px;padding:20px 8px 16px;display:flex;flex-direction:column;justify-content:space-between}.pitch-line{display:flex;flex-direction:column;gap:4px}.pitch-line-label{text-align:center;color:rgba(255,255,255,.62);font-size:8px;font-weight:900;letter-spacing:.16em}.pitch-line-players{display:grid;grid-template-columns:repeat(var(--pitch-count),minmax(0,1fr));gap:3px;align-items:start}
.pitch-player{border:0;background:transparent;padding:0 1px;color:#fff;min-width:0;text-align:center}.player-shirt{position:relative;width:39px;height:35px;margin:0 auto 4px;background:#f3f5f7;color:#111820;border:2px solid rgba(11,15,20,.8);border-radius:8px 8px 11px 11px;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:950;box-shadow:0 3px 9px rgba(0,0,0,.28)}.player-shirt:before,.player-shirt:after{content:'';position:absolute;top:3px;width:8px;height:13px;background:#f3f5f7;border:2px solid rgba(11,15,20,.8)}.player-shirt:before{left:-8px;border-right:0;border-radius:6px 0 0 5px}.player-shirt:after{right:-8px;border-left:0;border-radius:0 6px 5px 0}.captain-badge{position:absolute;right:-10px;top:-8px;z-index:3;min-width:22px;height:22px;padding:0 4px;border-radius:999px;background:#0b0f14;color:#fff;border:2px solid #fff;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:950}.pitch-name{font-size:10px;line-height:1.08;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 2px rgba(0,0,0,.8)}.pitch-meta{font-size:8px;color:rgba(255,255,255,.82);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px;text-shadow:0 1px 2px rgba(0,0,0,.8)}.pitch-empty{position:absolute;left:24px;right:24px;top:50%;transform:translateY(-50%);text-align:center;background:rgba(5,9,12,.72);border:1px solid rgba(255,255,255,.25);border-radius:14px;padding:15px;font-size:12px;line-height:1.45}
.pitch-legend{display:flex;flex-wrap:wrap;gap:7px 12px;padding:10px 13px 12px;font-size:9px;color:var(--muted)}.pitch-legend span{white-space:nowrap}.pitch-legend b{color:var(--text)}
.bench-card-wrap .title-row{margin-bottom:9px}.bench-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.bench-player{position:relative;min-width:0;border:1px solid var(--line);background:var(--surface2);color:var(--text);border-radius:13px;padding:10px 9px 9px;text-align:left}.bench-player.empty-slot{opacity:.6}.bench-order{position:absolute;right:8px;top:7px;width:20px;height:20px;border-radius:7px;background:var(--surface3);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:900}.bench-name{font-size:12px;font-weight:850;padding-right:22px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bench-meta{font-size:9px;color:var(--muted);margin-top:3px}.team-quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.team-quick-grid>div{background:var(--surface2);border:1px solid var(--line);border-radius:12px;padding:10px}.team-quick-grid span{display:block;color:var(--muted);font-size:9px;font-weight:800;text-transform:uppercase}.team-quick-grid strong{display:block;font-size:13px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (max-width:370px){.football-pitch,.pitch-content{min-height:500px}.player-shirt{width:34px;height:31px}.player-shirt:before,.player-shirt:after{width:7px;height:11px}.pitch-name{font-size:9px}.pitch-meta{font-size:7px}.team-settings-inline{grid-template-columns:1fr 1fr}.team-settings-inline label:first-child{grid-column:1/-1}}


/* v6 overrides */
.hero-elite .pill,.summary-elite .pill{background:#244428}.hero-strong .pill,.summary-strong .pill{background:#244046}.hero-good .pill,.summary-good .pill{background:#273b5d}.hero-ok .pill,.summary-ok .pill{background:#41361f}.hero-build .pill,.summary-build .pill{background:#2b2f36}
.team-summary-sub{margin-top:6px;color:var(--muted);font-size:12px;line-height:1.35;max-width:220px}
.rating-elite,.rating-strong,.rating-good,.rating-ok,.rating-build{border-width:1px}
.rating-elite{background:linear-gradient(180deg,rgba(75,122,72,.24),rgba(255,255,255,.04))}
.rating-strong{background:linear-gradient(180deg,rgba(56,116,124,.24),rgba(255,255,255,.04))}
.rating-good{background:linear-gradient(180deg,rgba(70,97,156,.24),rgba(255,255,255,.04))}
.rating-ok{background:linear-gradient(180deg,rgba(140,115,57,.20),rgba(255,255,255,.04))}
.rating-build{background:linear-gradient(180deg,rgba(90,90,90,.18),rgba(255,255,255,.04))}
.team-rating-box em{display:block;font-style:normal;font-size:10px;color:var(--muted);font-weight:800;margin-top:2px}
.finance-grid-v6 .finance-item{position:relative;overflow:hidden}
.finance-grid-v6 .finance-item:before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:12px 0 0 12px}
.finance-item.tone-budget:before{background:#5c87ff}.finance-item.tone-spent:before{background:#9a6bff}.finance-item.tone-bank:before{background:#37c38f}.finance-item.tone-ft:before{background:#f0c85b}
.v6-settings{grid-template-columns:1fr 1fr 1fr}.mode-pill{margin-top:4px;height:38px;border-radius:10px;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,rgba(74,130,96,.22),rgba(255,255,255,.03));font-size:12px;font-weight:850}.mode-pill.large{height:44px}
.v6-pitch-card .pitch-card-head{padding-bottom:10px}.compact-pitch{min-height:440px;background:linear-gradient(180deg,#1f493d,#17362f 62%,#132b25)}.compact-content{min-height:440px;padding:18px 9px 14px}
.pitch-line{gap:2px}.pitch-line-label{font-size:9px;color:rgba(255,255,255,.70)}.pitch-line-players{gap:5px}
.pitch-player{display:flex;flex-direction:column;align-items:center;gap:2px}.pitch-player .player-shirt{background:#eef1f4;color:#0d1620}.pitch-player.pos-gkp .player-shirt{background:#ffd56b}.pitch-player.pos-def .player-shirt{background:#7dd8bd}.pitch-player.pos-mid .player-shirt{background:#86a9ff}.pitch-player.pos-fwd .player-shirt{background:#ff9db3}
.player-shirt.good{box-shadow:0 0 0 2px rgba(84,214,129,.25),0 3px 9px rgba(0,0,0,.28)}.player-shirt.warn{box-shadow:0 0 0 2px rgba(242,194,84,.28),0 3px 9px rgba(0,0,0,.28)}.player-shirt.risk{box-shadow:0 0 0 2px rgba(239,111,111,.3),0 3px 9px rgba(0,0,0,.28)}
.pitch-status{margin-top:1px;display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:2px 6px;font-size:8px;font-weight:900;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12)}
.status-good{background:rgba(63,179,124,.16);border-color:rgba(63,179,124,.34);color:#c8ffe1}.status-warn{background:rgba(212,169,58,.16);border-color:rgba(212,169,58,.34);color:#ffe9a4}.status-risk{background:rgba(203,82,82,.16);border-color:rgba(203,82,82,.34);color:#ffc9c9}.status-ok{background:rgba(255,255,255,.09);color:#eef3f8}
.pitch-meta{font-size:8px;max-width:100%;overflow:hidden;text-overflow:ellipsis}.pitch-empty{left:32px;right:32px;padding:13px}
.bench-player{background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.025))}.bench-player.pos-gkp{box-shadow:inset 0 0 0 1px rgba(255,213,107,.26)}.bench-player.pos-def{box-shadow:inset 0 0 0 1px rgba(125,216,189,.20)}.bench-player.pos-mid{box-shadow:inset 0 0 0 1px rgba(134,169,255,.20)}.bench-player.pos-fwd{box-shadow:inset 0 0 0 1px rgba(255,157,179,.18)}
.notice.team-issue{border-style:dashed}
@media (max-width:370px){.v6-settings{grid-template-columns:1fr 1fr}.v6-settings label:last-child{grid-column:1/-1}.compact-pitch,.compact-content{min-height:410px}.pitch-status{padding:2px 5px;font-size:7px}}


/* v7 interaction styles */
.swap-badge{position:absolute;left:-10px;top:-8px;z-index:3;min-width:22px;height:22px;padding:0 4px;border-radius:999px;background:#17202b;color:#fff;border:2px solid rgba(255,255,255,.9);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:950}
.player-actions{display:flex;flex-direction:column;gap:8px;margin-top:12px}.swap-primary{background:linear-gradient(180deg,#87ef4f,#68d83c);color:#091106;border-color:#a3ff75}.swap-primary:hover{filter:brightness(1.03)}
.swap-head{margin-bottom:10px}.text-btn{border:0;background:transparent;color:var(--muted);font-weight:800;padding:0 0 10px}.swap-note{font-size:11px;line-height:1.4;color:var(--muted);margin:8px 0 10px}.swap-list{display:flex;flex-direction:column;gap:8px}.swap-row{width:100%;display:grid;grid-template-columns:1fr auto;gap:4px 10px;text-align:left;background:var(--surface2);border:1px solid var(--line);border-radius:14px;padding:11px;color:var(--text)}.swap-row:active{transform:scale(.99)}.swap-main strong{display:block;font-size:14px}.swap-main span{display:block;font-size:10px;color:var(--muted);margin-top:3px}.swap-gain{text-align:right}.swap-gain strong{display:block;font-size:15px}.swap-gain span{display:block;font-size:9px;color:var(--muted)}.swap-gain.positive strong{color:#b8ff91}.swap-gain.negative strong{color:#ffb2b2}.swap-foot{grid-column:1/-1;font-size:10px;color:var(--muted);padding-top:3px;border-top:1px solid rgba(255,255,255,.06)}
#playerResults>.card{margin:0}
