@font-face{font-family:'Reenie Beanie';src:url('assets/reenie-beanie.ttf') format('truetype');font-style:normal;font-weight:400;font-display:swap}
:root{--ink:#233d78;--paper:#fbf8ee;--muted:#626977;--red:#ac3832;--line:#6c83a642;--hand:'Reenie Beanie',cursive}*{box-sizing:border-box}body{margin:0;padding:16px 22px;color:var(--ink);font:14px/1.5 'Courier New',monospace;background:linear-gradient(#281b1070,#281b1070),url('assets/student-desk-v1.webp') center/cover fixed}button,select,a,summary{touch-action:manipulation}button,select{font:inherit}button{cursor:pointer}button,a{-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #ba7715;outline-offset:4px}a{color:inherit}button{color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:var(--hand);font-weight:400;line-height:1}h1{font-size:58px}h2{font-size:43px}h3{font-size:33px}small{font-size:12px}.notebook{position:relative;max-width:1240px;min-height:calc(100vh - 32px);margin:auto;padding:0 32px 15px 55px;background:repeating-linear-gradient(0deg,transparent 0 31px,#7e9dcc30 31px 32px),var(--paper);box-shadow:3px 4px 0 #d5cdbc,7px 10px 22px #170e0760}.notebook:before{content:'';position:absolute;inset:0 auto 0 27px;border-left:1px solid #c556566b;box-shadow:3px 0 0 #c5565622;pointer-events:none}.topbar{height:84px;display:flex;align-items:center;justify-content:space-between;border-bottom:1.5px solid var(--ink);margin-bottom:22px}.small-logo{display:block;width:135px;height:77px}.small-logo img{width:100%;height:100%;object-fit:contain;mix-blend-mode:multiply}.topbar nav{display:flex;align-items:center;gap:34px}.topbar nav a{font-family:var(--hand);font-size:32px;text-decoration:none;position:relative}.topbar nav a.active:after{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--ink);transform:rotate(-2deg)}.topbar nav .menu-link{font:12px 'Courier New';margin-left:26px}.masthead{display:none}#content{min-height:470px}footer{font-size:10px;color:var(--muted);margin-top:22px;text-align:right}.warning{color:var(--red)}.tag{text-transform:uppercase;letter-spacing:1px;font-size:11px}.section-top{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}.section-top p{margin-top:3px;color:var(--muted)}.center-heading{text-align:center;margin:5px 0 22px}.center-heading p{margin-top:4px}.action{display:inline-block;position:relative;text-align:center;padding:9px 25px 11px;font:34px/1 var(--hand);color:#192f5f;border:1.5px solid #5d6067;border-radius:1px 3px 2px 3px;text-decoration:none;background:repeating-linear-gradient(126deg,#dda8212e 0 1px,transparent 1px 4px),repeating-linear-gradient(45deg,#e6b3343d 0 1px,transparent 1px 5px),#f5d66d;box-shadow:2px 3px 0 #927b4730;transition:transform .15s}.action:after{content:'';position:absolute;inset:2px -3px -2px 2px;border:1px solid #6858336b;transform:rotate(-.6deg);pointer-events:none}.action:hover{transform:rotate(-1deg);background-color:#fadd7d}.text-button{border:0;border-bottom:1px solid currentColor;background:none;padding:5px 0;min-height:34px;font:13px 'Courier New';text-decoration:none}.text-button:hover{color:var(--red)}.text-button.active{box-shadow:0 2px 0 #c59733}.club-emblem{display:inline-flex;flex:0 0 auto;width:88px;height:84px;color:var(--ink)}.club-emblem svg{width:100%;height:100%;overflow:visible}.legacy-emblem{align-items:center;justify-content:center;font:60px var(--hand);color:var(--team)}.swatch{font-weight:bold;font-size:20px;letter-spacing:-3px;display:inline-block;transform:rotate(-12deg);margin-right:8px}.selection-check{position:absolute;right:12px;top:0;font:46px var(--hand);opacity:0;transform:rotate(8deg)}.selected .selection-check{opacity:1}
/* The opening page has a title, two choices, and room to breathe. */
.menu-screen{max-width:1040px;padding-top:18px}.menu-screen .topbar{display:none}.menu-screen .small-logo,.menu-screen nav,.menu-screen footer{display:none}.menu-screen .masthead{display:flex;align-items:center;justify-content:center;width:470px;max-width:90%;aspect-ratio:2.4;margin:22px auto 16px;background:url('assets/title-banner.svg') center/100% 100% no-repeat;transform:rotate(-2deg)}.masthead img{display:block;width:64%;mix-blend-mode:multiply}.menu-screen #content{min-height:0;padding-bottom:48px}.game-menu{width:380px;max-width:90%;margin:auto}.mode-option{position:relative;display:block;text-decoration:none;margin:18px 0;transform:rotate(-1deg)}.mode-option:nth-child(2){transform:rotate(1deg)}.menu-lettering{display:block;width:100%;aspect-ratio:3.4;background:url('assets/menu-lettering-v1.png') center/100% auto no-repeat;filter:url(#pen-ink);mix-blend-mode:multiply}.lettering-quick{background-position:center 12.5%}.lettering-season{background-position:center 51%}.mode-option small{display:block;text-align:center;font-size:11px;margin-top:-4px;color:var(--muted)}.mode-arrow{position:absolute;right:-23px;top:26%;font:40px var(--hand);opacity:0}.mode-option:hover .mode-arrow,.mode-option:focus-visible .mode-arrow{opacity:1}.mode-option:hover{transform:rotate(-2deg)}.coming-soon{text-align:center;margin-top:40px;font:25px var(--hand);color:#687286}.coming-soon span{font:10px 'Courier New';display:block}.menu-binding{display:none;position:absolute;left:-26px;top:85px;bottom:40px;flex-direction:column;justify-content:space-between;pointer-events:none}.menu-screen .menu-binding{display:flex}.menu-binding span{display:block;width:65px;height:32px;background:url('assets/notebook-wire-v1.png') -15px -20px/100px 67px no-repeat;filter:drop-shadow(1px 2px 1px #160b0650)}
/* Eight emblems, with details only for the chosen club. */
.team-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px 24px;max-width:950px;margin:auto}.team-tile{position:relative;border:0;background:transparent;padding:8px;color:var(--ink);text-align:center;border-radius:48% 42% 44% 40%;min-width:0}.team-tile:before{content:'';position:absolute;inset:2px 3px 0;border:1.5px solid var(--team);border-radius:48% 44% 49% 42%;transform:rotate(-6deg);opacity:0}.team-tile.selected:before{opacity:.8;box-shadow:2px 1px 0 var(--team)}.team-tile:hover{background:#e3d5a320}.team-tile .club-emblem{width:120px;height:112px}.team-tile strong{display:block;font:37px/1 var(--hand);margin-top:-3px}.team-tile .selection-check{font-size:40px;color:var(--team)}.club-choice{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:28px;border-top:1.5px solid #556c96;padding-top:18px}.club-choice>div{display:flex;align-items:center;gap:12px;min-width:0}.club-choice h2{font-size:36px}.club-choice p{font-size:11px;color:var(--muted)}.club-choice .action{white-space:nowrap}.club-choice .club-emblem{width:70px;height:66px}
/* One opponent, one button. */
.quick-setup{max-width:750px;margin:35px auto;text-align:center}.match-select{display:grid;grid-template-columns:minmax(0,1fr) 50px minmax(0,1fr);gap:20px;align-items:center;margin:30px 0 40px}.match-select .club-emblem{width:155px;height:150px}.match-select label{display:block;margin:10px 0 4px;font-size:12px}.match-select select,.inline-select{width:100%;min-width:0;background:transparent;color:var(--ink);border:0;border-bottom:1px solid;padding:9px 3px;font:13px 'Courier New'}.versus{font:40px var(--hand)}.inline-select{width:auto;max-width:260px}
/* Formation is the season's main view. */
.season-layout{display:grid;grid-template-columns:minmax(0,1fr) 275px;gap:26px}.squad-heading{display:flex;align-items:center;gap:12px;margin-bottom:12px;min-height:92px}.squad-heading>.club-emblem{width:80px;height:78px}.squad-heading>div{flex:1;min-width:0}.squad-heading h1{font-size:48px}.season-record{display:flex;align-items:center;gap:18px;margin-top:2px}.season-record strong{font:35px/1 var(--hand)}.season-record>span{font-size:11px;position:relative}.season-record>span:after{content:'';position:absolute;left:0;bottom:-4px;right:0;height:2px;background:#e3b94c;transform:rotate(-1deg)}.season-record small{margin-left:auto;font-size:10px;white-space:nowrap}.squad-board{position:relative;width:100%;height:366px;color:var(--ink);isolation:isolate}.formation-lines{position:absolute;width:100%;height:100%;inset:0}.squad-player{position:absolute;left:var(--x);top:var(--y);width:29%;transform:translate(-50%,-25%);padding:0 3px;border:0;background:none;text-align:center;font:12px/1.1 'Courier New';min-height:60px}.squad-symbol{display:block;width:32px;height:32px;color:var(--team);margin:0 auto 2px;transition:transform .25s}.squad-symbol svg{width:100%;height:100%}.squad-player small{display:block;font-size:11px}.squad-player strong{font:14px/1.1 'Courier New';display:block;margin:3px auto 0;max-width:160px;overflow-wrap:break-word}.squad-player:hover strong{text-decoration:underline;text-underline-offset:3px}.squad-player:hover .squad-symbol{transform:rotate(-9deg) scale(1.1)}.squad-line{display:flex;gap:23px;position:absolute;left:53%;top:43%;transform:translateX(-50%);color:var(--ink);opacity:.5}.squad-line span{width:23px;height:23px}.squad-line svg{width:100%;height:100%}.endzone{position:absolute;bottom:1px;left:4px;right:4px;height:49px;border-top:1px solid #7b89a7;text-align:center;text-transform:uppercase;font:50px/1 var(--hand);letter-spacing:7px;color:var(--team);background:repeating-linear-gradient(126deg,#233d780b 0 1px,transparent 1px 4px)}.next-game{border-left:1px solid #536da08a;padding:15px 0 0 24px;text-align:center}.next-game>.tag{display:block;margin-bottom:16px}.next-opponent{display:flex;align-items:center;justify-content:center;gap:10px;margin:6px 0 28px}.next-opponent .club-emblem{width:96px;height:95px}.next-opponent h2{font-size:37px}.next-opponent small{font-size:11px}.next-game .action{width:100%;font-size:35px;padding:13px 5px;white-space:nowrap}.highlight-preview{width:100%;padding:12px;margin-top:28px;background:none;border:1px solid #536da0;text-align:left}.highlight-preview .tag{font-size:10px}.highlight-preview>span:last-child{display:block;font-size:11px;text-align:right}.highlight-doodle{display:flex;align-items:center;justify-content:space-between;flex-direction:column;height:110px;border:1px solid #8796b9;margin:10px 0;background:repeating-linear-gradient(127deg,#213b7809 0 1px,transparent 1px 4px)}.highlight-doodle b{font:42px/1 var(--hand);width:45px;height:45px;text-align:center;border:1px solid;border-radius:50%}.highlight-doodle>span{font:23px var(--hand);letter-spacing:6px;opacity:.7}.season-extras{border-top:1.5px solid #536b95;margin-top:22px;padding:10px 0;display:flex;align-items:flex-start;gap:26px;flex-wrap:wrap}.season-extras>details{flex:0 0 auto}.season-extras>details[open]{flex:1 0 100%;order:2}.season-extras>details>summary{font-size:13px}.season-extras>a{font-size:13px;line-height:26px;text-decoration:none}.season-extras>a:hover{text-decoration:underline}summary{cursor:pointer;min-height:32px;padding:4px 0}details[open]>summary{margin-bottom:10px}.champion-stamp{border:2px solid var(--team,var(--ink));font:27px var(--hand);padding:8px;transform:rotate(-6deg);margin:20px 0}.draft-reveal{max-width:820px;margin:auto}.draft-reveal .squad-board{height:400px}.reveal-next{text-align:center;margin-top:22px}.draw-squad .squad-player{animation:squad-arrive .75s both;animation-delay:var(--delay)}.draw-squad .route-ink{stroke-dasharray:260;stroke-dashoffset:260;animation:route-draw 1.3s .3s forwards}@keyframes squad-arrive{from{opacity:0;transform:translate(-50%,-25%) scale(.6) rotate(-12deg)}to{opacity:1;transform:translate(-50%,-25%) scale(1) rotate(0)}}@keyframes route-draw{to{stroke-dashoffset:0}}
/* Three comparable prospects. One commitment. */
.draft-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}.draft-heading h1{font-size:59px}.draft-heading p{font-size:11px}.draft-heading>.text-button{font-size:11px}.draft-steps{display:flex;justify-content:center;gap:22px;margin:15px auto 0;max-width:540px;border-top:1px solid #60769c65;border-bottom:1px solid #60769c65;padding:5px 0}.draft-slot{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:60px;height:30px;border:0;background:transparent;font-size:12px}.draft-slot>svg{width:25px;height:25px;color:var(--team)}.draft-slot>span{white-space:nowrap}.draft-slot>b{font-weight:400}.draft-slot.on-clock:after{content:'';position:absolute;inset:-3px 0;border:2px solid #d0a43c;border-radius:50%;transform:rotate(-9deg)}.draft-slot.new-pick svg{animation:paper-turn .75s ease-out}@keyframes paper-turn{0%{transform:perspective(180px) rotateY(-180deg) scale(1.7)}100%{transform:perspective(180px) rotateY(0) scale(1)}}.draft-notice{font-size:11px;text-align:center;color:#536242;min-height:23px;padding:3px;margin:2px 0}.prospect-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.prospect{position:relative;border:1px solid #607399;background:#fffdf324;text-align:left;padding:19px 18px;color:var(--ink);border-radius:1px 3px 1px 2px;min-width:0;box-shadow:1px 2px 0 #2e477917}.prospect:nth-child(2){transform:rotate(.3deg)}.prospect.selected{border-color:var(--ink);box-shadow:0 0 0 1px #233d7860,2px 3px 0 #c4aa7144;background:#f7e3a21a}.prospect:hover{background:#f9e9bd42}.prospect-head{display:flex;align-items:center;gap:12px;position:relative;min-height:72px}.prospect-head strong{display:block;font:35px/.9 var(--hand);padding-right:5px}.prospect-head small{display:block;font-size:10px;margin-top:9px}.prospect-head .selection-check{right:-9px;top:-22px;font-size:38px}.prospect-o{display:block;width:47px;height:47px;flex:0 0 47px;color:var(--team)}.prospect-o svg{width:100%;height:100%}.archetype{display:block;text-align:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:7px 0;margin:11px 0 18px;font-size:12px}.prospect-attrs{display:flex;flex-direction:column;gap:15px}.prospect-attr{display:grid;grid-template-columns:99px minmax(0,1fr) 22px;align-items:center;gap:6px;font-size:11px}.prospect-attr>strong{font-weight:400;text-align:right}.bar{display:block;height:19px;color:var(--team,var(--ink))}.bar svg{display:block;width:100%;height:100%}.draft-controls{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:22px}.draft-pages{display:flex;align-items:center;gap:17px;font-size:11px}.draft-pages .text-button{font-size:11px}.draft-pages button:first-child{font-size:22px;width:36px;border:0}.draft-commit{display:flex;align-items:center;gap:22px}.draft-commit .action{min-width:240px}.draft-commit>.text-button{font-size:11px}
/* Tables stay quiet until invited onto the page. */
.ranking{display:grid;grid-template-columns:30px minmax(0,1fr) 40px 40px;align-items:center;gap:10px;border-bottom:1px solid var(--line);padding:5px 9px;min-height:48px}.ranking.header{font-size:10px;min-height:30px;color:var(--muted)}.ranking a{display:flex;align-items:center;gap:14px;text-decoration:none}.ranking .club-emblem{width:34px;height:34px}.ranking small{font-size:9px;margin-left:auto}.ranking.you{background:repeating-linear-gradient(127deg,#e3ba4c14 0 1px,transparent 1px 3px),#edcd631c}.small-details{font-size:11px;color:var(--muted);margin-top:12px}.fixture{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:16px;align-items:center;min-height:48px;border-bottom:1px solid var(--line);font-size:13px}.fixture small{font-size:10px;color:var(--muted)}.fixture strong{font-weight:400}.next-fixture{background:#f4d67930}.next-fixture strong{font-size:11px}.playoff-title{margin-top:30px}.category-tabs{display:flex;align-items:center;gap:26px;margin-bottom:22px}.category-tabs .text-button{font-size:13px}.category-tabs>a{margin-left:auto;font-size:12px}.league-content{max-width:850px;margin:auto}.roster-row{display:grid;width:100%;grid-template-columns:42px minmax(0,1fr) 50px 64px 40px;align-items:center;gap:14px;text-align:left;min-height:70px;padding:10px 7px;border:0;border-bottom:1px solid var(--line);background:none}.roster-row>span:nth-child(n+3){text-align:right}.roster-row:hover{background:#eee0b62c}.roster-row strong{font:34px/1 var(--hand)}.roster-row small{display:block;font-size:10px;color:var(--muted)}.roster-row .position{font-size:12px}.roster-row.header{font-size:10px;min-height:34px;color:var(--muted)}.support-roster{margin-top:24px;font-size:12px}.leader-row{display:grid;grid-template-columns:24px 1fr auto;width:100%;gap:20px;align-items:center;text-align:left;border:0;border-bottom:1px solid var(--line);padding:12px 6px;background:none}.leader-row strong{display:block;font:32px var(--hand)}.leader-row small{display:block;font-size:10px}.leader-row>span:last-child small{display:inline}.empty{padding:35px 0;color:var(--muted)}.archive-list{margin:24px 0}.archive-list>details{padding:15px 0;border-bottom:1px solid var(--line)}.archive-list summary>span{display:block;font-size:11px;color:var(--muted)}
/* Player cards use a small portrait, not a tall empty column. */
dialog{color:var(--ink);padding:0;border:1px solid #6b7d9e;width:calc(100% - 28px);max-width:510px;max-height:calc(100dvh - 34px);overflow:auto;background:repeating-linear-gradient(0deg,transparent 0 31px,#7e9dcc25 31px 32px),var(--paper);box-shadow:5px 7px 0 #17264a50}dialog::backdrop{background:#141b2a9c;backdrop-filter:blur(3px)}.player-inner{padding:14px 25px 16px}.card-top{display:flex;align-items:center;justify-content:space-between;font-size:11px}.close{border:0;background:none;width:42px;height:42px;font:30px 'Courier New';padding:0}.player-heading{display:flex;align-items:center;gap:20px;margin:0 0 22px}.portrait{border:1px solid #45567d;transform:rotate(-3deg);width:100px;height:103px;padding:11px;flex:0 0 auto;color:var(--team);background:#fffaf026}.portrait svg{width:100%;height:100%}.player-heading h2{font-size:43px;line-height:.87;margin-bottom:12px}.player-heading p{font-size:11px}.ovr{white-space:nowrap;margin-left:10px}.attr{margin:13px 0}.attr-label{display:flex;align-items:center;justify-content:space-between;font-size:13px}.attr-label strong{font-weight:400}.attr-label small{font-size:10px;color:var(--muted)}.attr .bar{height:22px;margin-top:2px}.statline{display:flex;justify-content:space-around;gap:12px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:12px 0;margin-top:20px;text-align:center}.statline strong{display:block;font:38px/1 var(--hand)}.statline span{display:block;font-size:10px;margin-top:5px}.attribute-help{font-size:11px;margin:10px 0;color:var(--muted)}.attribute-help p{margin:10px 0}.attribute-help .quote{font-style:italic}.attribute-help summary{min-height:25px}.player-paging{display:flex;align-items:center;justify-content:space-between;font-size:10px;border-top:1px solid var(--line);padding-top:4px}.player-paging .text-button{font-size:11px}.draft-from-card{display:block;width:100%;margin:12px 0}.replay-inner{padding:18px}.replay-inner .card-top h2{font-size:36px}.replay-canvas{display:block;width:100%;aspect-ratio:1.15;background:var(--paper);border:1px solid var(--ink);margin:12px 0}.replay-controls{display:flex;align-items:center;gap:16px}.replay-controls input{flex:1;min-width:0;accent-color:var(--ink)}.replay-controls button{min-width:65px}.replay-caption{font-size:11px;color:var(--muted);margin-top:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1000px){body{padding:10px}.notebook{padding:0 22px 15px 38px;min-height:calc(100vh - 20px)}.notebook:before{left:18px}.season-layout{grid-template-columns:minmax(0,1fr) 230px;gap:17px}.squad-heading h1{font-size:40px}.squad-heading>.club-emblem{width:65px;height:65px}.season-record{gap:12px;flex-wrap:wrap}.season-record small{margin-left:0}.next-game{padding-left:17px}.next-opponent{flex-direction:column;gap:0}.next-game .action{font-size:31px}.prospect{padding:17px 12px}.prospect-head{gap:9px}.prospect-head strong{font-size:30px}.prospect-o{width:36px;height:36px;flex-basis:36px}.prospect-attr{grid-template-columns:87px minmax(0,1fr) 20px;font-size:10px}.team-tile .club-emblem{width:100px;height:94px}.club-choice .club-emblem{display:none}.club-choice h2{font-size:32px}.club-choice p{font-size:10px}.action{font-size:31px}}
@media(max-width:650px){body{padding:0;background:var(--paper);font-size:13px}.notebook{padding:0 18px 20px 28px;min-height:100dvh;box-shadow:none}.notebook:before{left:12px}.topbar{height:67px;margin-bottom:18px}.small-logo{width:105px;height:66px}.topbar nav{gap:20px}.topbar nav a{font-size:28px}.topbar nav .menu-link{margin-left:0;font-size:10px}h1{font-size:46px}h2{font-size:36px}.tag{font-size:10px}.section-top{align-items:flex-start;flex-wrap:wrap;gap:12px;margin-bottom:18px}.section-top h1{font-size:47px}#content{min-height:430px}footer{font-size:9px;margin-top:24px}.menu-screen{padding-top:20px}.menu-screen .masthead{margin:30px auto 28px;max-width:100%;width:360px}.game-menu{max-width:94%;width:320px}.mode-option{margin:24px 0}.menu-screen #content{min-height:0}.menu-screen .menu-binding{display:none}.mode-arrow{display:none}.coming-soon{margin-top:36px}.menu-screen .arcade{font-size:11px}.center-heading h1{font-size:48px}.center-heading p{font-size:11px}.team-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 12px}.team-tile .club-emblem{width:95px;height:88px}.team-tile strong{font-size:33px}.team-tile .selection-check{right:7px;top:0;font-size:32px}.club-choice{flex-direction:column;align-items:stretch;margin-top:22px;padding-top:16px;gap:15px}.club-choice h2{font-size:36px}.club-choice p{font-size:10px}.club-choice .action{width:100%}.quick-setup{margin:25px 0}.match-select{gap:8px;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);margin:20px 0 32px}.match-select .club-emblem{width:103px;height:100px}.match-select select{font-size:11px;padding:9px 0}.match-select label{font-size:10px}.versus{font-size:30px}.quick-setup .action{min-width:240px}.season-layout{display:flex;flex-direction:column;gap:20px}.squad-heading{gap:6px;min-height:76px;margin-bottom:15px}.squad-heading>.club-emblem{width:57px;height:60px}.squad-heading h1{font-size:36px}.season-record{gap:5px 11px}.season-record strong{font-size:28px}.season-record>span{font-size:9px}.season-record small{font-size:9px}.squad-board{height:330px}.squad-player{width:32%;min-height:65px}.squad-player strong{font-size:11px;line-height:1.16;max-width:106px}.squad-player small{font-size:10px}.squad-symbol{width:28px;height:28px}.squad-line{gap:18px}.squad-line span{width:19px;height:19px}.endzone{font-size:40px;height:43px;letter-spacing:5px}.next-game{border-left:0;border-top:1px solid var(--line);padding:13px 0 0;display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:center}.next-game>.tag{grid-column:1/-1;margin:0;text-align:left}.next-opponent{flex-direction:row;margin:0;gap:6px;justify-content:flex-start}.next-opponent .club-emblem{width:57px;height:58px}.next-opponent h2{font-size:31px}.next-opponent small{font-size:9px}.next-game .action{font-size:29px;padding:12px 9px;width:auto;min-width:145px}.next-game>.club-emblem{width:66px;height:65px}.next-game>h2{font-size:31px}.next-game>.action:not(.play-action){grid-column:1/-1}.highlight-preview{grid-column:1/-1;margin-top:12px;display:grid;grid-template-columns:1fr auto;align-items:center;padding:10px}.highlight-preview .tag{grid-column:1;font-size:9px}.highlight-doodle{grid-column:2;grid-row:1/3;margin:0;width:92px;height:70px}.highlight-doodle b{font-size:29px;width:30px;height:30px}.highlight-doodle>span{font-size:14px;letter-spacing:2px}.highlight-preview>span:last-child{text-align:left;margin-top:5px}.season-extras{gap:16px;margin-top:19px}.season-extras>a,.season-extras>details>summary{font-size:11px}.draft-reveal .squad-board{height:350px}.draft-reveal .center-heading h1{font-size:46px}.reveal-next .action{width:100%}.draft-heading{gap:10px;align-items:flex-start}.draft-heading h1{font-size:48px}.draft-heading p{font-size:10px}.draft-heading>.text-button{font-size:9px;max-width:86px;line-height:1.4}.draft-steps{gap:6px;padding:5px 0;margin-top:16px}.draft-slot{min-width:0;flex:1;gap:3px;font-size:10px}.draft-slot>svg{width:21px;height:21px}.draft-slot>b{display:none}.draft-notice{font-size:10px;min-height:25px}.prospect-grid{grid-template-columns:1fr}.prospect{padding:19px 21px 24px}.prospect-head{min-height:63px;gap:15px}.prospect-head strong{font-size:40px}.prospect-head small{font-size:11px}.prospect-o{width:55px;height:55px;flex-basis:55px}.archetype{font-size:12px;margin:14px 0 16px}.prospect-attrs{gap:14px}.prospect-attr{grid-template-columns:105px minmax(0,1fr) 24px;font-size:12px;gap:9px}.prospect .bar{height:20px}.draft-controls{display:flex;flex-direction:column;align-items:stretch;gap:14px;margin-top:12px}.draft-pages{justify-content:space-between;gap:10px}.draft-pages button:first-child{font-size:26px}.draft-commit{position:sticky;bottom:10px;z-index:2;background:var(--paper);box-shadow:0 0 0 8px var(--paper);gap:18px}.draft-commit .action{min-width:0;flex:1;font-size:33px}.draft-screen footer{margin-top:20px}.draft-room{padding-bottom:10px}.category-tabs{gap:23px}.category-tabs .text-button{font-size:11px}.category-tabs>a{font-size:10px}.ranking{gap:7px;grid-template-columns:23px minmax(0,1fr) 25px 25px;padding:5px 2px;font-size:12px}.ranking a{gap:8px}.ranking .club-emblem{width:31px;height:31px}.ranking small{font-size:8px}.fixture{font-size:11px;grid-template-columns:41px minmax(0,1fr) auto;gap:9px}.fixture small{font-size:9px}.inline-select{max-width:100%;font-size:11px}.roster-row{grid-template-columns:27px minmax(0,1fr) 28px 36px 23px;gap:8px;padding:10px 0;font-size:12px}.roster-row strong{font-size:29px}.roster-row .position{font-size:10px}.roster-row.header{font-size:9px}.leader-row{gap:12px}.leader-row strong{font-size:29px}.player-inner{padding:10px 18px 13px}.player-heading{gap:16px;margin-bottom:17px}.portrait{width:85px;height:90px;padding:9px}.player-heading h2{font-size:40px}.player-heading p{font-size:10px}.ovr{margin-left:5px}.attr{margin:12px 0}.attr-label{font-size:12px}.attr .bar{height:20px}.statline{margin-top:18px;padding:10px 0}.statline span{font-size:9px}.statline strong{font-size:35px}.player-paging .text-button{font-size:10px}.card-top{font-size:10px}.replay-inner{padding:12px}.replay-caption{font-size:10px}.replay-controls{gap:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.draw-squad .route-ink{stroke-dashoffset:0}}

/* Final readability pass: pencil texture supports, rather than washes out, the data. */
.prospect .bar{color:var(--ink)}.prospect-attr{font-size:13px;grid-template-columns:108px minmax(0,1fr) 24px}.prospect-head small{font-size:12px}.archetype{font-size:14px}.draft-heading p{font-size:12px}.draft-slot{font-size:13px}.draft-notice{font-size:12px}.draft-pages,.draft-pages .text-button{font-size:12px}.season-record>span{font-size:12px}.season-record small{font-size:11px}.squad-player strong{font-size:14px}.squad-symbol{filter:contrast(1.35)}
@media(max-width:1000px) and (min-width:651px){.prospect-attr{font-size:11px;grid-template-columns:94px minmax(0,1fr) 22px}}
@media(max-width:650px){.draft-heading h1{font-size:44px;white-space:nowrap}.draft-heading>.text-button{max-width:76px}.draft-heading p{font-size:11px}.draft-slot{font-size:11px}.draft-notice{font-size:11px}.prospect-attr{font-size:12px;grid-template-columns:105px minmax(0,1fr) 24px}.prospect-head small{font-size:11px}.archetype{font-size:13px}.draft-pages,.draft-pages .text-button{font-size:12px}.season-record>span{font-size:10px}.season-record small{font-size:10px}.squad-player strong{font-size:12px}}
@media(max-width:360px){.draft-heading h1{font-size:38px}.draft-heading>.text-button{max-width:60px}.player-heading h2{font-size:35px}.portrait{width:73px;height:81px}.player-heading{gap:11px}.next-game{grid-template-columns:1fr}.next-opponent{justify-content:center}.next-game .play-action{width:100%}}

.replay-poster{display:block;width:100%}.squad-symbol{width:38px;height:38px}.squad-player strong{font-size:15px}
@media(max-width:650px){.replay-poster{width:92px}.squad-symbol{width:32px;height:32px}.squad-player strong{font-size:12px}}

/* Generated ink is the scenery; the squad remains live and clickable. */
.squad-board{height:410px}.squad-field-art{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:fill;pointer-events:none;user-select:none;z-index:-1}.squad-line{top:39%}.endzone{left:9%;right:9%;bottom:4%;height:16%;display:flex;align-items:center;justify-content:center;border:0;letter-spacing:.14em;font-family:Georgia,serif;font-size:54px;font-style:italic;font-weight:900;line-height:1;color:var(--ink);background:none;-webkit-text-stroke:.7px var(--ink);text-shadow:1px 1px 0 #fbf8ee}
@supports(background-clip:text){.endzone{background:repeating-linear-gradient(130deg,var(--ink) 0 .75px,transparent .75px 2.5px);background-clip:text;-webkit-background-clip:text;color:transparent;text-shadow:none}}
.squad-heading>.club-emblem{width:92px;height:87px}.club-emblem img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;user-select:none}.team-tile .club-emblem{width:142px;height:130px}
@media(max-width:1000px){.squad-heading>.club-emblem{width:74px;height:74px}.team-tile .club-emblem{width:112px;height:106px}.endzone{font-size:43px}}
@media(max-width:650px){.squad-board,.draft-reveal .squad-board{height:365px}.squad-heading>.club-emblem{width:66px;height:65px}.squad-symbol{width:29px;height:29px}.squad-player strong{font-size:12px}.endzone{font-size:32px;letter-spacing:.1em}.team-tile .club-emblem{width:110px;height:104px}.squad-line{top:39%}}

.squad-field-art img{display:block;width:100%;height:100%;object-fit:fill}

/* The field stays in the background; players and ratings carry the emphasis. */
.squad-field-art{opacity:.3}.formation-lines{opacity:.48}.endzone{opacity:.6}.squad-player{z-index:1}.squad-symbol{filter:none;color:var(--ink)}.squad-player strong{max-width:100%;text-shadow:0 1px var(--paper),1px 0 var(--paper),-1px 0 var(--paper),0 -1px var(--paper)}.squad-player small{display:table;margin:0 auto;background:#fbf8eedd;padding:1px 3px}.squad-line{opacity:.3}
.player-heading{display:grid;grid-template-columns:95px minmax(0,1fr) 68px;gap:16px}.player-heading .portrait{width:95px;height:99px}.player-heading h2{overflow-wrap:anywhere;font-size:39px}.player-heading p{font-size:13px}.overall-rating{text-align:center;transform:rotate(3deg);align-self:center;border-bottom:3px double #cfac50;padding:4px 2px 6px}.overall-rating strong{display:block;font:70px/.8 var(--hand);color:var(--ink)}.overall-rating>span{display:block;font:12px 'Courier New';margin-top:8px;letter-spacing:2px}.prospect-head{display:grid;grid-template-columns:43px minmax(0,1fr) 43px;gap:9px}.prospect-head strong{font-size:31px}.prospect-o{width:43px;height:43px}.prospect-overall{text-align:center;align-self:center;border-bottom:2px solid #d4b34b}.prospect-overall>b{display:block;font:49px/.85 var(--hand)}.prospect-overall>small{font-size:10px;margin:3px 0 4px}.prospect-head .selection-check{top:-27px;right:-12px;font-size:27px}.bar{color:var(--ink)}
@media(max-width:1000px) and (min-width:651px){.prospect-head{grid-template-columns:34px minmax(0,1fr) 37px;gap:7px}.prospect-head strong{font-size:27px}.prospect-o{width:34px;height:34px}.prospect-overall>b{font-size:44px}}
@media(max-width:650px){.player-heading{grid-template-columns:76px minmax(0,1fr) 54px;gap:12px}.player-heading .portrait{width:76px;height:85px;padding:7px}.player-heading h2{font-size:34px}.player-heading p{font-size:12px}.overall-rating strong{font-size:59px}.overall-rating>span{font-size:10px}.prospect-head{grid-template-columns:48px minmax(0,1fr) 47px;gap:11px}.prospect-head strong{font-size:36px}.prospect-o{width:48px;height:48px}.prospect-overall>b{font-size:56px}.prospect-overall>small{font-size:11px}.prospect-head .selection-check{top:-24px;right:-12px}.squad-player strong{max-width:106px}.squad-player{--y-mobile:var(--y)}.squad-field-art{opacity:.25}}

.club-emblem img{mix-blend-mode:multiply}

/* A loose scouting slip, with fixed-depth tears around a flexible paper center. */
#player-card{border:22px solid transparent;border-left-width:0;border-right-width:0;border-image:url('assets/scouting-paper-v1.png') 110 0 90 0 fill / 22px 0 / 0 stretch;background:none;box-shadow:none;filter:drop-shadow(2px 6px 5px #111a2c55)}
#player-card .player-inner{padding-top:4px;padding-bottom:8px}
#player-card .portrait{background:#fffdf52e}
@media(max-width:650px){#player-card{border-top-width:18px;border-bottom-width:18px;border-image-width:18px 0}#player-card .player-inner{padding-top:2px;padding-bottom:6px}}

/* Colored-pencil callouts, with small margin marks around the live button label. */
.action{color:#253449;background:#f5ce49 url('assets/button-pencil-gold-v1.png') center/cover;border-color:#4b5b77;box-shadow:1px 2px 0 #a58d5226;overflow:visible}
.action:after{inset:2px -2px -2px 1px;border-color:#4b5b7799;transform:rotate(-.35deg)}
.action:before{content:'';position:absolute;inset:0 -18px;pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 44'%3E%3Cpath d='M3 4L10 12M1 23L10 22M4 40L11 32' fill='none' stroke='%23efc641' stroke-width='3.5' stroke-linecap='round'/%3E%3Cpath d='M3 3L10 11M1 22L10 21M4 39L11 31' fill='none' stroke='%23455462' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E") left center/14px 44px no-repeat,url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 44'%3E%3Cpath d='M3 12L11 5M4 23L12 24M3 32L10 40' fill='none' stroke='%23efc641' stroke-width='3.5' stroke-linecap='round'/%3E%3Cpath d='M3 11L11 4M4 22L12 23M3 31L10 39' fill='none' stroke='%23455462' stroke-width='1' stroke-linecap='round'/%3E%3C/svg%3E") right center/14px 44px no-repeat}
.action:hover{background-color:#f5ce49;filter:brightness(1.025)}

/* Squad tools stay on their own pages, off the field overview. */
.management-page{max-width:820px;margin:0 auto;padding:8px 0 28px}.management-note{font-size:12px;color:var(--muted);margin:8px 0 18px}.management-page label{display:block;font-size:12px;margin:0 0 5px}.management-page select,.management-page input:not([type=file]){display:block;width:100%;max-width:100%;box-sizing:border-box;border:0;border-bottom:1px solid var(--ink);background:#fffdf550;color:var(--ink);font:14px 'Courier New',monospace;padding:12px 6px;min-height:44px}.trade-pair{display:grid;grid-template-columns:minmax(0,1fr) 40px minmax(0,1fr);gap:20px;margin:22px 0}.trade-arrow{font:42px var(--hand);align-self:center}.trade-player{position:relative;display:block;width:100%;padding:20px 12px;background:none;border:1px solid #657ba3;text-align:center;margin-top:18px}.trade-player>strong{display:block;font:38px/1 var(--hand);margin:12px 0 7px}.trade-player>small{display:block}.trade-portrait{display:block;width:75px;height:75px;margin:auto}.trade-portrait svg{width:100%;height:100%}.trade-rating{display:block;font:58px/1 var(--hand);margin-top:14px}.trade-rating small{font:12px 'Courier New'}.trade-history{margin-top:30px;font-size:12px}.trade-history p{margin:12px 0}.trade-return{display:block;margin:12px 0}#trade-response,#creator-response{min-height:24px;margin:10px 0 20px;font-size:13px}.creator-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:36px}.creator-fields label{margin-top:18px}.drawing-circle{width:256px;max-width:100%;aspect-ratio:1;margin:10px auto;border:2px solid #657ba3;border-radius:49% 51% 48% 50%;box-shadow:2px -2px 0 #657ba350;background:#fffdf540}.drawing-circle canvas{width:100%;height:100%;touch-action:none;display:block;border-radius:50%;cursor:crosshair}.drawing-actions{display:flex;justify-content:space-between;gap:16px}.management-page .upload-label{font:13px 'Courier New',monospace;display:flex;align-items:center;position:relative;cursor:pointer;margin:0}.upload-label input{position:absolute;inset:0;opacity:0;width:100%;cursor:pointer}.upload-label:focus-within{outline:2px solid var(--ink);outline-offset:3px}.custom-portrait{display:block;width:100%;height:100%;position:relative}.custom-portrait>svg{display:block;width:100%;height:100%}.custom-portrait>img{position:absolute;inset:13%;width:74%;height:74%;object-fit:contain;border-radius:50%;mix-blend-mode:multiply;pointer-events:none}.portrait .custom-portrait>img{inset:23% 25% 30%;width:50%;height:47%}
@media(max-width:650px){.management-page .section-top h1{font-size:42px}.management-page .section-top a{font-size:12px}.trade-pair{gap:8px;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr)}.trade-arrow{font-size:26px}.trade-player{padding:16px 8px}.trade-player>strong{font-size:30px;overflow-wrap:anywhere}.trade-portrait{width:60px;height:60px}.management-page select{font-size:12px}.creator-grid{grid-template-columns:1fr;gap:4px}.creator-fields{margin-bottom:12px}.management-page .action{width:100%}.topbar nav{gap:13px}.topbar nav a{white-space:nowrap;font-size:26px}}
.season-access{max-width:440px;margin:50px auto;text-align:center}.season-access h1{margin-bottom:30px}.season-access label{display:block;text-align:left;font-size:13px}.season-access input{box-sizing:border-box;width:100%;min-height:48px;border:0;border-bottom:2px solid var(--ink);background:#fffdf570;color:var(--ink);font:22px 'Courier New';padding:10px;margin-top:8px}.season-access .action{width:100%}.season-access #access-message{min-height:24px;margin:12px 0;font-size:12px;color:var(--red)}.season-access .text-button{margin:22px 0 14px;min-height:44px}.access-back{display:block;font-size:12px;margin-top:10px}
.reset-inner{padding:26px}.reset-inner h2{font-size:44px}.reset-inner p{margin:16px 0;font-size:13px}.reset-actions{display:flex;justify-content:space-between;gap:24px;align-items:center}.reset-actions .action{font-size:30px}.season-extras>#reset-season{font-size:11px;align-self:flex-start;margin-left:auto}
.draft-room-actions{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.draft-room-actions .text-button{font-size:11px;min-height:32px}@media(max-width:650px){.draft-room-actions .text-button{font-size:10px;max-width:95px;text-align:right}}

/* The new round arrives as ink on paper; browsing a prospect is not a drafted pick. */
.draft-heading{display:grid;grid-template-columns:minmax(145px,1fr) minmax(0,3fr) minmax(145px,1fr);gap:12px;align-items:center}
.draft-heading>div:first-child{grid-column:2;text-align:center}
.draft-heading>.draft-room-actions,.draft-heading>.text-button{grid-column:3;justify-self:end}
.draft-heading h1{white-space:normal}
.draft-enter .draft-heading h1{animation:draft-title-ink .42s ease-out both}
.draft-enter .prospect{animation:draft-card-arrive .32s ease-out var(--deal-delay) both}
.draft-enter .prospect-o path{stroke-dasharray:1;animation:draft-circle-ink .48s ease-out calc(var(--deal-delay) + 90ms) both}
.draft-enter .draft-bar-ink{animation:draft-fill-ink .52s ease-out calc(var(--deal-delay) + 130ms) both}
@keyframes draft-title-ink{from{clip-path:inset(0 100% 0 0);opacity:.4}to{clip-path:inset(0);opacity:1}}
@keyframes draft-card-arrive{from{opacity:0;translate:0 9px}to{opacity:1;translate:0 0}}
@keyframes draft-circle-ink{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes draft-fill-ink{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
@media(max-width:650px){
 .draft-heading{grid-template-columns:1fr;gap:8px}
 .draft-heading>div:first-child{grid-column:1}
 .draft-heading>.draft-room-actions,.draft-heading>.text-button{grid-column:1;justify-self:center}
 .draft-heading>.draft-room-actions{flex-direction:row;gap:24px;align-items:center}
 .draft-room-actions .text-button{max-width:none;min-height:36px;text-align:center}
}

.development-notes p{margin:10px 0}

/* Public preview: Quick Play is ready; Season Mode stays visible as a promise. */
.mode-unavailable{opacity:.58;cursor:default}.mode-unavailable small{font:24px var(--hand);color:var(--red);transform:rotate(-2deg);margin-top:-12px}.mode-unavailable:hover{transform:rotate(1deg)}
.season-preview{min-height:430px;display:grid;place-content:center;text-align:center;gap:14px}.season-preview h1{font-size:72px}.season-preview p{font:38px var(--hand);color:var(--red);transform:rotate(-2deg)}.season-preview .text-button{justify-self:center;margin-top:22px}

/* Earn as a squad, then choose the player and attribute before spending. */
.performance-card{display:block;grid-column:1/-1;border-top:1px dashed var(--line);margin-top:18px;padding:13px 0 3px;text-decoration:none}
.performance-card>span{display:block;font-size:11px}.performance-card>strong{display:block;font:48px/1 var(--hand);margin:4px 0}.performance-card small{font:11px 'Courier New';color:var(--muted)}.performance-card>span:last-child{text-decoration:underline;text-underline-offset:4px}
.upgrades-page{max-width:900px;margin:auto}.upgrades-page .section-top a{font-size:12px;white-space:nowrap}.points-balance{display:flex;gap:20px;align-items:center;justify-content:center;margin:25px 0}.points-balance>strong{font:78px/1 var(--hand);border-bottom:3px double #d4b34b}.points-balance span,.points-balance small{display:block}.points-balance small{font-size:11px;color:var(--muted);margin-top:5px}
.upgrade-roster{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:28px}.upgrade-roster button{min-width:0;background:none;border:1px solid var(--line);padding:10px 6px}.upgrade-roster button.selected{border-color:var(--ink);background:#f7e3a240;box-shadow:1px 2px 0 #c4aa7144}.upgrade-roster strong{display:block;font:29px/1 var(--hand);overflow-wrap:anywhere;margin:8px 0}.upgrade-roster small,.upgrade-roster span{font-size:10px}.upgrade-name{text-align:center;margin-bottom:20px}.upgrade-attributes{max-width:630px;margin:auto}.upgrade-attribute{display:grid;grid-template-columns:minmax(0,1fr) 115px;gap:5px 24px;align-items:center;margin:20px 0}.upgrade-attribute>div{display:flex;justify-content:space-between;gap:8px}.upgrade-attribute strong{font-weight:400}.upgrade-attribute strong small{color:var(--muted);font-size:10px}.upgrade-attribute .bar{grid-row:2;grid-column:1;height:24px}.upgrade-attribute button{grid-column:2;grid-row:1/3;font-size:12px;min-height:44px}
.upgrade-confirm{max-width:630px;margin:24px auto 0;padding:18px;border:1px solid var(--ink);background:#f7e3a230}.upgrade-confirm>div{display:flex;justify-content:flex-end;gap:22px;align-items:center;margin-top:15px}.upgrade-confirm p{font-size:13px}.upgrade-confirm .action{font-size:30px}.upgrade-result{min-height:30px;text-align:center;margin:16px 0;font-size:12px}.points-rules{margin:16px auto;max-width:630px;font-size:12px;color:var(--muted)}.points-rules p{margin-top:12px}
@media(max-width:650px){.performance-card{margin-top:5px;padding:10px 4px;display:grid;grid-template-columns:1fr auto;gap:4px;text-align:left}.performance-card>strong{grid-column:2;grid-row:1/3;font-size:43px;margin:0}.upgrades-page h1{font-size:43px}.points-balance{gap:12px;margin:20px 0}.points-balance>strong{font-size:68px}.points-balance span{font-size:12px}.points-balance small{font-size:10px}.upgrade-roster{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.upgrade-roster{margin-bottom:18px}.upgrade-roster button{padding:8px 4px}.upgrade-roster strong{font-size:23px;min-height:46px;margin:5px 0}.upgrade-roster span{display:none}.upgrade-attribute{grid-template-columns:minmax(0,1fr) 91px;gap:5px 12px;font-size:12px}.upgrade-attribute button{font-size:10px}.upgrade-confirm{padding:14px}.upgrade-confirm>div{gap:18px}.upgrade-confirm .action{font-size:27px}}
