@font-face{font-family:Pixel;src:url('pixel.woff2') format('woff2');font-display:swap}
:root{--paper:#f3efdf;--white:#faf7e9;--ink:#283e38;--muted:#66756b;--line:#bdc8ae;--green:#436b57;--orange:#c66b45;--gold:#e9bc69;--lavender:#b0acc8;--safe:env(safe-area-inset-bottom,0px);font-family:Pixel,'PingFang SC','Microsoft YaHei',sans-serif;color:var(--ink);background:#d4ddca;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;line-height:1.6;-webkit-tap-highlight-color:transparent}button,input{font:inherit;color:inherit}button{border:0;border-radius:0;background:none;cursor:pointer;touch-action:manipulation;position:relative}button:disabled{cursor:default}button:focus-visible,input:focus-visible{outline:3px solid var(--orange);outline-offset:3px}button:active{filter:brightness(.96)}p,h1,h2,h3,h4{margin:0}svg{width:24px;height:24px;flex-shrink:0}canvas{display:block;image-rendering:pixelated}#app{max-width:480px;min-height:100dvh;margin:0 auto;background:var(--paper)}.page{padding-bottom:calc(100px + var(--safe));animation:pageIn .14s steps(3)}.content{padding:0 20px}.row{display:flex;align-items:center;gap:8px}.between{justify-content:space-between}.full{width:100%}.muted{color:var(--muted)}.eyebrow,.section-kicker{font-size:10px;line-height:1.6;letter-spacing:.8px;color:var(--muted)}.section-kicker{margin-bottom:8px}.badge{display:inline-flex;align-items:center;border:1px solid #a4b19c;padding:2px 7px;font-size:10px;white-space:nowrap;line-height:1.6}.badge.filled{background:var(--ink);color:var(--paper);border-color:var(--ink)}.primary,.secondary{display:flex;align-items:center;justify-content:center;gap:8px;min-height:49px;padding:11px 15px;border:2px solid var(--ink);font-size:14px;line-height:1.5}.primary{background:var(--orange);color:#fff5dc;box-shadow:3px 3px 0 var(--ink)}.secondary{background:var(--white);box-shadow:2px 2px 0 #c3ccb3}.primary svg,.secondary svg{width:19px;height:19px}.icon-button,.back,.close{display:grid;place-items:center;min-width:44px;min-height:44px;border:1px solid var(--line);background:var(--white);padding:9px}.icon-button{border-color:#617768;background:#365548;color:var(--paper);box-shadow:2px 2px 0 #102f29}.text-button{font-size:11px;padding:8px 0;min-height:36px;color:var(--green)}
/* A school-club issue cover, built for one thumb and a long portrait screen. */
.brandbar{display:flex;justify-content:space-between;align-items:center;padding:calc(19px + env(safe-area-inset-top,0px)) 20px 17px;background:var(--ink);color:var(--paper);border-bottom:4px solid var(--gold)}.brand{display:flex;align-items:center;gap:10px}.brand-ball{width:37px;height:37px;color:var(--gold);display:grid;place-items:center;border:1px solid #7e9179;box-shadow:3px 3px 0 #152c26}.brand-ball svg{width:26px;height:26px}.brand-name{font-size:22px;line-height:1.5;letter-spacing:1px}.brand-name span{display:inline-block;vertical-align:middle;margin-left:7px;font-size:10px;letter-spacing:0;background:var(--gold);color:var(--ink);padding:0 3px}.brand-sub{font-size:7px;letter-spacing:1px;color:#b7c7ac}.home-intro{padding:24px 0 20px}.live-tag{display:flex;gap:5px;align-items:center;font-size:10px;color:var(--green)}.live-tag i,.dot{display:inline-block;width:6px;height:6px;background:#acc775;box-shadow:0 0 0 2px #a7be7730}.home-title{font-size:38px;letter-spacing:-1px;line-height:1.23;position:relative;margin:17px 0 18px;font-weight:400}.home-title em{font-style:normal;color:var(--orange)}.title-star{position:absolute;right:5px;top:18px;font-size:57px;color:var(--green);transform:rotate(14deg);line-height:1}.intro-bottom{display:flex;align-items:center;justify-content:space-between}.intro-bottom p{font-size:12px;line-height:1.8;color:var(--muted)}.sun-stamp{font-size:10px;border:1px solid #c5c8ab;padding:5px 10px;line-height:1.5;display:flex;gap:8px;align-items:center;transform:rotate(-3deg);color:#796f50}.sun-stamp svg{color:#ac8c48;width:20px;height:20px}.hero{height:205px;position:relative;background:#9eb89b;border:2px solid var(--ink);box-shadow:5px 5px 0 #c5cbb0;margin-bottom:26px;overflow:hidden}.hero canvas{width:100%;height:100%}.hero-top{position:absolute;left:10px;top:10px;display:flex;gap:7px;align-items:center;background:#263e37e8;color:#f1efd4;font-size:9px;padding:4px 7px;line-height:1.6}.hero-label{position:absolute;bottom:9px;left:10px;font-size:8px;letter-spacing:1px;color:#f5f0d6;background:#243e34df;padding:3px 5px}.hero-sticker{position:absolute;right:12px;top:55px;line-height:1.3;font-size:18px;background:var(--gold);padding:10px 9px;color:var(--ink);border:2px solid var(--ink);transform:rotate(8deg);box-shadow:3px 3px 0 #263e3790}.section-line{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:18px 0 12px;font-size:12px}.section-line>b{font-size:8px;color:var(--muted);font-weight:400}.modes{display:grid;grid-template-columns:1fr 1fr;gap:13px}.mode-card{padding:15px 14px;text-align:left;border:2px solid var(--ink);box-shadow:3px 3px 0 #b7c1a5;position:relative;min-width:0;min-height:168px;background:var(--white)}.mode-card .eyebrow{font-size:8px;color:inherit;opacity:.75}.mode-card h2{font-size:21px;line-height:1.5;font-weight:400;margin:3px 0}.mode-card p{font-size:10px;line-height:1.8;opacity:.85}.mode-icon{display:grid;place-items:center;width:32px;height:32px;margin:10px 0 5px}.mode-icon svg{width:26px;height:26px}.mode-card .go{position:absolute;right:12px;bottom:12px;font-size:21px;line-height:1}.quick-mode{grid-column:span 2;display:flex;align-items:center;gap:12px;min-height:125px;background:var(--orange);color:#fff2d6;box-shadow:3px 3px 0 var(--ink)}.quick-mode .eyebrow{opacity:1}.quick-mode .eyebrow span{margin-left:10px;border:1px solid #f2cda1;padding:1px 5px;font-size:10px}.quick-mode h2{font-size:29px;margin:8px 0 3px}.quick-mode p{font-size:12px}.quick-mode .mode-icon{margin:0 12px 0 auto;flex-shrink:0;width:50px;height:50px;border:1px solid #f1ce9e;transform:rotate(8deg);background:#b95f40}.quick-mode .mode-icon svg{width:35px;height:35px}.quick-mode .go{font-size:20px;right:10px;bottom:9px}.mode-card.league{background:#456b57;color:#f9efcf}.pickup-mode{background:#b4afc7}.pickup-mode .mode-icon{color:#4f485d}.home-numbers{display:flex;border-bottom:1px dashed var(--line);padding:20px 0;margin-bottom:18px;gap:7px}.home-numbers>div{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;border-right:1px solid var(--line)}.home-numbers>div:last-child{border:0}.home-numbers strong{font-size:23px;font-weight:400}.home-numbers span{font-size:10px;color:var(--muted)}.mini-player{display:flex;align-items:center;gap:11px;padding:10px 12px;width:100%;text-align:left;border:1px solid #aebda3;background:#e4e8d3;min-height:66px}.record-icon{display:grid;place-items:center;background:var(--ink);color:var(--gold);width:38px;height:38px;box-shadow:3px 3px 0 #a9b69b;font-size:22px;flex-shrink:0}.record-icon.large{width:58px;height:58px;font-size:34px}.mini-player>div{flex:1;min-width:0}.mini-player small{display:block;font-size:8px;color:#667766;letter-spacing:.6px}.mini-player b{font-size:15px;font-weight:400}.mini-player>span:last-child{font-size:21px}.mini-eq{font-size:13px;color:#65865a;white-space:nowrap;letter-spacing:-2px;margin-right:5px}.broadcast{display:flex;align-items:center;gap:9px;padding:24px 0 4px;font-size:10px;color:var(--muted)}.broadcast svg{width:19px;height:19px}
.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:480px;display:flex;align-items:center;padding:6px 9px calc(6px + var(--safe));z-index:20;background:var(--paper);border-top:2px solid var(--ink);box-shadow:0 -4px 0 #e1e4cd}.bottom-nav button{flex:1;display:flex;align-items:center;justify-content:center;flex-direction:column;min-height:51px;gap:4px;color:#7c8b78;font-size:10px}.bottom-nav button.active{color:var(--ink)}.bottom-nav svg{width:21px;height:21px}.bottom-nav button.active:after{content:'';position:absolute;width:22px;height:3px;top:1px;background:var(--orange)}.page-head{position:sticky;top:0;z-index:15;background:var(--paper);display:flex;align-items:center;gap:10px;padding:calc(10px + env(safe-area-inset-top,0px)) 16px 10px;border-bottom:2px solid var(--ink);margin-bottom:22px}.page-head h1{flex:1;font-size:17px;line-height:1.5;font-weight:400}.page-head>.badge{font-size:9px;max-width:96px}.back{width:38px;min-width:38px;min-height:40px;padding:7px;border-color:#aebc9f}.back svg{width:22px;height:22px}.section-heading{font-size:25px;font-weight:400;line-height:1.45;margin-bottom:8px}.section-description{font-size:12px;color:var(--muted);line-height:1.9;margin-bottom:18px}.step-row{display:flex;align-items:center;gap:8px;color:#8a957e;margin:20px 0;font-size:10px}.step-row .on{background:var(--gold);color:var(--ink);padding:4px 7px}.step-line{flex:1;height:1px;background:var(--line)}.team-list{display:grid;gap:17px}.team-card{width:100%;text-align:left;border:1px solid #a6b69f;background:var(--white);box-shadow:3px 3px 0 #ced5bc;padding:15px;position:relative}.team-card.selected{border:2px solid var(--ink);padding:14px;background:#e9ebd5;box-shadow:4px 4px 0 var(--ink)}.selected-mark{position:absolute;right:10px;top:-9px;font-size:9px;padding:2px 7px;background:var(--ink);color:var(--paper)}.team-heading{display:flex;gap:11px;align-items:center}.jersey{width:44px;height:49px;background:var(--team);color:var(--white);font-size:23px;display:grid;place-items:center;flex-shrink:0;clip-path:polygon(18% 0,35% 0,40% 12%,60% 12%,65% 0,82% 0,100% 28%,80% 43%,80% 100%,20% 100%,20% 43%,0 28%)}.class-code{font-size:8px;letter-spacing:1px;color:#81917b}.team-card h3{font-size:19px;font-weight:400;line-height:1.4}.team-style{font-size:11px;color:var(--muted)}.team-rating{margin-left:auto;text-align:right;font-size:29px;line-height:1.2;flex-shrink:0}.team-rating small{display:block;font-size:8px;color:var(--muted);margin-top:4px}.team-card .motto{font-size:12px;border-top:1px dashed var(--line);padding-top:11px;margin-top:12px}.team-skill-bars{display:flex;gap:9px;margin:13px 0 9px}.team-skill-bars>div{display:flex;align-items:center;gap:4px;flex:1;min-width:0;font-size:9px}.team-skill-bars i{background:#dce2ca;height:4px;flex:1;min-width:12px}.team-skill-bars i b{display:block;height:100%;background:var(--team)}.team-skill-bars strong{font-size:10px;font-weight:400}.team-meta{display:flex;align-items:center;gap:8px;font-size:10px;justify-content:space-between}.team-meta .core{display:flex;align-items:center;gap:5px;min-width:0}.team-meta .core .avatar{width:26px;height:29px}.team-meta .core b{margin-left:6px;font-weight:400;color:var(--green)}.card-weak{font-size:10px;color:#947350;line-height:1.7;padding-top:7px}.team-detail{margin:19px 0;padding:15px;background:#e2e7ce;border-left:4px solid var(--green);font-size:12px;line-height:1.9}.team-detail h3{font-size:16px;margin-bottom:6px;font-weight:400}.weak{color:#9e6748;margin-top:7px}.sticky-action{position:fixed;bottom:calc(65px + var(--safe));left:50%;transform:translateX(-50%);width:calc(100% - 40px);max-width:440px;padding:20px 0 10px;background:linear-gradient(0deg,var(--paper) 83%,#f3efdf00);z-index:18}.page:has(.sticky-action){padding-bottom:calc(178px + var(--safe))}.roster-top{background:var(--team);color:var(--white);display:flex;align-items:center;gap:14px;padding:18px;border:2px solid var(--ink);box-shadow:4px 4px 0 #b3c1a5;margin-bottom:20px}.roster-top h2{font-size:24px;font-weight:400}.roster-top p{font-size:11px;opacity:.9}.roster-top .jersey{background:#ffffff20;width:52px;height:58px}.hint{font-size:11px;line-height:1.9;border:1px dashed #afbe9e;padding:12px;background:#e4e8d2;color:#60775c;margin:13px 0}.preset-row{display:flex;gap:8px;margin:15px 0}.preset-row button{flex:1;border:1px solid #789274;background:#f9f4df;min-height:42px;font-size:12px;box-shadow:2px 2px 0 #c3cfb0}.roster-section{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:23px 0 12px}.roster-section h3{font-size:15px;font-weight:400}.roster-section small{font-size:9px;color:var(--muted);text-align:right}.player-row{display:flex;align-items:center;gap:9px;padding:9px 8px;margin-bottom:8px;background:var(--white);border:1px solid var(--line);min-height:81px}.player-row.swap-on{border:2px solid var(--orange);padding:8px 7px;background:#f5e4c1;box-shadow:2px 2px 0 #d5b581}.avatar{width:46px;height:53px;flex-shrink:0}.player-info{flex:1;min-width:0}.player-name{font-size:16px;line-height:1.5;display:flex;align-items:center;flex-wrap:wrap;gap:0 6px}.player-name .pos{font-size:9px;color:#7c8974;white-space:nowrap}.player-note{font-size:10px;line-height:1.8;color:#728367;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.overall{width:30px;flex-shrink:0;text-align:center;font-size:25px;line-height:1}.swap-button,.player-more{display:grid;place-items:center;min-width:36px;min-height:44px;flex-shrink:0;border:1px solid #afbea3;background:#edf0da;font-size:11px;padding:5px 7px}.player-more{padding:6px;width:36px;background:transparent}.player-more svg{width:18px;height:18px}.player-diff{display:flex;flex-wrap:wrap;gap:1px 6px;font-size:9px;line-height:1.7;margin-top:3px}.player-diff .up{color:#4f7848}.player-diff .down{color:#aa6547}.player-row:has(.player-diff){min-height:91px}.lineup-card{border:1px solid #a5b79a;background:#e1e7d0;margin:18px 0;padding:13px}.lineup-card h3{font-size:14px;font-weight:400}.lineup-values{display:grid;grid-template-columns:repeat(4,1fr);padding:10px 0;margin:10px 0;border-top:1px dashed #afbea0;border-bottom:1px dashed #afbea0}.lineup-values>div{text-align:center;border-right:1px solid #c1cdb0;display:flex;flex-direction:column}.lineup-values>div:last-child{border:0}.lineup-values strong{font-weight:400;font-size:24px;line-height:1.4}.lineup-values span{font-size:10px;color:#6f7e60}.lineup-card>p{font-size:11px;line-height:1.9;color:#61765b}.role-picks{display:flex;justify-content:space-between;gap:5px;margin-top:11px;flex-wrap:wrap;font-size:9px;color:#6f8065}.role-picks b{font-weight:400;color:#354f3b;margin-left:3px}.settings-block{margin:20px 0;padding:18px 0;border-top:1px dashed var(--line)}.settings-block h3{font-size:15px;font-weight:400}.choice-row{display:flex;gap:8px;margin:13px 0}.choice-row button{flex:1;min-height:44px;font-size:12px;background:var(--white);border:1px solid #a5b99b}.choice-row button.on{background:var(--gold);border:1px solid var(--ink);box-shadow:2px 2px 0 var(--ink)}.matchup{display:flex;align-items:center;justify-content:space-between;padding:22px 8px;background:#e2e7d0;border:2px solid var(--ink);box-shadow:4px 4px 0 #bcc7a9;margin-bottom:23px}.matchup-team{width:40%;text-align:center;display:flex;flex-direction:column;align-items:center;gap:10px;font-size:13px}.matchup-team .jersey{width:56px;height:60px}.vs{font-size:28px;color:#94a184}
/* Dossiers and playbook are normal scrollable pages; the court remains touch-only. */
.modal-shade{position:fixed;inset:0;z-index:100;display:flex;justify-content:center;align-items:flex-end;background:#19392fba;padding-top:env(safe-area-inset-top,0px)}.modal{width:100%;max-width:480px;max-height:91dvh;overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y;background:var(--paper);border:2px solid var(--ink);border-bottom:0;padding:18px 17px calc(24px + var(--safe));box-shadow:0 -5px 0 var(--gold);animation:modal .16s steps(4)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:17px}.modal-head h2{font-size:21px;line-height:1.4;font-weight:400}.close{min-width:44px;min-height:44px;font-size:24px;padding:0}.detail-top{display:flex;align-items:center;gap:15px;padding:12px;border:1px solid #aabc9e;background:#e4e9d2}.detail-top canvas{width:94px;height:108px;flex-shrink:0}.detail-top h3{font-size:30px;line-height:1.5;font-weight:400}.detail-top p{font-size:11px}.rating-lg{font-size:35px;color:var(--green);line-height:1.3}.rating-lg small{font-size:9px;color:#75866c;margin-left:6px}.detail-role{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-top:14px}.detail-role b{font-weight:400;font-size:13px;padding:3px 7px;background:var(--gold)}.detail-role span{font-size:10px;color:var(--muted)}.bio{font-size:13px;line-height:1.9;padding:13px 0;color:#738368}.detail-meta{font-size:11px;line-height:1.9;border-bottom:1px dashed var(--line);padding-bottom:13px;color:#6e8064}.attribute-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px 19px;margin:19px 0}.attribute .row{font-size:12px;gap:6px;justify-content:space-between}.attribute .row b{font-size:13px;font-weight:400}.attr-track{height:6px;background:#d9dfc6;margin-top:5px}.attr-track i{display:block;height:100%;background:var(--green)}.trait{background:#e2e8cf;border-left:3px solid #688a5c;font-size:11px;line-height:1.8;padding:10px 12px;margin:9px 0}.trait b{display:block;font-size:14px;color:var(--green);font-weight:400}.weakness{font-size:12px;color:#a46b4c;line-height:1.8;padding:12px 0}.fineprint{font-size:10px;color:var(--muted);text-align:center;margin-top:15px}.manual-card{border:1px solid var(--line);background:var(--white);padding:17px 15px;margin:15px 0}.manual-card h3{font-size:17px;font-weight:400;display:flex;align-items:center;gap:10px;margin-bottom:10px}.manual-card h3>span{font-size:11px;padding:1px 5px;background:var(--gold)}.manual-card p{font-size:12px;color:#6e8065;line-height:1.95}.manual-card .keys{display:flex;gap:7px;margin-top:13px}.manual-card .keys span{font-size:12px;background:#e3e9d1;border-bottom:2px solid #b9c8a8;padding:6px}.setting-row{padding:19px 0;border-bottom:1px dashed var(--line);display:flex;align-items:center;justify-content:space-between;gap:15px}.setting-row h3{font-size:15px;font-weight:400}.setting-row p{font-size:11px;color:var(--muted);margin-top:4px}.switch{min-width:61px;min-height:40px;border:1px solid var(--ink);background:var(--gold);font-size:12px;box-shadow:2px 2px 0 #bdc4ab;padding:6px}.switch.off{background:#d5dfc6;color:#6e8165}.credits{font-size:10px;color:var(--muted);line-height:2;margin:30px 0}.filter-row{display:flex;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;touch-action:pan-x;margin:17px 0;padding-bottom:10px}.filter-row button{min-height:41px;font-size:12px;white-space:nowrap;background:var(--white);border:1px solid var(--line);padding:7px 11px}.filter-row button.on{background:var(--ink);color:var(--paper)}#toast{position:fixed;left:50%;bottom:calc(105px + var(--safe));transform:translateX(-50%);max-width:90%;background:var(--ink);color:var(--paper);padding:10px 16px;border:1px solid var(--gold);font-size:12px;z-index:200;pointer-events:none;opacity:0;transition:opacity .12s}#toast.show{opacity:1}
/* Twelve locally composed tracks, grouped as one quick thumb-friendly drawer. */
.music-card{padding:15px;background:#e3e8d0;border:2px solid var(--ink);box-shadow:4px 4px 0 #b6c3a4;margin:15px 0 22px}.now-playing{display:flex;align-items:center;gap:14px;margin:20px 0}.now-playing>div:last-child{flex:1;min-width:0}.now-playing h3{font-size:25px;font-weight:400;line-height:1.4;margin:4px 0}.now-playing p{font-size:10px;color:#74836a}.music-transport{display:flex;align-items:center;gap:9px;margin-top:18px}.music-transport button{min-height:44px;border:1px solid var(--ink);box-shadow:2px 2px 0 #afbda0}.transport-button{width:45px;background:#f5f0da;font-size:14px}.music-play{flex:1;background:var(--ink);color:var(--paper);font-size:13px}.music-play.off{background:var(--gold);color:var(--ink)}.volume-label{display:flex;justify-content:space-between;font-size:12px;margin-top:20px}.music-card input[type=range]{width:100%;height:40px;accent-color:#466f55;touch-action:pan-x;margin:3px 0 8px}.playlist-setting{display:flex;align-items:center;justify-content:space-between;border-top:1px dashed #b0bf9c;border-bottom:1px dashed #b0bf9c;padding:14px 0;gap:10px}.playlist-setting b{font-size:13px;font-weight:400}.playlist-setting p{font-size:9px;color:#7d8c71;line-height:1.9;margin-top:3px}.library-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:20px 0 10px}.library-head h4{font-size:14px;font-weight:400}.library-head>span{font-size:9px;color:#7a8970}.track-library{display:grid;gap:6px}.track-row{display:flex;align-items:center;text-align:left;gap:10px;width:100%;min-height:63px;background:#f7f3e2;border:1px solid #b6c5a7;padding:9px}.track-row.playing{background:#d4dfb9;border-color:var(--green);box-shadow:inset 3px 0 0 var(--green)}.track-number{font-size:12px;color:#8d9a7e;min-width:22px}.track-row>div{flex:1;min-width:0}.track-row b{display:block;font-size:14px;line-height:1.7;font-weight:400}.track-row>div>span{display:block;font-size:9px;color:#7a896b}.track-row small{font-size:14px;text-align:center;line-height:1.3;color:#6c7c5f}.track-row small>span{display:block;font-size:7px;letter-spacing:1px}.track-row>i{font-style:normal;font-size:11px;min-width:25px;text-align:center;color:#648657}.music-note{font-size:10px;color:#7a896c;line-height:1.9;margin-top:15px}
/* League and evidence-based post-match reporting. */
.league-banner{padding:20px 17px;background:#486e58;color:#f7eed0;border:2px solid var(--ink);box-shadow:4px 4px 0 #b9c6a8}.league-banner h2{font-size:26px;font-weight:400;line-height:1.6;margin:8px 0}.league-banner p{font-size:11px;color:#d0dbba}.league-banner .eyebrow{color:#ccdab5}.league-stages{display:flex;gap:8px;margin:23px 0}.league-stages span{flex:1;font-size:11px;padding-bottom:9px;border-bottom:3px solid #c5ceb4;color:#8a987e}.league-stages .on{color:var(--ink);border-color:var(--orange)}.table{width:100%;border-collapse:collapse;font-size:12px;margin:13px 0 22px}.table th{font-size:10px;font-weight:400;color:#798b6b;text-align:center;padding:10px 3px;border-bottom:1px solid #839e7b}.table td{padding:12px 3px;text-align:center;border-bottom:1px solid #d1dbc0}.table th:first-child,.table td:first-child{text-align:left}.table tr.you{background:#e0e7ca}.table .team-dot{display:inline-block;width:8px;height:10px;margin-right:5px}.fixture{display:flex;justify-content:space-between;align-items:center;gap:6px;background:var(--white);border:1px solid var(--line);padding:13px 10px;margin:10px 0;font-size:11px}.fixture b{font-size:13px;color:#a26b43;font-weight:400;white-space:nowrap}.result-title{text-align:center;font-size:28px;font-weight:400;color:var(--green);line-height:1.6;margin:22px 0 7px}.result-score{font-size:61px;text-align:center;line-height:1.5;letter-spacing:-2px;margin:9px 0}.result-score>span{color:#a0b08d;padding:0 16px;font-size:36px}.result-names{display:flex;justify-content:space-between;gap:8px;font-size:12px;text-align:center;border-bottom:1px dashed var(--line);padding:0 5px 19px}.mvp{display:flex;align-items:center;gap:14px;background:var(--gold);border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);padding:15px;margin:23px 0}.mvp canvas{width:72px;height:82px}.mvp h3{font-size:25px;font-weight:400;line-height:1.6}.mvp .eyebrow{font-size:8px;color:#80663f}.mvp p{font-size:11px;line-height:1.8}.stat-table{font-size:11px}.stat-table td,.stat-table th{padding:10px 2px}.stat-table td:first-child{width:29%;font-size:11px}.result-actions{display:grid;gap:14px;margin:24px 0}.shot-charts{display:flex;gap:12px;margin:14px 0 24px}.shot-charts>div{flex:1;min-width:0}.shot-charts p{font-size:13px;text-align:center;margin-bottom:9px}.shot-charts canvas{width:100%;height:auto;border:1px solid #a5b799}.analytics-card{border:1px solid #b3c3a3;background:#e7ebd7;padding:13px;margin:23px 0}.analytics-card>.roster-section{margin:0 0 15px}.analytics-versus{display:grid;grid-template-columns:1fr 1.2fr 1fr;font-size:10px;text-align:center;color:#7d8b71;margin-bottom:6px}.compare-stat{display:grid;grid-template-columns:1fr 1.2fr 1fr;align-items:center;padding:8px 0;text-align:center;border-bottom:1px dashed #c3cfb2}.compare-stat b{font-weight:400;font-size:21px}.compare-stat>span{font-size:11px;color:#6e8161}.analytics-note{font-size:9px;line-height:1.9;color:#859276;margin:12px 0 17px}.zone-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding-top:15px;border-top:1px solid #b9c7a8}.zone-grid h4{font-size:11px;font-weight:400;margin-bottom:9px}.zone-grid p{display:flex;justify-content:space-between;gap:5px;align-items:center;padding:6px 0;font-size:10px}.zone-grid b{font-weight:400;font-size:12px}.zone-grid small{font-size:9px;color:#819071;min-width:28px;text-align:right}.coach-notes{padding:15px;background:#ece2c9;border-left:3px solid #bc9462;font-size:11px;line-height:1.9;margin:20px 0}.coach-notes p{padding:5px 0;color:#817350}.history-card{border:1px solid #b3c2a5;background:var(--white);box-shadow:3px 3px 0 #d1d8bf;padding:14px;margin:13px 0 18px}.history-head{display:flex;gap:9px;align-items:center;font-size:10px;color:#718266}.history-head small{margin-left:auto;color:#8a987c;font-size:9px}.history-head .badge{font-size:9px}.history-score{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:15px 2px}.history-score>span{font-size:13px}.history-score>b{font-size:30px;line-height:1.2;font-weight:400;white-space:nowrap}.history-score i{font-size:19px;font-style:normal;color:#a8b497;padding:0 11px}.history-metrics{display:flex;justify-content:space-between;gap:5px;font-size:10px;color:#7d8d6e;padding:10px 0;border-top:1px dashed #c8d2b8}.history-star{font-size:10px;color:#9a7c4b;line-height:1.8;padding-top:5px}.history-card.compact{padding-bottom:3px;margin-bottom:0}.history-summary{display:flex;justify-content:space-around;text-align:center;margin:23px 0;border:1px solid #bdc9ac;background:#e4e9d2;padding:15px 5px}.history-summary>div{display:flex;flex-direction:column;flex:1;border-right:1px solid #c2ceb0}.history-summary>div:last-child{border:0}.history-summary strong{font-weight:400;font-size:29px}.history-summary span{font-size:10px;color:#7a8b6a}.empty-history{display:flex;align-items:center;gap:12px;width:100%;background:#e8e9d4;border:1px dashed #a5b699;padding:15px;text-align:left}.empty-history>span{font-size:27px;color:#9eb08d}.empty-history>div{flex:1;min-width:0}.empty-history b{font-weight:400;font-size:12px}.empty-history p{font-size:10px;color:#809171;margin-top:5px}.empty-history>svg{width:18px;height:18px}.rotation-tip{border:1px solid #9db685;background:#dde8c6;padding:12px;margin:16px 0}.rotation-tip b{font-weight:400;font-size:12px}.rotation-tip p{font-size:12px;margin:8px 0}.rotation-tip small{font-size:10px;color:#778c64}.rotation-tip button{font-size:12px;min-height:42px;margin-top:11px}
/* Match HUD: a compact score strip, an unobstructed court, then two-thumb controls. */
.game-shell{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:#53775f;touch-action:none;overscroll-behavior:none;user-select:none;-webkit-user-select:none}.scoreboard{display:flex;align-items:center;gap:8px;min-height:61px;flex-shrink:0;padding:calc(8px + env(safe-area-inset-top,0px)) 13px 9px;background:#203e34;color:#f4efd5;border-bottom:2px solid #a6b28b}.score-team{width:27%;display:flex;gap:7px;align-items:center;font-size:15px;line-height:1.3;min-width:0}.score-team small{display:block;color:#a9bc98;font-size:8px;margin-top:5px;white-space:nowrap}.score-team.away{justify-content:flex-end;text-align:right}.kit-dot{width:8px;height:23px;border:1px solid #dfe1c2;flex-shrink:0}.score-numbers{flex:1;display:flex;justify-content:center;align-items:center;gap:11px;font-size:30px;line-height:1.1;white-space:nowrap}.score-numbers b{font-weight:400}.score-numbers span{font-size:15px;color:#7d9a77}.game-meta{height:29px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:0 13px;background:#e9dfbd;border-bottom:2px solid #2e4d3c;color:#5b7050;font-size:9px}.game-meta #clock{font-size:15px;color:#344b35;font-weight:400}.shot-clock{display:flex;align-items:center;gap:5px}.shot-clock b{font-size:13px;color:#fff2ce;font-weight:400;min-width:24px;padding:0 4px;text-align:center;background:#b96542}.shot-clock.danger b{background:#a14c3c;animation:blink .5s steps(2) infinite}.court-wrap{position:relative;flex:1;min-height:170px;overflow:hidden}.court-wrap canvas{width:100%;height:100%}.controls{height:calc(220px + var(--safe));padding:0 12px calc(7px + var(--safe));flex-shrink:0;background:#254c3c;border-top:2px solid #162f25;color:#f4edcf}.utility-bar{height:43px;display:flex;gap:8px;align-items:center;border-bottom:1px solid #62806080}.utility-bar button{display:flex;align-items:center;gap:5px;justify-content:center;padding:5px 11px;border:1px solid #63825f;background:#345e48;min-height:32px;font-size:11px;color:#d9e0bf}.utility-bar button svg{width:13px;height:13px}.utility-bar button:last-child{margin-left:auto;background:#435f48}.utility-bar .active{color:#e8c47c;border-color:#bba56d}.utility-bar button:disabled{opacity:.4}.touch-deck{display:flex;align-items:center;justify-content:space-between;height:142px;position:relative}.joystick-zone{display:grid;place-items:center;position:relative;width:137px;height:142px;touch-action:none}.joystick-base{position:relative;width:110px;height:110px;background:#173b2c;border:2px solid #789268;box-shadow:inset 0 0 0 7px #2e543e,3px 3px 0 #153326;clip-path:polygon(19% 0,81% 0,81% 5%,95% 5%,95% 19%,100% 19%,100% 81%,95% 81%,95% 95%,81% 95%,81% 100%,19% 100%,19% 95%,5% 95%,5% 81%,0 81%,0 19%,5% 19%,5% 5%,19% 5%)}.joystick-base:before,.joystick-base:after{content:'';position:absolute;width:1px;height:73%;top:13.5%;left:50%;background:#6f8b5c55}.joystick-base:after{transform:rotate(90deg)}.joystick-knob{position:absolute;left:calc(50% - 24px);top:calc(50% - 24px);width:48px;height:48px;border:3px solid #c7d3a5;background:#8eaa75;box-shadow:3px 3px 0 #122f22;pointer-events:none;display:grid;place-items:center;z-index:2;clip-path:polygon(0 8px,8px 8px,8px 0,calc(100% - 8px) 0,calc(100% - 8px) 8px,100% 8px,100% calc(100% - 8px),calc(100% - 8px) calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,8px calc(100% - 8px),0 calc(100% - 8px))}.joystick-knob:after{content:'';width:11px;height:11px;border:1px solid #4e7550}.joystick-zone.sprint .joystick-knob{background:#d5b567;border-color:#f2d99b}.joy-tip{position:absolute;bottom:0;left:0;width:100%;text-align:center;font-size:9px;color:#92ae7c}.action-pad{width:204px;height:142px;position:relative;flex-shrink:0}.action-button{position:absolute;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:2px;touch-action:none;background:#719367;color:#f3f1d7;border:2px solid #c4d3a8;box-shadow:3px 3px 0 #142e22;line-height:1.35;clip-path:polygon(0 8px,8px 8px,8px 0,calc(100% - 8px) 0,calc(100% - 8px) 8px,100% 8px,100% calc(100% - 8px),calc(100% - 8px) calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,8px calc(100% - 8px),0 calc(100% - 8px));padding:3px;font-size:15px}.action-button svg{width:20px;height:20px}.action-button small{font-size:8px;opacity:.85}.action-button.pressed{transform:translate(2px,2px);filter:brightness(1.13);background:#dfc178;color:#273f2b}.action-button.unavailable{opacity:.5}#pass-btn{width:72px;height:70px;left:3px;top:62px}#shoot-btn{right:2px;top:2px;width:86px;height:78px;background:#e6ba69;border-color:#ffe2a1;color:#31482f;font-size:17px}#shoot-btn small{font-size:9px}#drive-btn{right:1px;top:89px;width:83px;height:47px;flex-direction:row;gap:6px;font-size:14px;background:#b37853;border-color:#d8b889}#drive-btn svg{width:17px;height:17px}#shoot-btn.ready{background:#b2d58b;border-color:#e0f6b5;box-shadow:0 0 0 3px #b0d58b70}#shoot-btn.ready.pressed{background:#cae4a2}.action-button.containing{background:#84a773!important;border-color:#d0e7af!important}.controlled-info{height:25px;display:flex;gap:7px;align-items:center;margin-top:0;font-size:11px}.controlled-info .num{background:#d9b96d;color:#2c472f;padding:0 4px;font-size:10px}.controlled-info .muted{color:#97ad82;font-size:10px}.stamina-track{height:6px;width:64px;background:#153526;margin-left:auto;border:1px solid #69825b}.stamina-track i{display:block;height:100%;background:#bad18c}.controlled-info .energy{width:43px;text-align:right;color:#b7c99a;font-size:10px}.controlled-info .energy.recovering{color:#d5efa0}.game-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:5;padding:18px;background:#173b2cb3}.game-overlay-box{background:var(--paper);color:var(--ink);padding:22px 18px;border:2px solid var(--ink);box-shadow:5px 5px 0 #123225;width:100%;max-width:330px;max-height:100%;overflow-y:auto;touch-action:pan-y;text-align:center}.game-overlay-box h2{font-size:25px;font-weight:400;margin:8px 0}.game-overlay-box>p{font-size:12px;color:#7a8b69;line-height:1.8;margin-bottom:15px}.game-overlay-box button{margin-top:12px;width:100%}.tutorial-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0;text-align:left}.tutorial-grid>div{padding:10px;border:1px solid #bccbae;background:#e7ecd5}.tutorial-grid b{font-size:13px;font-weight:400;display:block;margin-bottom:5px}.tutorial-grid p{font-size:10px;color:#7f9070;line-height:1.8}.pause-score{font-size:34px;margin:8px 0}.pause-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pause-actions button{margin:0;font-size:12px;min-height:40px;padding:8px}.pause-actions .primary,.pause-actions button:last-child{grid-column:span 2}.game-overlay:has(.pause-actions){padding:10px}.game-overlay-box:has(.pause-actions){padding:15px}.game-overlay-box:has(.pause-actions) h2{font-size:22px;margin:4px 0}.game-overlay-box:has(.pause-actions) p{font-size:11px;margin-bottom:12px}.game-overlay-box:has(.pause-actions) .pause-score{font-size:29px;line-height:1.3;margin:6px 0}.screen-flash{position:absolute;inset:0;border:4px solid #edcf87;pointer-events:none;animation:ripple .4s steps(4) forwards}.ripple{position:absolute;inset:0;border:3px solid #efdb9b;pointer-events:none;animation:ripple .3s steps(4) forwards}.loading-cover{min-height:100dvh;display:grid;place-items:center}.mobile-note{display:none}
.pickup-size{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:22px 0}.pickup-size button{display:flex;flex-direction:column;align-items:center;min-height:76px;border:1px solid #9eaf8e;background:var(--white);padding:11px 3px;box-shadow:3px 3px 0 #c4ceb1}.pickup-size b{font-weight:400;font-size:25px;line-height:1.4}.pickup-size span{font-size:11px;margin-top:3px}.pickup-size button.on{border:2px solid var(--ink);padding:10px 2px;background:var(--gold);box-shadow:3px 3px 0 var(--ink)}.pickup-rule{font-size:12px;background:#e0e7cc;border-left:4px solid #749666;padding:14px;line-height:1.9}.pickup-rule b{display:block;font-weight:400;font-size:14px;margin-bottom:6px}.pickup-rule p{color:#718564}.pickup-draw{display:flex;align-items:center;justify-content:space-between;gap:9px;margin:23px 0}.pickup-draw>div{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:14px}.pickup-draw strong{font-size:26px;font-weight:400}.pickup-draw small{display:block;width:100%;font-size:9px;color:#7c8e6c;text-align:center}.team-dot{display:inline-block;width:9px;height:16px}.home-dot{background:#4e7f72}.away-dot{background:#c87552}.pickup-opponent{margin:21px 0;border:1px solid #b3c3a3;padding:13px;background:#e8e9d3}.pickup-opponent summary{font-size:13px;min-height:36px;cursor:pointer}.pickup-opponent[open] summary{margin-bottom:12px}.pickup-draw+button svg{width:17px;height:17px}
#rotate-notice{display:none;position:fixed;inset:0;z-index:300;background:#254d3b;color:#f3edcf;touch-action:none;text-align:center;padding:28px;flex-direction:column;justify-content:center;align-items:center;gap:16px}#rotate-notice h2{font-size:23px;font-weight:400}#rotate-notice p{font-size:13px;color:#c4d3ac}.rotate-phone{display:grid;place-items:center;width:44px;height:68px;border:4px solid #e5c172;box-shadow:4px 4px 0 #173525;font-size:30px;color:#e5c172}
@keyframes modal{from{transform:translateY(18px);opacity:.5}to{transform:translateY(0);opacity:1}}@keyframes pageIn{from{opacity:.6}to{opacity:1}}@keyframes ripple{to{opacity:0}}@keyframes blink{50%{background:#d38049}}
@media(min-width:520px){body{background-color:#d4ddca;background-image:linear-gradient(#89a38124 1px,transparent 1px),linear-gradient(90deg,#89a38124 1px,transparent 1px);background-size:24px 24px}#app{border-left:1px solid #b2c1a0;border-right:1px solid #b2c1a0}.modal-shade{left:calc(50% - 240px);right:calc(50% - 240px)}.hero{height:235px}.home-title{font-size:43px}}
@media(max-width:360px){.content{padding:0 15px}.brandbar{padding-left:15px;padding-right:15px}.brand-name{font-size:21px}.brand-sub{font-size:6px;letter-spacing:.8px}.brand-ball{width:33px;height:35px}.brand{gap:8px}.home-title{font-size:34px}.title-star{font-size:48px;right:0}.intro-bottom p{font-size:11px}.sun-stamp{font-size:9px;padding:4px 7px}.hero{height:182px}.hero-sticker{font-size:16px;padding:9px 7px;right:9px}.modes{gap:11px}.mode-card{padding:13px 11px;min-height:166px}.mode-card h2{font-size:20px}.mode-card p{font-size:9px}.mode-card .eyebrow{font-size:7px}.quick-mode{min-height:122px}.quick-mode h2{font-size:27px}.quick-mode p{font-size:10px}.quick-mode .mode-icon{width:41px;height:44px;margin-right:4px}.quick-mode .mode-icon svg{width:29px;height:29px}.home-numbers strong{font-size:21px}.home-numbers span{font-size:9px}.mini-player{gap:9px;padding:9px}.mini-player small{font-size:7px}.mini-player b{font-size:14px}.mini-eq{display:none}.section-line{font-size:11px}.section-line>b{font-size:7px}.sticky-action{width:calc(100% - 30px)}.page-head{padding-left:12px;padding-right:12px;gap:8px}.page-head h1{font-size:15px}.page-head>.badge{font-size:8px;max-width:70px;padding:2px 5px}.team-card{padding:13px 11px}.team-card.selected{padding:12px 10px}.team-card h3{font-size:18px}.team-skill-bars{gap:7px}.team-meta{font-size:9px}.player-row{gap:6px;padding:9px 6px}.player-row.swap-on{padding:8px 5px}.avatar{width:37px;height:47px}.player-name{font-size:14px}.player-name .pos{font-size:9px}.player-note{font-size:9px}.overall{font-size:23px;width:26px}.swap-button{min-width:35px;padding:4px;font-size:11px}.player-more{width:33px;min-width:33px;padding:5px}.lineup-card{padding:11px}.lineup-card h3{font-size:13px}.role-picks{font-size:8px}.detail-top{padding:9px;gap:11px}.detail-top canvas{width:79px;height:94px}.detail-top h3{font-size:27px}.detail-top p{font-size:10px}.rating-lg{font-size:31px}.rating-lg small{font-size:8px}.detail-role{gap:6px;flex-wrap:wrap}.detail-role span{font-size:10px}.now-playing{gap:11px}.now-playing h3{font-size:23px}.record-icon.large{width:48px;height:51px}.music-card{padding:13px}.library-head>span{font-size:8px}.track-row{gap:8px}.track-row b{font-size:13px}.controls{padding-left:7px;padding-right:7px}.joystick-zone{width:116px}.action-pad{width:182px}.joystick-base{width:99px;height:99px}.utility-bar{gap:6px}.utility-bar button{font-size:10px;padding:5px 9px}.scoreboard{padding-left:11px;padding-right:11px;gap:6px}.score-team{font-size:14px}.score-team small{font-size:7px}.score-numbers{font-size:28px;gap:8px}.score-team .kit-dot{width:6px}.game-meta{padding:0 11px;font-size:8px}.result-title{font-size:25px}.result-score{font-size:55px}.stat-table{font-size:10px}.stat-table td:first-child{font-size:10px}.stat-table th{font-size:9px}}
@media(max-height:710px){.controls{height:calc(208px + var(--safe))}.touch-deck,.joystick-zone,.action-pad{height:132px}.utility-bar{height:41px}.joystick-base{width:98px;height:98px}.joy-tip{display:none}#shoot-btn{top:1px;width:81px;height:75px}#pass-btn{top:59px;height:69px;width:69px}#drive-btn{top:83px;height:46px;width:81px}.controlled-info{height:24px}.game-overlay{padding:10px}.game-overlay-box{padding:15px 12px}.tutorial-grid{gap:7px;margin:12px 0}.tutorial-grid>div{padding:8px}.tutorial-grid b{font-size:12px}.tutorial-grid p{font-size:9px}.game-overlay-box h2{font-size:21px}.game-overlay-box>p{font-size:10px;margin-bottom:10px}.game-overlay-box button{font-size:12px;min-height:42px;padding:8px}.tutorial-grid{grid-template-columns:1fr 1fr}}
@media(orientation:landscape) and (pointer:coarse){#rotate-notice{display:flex}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

.title-star svg{display:block;width:50px;height:50px}.title-star{top:18px;right:5px;color:var(--green)}@media(max-width:360px){.title-star svg{width:44px;height:44px}}

.hero{display:block;width:100%;padding:0;text-align:left}
@media(max-height:710px){.home-intro{padding-top:18px;padding-bottom:17px}.home-title{font-size:32px;margin-top:12px;margin-bottom:13px}.home-intro .intro-bottom p{font-size:10px}.hero{height:162px}.home-intro .sun-stamp{font-size:8px}.home-intro .title-star svg{width:40px;height:40px}}

/* v1.8: a playable lesson and personal thumb layout, sharing the match controls. */
.practice-entry{display:flex;gap:10px;align-items:center;width:100%;margin-top:17px;padding:12px 11px;text-align:left;border:2px solid var(--ink);background:#dbd7e6;box-shadow:3px 3px 0 #a9ad9a}.practice-entry-icon{display:grid;place-items:center;width:35px;height:38px;background:#6a6b83;color:#f5efd9;border:1px solid #4e5b56;flex-shrink:0}.practice-entry-icon svg{width:24px;height:24px}.practice-entry>span:nth-child(2){flex:1;min-width:0}.practice-entry b{display:block;font-size:15px;font-weight:400}.practice-entry small{display:block;font-size:10px;color:#6b6c7b;margin-top:2px}.practice-entry>span:last-child{font-size:24px}.practice-lessons{display:grid;gap:14px;margin:24px 0}.practice-lesson{display:flex;align-items:center;gap:12px;text-align:left;width:100%;padding:16px 13px;background:var(--white);border:2px solid var(--ink);box-shadow:3px 3px 0 #c6ceb7}.practice-lesson .lesson-no{font-size:26px;line-height:1;color:#9ca888;align-self:flex-start;padding-top:4px}.practice-lesson h3{font-size:23px;font-weight:400;margin:4px 0}.practice-lesson p{font-size:12px;line-height:1.8;color:var(--muted)}.practice-lesson>div{flex:1;min-width:0}.practice-lesson>span:last-child{font-size:21px}.practice-lesson:first-child{background:#e6c477}.practice-lesson:first-child .lesson-no{color:#887945}.touch-settings{padding:15px;background:#e3e8d4;border:2px solid var(--ink);margin:22px 0}.touch-settings h3{font-size:17px;font-weight:400}.touch-settings>p{font-size:11px;line-height:1.8;color:#6b7b61;margin:10px 0 14px}.touch-choice{margin-top:14px;border-top:1px dashed #bdc8ab;padding-top:12px}.touch-choice>b{font-size:13px;font-weight:400}.touch-choice .choice-row{margin:8px 0}.touch-choice .choice-row button{min-height:44px;font-size:12px}.touch-choice>small{display:block;font-size:10px;color:#718264;line-height:1.8}.touch-preview{display:flex;align-items:center;justify-content:space-between;gap:20px;height:82px;margin:18px 0 2px;padding:10px 22px;background:#315743;border:1px solid #658664;color:#e7dfb9}.touch-preview.mirrored{flex-direction:row-reverse}.preview-joy{width:48px;height:48px;display:grid;place-items:center;border:2px solid #adbf91;outline:5px solid #214532;background:#6b8b5d;font-size:11px}.preview-action{width:72px;padding:5px 8px;text-align:center;font-size:12px;line-height:1.7;background:#d5b46b;color:#30432d;border:2px solid #f0d49a}.touch-settings .setting-row{gap:12px;padding:14px 0}.touch-settings .setting-row:last-child{border-bottom:0;padding-bottom:2px}.touch-settings .setting-row h3{font-size:14px}.touch-settings .setting-row p{font-size:10px}.touch-settings .switch{min-width:54px;min-height:42px;flex-shrink:0}.game-shell[data-handedness=left] .touch-deck{flex-direction:row-reverse}.game-shell[data-handedness=left] #pass-btn{left:auto;right:3px}.game-shell[data-handedness=left] #shoot-btn{right:auto;left:2px}.game-shell[data-handedness=left] #drive-btn{right:auto;left:1px}.game-shell[data-control-size=large] .controls{height:calc(236px + var(--safe))}.game-shell[data-control-size=large] .touch-deck,.game-shell[data-control-size=large] .joystick-zone,.game-shell[data-control-size=large] .action-pad{height:158px}.game-shell[data-control-size=large] .joystick-zone{width:127px}.game-shell[data-control-size=large] .action-pad{width:214px}.game-shell[data-control-size=large] #shoot-btn{width:94px;height:88px;top:2px;font-size:18px}.game-shell[data-control-size=large] #pass-btn{width:78px;height:78px;top:70px;font-size:16px}.game-shell[data-control-size=large] #drive-btn{width:90px;height:52px;top:96px;font-size:15px}.practice-shell .utility-bar{height:46px;gap:6px}.practice-shell .utility-bar button{min-width:44px;min-height:44px;padding:5px 9px;font-size:11px}.practice-shell .utility-bar [data-a=practice-next]{flex:1;margin-left:0;color:#fff0c1;background:#877044}.practice-shell .utility-bar [data-a=practice-next]:disabled{opacity:.45;background:#345e48;color:#d9e0bf}.practice-shell .utility-bar button:last-child{margin-left:0}.practice-shell .controls{height:calc(223px + var(--safe))}.practice-shell[data-control-size=large] .controls{height:calc(239px + var(--safe))}.practice-instruction{position:absolute;left:10px;right:10px;bottom:31px;z-index:3;padding:9px 11px;background:#f3eddbf2;border:2px solid #405d45;color:#2f4837;box-shadow:3px 3px 0 #1c3e2c66;pointer-events:none;max-height:108px;overflow:hidden}.practice-instruction.at-top{top:9px;bottom:auto}.practice-instruction.complete{background:#d6e4bff2;border-color:#739e60}.practice-card-head{display:flex;gap:8px;align-items:center;font-size:10px;color:#74865d}.practice-card-head b{font-size:14px;flex:1;font-weight:400;color:#324e37}.practice-instruction p{font-size:12px;line-height:1.6;margin-top:3px}.practice-instruction[hidden],.court-coach[hidden]{display:none}.guide-target{animation:guideGlow 1s steps(2,end) infinite!important}.guide-target .joystick-base{border-color:#ffe39c;box-shadow:inset 0 0 0 7px #647843}.practice-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:14px 0}.practice-summary>span{display:flex;flex-direction:column;font-size:10px;background:#e0e7cc;padding:9px 3px}.practice-summary b{display:block;font-size:23px;font-weight:400;color:#547142}.court-coach{position:absolute;top:10px;left:10px;right:58px;z-index:2;max-width:320px;padding:8px 10px;border:1px solid #bece9c;background:#294d3ce8;color:#f4e7b9;font-size:11px;line-height:1.6;pointer-events:none}.court-coach.at-bottom{top:auto;bottom:34px}.action-button:disabled{filter:saturate(.5);opacity:.65}.touch-settings .badge{font-size:9px}@keyframes guideGlow{50%{filter:brightness(1.22)}}
@media(max-width:360px){.practice-entry{padding:10px 8px;gap:8px}.practice-entry b{font-size:13px}.practice-entry small{font-size:9px}.practice-entry-icon{width:30px;height:35px}.practice-lesson{padding:13px 10px;gap:9px}.practice-lesson h3{font-size:21px}.practice-lesson p{font-size:11px}.practice-lesson .lesson-no{font-size:23px}.touch-settings{padding:12px}.touch-settings h3{font-size:15px}.game-shell[data-control-size=large] .joystick-zone{width:104px}.game-shell[data-control-size=large] .action-pad{width:194px}.practice-shell .utility-bar button{padding:4px 8px}.practice-instruction{left:8px;right:8px;padding:7px 9px}.practice-card-head b{font-size:13px}.practice-instruction p{font-size:11px}}
@media(max-height:710px){.game-shell[data-control-size=large] .controls{height:calc(224px + var(--safe))}.game-shell[data-control-size=large] .touch-deck,.game-shell[data-control-size=large] .joystick-zone,.game-shell[data-control-size=large] .action-pad{height:148px}.practice-shell .controls{height:calc(213px + var(--safe))}.practice-shell[data-control-size=large] .controls{height:calc(229px + var(--safe))}.practice-instruction{max-height:93px}.practice-instruction p{font-size:11px}.practice-shell .game-overlay-box h2{font-size:21px}.practice-shell .game-overlay-box>p{font-size:11px}}
.practice-feedback{display:block;margin-top:4px;padding-top:4px;border-top:1px dashed #b3c4a0;color:#6e7f52;font-size:10px;line-height:1.6}.practice-instruction:has(.practice-feedback){max-height:132px}.practice-instruction.compact{max-height:40px;padding-top:7px;padding-bottom:7px}.practice-instruction.compact p,.practice-instruction.compact .practice-feedback{display:none}
/* v1.9: stable gesture intent stays above the thumbs, without reducing court size. */
.touch-intent{position:absolute;bottom:7px;left:9px;right:9px;z-index:3;pointer-events:none;display:flex;align-items:center;gap:10px;justify-content:space-between;padding:7px 9px;min-height:34px;max-height:44px;border:1px solid #e4cf91;background:#284e3aee;color:#fff0bf;box-shadow:2px 2px 0 #193a2d70;overflow:hidden}.touch-intent[hidden]{display:none}.touch-intent b{font-weight:400;font-size:13px;white-space:nowrap}.touch-intent small{font-size:10px;line-height:1.4;text-align:right;color:#d4dcb0;max-width:49%}.touch-intent.danger{border-color:#e8b08e;background:#5b4338ef}.touch-intent.danger small{color:#ffd6ad}@media(max-width:360px){.touch-intent{gap:6px;padding:6px 8px}.touch-intent b{font-size:12px}.touch-intent small{font-size:9px}}
/* Training has its own steady, readable instruction space. The ball stays clear. */
.practice-shell>.scoreboard,.practice-shell>.game-meta{display:none}.practice-top{flex:none;background:#f3eddb;color:#2f4837;border-bottom:3px solid #819673;padding:5px 12px 9px}.practice-top .practice-instruction{position:static;max-height:none;overflow:visible;padding:0;border:0;background:transparent;box-shadow:none;pointer-events:auto}.practice-top .practice-card-head{min-height:44px;font-size:11px;gap:9px}.practice-top .practice-card-head b{font-size:16px}.practice-top .practice-choose{min-width:48px;min-height:44px;padding:4px 7px;border:1px solid #9cac83;background:#e0e7cb;font-size:12px;color:#3c563c}.practice-top .practice-instruction p{font-size:13px;line-height:1.65;margin:1px 0 7px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:42px;max-height:65px}.practice-progress{height:4px;background:#c6cfb2}.practice-progress i{display:block;height:100%;background:#65854d;transition:width .15s}.practice-top:has(.complete){background:#dce8c9}.practice-shell .controlled-info{display:none}.practice-shell .controls{height:calc(199px + var(--safe))}.practice-shell[data-control-size=large] .controls{height:calc(215px + var(--safe))}.lesson-locked{opacity:.35!important;filter:saturate(.3);animation:none!important}.practice-course>.text-button{min-height:44px;width:100%;text-align:right;padding-right:14px}.practice-course:first-child .practice-lesson{background:#e6c477}.practice-course:not(:first-child) .practice-lesson{background:var(--white)}.practice-step-list{display:grid;gap:9px;margin:17px 0}.practice-step-list button{display:flex;align-items:center;gap:12px;text-align:left;padding:12px 10px;min-height:52px;border:1px solid #b1bea1;background:#edf0dc;color:#3d573e}.practice-step-list button.current{border:2px solid #55764b;background:#e2e9cd;padding:11px 9px}.practice-step-list b{font-size:14px;font-weight:400;flex:1}.practice-step-list small{font-size:10px;color:#718362}.practice-help{font-size:16px;line-height:2;padding:12px 0}.practice-top .practice-instruction.compact p{display:-webkit-box}
@media(max-height:710px){.practice-shell .controls{height:calc(189px + var(--safe))}.practice-shell[data-control-size=large] .controls{height:calc(205px + var(--safe))}.practice-top{padding:3px 10px 7px}.practice-top .practice-instruction p{font-size:12px;line-height:1.65;min-height:39px;max-height:59px}.practice-top .practice-card-head b{font-size:15px}}
.difficulty-card{padding:14px;background:#e2e7d3;border:1px solid #a8ba95;margin:22px 0}.difficulty-card h3{font-size:16px;font-weight:400}.difficulty-card .badge{font-size:9px}.difficulty-card .choice-row{margin:13px 0 9px}.difficulty-card .choice-row button{min-height:44px;font-size:14px}.difficulty-card p{font-size:13px;line-height:1.8}.difficulty-card>small{display:block;margin-top:7px;font-size:10px;line-height:1.8;color:#70815e}.turnover-breakdown{background:#e4e9d3;padding:9px;line-height:1.8}
.history-metrics{flex-wrap:wrap}.practice-status{display:block;font-size:10px;color:#7a633e;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:-3px 0 5px;line-height:15px}
