
/* TSO SIMULATIONS · Independent 2D football replay theme · 2026 */
.tso-sim-page{--sim-bg:#091116;--sim-line:#243f3d;--sim-ink:#f1f7f6;--sim-cool:#a8c6c7;--sim-amber:#ff9552;--sim-green:#62ddad;color:var(--sim-ink);width:100%;padding:24px 24px 48px;min-width:0;box-sizing:border-box}
.tso-sim-page *{box-sizing:border-box}
.tso-sim-hero{display:flex;align-items:center;justify-content:space-between;gap:22px;padding:8px 0 22px}
.tso-sim-kicker{font-size:11px;font-weight:900;letter-spacing:.14em;color:#ff976b;text-transform:uppercase}
.tso-sim-hero h1{font-size:clamp(28px,3vw,44px);line-height:1.1;margin:10px 0;color:#fff}
.tso-sim-hero h1 span{font-weight:600;color:#8fb2b6}
.tso-sim-hero p{margin:0;max-width:770px;color:#a7c2cc;line-height:1.55;font-size:14px}
.tso-sim-hero-pill{flex-shrink:0;border:1px solid #28493d;padding:11px 19px;border-radius:12px;background:#11221c;display:flex;flex-direction:column;gap:4px;align-items:end}
.tso-sim-hero-pill b{font-size:12px;color:#8de7b5;letter-spacing:.08em}
.tso-sim-hero-pill small{font-size:11px;color:#b7c6c8}
.tso-sim-disclosure{background:#121d1c;border:1px solid #36504b;border-left:3px solid #e5a457;border-radius:10px;font-size:12px;line-height:1.6;color:#b3c9c5;padding:12px 16px;margin-bottom:20px}
.tso-sim-disclosure strong{color:#ffd3a1;margin-right:10px;font-size:11px;letter-spacing:.05em}
.tso-sim-loading{border:1px solid #29403b;border-radius:12px;padding:30px;text-align:center;color:#b1d0d4;display:flex;justify-content:center;align-items:center;gap:12px}
.tso-sim-loading[hidden]{display:none}
.tso-sim-layout{display:grid;grid-template-columns:235px minmax(0,1fr);gap:18px;align-items:start}
.tso-sim-matchups{background:#0d171b;border:1px solid #2c4040;border-radius:14px;min-width:0;overflow:hidden}
.tso-sim-matchups-head{display:flex;align-items:center;justify-content:space-between;padding:15px 13px 12px;font-weight:900;letter-spacing:.09em;font-size:10px;color:#a0f0c0;border-bottom:1px solid #273f3c}
.tso-sim-matchups-head b{color:#f7a472}
.tso-sim-game-list{display:flex;flex-direction:column;gap:4px;padding:9px;max-height:980px;overflow-y:auto}
.tso-sim-game-choice{appearance:none;cursor:pointer;color:#cadcdb;font-family:inherit;text-align:left;width:100%;border:1px solid transparent;border-radius:9px;background:transparent;padding:12px 10px;display:flex;flex-direction:column;gap:5px;transition:background .15s,border-color .15s}
.tso-sim-game-choice:hover{background:#1b2b29;border-color:#375750}
.tso-sim-game-choice.is-active{background:#1b2b26;border-color:#ff9253;box-shadow:inset 3px 0 #ff9253}
.tso-sim-game-short{display:flex;gap:9px;align-items:center;font-size:17px;line-height:1.1}
.tso-sim-game-short b{font-weight:950}
.tso-sim-game-short em{font-size:11px;color:#88a8ad;font-style:normal}
.tso-sim-game-date{font-size:11px;color:#9caeb3}
.tso-sim-game-result{color:#70cdb1;font-size:10px;font-weight:700;letter-spacing:.01em}
.tso-sim-main{min-width:0}
.tso-sim-game-title{display:flex;align-items:start;justify-content:space-between;gap:15px;padding:5px 4px 16px}
.tso-sim-game-title small{font-size:10px;letter-spacing:.11em;font-weight:900;color:#ff9d6b}
.tso-sim-game-title h2{margin:6px 0 5px;font-size:clamp(23px,3vw,33px);font-weight:950;color:#fff}
.tso-sim-game-title h2 span{color:#8facad;font-size:.65em}
.tso-sim-game-title p{margin:0;color:#9eb2b6;font-size:12px}
.tso-sim-live-badge{font-size:9px;letter-spacing:.07em;white-space:nowrap;border-radius:6px;border:1px solid #416252;background:#163227;color:#91f1b6;padding:8px 11px}
.tso-sim-outlook{background:#101a1e;border:1px solid #2e4345;border-radius:13px 13px 0 0;padding:20px 18px;display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:center}
.tso-sim-outlook-team{display:flex;flex-direction:column;gap:5px;min-width:0}
.tso-sim-outlook-team:last-child{text-align:right}
.tso-sim-outlook-team small{font-size:12px;font-weight:850;color:#c9e0e0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tso-sim-outlook-team strong{font-size:clamp(28px,3.7vw,48px);letter-spacing:-.05em;color:#f3faf9;font-variant-numeric:tabular-nums;line-height:1}
.tso-sim-outlook-team span{font-size:9px;letter-spacing:.05em;color:#86acaa}
.tso-sim-outlook-bridge{text-align:center;padding:0 12px}
.tso-sim-bridge-label{font-size:10px;letter-spacing:.1em;color:#87dcae;font-weight:900}
.tso-sim-outlook-bridge b{display:block;font-size:16px;letter-spacing:.03em;color:#ffc090;margin:4px 0}
.tso-sim-outlook-bridge small{font-size:10px;color:#94aeb5}
.tso-sim-prob-row{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #2e4345;border-top:0;border-radius:0 0 13px 13px;gap:0;overflow:hidden;margin-bottom:18px;background:#101b1c}
.tso-sim-prob-row>div{padding:13px 18px;border-right:1px solid #233c3a;display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;min-width:0}
.tso-sim-prob-row>div:last-child{border-right:0}
.tso-sim-prob-row span{font-size:10px;color:#a8c5c5;font-weight:900;letter-spacing:.04em}
.tso-sim-prob-row b{font-size:18px;color:#fff}
.tso-sim-prob-row i{grid-column:span 2;background:#1d3730;border-radius:100px;height:4px;overflow:hidden;display:block;position:relative}
.tso-sim-prob-row i:before{content:"";display:block;height:100%;width:var(--width);background:linear-gradient(90deg,#41b28a,#baf9ae);border-radius:100px}
.tso-sim-replay{background:#0c171b;border:1px solid #2a4143;border-radius:14px;overflow:hidden;padding:13px}
.tso-sim-scoreboard{max-width:640px;background:#101d29;border:1px solid #2e5860;border-radius:9px;display:flex;justify-content:space-between;align-items:stretch;min-height:68px;margin:0 auto 13px;box-shadow:0 8px 28px #0003}
.tso-sim-scoreteam{display:flex;align-items:center;gap:16px;padding:8px 16px;font-weight:900}
.tso-sim-scoreteam b{color:#d6f3f3;font-size:13px}
.tso-sim-scoreteam strong{font-size:32px;font-variant-numeric:tabular-nums;color:#fff}
.tso-sim-scoreclock{text-align:center;padding:8px 20px;background:#14251e;border-left:1px solid #2b4f3d;border-right:1px solid #2b4f3d;display:flex;flex-direction:column;justify-content:center}
.tso-sim-scoreclock>b{font-size:10px;color:#8ae2b6}
.tso-sim-scoreclock strong{font-size:21px;letter-spacing:.03em}
.tso-sim-scoreclock small{font-size:9px;color:#d1bd94;white-space:nowrap}
.tso-sim-stadium{display:grid;grid-template-columns:minmax(116px,18%) minmax(0,1fr) minmax(116px,18%);gap:9px}
.tso-sim-players{border:1px solid #243e3b;border-radius:10px;background:#111f20;padding:13px 10px;display:flex;flex-direction:column;gap:11px;min-width:0;min-height:220px}
.tso-sim-player{display:flex;align-items:center;gap:8px;min-width:0}
.tso-sim-player-dot{border-radius:6px;background:#193a30;border:1px solid #427859;color:#aaf1b7;padding:5px 4px;min-width:31px;text-align:center;font-weight:900;font-size:10px}
.tso-sim-player>span:last-child{min-width:0}
.tso-sim-player b{display:block;font-size:11px;color:#e1f5f1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tso-sim-player small{display:block;font-size:9px;color:#81b8b3;margin-top:3px}
.tso-sim-side-name{margin-top:auto;border-top:1px solid #2a4644;padding-top:10px;font-size:9px;letter-spacing:.08em;color:#ffae79;font-weight:900}
.tso-sim-field{position:relative;min-width:0;overflow:hidden;border:1px solid #2d5e4d;border-radius:10px;background:#061b17;aspect-ratio:2/1}
.tso-sim-field canvas{width:100%;height:100%;display:block;object-fit:fill}
.tso-sim-field-badge{position:absolute;left:8px;top:7px;pointer-events:none;background:#081717c7;border:1px solid #476958aa;color:#e2d4ad;padding:5px 7px;font-size:8px;letter-spacing:.04em;border-radius:4px}
.tso-sim-commentary{display:flex;align-items:center;gap:12px;min-height:57px;background:#132329;border:1px solid #37544b;border-radius:9px;margin:12px 0;padding:12px 15px;color:#e3edec;font-size:13px}
.tso-sim-commentary b{font-weight:750}
.tso-sim-play-light{height:9px;width:9px;flex-shrink:0;background:#ff9958;border-radius:50%;box-shadow:0 0 12px #fc994ecc}
.tso-sim-controls{display:flex;align-items:center;flex-wrap:wrap;gap:10px;border-top:1px solid #28423d;padding-top:12px}
.tso-sim-controls button{border:1px solid #36554e;border-radius:8px;background:#142723;color:#d5ebe2;cursor:pointer;padding:11px 17px;font-size:11px;font-family:inherit;font-weight:900;letter-spacing:.03em}
.tso-sim-controls button:hover{filter:brightness(1.22)}
.tso-sim-controls .tso-sim-control-primary{background:#ff8449;color:#161614;border-color:#ff9966;min-width:90px}
.tso-sim-seeker{display:flex;align-items:center;gap:9px;min-width:180px;flex:1;color:#a6c4bf;font-size:10px;font-weight:800}
.tso-sim-seeker input{width:100%;accent-color:#ff975e}
.tso-sim-seeker small{min-width:55px;text-align:right}
.tso-sim-speed{display:flex;gap:7px;align-items:center;font-size:10px;font-weight:900;color:#9ebeb8}
.tso-sim-speed select{background:#142b26;color:#e9f9ed;border:1px solid #355951;border-radius:7px;padding:9px;font-weight:800}
.tso-sim-disclaimer{margin-top:12px;font-size:11px;line-height:1.5;color:#9eb4b8}
.tso-sim-disclaimer b{color:#f9c19a}
.tso-sim-error,.tso-sim-empty{background:#1c211e;border:1px solid #745244;color:#ffe1d2;border-radius:12px;padding:22px;font-size:13px}
.tso-sim-error b{font-size:17px}
.tso-sim-error button{background:#ff905b;border:0;border-radius:8px;padding:9px 16px;color:#162020;font-weight:900;cursor:pointer}
@media(max-width:1280px){.tso-sim-layout{grid-template-columns:195px minmax(0,1fr)}.tso-sim-stadium{grid-template-columns:minmax(90px,17%) minmax(0,1fr) minmax(90px,17%)}.tso-sim-players{padding:9px 6px}.tso-sim-player{gap:4px}.tso-sim-player-dot{min-width:24px;font-size:8px}.tso-sim-player b{font-size:10px}.tso-sim-player small{font-size:8px}}
@media(max-width:1100px){.tso-sim-layout{display:block}.tso-sim-matchups{margin-bottom:17px}.tso-sim-game-list{display:flex;flex-direction:row;overflow-x:auto;max-height:none;padding-bottom:13px}.tso-sim-game-choice{min-width:168px;max-width:180px}.tso-sim-matchups-head{padding:9px 15px}}
@media(max-width:700px){.tso-sim-page{padding:14px 10px 35px}.tso-sim-hero{align-items:start}.tso-sim-hero-pill{display:none}.tso-sim-game-title{display:block}.tso-sim-live-badge{display:inline-flex;margin-top:10px}.tso-sim-outlook{grid-template-columns:1fr 1fr}.tso-sim-outlook-bridge{grid-column:span 2;grid-row:2;border-top:1px solid #2e4442;padding:11px 0 0}.tso-sim-prob-row{display:block}.tso-sim-prob-row>div{padding:8px 13px;border-right:0;border-bottom:1px solid #2e4442}.tso-sim-stadium{grid-template-columns:1fr 1fr}.tso-sim-field{grid-column:span 2;grid-row:1}.tso-sim-players{min-height:118px}.tso-sim-scoreteam{padding:5px 7px;gap:6px}.tso-sim-scoreteam b{font-size:11px}.tso-sim-scoreteam strong{font-size:24px}.tso-sim-scoreclock{padding:6px 7px}.tso-sim-scoreclock small{font-size:7px}.tso-sim-scoreclock strong{font-size:17px}.tso-sim-players{gap:5px}.tso-sim-side-name{padding-top:4px}.tso-sim-hero h1{font-size:27px}.tso-sim-disclosure{font-size:11px}}

.tso-sim-nav-icon{flex-shrink:0;display:grid;place-items:center;width:38px;height:38px;border-radius:9px;border:1px solid #3b6858;background:linear-gradient(145deg,#153c31,#112128);box-shadow:inset 0 1px 10px #68e5ac24;color:#90efc2;font-size:25px;font-weight:700}
.tso-side-item--simulations.is-active .tso-sim-nav-icon{background:#31482a;color:#ffc090;border-color:#ff9961}
.tso-sim-quarter-overlay[hidden],.tso-sim-final[hidden]{display:none!important}
.tso-sim-quarter-overlay{position:absolute;inset:12% 15%;background:#0c1a20ed;display:flex;align-items:center;justify-content:center;flex-direction:column;border:1px solid #446b5e;border-radius:13px;box-shadow:0 12px 48px #0009;z-index:2;animation:tso-sim-slide .3s ease-out}
.tso-sim-quarter-overlay span{font-size:11px;color:#7ce0b2;font-weight:900;letter-spacing:.15em}
.tso-sim-quarter-overlay strong{font-size:clamp(22px,3vw,45px);font-weight:950;color:#fff;margin:12px 0}
.tso-sim-quarter-overlay small{font-size:12px;color:#ffb687;font-weight:850;letter-spacing:.1em}
@keyframes tso-sim-slide{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.tso-sim-final{margin:13px 0;border:1px solid #40745d;border-radius:12px;background:#11251f;padding:16px}
.tso-sim-final-heading{border-bottom:1px solid #416450;padding-bottom:12px}
.tso-sim-final-heading span{font-size:9px;color:#9ee1bc;letter-spacing:.09em;font-weight:900}
.tso-sim-final-heading h3{font-size:clamp(19px,2vw,28px);margin:6px 0 2px;color:#fff}
.tso-sim-final-heading small{color:#ffc19b;font-size:11px}
.tso-sim-final-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:15px}
.tso-sim-final-grid article{min-width:0}
.tso-sim-final-grid h4{font-size:12px;color:#f6d8a7;margin:0 0 7px}
.tso-sim-final-grid p{font-size:11px;color:#b7d7d1;line-height:1.6;margin:0 0 9px}
.tso-sim-final-grid h5{font-size:9px;letter-spacing:.08em;color:#91e3bd;margin:8px 0}
.tso-sim-final-grid article>div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid #2f4940;padding:6px 0;font-size:11px;color:#d1deda}
.tso-sim-final-grid article>div>b{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tso-sim-final-grid article>div>span{color:#8cc3b7;white-space:nowrap}
@media(max-width:600px){.tso-sim-final-grid{grid-template-columns:1fr}}

.tso-sim-dvp{margin:0 0 18px;background:#0e1a1b;border:1px solid #2c4742;padding:13px;border-radius:12px}
.tso-sim-dvp-kicker{color:#ffb27b;font-size:10px;font-weight:900;letter-spacing:.09em;margin-bottom:11px}
.tso-sim-dvp-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.tso-sim-dvp-grid article{min-width:0;background:#14221f;border:1px solid #365a46;border-radius:9px;padding:13px}
.tso-sim-dvp-grid h3{font-size:13px;color:#f3e3c5;margin:0 0 4px;font-weight:900}
.tso-sim-dvp-grid h3 span{color:#76dcae;font-size:10px}
.tso-sim-dvp-grid p{font-size:10px;color:#91bcb0;margin:0 0 11px;line-height:1.5}
.tso-sim-dvp-positions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
.tso-sim-dvp-positions>div{display:flex;flex-direction:column;gap:4px;border:1px solid #2d493f;background:#0d191a;border-radius:6px;padding:10px;min-width:0}
.tso-sim-dvp-positions small{font-size:10px;color:#afc9c5}
.tso-sim-dvp-positions strong{font-size:23px;color:#ffb77e;font-weight:900;font-variant-numeric:tabular-nums}
@media(max-width:640px){.tso-sim-dvp-grid{grid-template-columns:1fr}}

/* Dynamic ball-owner ticker and named, two-line football commentary. */
.tso-sim-play-copy{display:flex;flex-direction:column;gap:5px;min-width:0;flex:1}
.tso-sim-play-copy>small{font-size:10px;line-height:1.4;letter-spacing:.05em;text-transform:uppercase;font-weight:950;color:#fbc68a}
.tso-sim-play-copy>b{font-size:13px;line-height:1.5;color:#e8f5ef;font-weight:750;word-break:normal}
@media(max-width:700px){.tso-sim-play-copy>small{font-size:9px}.tso-sim-play-copy>b{font-size:12px}}

/* 2026 roster validation state — never imply old model lines are current. */
.tso-sim-roster-pending,.tso-sim-roster-warning{background:#16221e;border:1px solid #836040;border-radius:12px;padding:17px 18px;color:#e2e9e4;font-size:13px;line-height:1.6}
.tso-sim-roster-pending{min-height:96px;display:flex;align-items:center;gap:10px}
.tso-sim-roster-warning{margin:0 0 17px;border-left:3px solid #ffa86e}
.tso-sim-roster-warning strong{display:block;color:#ffbb87;font-size:12px;letter-spacing:.045em;margin-bottom:8px}
.tso-sim-roster-warning p{margin:0 0 8px;color:#e2eee7}
.tso-sim-roster-warning small{color:#a3c4b9;font-size:11px}
.tso-sim-roster-pending button{cursor:pointer;background:#f9a96b;color:#13231d;font-weight:900;border:0;border-radius:7px;padding:9px 12px}

/* v3 scoreboard — every row recalculated from the same deterministic play ledger */
.tso-sim-players[data-tsos-panel]{padding:10px;min-height:300px;max-height:445px;overflow:auto;gap:3px;background:#0d1c22}
.tso-sim-players[data-tsos-panel] .tso-sim-side-name{font-size:10px;letter-spacing:.08em;color:#fbc397;font-weight:900;padding-bottom:7px;border-bottom:1px solid #3b504a}
.tso-sim-players[data-tsos-panel] h4{color:#8ce1b7;font-size:10px;letter-spacing:.065em;margin:9px 0 3px}
.tso-sim-live-totals{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:7px 0 6px}
.tso-sim-live-totals span{padding:6px 3px;min-width:0;background:#152a25;border:1px solid #2f5746;border-radius:5px}
.tso-sim-live-totals span small{display:block;font-size:7px;color:#95bbb2}
.tso-sim-live-totals span b{font-size:15px;line-height:1.3;color:#fff}
.tso-sim-live-line{padding:5px 0;border-bottom:1px solid #253936;font-size:10px;line-height:1.35;display:flex;flex-direction:column;gap:3px}
.tso-sim-live-line b{font-size:10px;color:#e5f1ea;white-space:normal}
.tso-sim-live-line span{color:#fdc591;font-size:10px}
.tso-sim-no-stats{color:#75958d;font-size:9px;padding:4px 0}
.tso-sim-tendency{margin-top:12px;padding:9px 12px;background:#122d28;border:1px solid #2c5b49;border-radius:7px;color:#badcc9;font-size:11px}
.tso-sim-final{padding:16px;overflow:hidden}
.tso-sim-stat-heading{color:#ffca93;font-size:12px;font-weight:900;letter-spacing:.1em;margin:18px 0 9px}
.tso-sim-complete-box-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:18px}
.tso-sim-full-team{min-width:0}
.tso-sim-full-team h4{font-size:14px;color:#ffd7a9;letter-spacing:.06em;margin:8px 0 12px;border-bottom:1px solid #476958;padding-bottom:8px}
.tso-sim-full-team h5{color:#8de4be;font-size:11px;letter-spacing:.085em;margin:16px 0 7px}
.tso-sim-stat-scroll{overflow:auto;max-width:100%;border:1px solid #2b5143;border-radius:7px}
.tso-sim-box-table{width:100%;border-collapse:collapse;font-size:11px;white-space:nowrap;text-align:left;color:#e0f0e7}
.tso-sim-box-table th{padding:9px 8px;background:#1d3c32;border-bottom:1px solid #416b58;color:#d5ffde;font-weight:900;font-size:9px;letter-spacing:.025em}
.tso-sim-box-table td{padding:9px 8px;border-bottom:1px solid #2c453f}
.tso-sim-box-table tbody tr:nth-child(even){background:#122921}
.tso-sim-statnum{text-align:right;font-variant-numeric:tabular-nums;font-weight:800}
.tso-sim-boxfootnote{color:#98c0b4;font-size:11px;line-height:1.6;margin:16px 0 0}
@media(max-width:900px){.tso-sim-complete-box-grid{grid-template-columns:1fr}.tso-sim-players[data-tsos-panel]{max-height:300px}}
