/* DS glyphs have a deliberately small em square. Normalize their visual size without fake bold. */
@font-face{font-family:Festival;src:url('/assets/fonts/pokemon-ds.ttf') format('truetype');font-weight:400;font-display:swap;size-adjust:140%;ascent-override:70%;descent-override:20%;line-gap-override:0%}
@font-face{font-family:FestivalTitle;src:url('/assets/fonts/pokemon-ds.ttf') format('truetype');font-weight:400;font-display:swap;size-adjust:140%;ascent-override:70%;descent-override:20%;line-gap-override:0%}
html{font-synthesis:none}
body{min-width:0}.app-shell{min-width:0}.kicker,.section-label .kicker{font:13px var(--body)}
.dex-panel .type-badge{font:13px var(--body)}.dex-panel .stat-label{font:14px var(--body)}.dex-panel .legend-badge{font:12px var(--body)}
.event-controls p{font:16px/1.4 var(--body)}.event-controls h3{font:22px var(--font)}
:root{--ink:#293e53;--black:#25394c;--muted:#62717e;--paper:#fffbee;--gray:#d8e2d5;--line:#a4b9b0;--cyan:#8bddc9;--cyan-dark:#21786f;--orange:#ee826a;--gold:#ffd375;--font:FestivalTitle,monospace;--body:Festival,monospace}
html{background:#f6ecd3}body{font-family:var(--body);font-size:18px;line-height:1.4;background:#f6ecd3;background-image:radial-gradient(#cbd5bd 1px,transparent 1px);background-size:12px 12px;color:var(--ink)}
button,input,select,textarea{font-family:var(--body)!important}button{font-weight:600}h1,h2,h3{font-family:var(--font);font-weight:400;letter-spacing:0}h1{font-size:48px;line-height:1}h2{font-size:30px}h3{font-size:25px}small{font-size:15px}a{color:#246d81}*{text-shadow:none!important;box-shadow:none!important}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #e06b50;outline-offset:4px}
.app-shell{max-width:1440px;padding:0 40px}.site-header{min-height:102px;border-bottom:3px solid var(--ink);gap:18px}.brand{font:38px/1 var(--font);letter-spacing:0;color:var(--ink);gap:13px}.brand small{font:12px/1.5 var(--body);letter-spacing:2px;margin-top:7px;color:#687872}.brand-ball,.loading-ball{border-radius:50%;background:linear-gradient(#ef7d67 0 44%,#293e53 44% 57%,#fffbed 57%);border:3px solid #293e53;width:40px;height:40px}.brand-ball:after,.loading-ball:after{width:13px;height:13px;border:3px solid #293e53;border-radius:50%;background:#fffbed}.loading-ball{width:64px;height:64px}.loading-ball:after{width:20px;height:20px}.loading-screen h1{font-size:60px}.header-nav{gap:8px}.nav-button{font-size:17px;border:2px solid transparent;padding:9px 16px;border-radius:7px;min-height:46px}.nav-button:hover,.nav-button.active{background:#fffbee;color:var(--ink);border-color:var(--ink)}.nav-button.active:before{content:'▸';color:#dc6b55;margin-right:6px}.header-tag{font:14px var(--body);letter-spacing:0;background:#f6cf72;border:2px solid var(--ink);color:var(--ink);border-radius:5px;padding:6px 12px}.main{padding-top:32px}.frame{border:3px solid var(--ink);border-radius:10px;background:var(--paper);overflow:hidden}.frame-head{background:#83cdbd;color:var(--ink);border-bottom:3px solid var(--ink);font:18px var(--body);font-weight:600;padding:10px 16px;letter-spacing:0}.frame-body{padding:22px}.frame-head .live-dot{background:#fff4ad;border:2px solid var(--ink);width:12px;height:12px;border-radius:50%;margin:0}
.btn{font:18px/1.2 var(--body);font-weight:600;min-height:50px;padding:13px 20px;border:3px solid var(--ink);border-radius:7px;background:#fffbed;gap:12px}.btn:hover{background:#ffe2a4;transform:none}.btn:active{transform:translateY(2px);background:#f7cb72}.btn-primary{background:#f78670;color:#25394c;border-bottom-width:5px}.btn-primary:hover{background:#ffb294}.btn-dark{background:#7dcbbb;color:#25394c}.btn-dark:hover{background:#a3e1c4}.btn-small{font-size:16px;min-height:44px}.btn-orange{background:#ffd375}.btn .arrow{font-family:var(--body);font-size:24px}.text-button{font:16px var(--body);text-transform:none;color:#247770}.button-row{gap:12px}.fine-print,.save-note{font:15px/1.5 var(--body)!important}.section-eyebrow{font:15px var(--body);letter-spacing:1px;color:#98704e;margin-bottom:10px}.section-eyebrow:before{background:#ef7c65;width:10px;height:10px;border:2px solid var(--ink);border-radius:3px}.page-heading{margin-bottom:24px}.page-heading h1{font-size:48px}.page-heading p{font-size:19px;line-height:1.5;max-width:760px;color:#596b70}.status-label{font:17px var(--body);padding:9px 14px;border:2px solid var(--ink);border-radius:6px;background:#ffde8e;color:var(--ink)}.status-label.cyan{background:#b4e3be}.kicker{font:14px var(--body);letter-spacing:0}.section-label h2{font:25px var(--font)}.section-label{margin-bottom:12px}.season-label{font:18px var(--body);background:#e0ead1;padding:12px 18px;border:2px solid #74978a;border-radius:6px;color:#446b5c}
.home-title{align-items:center;margin-bottom:27px}.home-title h1{font:72px/.91 var(--font);letter-spacing:0;color:var(--ink)}.home-title h1 em{font-style:normal;color:#ce614b}.home-title p{font-size:20px;margin-top:17px;color:#566b6e}.home-layout,.home-bottom{grid-template-columns:minmax(0,1fr) 340px;gap:25px}.stadium{border-radius:12px 12px 0 0;border-bottom:0;aspect-ratio:8/3;min-height:290px}.stadium:after{display:none}.field-athlete .field-name{font:14px var(--body);text-transform:none;background:#fffbed;color:var(--ink);border:2px solid var(--ink);border-radius:5px;padding:3px 7px}.field-athlete img{width:96px;height:96px}.stadium-bottom{font:14px var(--body);background:#293e53;padding:9px 15px;letter-spacing:0;border-top:2px solid #293e53;color:#fffbee}.stadium-bottom .signal{color:#bce894}.quick-facts{border:3px solid var(--ink);border-radius:0 0 10px 10px;background:#fffbee}.quick-fact{padding:15px 11px;gap:12px;border-color:#ced8c7}.quick-fact strong{font:42px var(--font);color:#db785c}.quick-fact b{font-size:17px;font-weight:600;display:block}.quick-fact span{font-size:15px;line-height:1.3}.start-panel h2{font-size:33px}.start-panel .intro{font-size:18px;line-height:1.45}.start-panel p{font-size:17px}.season-switch{gap:8px;margin:20px 0}.season-switch button{font:18px var(--body);border:3px solid var(--ink);border-radius:7px;background:#f0e9d8;color:#435b62;min-height:61px;padding:9px}.season-switch button+button{border-left:3px solid var(--ink)}.season-switch button.active{background:#ffd982;color:var(--ink)}.season-switch button[data-season=winter].active{background:#b4dfef}.season-switch span{display:inline-block;font-family:var(--body);font-size:26px;vertical-align:middle;margin:0 7px 0 0}.rules-mini{border-color:#a4b9b0;padding-top:16px}.rules-mini p{font-size:16px;margin-bottom:11px;line-height:1.35;gap:10px}.rules-mini b{font:22px var(--font);border:2px solid var(--ink);background:#b9e1c3;width:30px;height:30px;border-radius:50%}.event-preview-list{gap:12px}.event-preview{background:#fffbee;border:2px solid var(--ink);border-radius:8px;padding:14px}.event-glyph{height:auto;line-height:1;margin-bottom:8px}.sport-icon{width:43px;height:43px;display:inline-block;vertical-align:middle;overflow:visible}.event-preview b{font:23px/1.05 var(--font);min-height:48px}.event-preview small{font:14px var(--body);margin-top:8px}.passport{background:#a7d9be;color:var(--ink);border:3px solid var(--ink);border-radius:9px;padding:20px;gap:15px}.passport h3{font:25px/.95 var(--font)}.passport p{font:17px/1.4 var(--body);color:#35595d;margin-top:8px}.passport-symbol .sport-icon{width:58px;height:58px}.home-bottom{margin-top:26px}
.steps{background:#fffbee;border:2px solid var(--ink);border-radius:8px;overflow:hidden;margin-bottom:24px}.step{font:17px var(--body);padding:11px 9px;color:#738785;border-right:1px solid #c2cfbd}.step.active{background:#91d9c3;color:var(--ink);border-bottom:0;padding-bottom:11px}.step.complete{background:#e0eccb;color:#466c53}.pokemon-card{border:3px solid var(--ink);border-radius:12px;background:#fffbed}.pokemon-card-header{font:16px var(--body);background:#bce2cf;color:var(--ink);border-bottom:2px solid var(--ink);padding:10px 14px;min-height:46px}.pokemon-portrait{background:#d9eccc;background-image:repeating-linear-gradient(0deg,transparent 0 15px,#cbe1bd 15px 17px);height:190px;border-bottom:2px solid #709680}.pokemon-portrait:before{top:25px;left:calc(50% - 65px);width:130px;height:130px;border:5px solid #fffbee;border-radius:50%;background:#f1f2cb}.pokemon-portrait:after{height:16px;background:#fffbee;top:82px;left:calc(50% - 65px);right:auto;width:130px;border-top:3px solid #c9dab9;border-bottom:3px solid #c9dab9}.pokemon-portrait img{width:166px;height:166px}.pokemon-info{padding:18px}.pokemon-title h2{font:36px/1 var(--font);letter-spacing:0}.pokemon-title{margin-bottom:12px}.type-badge{font:14px var(--body);font-weight:600;border:2px solid #293e5377;border-radius:5px;padding:3px 9px;line-height:1.2;color:#fffbee}.type-label{font:12px var(--body);color:#54696d;display:inline-block}.type-row{gap:6px}.sport-summary{font:18px/1.25 var(--body);min-height:30px;margin:14px 0;color:#3d7868}.legend-badge,.pokemon-card-header .legend-badge{font:14px var(--body);background:#ffe39d;color:#694b2e;border:2px solid #9e7440;padding:5px 8px;border-radius:4px}.legendary-card{border-color:#ad7941}.legendary-card .pokemon-card-header{background:#ffe6a1;color:#674627}.legendary-card .pokemon-portrait{background-color:#f9dfa2}.stats{gap:7px;margin-bottom:18px}.stat{grid-template-columns:64px minmax(0,1fr) 30px;font:16px var(--body);gap:8px}.stat-label{font:15px var(--body);color:#65746f}.stat-bar{height:10px;border:1px solid #98b3a1;border-radius:3px;background:#e0e9d6}.stat-bar span{background:#80bba6}.stat:nth-child(2) .stat-bar span,.stat:nth-child(6) .stat-bar span{background:#eb9a74}.draft-foot p{font:17px var(--body);max-width:none}.roster-strip{border:2px solid var(--ink);border-radius:9px;overflow:hidden;background:#fffbee}.roster-mini{padding:12px 8px;min-height:130px;border-color:#c2d5c1}.roster-mini img{width:77px;height:77px}.roster-mini strong{font:19px/1.1 var(--font)}.roster-mini small{font:13px var(--body);display:block;margin-top:4px}.roster-mini .roster-index{font:15px var(--body);top:7px}.empty-slot{font:36px var(--font);height:76px;color:#96ad98}.roster-panel{margin-top:25px}
.identity-panel{max-width:740px}.identity-panel input{font:22px var(--body);padding:13px;border:2px solid var(--ink);border-radius:6px;background:#eff2d9;min-height:52px}.trainer-name-label{font-size:20px}.team-name-preview{font:45px var(--font);color:#c8644e;margin:26px 0}.name-parts{gap:12px}.name-parts .btn{font:19px var(--body);padding:12px 8px}.identity-panel .btn-full{font-size:20px;margin-top:21px}.lineup-desk{grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:22px}.roster-pick{border:2px solid #849e99;border-radius:7px;background:#fffbee;padding:7px;gap:7px;min-height:90px}.roster-pick b{font:24px/1.1 var(--font);margin:0 0 6px}.roster-pick small{font:15px var(--body)}.roster-pick img{width:70px;height:70px}.roster-pick .legend-badge{font:10px var(--body);padding:3px}.roster-pick.selected{border:3px solid #d46d51;border-left-width:3px;background:#ffe4ae;padding:6px}.roster-pick.assigned{border-color:#40907b}.assigned-tick{background:#dcf0c4;border-radius:50%;width:23px;height:23px;text-align:center;line-height:20px}.dex-panel{padding:19px;min-height:260px}.dex-heading h2{font:31px var(--font)}.dex-panel .stat{grid-template-columns:70px minmax(0,1fr) 30px}.dex-empty{font:27px/1.1 var(--font);color:#718b7a}.dex-empty small{font:17px/1.4 var(--body)}.assignment-card .frame-head{font:23px var(--font);padding:10px 14px;min-height:55px}.event-number{font:18px var(--body);color:#39574c;opacity:1;margin-right:8px}.role-label{font:15px var(--body);padding:10px 14px 0}.slot-target{background:#f2efd7;border:2px dashed #a5b78f;border-radius:7px;min-height:103px;padding:9px;margin-bottom:5px}.slot-target b{font:26px var(--font)}.slot-target small{font:16px var(--body);margin-top:4px}.slot-empty{font:17px var(--body);color:#5e796d}.slot-empty span{font:35px var(--font);color:#8daa94}.slot-target .legend-badge{font-size:12px}.unassign{font-size:14px}.lineup-footer p{font:17px var(--body);max-width:730px}.lineup-footer .btn{min-width:210px}.drag-ghost{background:#ffe6a1;border:3px solid #d66e51;border-radius:8px}
.demo-frame canvas{background:#293e53}.demo-frame .briefing-instructions{font:23px/1.35 var(--body);background:#fffbee;padding:20px 24px;color:var(--ink);border-top:3px solid var(--ink)}.demo-controls{font:17px/1.4 var(--body);padding:0 24px 22px;color:#62736d}.briefing-layout{grid-template-columns:minmax(0,1fr) 300px;gap:23px}.briefing-actions{padding:20px;gap:14px}.briefing-roster b{font:27px var(--font)}.briefing-roster img{width:120px;height:120px}.briefing-roster{gap:11px}.competitor-strip{border:2px solid var(--ink);border-radius:8px;background:#fffbee;overflow:hidden;margin-top:12px}.competitor{padding:12px 5px;border-color:#c4d6c1}.competitor b{font:19px/1.1 var(--font);margin-top:8px}.competitor small{font:14px var(--body);margin-top:6px}.competitor img{height:76px;width:65px}.player-avatar .sport-icon,.mini-avatar .sport-icon{width:45px;height:45px}.player-avatar{color:#edaa50}.arena-frame{border-radius:10px}.arena-top{font:17px var(--body);background:#a0d9c4;color:var(--ink);border-bottom:2px solid var(--ink);padding:10px 15px}.arena-top span:last-child{color:#4d665b}.live-message{background:#fffbee;border-top:3px solid var(--ink);padding:20px}.live-message #event-cue{font:24px/1.2 var(--font);color:#b45d44}.live-message #event-status{font:17px/1.4 var(--body);color:#65766e;margin-top:6px}.event-controls .frame-body{font:18px var(--body)}.event-controls .frame-head{font:17px var(--body)}.mode-select{gap:5px;background:transparent;border:0}.mode-select button{font:17px var(--body);border:2px solid var(--ink);background:#fffbed;border-radius:5px;min-height:46px;padding:8px}.mode-select button.active{background:#ffd581;color:var(--ink)}#touch-controls{gap:12px;margin-top:13px}#touch-controls button,#touch-controls:has([data-action="left"]) .engine-control{font:19px var(--body);font-weight:600;border:3px solid var(--ink);border-bottom-width:5px;border-radius:8px;background:#9bdac5;color:var(--ink);min-height:62px;padding:12px 10px;touch-action:none}#touch-controls button:active,#touch-controls button.next-stroke{background:#ffd375;border-color:#97623c}.meet-progress{gap:6px;margin-top:20px}.meet-progress span{font:15px var(--body);padding:8px;background:#fffbee;border:2px solid #a6b9a7;border-radius:4px}.meet-progress span.current{background:#ffd375;border-color:var(--ink)}.meet-progress span.done{background:#b3dbbb}
.timing-cue{color:var(--ink)}.timing-label{font:20px/1.2 var(--font);min-height:25px;margin-bottom:12px}.timing-bar{height:31px;border:3px solid var(--ink);border-radius:5px;margin:0 8px;overflow:visible}.timing-pointer{top:-9px;height:43px;width:11px;border:3px solid var(--ink);border-radius:4px;background:#fffbee;margin-left:-6px}.timing-pointer:before{content:'';position:absolute;top:-7px;left:-5px;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #293e53}.timing-legend{font:15px var(--body);margin-top:15px;color:#607b6c}.timing-center{font:17px var(--body);line-height:1}.ring-target{stroke:#55a787;stroke-dasharray:4 3;stroke-width:8!important}.ring-moving{stroke:#f2ad53;stroke-width:5}.timing-rings text{font:24px FestivalTitle,monospace;fill:#293e53}.timing-cue[data-good=true] .ring-moving{stroke:#55a787}.timing-cue[data-outcome=late] .ring-moving,.timing-cue[data-outcome=early] .ring-moving{stroke:#e77560}.balance-track{height:180px;width:94px;border:4px solid var(--ink);border-radius:10px;background:#345d71;outline:3px solid #d8ba70;outline-offset:2px;overflow:hidden}.balance-zone{border:3px solid #fff6cc;border-radius:5px;background:#6cc996;background-image:repeating-linear-gradient(0deg,transparent 0 9px,#5ab987 9px 11px)}.balance-weight{filter:none}.balance-help{font:18px var(--body);gap:9px;color:#4c6a66}.balance-help strong{font:27px var(--font);color:var(--ink)}.balance-help small{font:15px var(--body)}.balance-locks{gap:7px}.balance-locks i{width:22px;height:24px;background:#5b7f8c;border:3px solid #293e53;border-radius:50% 50% 4px 4px}.balance-locks i.lit{background:#ffcf6d;border-color:#9e6740}.lift-balance{gap:26px}.stroke-cues>div{font:21px var(--font);background:#e4edd6;border:3px solid var(--ink);border-radius:9px;padding:15px;min-width:130px}.stroke-cues>div.next{background:#ffda83;border-color:var(--ink)}.stroke-cues>div.splash{background:#a1e3d6}.arena-frame[data-sport=lift] .timing-label{font-size:21px}.arena-frame[data-sport=lift] #event-cue{font-size:21px}.arena-frame[data-sport=lift] .balance-help{font-size:16px}
.result-banner{background:#ffe6a1;border-bottom:3px solid var(--ink);padding:26px;gap:22px}.result-place{font:76px/1 var(--font);color:#bf6748}.result-banner h2{font:37px var(--font)}.result-banner p{font:19px var(--body);margin-top:7px}.result-table th{font:17px var(--body);font-weight:600;background:#e2ecd3;color:#4c645d;padding:12px 15px;border-bottom:2px solid #a8bc9e}.result-table td{font:18px var(--body);padding:11px 15px;border-bottom:1px solid #d5dfc8}.result-table .result-score{font:27px var(--font);white-space:nowrap}.result-table .place-cell{font:27px var(--font)}.result-table .player-row{background:#fff0b9}.trainer-cell small{font:15px var(--body);color:#69786c}.trainer-cell img{width:42px;height:52px}.trainer-cell{gap:12px}.results-note{font:16px/1.5 var(--body);padding:15px 18px}.result-sidebar .frame-head{font-size:15px}.result-actions .btn{font-size:18px}.final-celebration{padding:26px 20px 0;border:3px solid var(--ink);border-radius:14px;background:#f7e2a3;background-image:radial-gradient(#c5ce9b 2px,transparent 2px);background-size:27px 27px}.final-celebration h1{font:56px var(--font)}.final-celebration>p{font:21px var(--body);margin-top:8px}.podium-name{font:23px/1.1 var(--font);min-height:47px}.podium-block{font:54px var(--font);border:3px solid var(--ink);border-bottom:0;border-radius:10px 10px 0 0;background:#c3d7d3;position:relative;min-height:100px}.podium-block:before{content:'';position:absolute;left:6px;right:6px;top:5px;height:5px;background:#fffbee99;border-radius:3px}.podium-person.first .podium-block{background:#f7c967;min-height:140px}.podium-person.third .podium-block{background:#dba77f;min-height:80px}.podium-block small{font:16px var(--body);margin-top:3px}.podium-person .player-avatar{display:flex;align-items:center;justify-content:center;height:115px}.podium-person .player-avatar .sport-icon{width:86px;height:86px}.final-grid{margin-top:24px}.catalogue-grid{gap:20px}.catalogue-card .frame-head{font:16px var(--body);background:#b3ddc6;padding:9px 14px}.catalogue-card .frame-body{padding:20px}.catalogue-title{gap:14px;align-items:center;min-height:62px}.catalogue-title h2{font:30px/1 var(--font)}.catalogue-title .sport-icon{width:50px;height:50px}.catalogue-card p{font:18px var(--body);margin:10px 0 14px}.catalogue-meta{font:14px var(--body);margin-bottom:14px}.catalogue-card .btn{width:100%;font-size:17px}.catalogue-count{font:17px var(--body)}.catalogue-controls .season-switch{min-width:340px}
dialog{border:3px solid var(--ink);border-radius:12px;background:#fffbee;max-width:min(720px,calc(100vw - 28px));padding:0;color:var(--ink)}dialog::backdrop{background:#293e5377}.dialog-head{background:#91d2bc;border-bottom:3px solid var(--ink);padding:14px 20px}.dialog-head h2{font:32px var(--font)}.dialog-close{font:28px var(--body);border:2px solid var(--ink);background:#fff1c9;border-radius:5px;min-width:42px;min-height:42px}.dialog-body{font:19px/1.5 var(--body);padding:24px}.dialog-body h3{font:29px var(--font);margin:18px 0 8px}.dialog-body p{margin:0 0 16px}.dialog-body .btn{font-size:19px}.toast{font:18px var(--body);color:#293e53;background:#fff2c2;border:3px solid #293e53;border-radius:8px;max-width:calc(100vw - 30px);padding:14px 20px}.site-footer{font:14px var(--body);border-top:2px solid #a4b9b0;padding:20px 0;gap:18px}.site-footer .text-button{font:15px var(--body)}
/* The review library shares the game's lettering and palette. */
.gallery-page{font:17px/1.4 var(--body);color:var(--ink);background:#f6ecd3}.gallery-page button,.gallery-page input,.gallery-page select,.gallery-page .card-art .art-error{font-family:var(--body)!important}.gallery-header{background:#fffbee;border-bottom:3px solid var(--ink)}.gallery-header .brand{font:36px var(--font)}.gallery-header .brand small{font:13px var(--body);letter-spacing:1px}.gallery-header>div{font-size:16px}.gallery-intro h1{font:46px/1 var(--font);letter-spacing:0}.gallery-intro p{font:19px var(--body)}.gallery-intro .eyebrow{font:15px var(--body);letter-spacing:1px;color:#9c674c}.inventory-total strong{font:44px var(--font);color:#bf6748}.inventory-total span{font:14px var(--body);letter-spacing:0}.category-panel h2,.search-label>span{font:22px var(--font)}.category-panel button{font:17px var(--body);border-radius:5px}.category-panel button span{font:15px var(--body)}.category-panel button[aria-pressed=true]{background:#a2d8bd;color:var(--ink);border:2px solid var(--ink)}.catalog-note,.category-panel>a{font:15px/1.4 var(--body)}.filter-panel{background:#fffbee;border:2px solid #6f9290;border-radius:8px}.search-label input{font:18px var(--body);background:#faf1da;border:2px solid #a4b9b0;border-radius:5px}.filters label,.pokemon-filters label{font:15px var(--body)}.filters select,.pokemon-filters select{font:15px var(--body);border-radius:4px;background:#faf8e9}.browse-heading h2{font:28px var(--font)}.browse-heading span,.browse-heading button{font:15px var(--body)}.asset-card{border:2px solid #6e8b86!important;border-radius:8px;background:#fffbee!important}.asset-card[aria-pressed=true]{border:3px solid #bc694e!important}.asset-card[aria-pressed=true]:after{background:#f4c773;color:#293e53}.card-info b{font:22px/1 var(--font)}.card-info small{font:13px var(--body)}.card-info{min-height:80px}.card-art{background-color:#e2edcf}.inspector{border:3px solid var(--ink);border-radius:9px;background:#fffbee}.inspector-top{font:19px var(--font);background:#a2d7c2;color:#293e53;border-bottom:2px solid #293e53}.inspector-top #renderer-label{font:13px var(--body);color:#375d5c}.inspector-title h2{font:30px/1 var(--font)}.asset-badge{font:14px var(--body);border-radius:3px}.viewer-controls button,.viewer-controls select{font:15px var(--body)}.viewer-controls>label:first-child{font:14px var(--body)}.asset-details{font:16px var(--body)}.asset-details dl{font:15px/1.4 var(--body)}.asset-links a,#related-assets button{font:15px var(--body)}.gallery-footer{font:14px var(--body)}.ui-specimen{background:#fffbee}.ui-specimen .font-specimen{font:17px/1.6 var(--body)}.ui-specimen .brand{font:28px var(--font)}.ui-specimen .brand small{font:10px var(--body)}.ui-specimen .type-badge{font:12px var(--body)}.ui-specimen .timing-label{font:21px var(--font)}.ui-specimen .timing-legend{font:12px var(--body)}
@media(max-width:1100px){.app-shell{padding:0 24px}.home-layout,.home-bottom{grid-template-columns:minmax(0,1fr) 300px}.home-title h1{font-size:65px}.brand{font-size:32px}.nav-button{padding:9px 11px}.pokemon-title h2{font-size:31px}.frame-body{padding:19px}.start-panel .intro{font-size:17px}.quick-fact{padding:13px 8px;gap:8px}.quick-fact strong{font-size:35px}.quick-fact b{font-size:16px}.quick-fact span{font-size:14px}.catalogue-title h2{font-size:27px}.gallery-intro h1{font-size:39px}}
@media(max-width:900px){.site-header{min-height:87px}.home-layout{grid-template-columns:1fr}.home-title h1{font-size:66px}.start-panel .frame-body{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px}.start-panel h2,.start-panel .intro,.start-panel .save-note,.start-panel .season-switch,.start-panel .start-primary,.start-panel .resume-button{grid-column:1/-1}.start-panel .season-switch{margin:3px 0}.rules-mini{display:none}.home-bottom{grid-template-columns:1fr}.passport{display:flex}.stadium{aspect-ratio:8/3;min-height:260px}.lineup-desk{grid-template-columns:1fr 1fr}.roster-pick b{font-size:22px}.lineup-desk .assignment-roster{grid-template-columns:repeat(2,minmax(0,1fr))}.roster-pick{flex-direction:column;text-align:center}.briefing-layout{grid-template-columns:1fr}.briefing-actions{display:grid;grid-template-columns:1fr 1fr}.briefing-roster{grid-column:1/-1}.briefing-actions .sound-button{grid-column:1/-1}.event-layout{grid-template-columns:1fr}.event-controls{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:10px}.event-controls>.frame{display:none}.result-sidebar{display:flex;flex-direction:column-reverse}.catalogue-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.competitor-strip{grid-template-columns:repeat(4,minmax(0,1fr))}.gallery-intro h1{font-size:38px}.gallery-intro p{font-size:17px}.category-panel button{font-size:16px}.inspector-title h2{font-size:28px}.asset-details dl{grid-template-columns:59px minmax(0,1fr);font-size:14px}.card-info b{font-size:21px}}
@media(max-width:640px){body{font-size:17px}.app-shell{padding:0 14px}.site-header{min-height:80px;gap:8px}.brand{font-size:27px;gap:8px}.brand small{font:9px var(--body);letter-spacing:1px;margin-top:5px}.brand-ball{width:30px;height:30px}.brand-ball:after{width:10px;height:10px;border-width:2px}.header-nav{gap:3px}.nav-button{font-size:14px;padding:7px 8px;border-radius:5px}.header-nav .nav-button[data-action=help]{font-size:0;width:39px;min-width:39px;border:2px solid var(--ink);background:#fffbee}.header-nav .nav-button[data-action=help]:after{content:'?';font:26px var(--font)}.main{padding-top:24px}.home-title{margin-bottom:20px}.home-title h1{font-size:61px}.home-title p{font-size:19px;line-height:1.3;max-width:340px;margin-top:14px}.section-eyebrow{font-size:14px;letter-spacing:.5px}.season-label{display:none}.home-layout{gap:21px}.stadium{min-height:283px;aspect-ratio:auto}.field-athlete .field-name{font-size:12px;padding:3px 5px}.field-athlete img{width:75px;height:75px}.stadium-bottom{font-size:11px;padding:9px 10px}.quick-fact{display:block;text-align:center;padding:10px 5px}.quick-fact strong{font:35px var(--font);display:block}.quick-fact b{font-size:17px}.quick-fact span{font-size:13px;display:block}.start-panel .frame-body{padding:18px;gap:10px 12px}.start-panel h2{font-size:33px}.start-panel .intro{font-size:18px}.start-panel .btn{font-size:19px}.season-switch button{font-size:18px;min-height:54px}.season-switch span{font-size:25px}.frame-head{font-size:17px;padding:10px 13px}.event-preview-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.event-preview{display:flex;align-items:center;flex-wrap:wrap;padding:12px;gap:7px}.event-preview .event-glyph{margin:0;width:40px}.event-preview b{font:25px/.95 var(--font);flex:1;min-height:0}.event-preview small{font:13px var(--body);width:100%;margin:0}.sport-icon{width:37px;height:37px}.section-label h2{font-size:24px}.section-label .text-button{font-size:14px}.passport{padding:17px}.passport h3{font-size:28px}.passport p{font-size:18px}.site-footer{flex-wrap:wrap;gap:8px 20px;font-size:13px}.site-footer>span{flex-basis:100%}.site-footer .text-button{font-size:15px;min-height:37px}.page-heading h1{font-size:42px}.page-heading p{font-size:18px;margin-top:9px}.page-heading .status-label{font-size:16px;margin-top:12px}.step{font-size:14px;padding:10px 5px}.step.active{padding-bottom:10px}.draft-choices{gap:17px}.pokemon-card{grid-template-columns:115px minmax(0,1fr);overflow:hidden}.pokemon-card-header{font-size:16px;padding:9px 12px}.pokemon-card-header .legend-badge{font-size:12px}.pokemon-portrait{min-height:293px;height:100%;border-bottom:0;border-right:2px solid #a5c49b}.pokemon-portrait img{width:118px;height:118px;margin-top:32px}.pokemon-portrait:before{top:45px;width:100px;height:100px;left:calc(50% - 50px);border-width:4px}.pokemon-portrait:after{top:88px;left:calc(50% - 50px);width:100px;height:14px}.pokemon-info{padding:13px 12px}.pokemon-title h2{font-size:30px;overflow-wrap:anywhere}.pokemon-title{margin-bottom:9px}.type-badge{font-size:12px;padding:3px 5px}.type-label{font-size:11px}.type-row{gap:5px}.sport-summary{font-size:17px;margin:10px 0;min-height:0;line-height:1.15}.stat{grid-template-columns:51px minmax(0,1fr) 24px;gap:5px;font-size:14px}.stat-label{font-size:13px}.stats{gap:6px;margin-bottom:12px}.stat-bar{height:8px}.pokemon-card .btn{font:15px/1.1 var(--body);min-height:48px;padding:9px 5px}.draft-foot p{font-size:16px}.roster-mini strong{font-size:21px}.roster-mini small{font-size:13px;line-height:1.2}.roster-mini img{width:75px;height:75px}.roster-mini{min-height:135px;padding:9px 5px}.roster-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.identity-panel .frame-body{padding:19px}.identity-panel input{font-size:21px}.team-name-preview{font-size:35px;line-height:1.05}.name-parts{gap:7px}.name-parts .btn{font-size:17px;padding:10px 4px}.lineup-desk{grid-template-columns:1fr;gap:17px}.lineup-desk .assignment-roster{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.roster-pick{padding:6px;min-height:130px}.roster-pick img{width:67px;height:67px}.roster-pick b{font-size:20px}.roster-pick small{font-size:12px}.roster-pick .legend-badge{font-size:9px}.dex-heading{display:flex;text-align:left;gap:10px}.dex-heading h2{font-size:29px}.dex-heading>img{width:76px;height:76px}.dex-panel{padding:16px;min-height:0}.dex-empty{min-height:120px;font-size:26px}.dex-panel .stat{grid-template-columns:70px minmax(0,1fr) 28px}.assignment-grid{grid-template-columns:1fr;gap:15px}.assignment-card .frame-head{font-size:25px}.slot-target{min-height:96px}.slot-target img{width:78px;height:78px}.slot-target b{font-size:26px}.slot-target small{font-size:15px}.assignment-card.pair .slot-target{padding:8px;min-height:156px}.assignment-card.pair .slot-target b{font-size:23px}.assignment-card.pair .slot-target small{font-size:14px}.assignment-card.pair .slot-empty{font-size:16px}.slot-empty{font-size:17px}.lineup-footer{display:block}.lineup-footer p{font-size:17px;margin-bottom:15px}.lineup-footer .btn{width:100%;font-size:20px}.demo-frame .briefing-instructions{font-size:21px;padding:17px}.demo-controls{font-size:16px;padding:0 17px 17px}.briefing-actions{padding:16px;gap:11px}.briefing-actions .btn{font-size:17px;padding:11px 8px;min-height:51px}.briefing-roster b{font-size:26px}.briefing-roster img{width:104px;height:104px}.competitor b{font-size:20px}.competitor small{font-size:13px}.competitor img{height:66px;width:59px}.arena-top{font-size:13px;padding:9px 11px}.arena-top span:last-child{font-size:12px}.live-message{padding:17px 13px}.live-message #event-cue{font-size:25px}.live-message #event-status{font-size:16px}.event-controls{gap:7px}.event-controls>.btn{font-size:14px;padding:8px 4px;min-height:47px}.mode-select button{font-size:14px;padding:8px 4px}.mode-select{gap:3px}.timing-label{font-size:23px}.timing-legend{font-size:14px}.timing-cue[data-kind=ring] .timing-label{font-size:26px}.balance-help{font-size:18px}.balance-help strong{font-size:29px}.balance-help small{font-size:15px}#touch-controls button,#touch-controls:has([data-action=left]) .engine-control{font-size:17px;min-height:65px;padding:10px 7px}#touch-controls:has([data-action=left]){gap:8px}.meet-progress span{font-size:13px;padding:7px 4px}.result-banner{padding:20px 16px;gap:17px}.result-place{font-size:64px}.result-banner h2{font-size:35px}.result-banner p{font-size:18px}.result-table th{font-size:15px;padding:10px}.result-table td{font-size:17px;padding:10px}.result-table .result-score,.result-table .place-cell{font-size:24px}.trainer-cell{gap:7px}.trainer-cell small{font-size:14px}.trainer-cell img{width:33px;height:43px}.results-note{font-size:15px}.result-actions .btn{font-size:17px;padding:11px}.final-celebration{padding:22px 10px 0}.final-celebration h1{font-size:42px}.final-celebration>p{font-size:18px}.podium-name{font-size:21px;min-height:46px}.podium-block{font-size:46px;min-height:90px}.podium-block small{font-size:13px}.podium-person.first .podium-block{min-height:120px}.podium-person.third .podium-block{min-height:70px}.catalogue-controls .season-switch{min-width:0}.catalogue-grid{gap:12px}.catalogue-card .frame-head{font-size:13px;padding:8px 10px}.catalogue-card .frame-body{padding:14px 12px}.catalogue-title{display:block;min-height:98px}.catalogue-title h2{font:28px/1 var(--font);min-height:48px}.catalogue-title .sport-icon{width:41px;height:41px}.catalogue-card p{font-size:17px;margin:8px 0}.catalogue-meta{font-size:13px}.catalogue-card .btn{font-size:16px;padding:10px 5px}.catalogue-count{font-size:15px}.dialog-head{padding:10px 15px}.dialog-head h2{font-size:27px}.dialog-body{font-size:18px;padding:19px}.dialog-body h3{font-size:28px}.dialog-body .btn{font-size:18px}.gallery-header .brand{font-size:26px}.gallery-header .brand small{font-size:10px}.gallery-header>div .return-game{font-size:14px}.gallery-intro h1{font-size:39px;line-height:.95;max-width:350px}.gallery-intro p{font-size:18px}.gallery-intro .eyebrow{font-size:13px}.category-panel button{font-size:16px}.filters select,.pokemon-filters select{font-size:14px}.filters label,.pokemon-filters label{font-size:14px}.card-info b{font-size:22px}.card-info small{font-size:12px}.browse-heading h2{font-size:26px}.browse-heading span,.browse-heading button{font-size:14px}.inspector-title h2{font-size:31px}.inspector-top{font-size:20px}.asset-details{font-size:17px}.asset-details dl{font-size:16px;grid-template-columns:70px minmax(0,1fr)}.asset-links a{font-size:16px}.viewer-controls button,.viewer-controls select{font-size:16px}.gallery-footer{font-size:14px}.ui-specimen .type-badge{font-size:12px}}
@media(max-width:374px){.brand{font-size:24px;gap:6px}.brand small{font-size:8px}.brand-ball{width:26px;height:26px}.nav-button{font-size:13px;padding:7px 6px}.header-nav .nav-button[data-action=help]{width:32px;min-width:32px}.home-title h1{font-size:56px}.pokemon-card{grid-template-columns:99px minmax(0,1fr)}.pokemon-portrait img{width:99px;height:105px}.pokemon-info{padding:12px 10px}.pokemon-title h2{font-size:27px}.type-badge{font-size:11px}.type-label{font-size:10px}.pokemon-card .btn{font-size:14px}.stat-label{font-size:12px}.stat{grid-template-columns:46px minmax(0,1fr) 23px;font-size:13px}.gallery-header .brand{font-size:23px}.gallery-header .brand small{font-size:9px}.gallery-intro h1{font-size:36px}}
.roster-pick .legend-badge{font-size:11px}.section-label .kicker{font:13px var(--body)}.dex-panel .type-badge{font:13px var(--body)}.dex-panel .stat-label{font:14px var(--body)}.dex-panel .legend-badge{font:12px var(--body)}@media(max-width:640px){.pokemon-portrait img{width:100%;height:auto;aspect-ratio:1;object-fit:contain}.slot-target .legend-badge{font-size:11px}}
html{min-width:0}@media(max-width:374px){.brand{font-size:22px}.brand small{font-size:7px}.header-nav{gap:2px}.nav-button{font-size:12px;padding:6px 4px}.header-nav .nav-button[data-action=help]{width:28px;min-width:28px}}
.balance-help>span{font:17px var(--body)}.balance-locks{padding-top:7px}.balance-locks i{height:20px;border-radius:3px;position:relative}.balance-locks i:before{content:"";position:absolute;left:3px;right:3px;top:-11px;height:10px;border:3px solid #293e53;border-bottom:0;border-radius:7px 7px 0 0}.balance-locks i:after{content:"";position:absolute;left:7px;top:5px;width:3px;height:6px;background:#293e53}@media(max-width:640px){.asset-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Trainer portraits and readable, touch-sized sports feedback. */
.portrait-nav{display:flex;align-items:center;gap:5px}.portrait-nav img,.identity-portrait img,.portrait-choice img{object-fit:contain;image-rendering:pixelated}
.identity-portrait{display:flex;align-items:center;gap:18px;margin:0 auto 20px;background:#e2f1e0;border:3px solid var(--ink,#293e53);padding:6px 18px;cursor:pointer;font:inherit;color:inherit}
.portrait-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:10px;margin-top:16px;max-height:60vh;overflow:auto;padding:4px}
.portrait-choice{border:3px solid #293e53;background:#fffbee;padding:4px;min-height:113px;display:flex;flex-direction:column;align-items:center;cursor:pointer;color:#293e53;font:18px Festival,sans-serif}
.portrait-choice[aria-pressed=true]{background:#ffd375;border-color:#c4614e}.portrait-choice:hover{background:#d9f3e5}.portrait-choice:focus-visible{outline:3px solid #168e93;outline-offset:2px}.portrait-choice[hidden]{display:none}
#portrait-search{width:100%;min-height:44px;border:3px solid #293e53;background:#fffbee;color:#293e53;padding:8px;font:20px Festival,sans-serif}
.draft-foot,.lineup-footer{gap:14px;flex-wrap:wrap}.points-earned{display:block;color:#357d60;font-size:16px;margin-top:3px}
.stroke-cues{display:flex;gap:24px;justify-content:center;align-items:center;padding:4px 0 10px}.stroke-cues[hidden]{display:none}.stroke-cues>div{position:relative;display:flex;align-items:center;gap:10px;min-width:130px;padding:9px;border:3px solid #293e53;background:#e7ebdf;color:#486576;font-size:22px}
.stroke-cues i{display:block;width:30px;height:30px;border:4px solid #768880;border-radius:50%;position:relative}.stroke-cues i:after{content:'';position:absolute;inset:-4px;border:4px solid #d89b49;border-radius:50%;transform:scale(calc(1.8 - var(--beat,1)*.8));opacity:.75}.stroke-cues .next{background:#fff1bf;color:#293e53}.stroke-cues .next i{border-color:#499b70}.timing-cue[data-good=true] .stroke-cues .next{background:#a9e6d2}.timing-cue[data-good=true] .stroke-cues .next i:after{border-color:#227a55}
.timing-cue[data-kind=strokes] .timing-legend{display:none}.engine-control.on-beat{background:#a9e6d2!important;border-color:#27775b!important}.engine-control[hidden]{display:none!important}.engine-control:disabled{opacity:.45;cursor:default}
@media(max-width:600px){.portrait-nav{font-size:0!important;padding:0 4px!important}.portrait-nav img{width:34px;height:40px}.identity-portrait{padding:4px 10px;gap:8px}.stroke-cues{gap:14px}.stroke-cues>div{min-width:0;font-size:18px;gap:7px;padding:8px}.stroke-cues i{width:24px;height:24px}.portrait-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.portrait-choice img{width:72px;height:72px}}
@media(max-width:600px){.site-header{gap:6px}.site-header .brand{font-size:24px;gap:6px}.header-nav{flex-shrink:0;gap:3px}.header-nav .nav-button{padding:4px;min-width:0;font-size:13px}.header-nav .nav-button[data-action=help]{width:32px;min-width:32px}.header-nav .portrait-nav{width:32px;min-width:32px;gap:0;border:0}.portrait-nav img{width:28px;height:40px}}
@media(max-width:374px){.site-header .brand{font-size:20px}.site-header .brand-ball{width:24px;height:24px}.header-nav .nav-button{font-size:11px;padding:3px}.header-nav .nav-button[data-action=help]{width:28px;min-width:28px}.header-nav .portrait-nav{width:28px;min-width:28px}.portrait-nav img{width:26px}}
/* Keep the accessible announcement without repeating the visible timing label. */
.live-message:has(.timing-cue:not([hidden])) #event-cue{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:640px){.site-header{flex-wrap:wrap;justify-content:center;padding:14px 0 10px}.header-nav{width:100%;justify-content:space-between}.header-nav .nav-button[data-action=account]{white-space:nowrap;min-height:44px}}

/* Four rows of four sports on desktop, with readable phone cards. */
.catalogue-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:1000px){.catalogue-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
#touch-controls[data-layout=dpad]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;max-width:500px;margin:16px auto}
#touch-controls[data-layout=dpad] [data-action=up]{grid-column:2;grid-row:1}
#touch-controls[data-layout=dpad] [data-action=left]{grid-column:1;grid-row:2}
#touch-controls[data-layout=dpad] [data-action=down]{grid-column:2;grid-row:2}
#touch-controls[data-layout=dpad] [data-action=right]{grid-column:3;grid-row:2}
#touch-controls[data-layout=dpad] [data-action=action]{grid-column:1/-1;grid-row:3}
#touch-controls[data-layout=dpad] .engine-control{font-size:22px;min-height:64px;padding:8px}
@media(max-width:420px){#touch-controls[data-layout=dpad] .engine-control{font-size:18px;min-height:62px}}

@media(min-width:1001px){.catalogue-grid{gap:14px}.catalogue-card .frame-body{padding:14px}.catalogue-title{min-height:49px;gap:10px}.catalogue-title h2{font-size:27px}.catalogue-title .sport-icon{width:39px;height:39px}.catalogue-card p{margin:7px 0}.catalogue-meta{margin-bottom:9px}.catalogue-card .btn{min-height:43px;padding:9px}}
