@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:700;font-display:swap;src:url('./fonts/barlow-condensed-latin-700-normal.woff2') format('woff2');}
@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:800;font-display:swap;src:url('./fonts/barlow-condensed-latin-800-normal.woff2') format('woff2');}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400;font-display:swap;src:url('./fonts/dm-sans-latin-400-normal.woff2') format('woff2');}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:500;font-display:swap;src:url('./fonts/dm-sans-latin-500-normal.woff2') format('woff2');}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:600;font-display:swap;src:url('./fonts/dm-sans-latin-600-normal.woff2') format('woff2');}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:700;font-display:swap;src:url('./fonts/dm-sans-latin-700-normal.woff2') format('woff2');}
:root{--plum:#473858;--mint:#97dbbb;--coral:#ff917d;--lemon:#edf79a;--cream:#fff9e9;--ink:#283d45;font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--mint);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation;min-height:44px}button:disabled{cursor:default;opacity:.45}[hidden]{display:none!important}button:focus-visible,a:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #ec795b;outline-offset:3px}.game-page{height:100svh;height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:flex;flex-direction:column;overflow:hidden;overscroll-behavior:none}.game-header{height:52px;min-height:52px;width:100%;max-width:920px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:var(--plum);color:var(--cream)}.brand{display:flex;align-items:center;gap:7px;color:inherit;text-decoration:none;font:800 29px/1 'Barlow Condensed',sans-serif;letter-spacing:-.4px}.brand-icon{color:var(--lemon);font-size:32px}.header-actions{display:flex;gap:8px;align-items:center}.header-actions button{border:0;color:var(--cream);background:#ffffff12;border-radius:12px;font-size:11px;font-weight:700;padding:0 12px;min-height:36px}#open-menu{width:42px;font-size:22px;min-height:44px;padding:0}.game-main{display:flex;flex:1;min-height:0;width:100%;max-width:920px;margin:0 auto}.arena{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;background:#3993a6}.court-wrap{flex:1;min-height:190px;position:relative;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.scoreboard{position:absolute;top:12px;left:12px;right:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;pointer-events:none}.score-player,.score-opponent{display:flex;align-items:center;gap:7px;padding:6px 10px;background:var(--cream);border:2px solid var(--plum);border-radius:18px;box-shadow:0 4px 0 var(--plum)}.score-player{transform:rotate(-2deg)}.score-opponent{transform:rotate(2deg)}.player-name{font-size:12px;font-weight:700}.scoreboard strong{font:800 37px/.95 'Barlow Condensed',sans-serif;color:var(--plum);min-width:17px;text-align:center}.player-dot,.opponent-dot{width:27px;height:27px;display:grid;place-items:center;border-radius:50%;background:var(--mint);font:800 21px/1 'Barlow Condensed',sans-serif;color:var(--plum)}.opponent-dot{background:var(--coral)}.score-center{background:#fff9e9ed;border:2px solid var(--plum);border-radius:12px;padding:5px 7px;box-shadow:0 3px 0 #47385840;min-width:68px;text-align:center;display:flex;flex-direction:column;gap:3px;color:var(--plum);font-size:10px;font-weight:700}.rally-badge{font:800 19px/1 'Barlow Condensed',sans-serif}.scoreboard[data-winner="0"] .score-player,.scoreboard[data-winner="1"] .score-opponent{background:var(--lemon)}.court-top{position:absolute;top:79px;left:16px;right:16px;display:flex;justify-content:space-between;align-items:center;color:var(--plum);font-size:10px;font-weight:700;pointer-events:none}.court-top>span{background:#fff9e9ce;padding:5px 9px;border-radius:12px}.court-top button{pointer-events:auto;background:var(--cream);border:2px solid var(--plum);border-radius:50%;color:var(--plum);min-width:44px;font-size:10px;font-weight:700;padding:0 5px}.court-status{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);background:#473858e6;color:var(--cream);padding:7px 14px;border-radius:20px;font-size:11px;white-space:nowrap;pointer-events:none}.overlay{position:absolute;inset:0;display:grid;place-items:center;background:#2b756d22;z-index:2;padding:14px;pointer-events:none}.overlay-box{pointer-events:auto;width:min(100%,330px);padding:22px;text-align:center;border:3px solid var(--plum);border-radius:28px;background:var(--cream);box-shadow:0 7px 0 #473858;transform:rotate(-1deg)}.ball-icon{display:inline-block;font-size:44px;line-height:1;color:#a4b83b;text-shadow:2px 2px #647e2d}.overlay h2{font:800 42px/.98 'Barlow Condensed',sans-serif;color:var(--plum);margin:10px 0}.overlay p{font-size:12px;line-height:1.6;margin:0 0 17px;color:#52636b}.primary{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border:2px solid var(--plum);border-radius:16px;background:var(--coral);color:var(--plum);font-weight:700;box-shadow:0 4px 0 var(--plum);padding:10px 18px}.primary:active,.shots button:active{transform:translateY(3px);box-shadow:0 1px 0 var(--plum)}.overlay .primary{width:100%;font:800 26px/1 'Barlow Condensed',sans-serif}.overlay[data-kind="result"]{align-items:end;background:transparent;padding-bottom:17px}.overlay[data-kind="result"] .overlay-box{max-width:350px;padding:13px 18px;transform:none}.overlay[data-kind="result"] .ball-icon{display:none}.overlay[data-kind="result"] h2{font-size:32px;margin:0 0 4px}.overlay[data-kind="result"] p{font-size:11px;margin:0 0 8px}.controls{flex-shrink:0;background:var(--plum);border-radius:24px 24px 0 0;padding:12px 14px 14px;box-shadow:0 -4px 0 #fff9e9;position:relative;z-index:3}.shot-aim-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.shots{display:flex;gap:7px;flex:1}.shots button{border:2px solid #fff9e944;border-radius:12px;background:#62516f;color:var(--cream);min-width:0;flex:1;min-height:48px;padding:5px;box-shadow:0 3px 0 #2b2235;display:flex;align-items:center;justify-content:center;gap:5px}.shots button.selected{background:var(--lemon);border-color:var(--cream);color:var(--plum)}.shots b{font:800 21px/1 'Barlow Condensed',sans-serif}.shot-symbol{font-size:20px}.aim{display:flex;align-items:center;flex-direction:column;gap:2px}.aim-title{font-size:9px;color:var(--cream);font-weight:600}.aim-buttons{display:flex;background:#2f253c;border-radius:12px;padding:2px}.aim-buttons button{min-height:44px;width:44px;border:0;border-radius:10px;background:transparent;color:var(--cream);font-size:24px;line-height:1}.aim-buttons button.selected{background:var(--mint);color:var(--plum)}.thumb-row{display:flex;align-items:center;gap:14px;margin-top:13px}.move-pad{position:relative;flex:1;height:67px;background:#342a41;border:2px solid #8a7698;border-radius:35px;touch-action:none;user-select:none;cursor:ew-resize;--position:50%}.move-track{position:absolute;left:20px;right:20px;top:23px;height:3px;background:#766387;border-radius:3px}.move-thumb{position:absolute;left:clamp(27px,var(--position),calc(100% - 27px));top:5px;transform:translateX(-50%);width:43px;height:36px;border-radius:18px;background:var(--mint);color:var(--plum);display:grid;place-items:center;font-size:25px;box-shadow:0 3px 0 #79ac94}.move-hint{position:absolute;bottom:5px;left:0;right:0;text-align:center;font-size:10px;color:var(--cream);pointer-events:none}.swing{width:112px;min-height:70px;flex-shrink:0;border-radius:40px;background:var(--coral);font:800 28px/1 'Barlow Condensed',sans-serif;border-color:var(--cream);box-shadow:0 4px 0 #a45566}.swing span{font-size:22px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}dialog{border:3px solid var(--plum);border-radius:26px;max-width:410px;width:calc(100% - 32px);padding:22px;background:var(--cream);color:var(--plum);box-shadow:0 8px 0 #47385866;max-height:85dvh}dialog::backdrop{background:#281f3c88}dialog h2{font:800 36px/1 'Barlow Condensed',sans-serif;margin:0 0 15px}dialog p{font-size:13px;line-height:1.6}.menu-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.menu-heading h2{margin:0}.menu-heading button{width:44px;background:var(--mint);border:2px solid var(--plum);border-radius:50%;color:var(--plum)}.setup>label{display:block;font-size:12px;font-weight:700;margin:12px 0 7px}.setup select{width:100%;min-height:44px;padding:10px;background:white;border:2px solid #b2b5a5;border-radius:12px;color:var(--plum);font-size:13px}.setup .check{display:flex;gap:8px;align-items:center}.check input{accent-color:#5c4272;width:20px;height:20px}.menu-note{font-size:11px;color:#695c72;line-height:1.5}.menu-actions{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}.menu-actions button,.menu-actions a{display:flex;align-items:center;justify-content:center;min-height:44px;padding:8px 12px;border-radius:12px;border:2px solid var(--plum);background:var(--mint);color:var(--plum);font-size:12px;font-weight:700;text-decoration:none}#offline-status{font-size:11px;color:#506745}#install-help .primary{width:100%}
@media(min-width:700px){.game-header{border-radius:0 0 18px 18px}.game-main{max-width:650px;padding:10px 0 0}.arena{border:4px solid var(--plum);border-bottom:0;border-radius:30px 30px 0 0}.controls{padding-inline:24px}.shots button{min-height:50px}.swing{width:135px}.scoreboard{left:20px;right:20px}.player-name{font-size:14px}.scoreboard strong{font-size:43px}.court-top{top:86px}}
@media(max-width:370px){.game-header{height:46px;min-height:46px;padding-inline:12px}.brand{font-size:26px}.brand-icon{font-size:27px}.controls{padding:10px}.shot-aim-row{gap:7px}.shots{gap:4px}.shots b{font-size:19px}.shot-symbol{display:none}.aim-buttons button{width:44px}.swing{width:96px;font-size:26px}.thumb-row{gap:10px}.scoreboard{left:8px;right:8px;gap:6px}.score-player,.score-opponent{padding:6px;gap:5px}.player-dot,.opponent-dot{width:22px;height:22px}.score-label{font-size:9px}}
@media(max-height:520px) and (orientation:landscape){.game-header{display:none}.game-main{max-width:none;padding:0}.arena{flex-direction:row;border:0;border-radius:0}.court-wrap{width:calc(100% - 200px)}.controls{width:200px;border-radius:0;padding:12px;display:flex;flex-direction:column;justify-content:center;box-shadow:none}.shot-aim-row{flex-direction:column}.shots{width:100%}.aim{flex-direction:row}.aim-buttons button{width:40px}.thumb-row{flex-direction:column;gap:10px}.move-pad{width:100%;min-height:60px;flex:none}.swing{width:100%;min-height:57px}.scoreboard{top:8px}.court-top{top:68px}.overlay-box{max-width:290px;padding:12px}.overlay h2{font-size:30px}.overlay p{margin-bottom:8px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}
/* Shared studio foundations; its own layout stays editable. */
body:not(.game-page){padding:env(safe-area-inset-top) 16px env(safe-area-inset-bottom);background:#d9e9e7}body:not(.game-page)>header{display:flex;align-items:center;justify-content:space-between;padding:20px 0}body:not(.game-page) .brand{color:var(--plum)}body:not(.game-page) main{margin:auto;padding:16px 0}body:not(.game-page) h1{font:800 56px/1 'Barlow Condensed',sans-serif;color:var(--plum)}

#sound{min-height:44px}
.header-actions .coin-wallet{background:var(--lemon);color:var(--plum);font-size:14px;border:2px solid var(--cream);min-width:65px;min-height:40px}.coin-wallet>span{color:#867128;text-shadow:0 1px 0 #fff6b8;margin-right:4px}.match-reward{padding:9px 10px;margin:10px 0;background:#edf79a77;border-radius:14px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px}.match-reward strong{font-size:14px;width:100%}.match-reward button{background:var(--mint);color:var(--plum);border:2px solid var(--plum);border-radius:10px;font-size:12px;font-weight:700;padding:5px 12px}.match-reward button#retry-reward{background:var(--cream)}#wardrobe{padding:17px;max-width:460px;max-height:calc(100dvh - 24px);overflow:auto}#wardrobe .menu-heading{margin-bottom:8px}#wardrobe .menu-heading h2{font-size:34px}.locker-wallet{display:flex;align-items:center;justify-content:space-between;font-size:12px;font-weight:700}.locker-wallet b{background:var(--lemon);padding:7px 12px;border-radius:14px;font-size:17px}.locker-wallet b>span:first-child{color:#927b24}.outfit-stage{position:relative;height:clamp(185px,30dvh,290px);margin:12px 0;background:#d3e8d3;border-radius:22px;overflow:hidden}.outfit-stage canvas{height:100%;width:100%}.outfit-stage>span{position:absolute;top:10px;left:12px;font-size:10px;color:#445e50;background:#fff9e9b8;padding:5px 8px;border-radius:12px}:is(#outfit-list,#paddle-list,#ball-list){display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}:is(#outfit-list,#paddle-list,#ball-list) button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:10px 3px;min-height:96px;border:2px solid #b7b3ad;border-radius:17px;background:#fffdfa;color:var(--plum)}:is(#outfit-list,#paddle-list,#ball-list) button[aria-pressed="true"]{background:var(--lemon);border-color:var(--plum);box-shadow:0 3px 0 var(--plum)}:is(#outfit-list,#paddle-list,#ball-list) b{font-size:11px}:is(#outfit-list,#paddle-list,#ball-list) small{font-size:10px;color:#655b63}.outfit-shirt{display:block;width:35px;height:31px;background:linear-gradient(90deg,var(--outfit-primary) 55%,var(--outfit-secondary) 55%);clip-path:polygon(25% 0,40% 0,45% 12%,55% 12%,60% 0,75% 0,100% 20%,83% 45%,75% 36%,75% 100%,25% 100%,25% 36%,17% 45%,0 20%)}#locker-status{font-size:12px;line-height:1.4;min-height:34px;margin:12px 0 8px}#locker-action{width:100%;font-size:14px}.local-progress-note{font-size:10px;text-align:center;color:#6c6275;margin-bottom:0}#wardrobe .menu-note{margin:12px 0 5px}
@media(max-height:650px){#wardrobe .outfit-stage{height:130px}:is(#outfit-list,#paddle-list,#ball-list) button{min-height:80px;padding:7px 3px}#wardrobe .menu-heading h2{font-size:30px}#wardrobe .menu-note{font-size:10px}}

.locker-tabs{display:flex;gap:6px;background:#e4e2d8;border-radius:15px;padding:4px;margin:10px 0}.locker-tabs button{flex:1;border:0;border-radius:12px;background:transparent;color:var(--plum);font-size:13px;font-weight:700}.locker-tabs button[aria-selected="true"]{background:var(--plum);color:var(--cream);box-shadow:0 2px 0 #2d2339}.paddle-swatch{width:25px;height:30px;border:2px solid var(--outfit-secondary);border-radius:6px;background:var(--outfit-primary);position:relative;margin-bottom:6px}.paddle-swatch::after{content:'';position:absolute;width:6px;height:10px;bottom:-9px;left:7px;background:var(--plum);border-radius:0 0 3px 3px}#wardrobe .outfit-stage{height:clamp(160px,27dvh,255px)}@media(max-height:650px){#wardrobe .outfit-stage{height:115px}.locker-tabs{margin:7px 0}.locker-tabs button{min-height:38px}}

.court-tools{display:flex;gap:7px;pointer-events:auto}.court-top #open-emotes{border-radius:15px;padding:0 10px;font-size:17px;display:flex;align-items:center;gap:4px}.court-top #open-emotes span{font-size:10px}.emote-tray{position:absolute;right:15px;top:130px;z-index:5;display:flex;flex-direction:column;gap:6px;padding:8px;background:var(--cream);border:2px solid var(--plum);border-radius:17px;box-shadow:0 4px 0 #47385844}.emote-tray button{border:0;border-radius:10px;background:#d3e8d3;color:var(--plum);text-align:left;font-size:12px;font-weight:700;padding:8px 12px}.emote-tray button:nth-child(2){background:#ffd9ce}.emote-tray button:nth-child(3){background:var(--lemon)}.emote-bubble{position:absolute;left:50%;top:22%;transform:translateX(-50%) rotate(-3deg);z-index:4;border:2px solid var(--plum);border-radius:18px;background:var(--cream);color:var(--plum);padding:9px 16px;white-space:nowrap;font:800 26px/1 'Barlow Condensed',sans-serif;box-shadow:0 4px 0 #47385844;pointer-events:none}@media(max-height:520px) and (orientation:landscape){.emote-tray{top:116px}.emote-bubble{top:26%;font-size:22px}}

.ball-swatch{display:block;width:31px;height:31px;border-radius:50%;background:radial-gradient(circle at 27% 32%,var(--outfit-secondary) 0 2px,transparent 3px),radial-gradient(circle at 68% 27%,var(--outfit-secondary) 0 2px,transparent 3px),radial-gradient(circle at 47% 68%,var(--outfit-secondary) 0 2px,transparent 3px),var(--outfit-primary);box-shadow:inset -3px -3px 0 #47385822;margin-bottom:5px}

#club-goals{max-width:480px;max-height:calc(100dvh - 24px);overflow:auto;padding:18px}#club-goals .menu-heading{margin-bottom:12px}.goals-banner{display:flex;align-items:center;gap:10px;background:var(--lemon);padding:14px 12px;border-radius:19px;color:var(--plum)}.goals-banner>span{font-size:35px}.goals-banner b{font:800 25px/1 'Barlow Condensed',sans-serif}.goals-banner p{margin:5px 0 0;font-size:10px}.goals-banner strong{margin-left:auto;white-space:nowrap;font-size:16px}.goals-banner strong>span:first-child{color:#8c7a29}.career-strip{display:flex;justify-content:space-around;padding:14px 0;border-bottom:2px dashed #c6bdbe;margin-bottom:14px}.career-strip span{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:10px}.career-strip b{font:800 28px/1 'Barlow Condensed',sans-serif}#goal-list{display:flex;flex-direction:column;gap:10px}.goal-card{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:8px;padding:12px 9px;border:2px solid #c9c2bd;border-radius:18px;background:#fffdfa}.goal-symbol{display:grid;place-items:center;border-radius:50%;background:#e0e8d3;height:34px;font-size:23px}.goal-card h3{font:800 22px/1 'Barlow Condensed',sans-serif;margin:0 0 4px}.goal-card p{font-size:10px;line-height:1.4;margin:0 0 6px;color:#6c6275}.goal-card progress{width:100%;height:7px;accent-color:#8cc5a7;display:block;border:0;border-radius:8px;overflow:hidden}.goal-card progress::-webkit-progress-bar{background:#e4e2d8}.goal-card progress::-webkit-progress-value{background:#85c6a7}.goal-counter{font-size:9px;display:block;margin-top:4px;color:#6c6275}.goal-card button{min-width:81px;font-size:11px;font-weight:700;border:2px solid var(--plum);border-radius:13px;background:var(--lemon);color:var(--plum);padding:7px}.goal-card[data-state=ready]{background:#edf79a33;border-color:#8ea762}.goal-card[data-state=claimed]{background:#e5f0e3;border-color:#a3c5ac}.goal-card[data-state=claimed] button{background:var(--mint)}#goals-status{font-size:12px;line-height:1.5;min-height:36px;margin:14px 0 10px}#claim-all-goals{width:100%;font-size:13px}.goals-locker{width:100%;border:2px solid var(--plum);border-radius:15px;margin-top:10px;background:var(--mint);color:var(--plum);font-weight:700;font-size:13px}.goal-summary{width:100%;font-size:11px;color:#61516d}.match-reward #reward-goals{background:var(--lemon)}@media(max-width:370px){#club-goals{padding:14px}.goal-card{grid-template-columns:25px 1fr auto;gap:6px;padding:10px 7px}.goal-symbol{height:25px;font-size:20px}.goal-card h3{font-size:20px}.goal-card button{min-width:70px;font-size:10px;padding:5px}.goals-banner b{font-size:23px}.goals-banner p{max-width:130px}.goals-banner>span{font-size:28px}}

.rules-cue{position:absolute;left:16px;top:134px;max-width:195px;border:1px solid #47385866;background:#fff9e9eb;color:var(--plum);padding:7px 10px;border-radius:12px;font-size:10px;font-weight:700;pointer-events:none}.scoreboard[data-server="0"] .player-dot,.scoreboard[data-server="1"] .opponent-dot{outline:2px solid var(--plum);outline-offset:2px}.intro-guide{background:transparent;border:0;font-size:11px;color:var(--plum);text-decoration:underline;margin-top:5px;min-height:44px}.overlay[data-kind=result] .intro-guide{display:none}#play-guide{max-width:460px;max-height:calc(100dvh - 24px);overflow:auto;padding:18px}.guide-step{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:2px dashed #d8d0c9}.guide-step>span{flex:0 0 48px;height:48px;display:grid;place-items:center;border-radius:18px;background:var(--mint);font-size:27px;color:var(--plum);transform:rotate(-5deg)}.guide-step:nth-of-type(3)>span{background:var(--lemon);transform:rotate(5deg)}.guide-step:nth-of-type(4)>span{background:#ffd4c7}.guide-step h3,.guide-rules h3{font:800 26px/1 'Barlow Condensed',sans-serif;margin:0 0 5px}.guide-step p{margin:0;font-size:11px;line-height:1.5;color:#6c6275}.guide-rules{margin:14px 0;padding:15px;background:#dcebd9;border-radius:18px}.guide-rules p{font-size:11px;line-height:1.5;margin:8px 0}.guide-rules a{color:var(--plum)}#guide-practice{width:100%;font-size:13px}@media(max-height:520px) and (orientation:landscape){.rules-cue{top:122px;font-size:9px;max-width:185px}}

/* Thumb comfort: keep the court visible and mirror the primary action. */
.comfort-settings{border:2px solid #b9cab6;border-radius:18px;padding:12px;margin:14px 0;display:grid;gap:8px}.comfort-settings legend{font:800 25px/1 'Barlow Condensed',sans-serif;color:var(--plum)}.comfort-settings .check{font-size:12px;line-height:1.5}.control-readout{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:var(--cream);opacity:.9;margin-top:10px}.control-readout+.thumb-row{margin-top:6px}.left-handed .thumb-row{flex-direction:row-reverse}.court-focus .game-header{display:none}.move-pad.moving{border-color:var(--lemon)}.pressed{filter:brightness(1.16);transform:translateY(2px)}
@media(max-width:370px){.shots{flex:1;min-width:0}.shots button{padding-inline:7px;min-width:0;flex:1}.shots b{font-size:18px}.aim-buttons{gap:2px}.aim-buttons button{width:40px;min-width:40px}.shot-aim-row{gap:6px}.control-readout{font-size:9px}}
@media(max-height:520px) and (orientation:landscape){.left-handed .thumb-row{flex-direction:column-reverse}.control-readout{flex-direction:column;gap:2px;margin-top:8px}.control-readout+.thumb-row{margin-top:7px}}

#court-menu{display:none;font-size:18px}.court-focus #court-menu{display:block}@media(max-height:520px) and (orientation:landscape){#court-menu{display:block}}

.court-top{z-index:3}

#control-timing[data-cue=ready]{color:var(--lemon);font-weight:700}#control-timing[data-cue=bounce]{color:#ffd5b5}#swing[data-cue=ready]{background:var(--lemon);color:var(--plum);border-color:white}.overlay .point-tip{background:#dcebd9;border-radius:12px;padding:9px 12px;margin:6px 0;font-size:11px;line-height:1.5}.overlay[data-kind=result] #overlay-text{margin-bottom:9px;font-weight:700}

.drill-count{color:var(--plum);font-size:11px;font-weight:700;white-space:nowrap}.overlay[data-kind=drill] .intro-guide{display:none}.overlay[data-kind=drill] .ball-icon{color:#80bb8c}@media(max-width:370px){.drill-count{font-size:9px}}
/* Friends court follows the same plum / mint arcade palette. */
#friends{width:min(440px,calc(100vw - 28px));box-sizing:border-box;max-height:calc(100dvh - 32px);overflow:auto}
#friends form,#friends section{min-width:0}#friends label{display:block;font-weight:700;margin:14px 0 7px}
#friends input,#friends select{box-sizing:border-box;width:100%;min-width:0;padding:12px;border:2px solid #cdd6dd;border-radius:12px;background:#fff;color:#473858;font:inherit}
#friends input:focus-visible{outline:3px solid #7b61a8;outline-offset:2px}
.friends-banner{display:flex;gap:14px;align-items:center;padding:16px;border-radius:18px;background:#d6f4e7;color:#473858}.friends-banner>span{font-size:36px}.friends-banner p{margin:5px 0 0;font-size:13px}
.friends-status{background:#f1edf7;border-radius:12px;padding:12px;font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.friends-actions{display:flex;gap:8px;align-items:center;margin:12px 0}.friends-actions>*{flex:1;min-width:0}.friends-actions button{padding:12px 10px}
#create-room{width:100%;margin-top:14px}.friends-divider{text-align:center;color:#756781;margin:20px 0 4px;font-size:13px}
.room-code{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:34px;text-align:center;letter-spacing:3px;background:#edf79a;border:2px dashed #9aab57;border-radius:14px;padding:16px 6px;color:#473858;user-select:all}
#account-signout,#leave-room{width:100%;margin-top:16px}#friends[aria-busy=true]{cursor:progress}

.player-name{max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-code{font-size:clamp(24px,7vw,34px)}

#friends button{border:2px solid var(--plum);border-radius:13px;background:#d6f4e7;color:var(--plum);font-size:13px;font-weight:700;box-shadow:0 3px 0 #47385825}#friends button.primary{background:var(--coral)}#friends .menu-heading button{border-radius:50%;min-width:42px}#friends button:disabled{box-shadow:none}

#resume-room{width:100%;background:var(--lemon);margin:10px 0}

#court-location[data-connection=connected]{background:var(--mint)}#court-location[data-connection=paused],#court-location[data-connection=reconnecting]{background:var(--lemon)}

.save-kit{border:2px dashed #b5adaf;border-radius:16px;padding:12px;margin-top:14px;background:#fff9e9}.save-kit summary{font-weight:700;cursor:pointer;font-size:13px}.save-kit p{font-size:11px;line-height:1.5}.save-actions{display:flex;flex-wrap:wrap;gap:8px}.save-kit button,.save-file{border:2px solid var(--plum);border-radius:12px;padding:10px;background:var(--mint);color:var(--plum);font-size:12px;font-weight:700;cursor:pointer;min-height:44px}.save-file{display:flex;align-items:center;position:relative;overflow:hidden}.save-file input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.save-file:focus-within{outline:3px solid #426cc1;outline-offset:2px}#protect-save{margin-top:10px;background:var(--lemon)}#restore-review{margin:10px 0;border-top:1px solid #b5adaf}#restore-review button{margin:3px 0}#save-status{margin-bottom:0;color:#61516d}

#move-pad[aria-disabled=true]{opacity:.65;cursor:default}

.connection-check{white-space:pre-line;font-size:13px}#friends-build{display:inline-block;margin-top:8px;font-weight:700}

.room-queue{margin:18px 0;padding:16px;background:#eee8f6;border:2px solid #706080;border-radius:20px}.room-queue h3{margin:0 0 12px;font-family:'Barlow Condensed',sans-serif;font-size:26px}.room-queue h3>span{display:block;font:600 12px 'DM Sans',sans-serif;margin-top:4px}.room-seats{display:grid;grid-template-columns:1fr 1fr;gap:10px}.room-seat{display:flex;flex-direction:column;gap:8px;padding:12px;background:#fff9e9;border:2px solid #c6bbd0;border-radius:14px;min-width:0}.room-seat b{overflow-wrap:anywhere;font-size:16px}.seat-role{font-size:11px;color:#706080}.room-seat [data-player-status]{font-size:12px;font-weight:700}.room-seat[data-status="Ready"]{background:#d9f4dd;border-color:#4c946c}.room-seat[data-status="Away"]{background:#ffe1c9}.room-queue>p{font-size:13px;line-height:1.5;min-height:3em}.room-queue>button{width:100%}.room-queue>button[aria-pressed="true"]{background:#c7ead8}

.friend-notice{background:var(--lemon);color:var(--plum);border:2px solid var(--plum);border-radius:14px;padding:12px 16px;font-weight:700;font-size:13px;line-height:1.5;overflow-wrap:anywhere}.court-notice{position:absolute;top:140px;left:16px;right:16px;z-index:8;pointer-events:none;box-shadow:0 4px 0 #47385844}

.shot-contact{position:absolute;bottom:48px;left:50%;transform:translateX(-50%);z-index:4;pointer-events:none;max-width:calc(100% - 32px);padding:6px 16px;background:var(--lemon);border:2px solid var(--plum);border-radius:24px;color:var(--plum);font:800 24px/1.2 'Barlow Condensed',sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 3px 0 #47385855;animation:shot-pop .16s ease-out}.shot-contact[data-shot="dink"]{background:#b8edda}.shot-contact[data-shot="lob"]{background:#ffcfb9}.shot-contact[data-side="1"]{border-style:dashed}@keyframes shot-pop{from{opacity:.35;translate:0 5px}to{opacity:1;translate:0 0}}@media(prefers-reduced-motion:reduce){.shot-contact{animation:none}}

.emote-bubble{max-width:calc(100% - 30px);white-space:normal;text-align:center;overflow-wrap:anywhere;line-height:1.15}

#club-announcement{position:relative;z-index:3;margin:8px auto;padding:10px 16px;max-width:650px;background:#edf79a;color:#473858;border-radius:12px;font-size:13px;overflow-wrap:anywhere}#club-announcement[hidden]{display:none}

.club-live-notice{position:fixed;z-index:80;top:max(12px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);width:min(480px,calc(100% - 32px));padding:12px 42px 12px 16px;border:2px solid #493957;border-radius:18px;background:#fff9e9;color:#493957;box-shadow:0 5px 0 #493957;pointer-events:none}.club-live-notice[hidden]{display:none}.club-live-notice strong,.club-live-notice span{display:block}.club-live-notice button{position:absolute;right:8px;top:8px;pointer-events:auto;border:0;background:#efefb0;border-radius:50%;width:28px;height:28px}

.coin-wallet small{font-size:10px;display:block;margin-left:4px}

.admin-control-message{width:min(430px,calc(100% - 32px));border:3px solid #493957;border-radius:24px;background:#fff9e9;color:#493957;padding:24px;box-shadow:0 7px 0 #493957}.admin-control-message h2{font-family:"Barlow Condensed",sans-serif;font-size:36px}.admin-control-message::backdrop{background:#34283ac9}

/* Folded Club tickets keep support IDs out of the normal play flow. */
.club-receipts{width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;padding:20px;color:var(--plum);background:var(--cream);border:3px solid var(--plum);border-radius:24px;box-sizing:border-box}.club-receipts h2{font:800 34px/1.1 'Barlow Condensed',sans-serif;margin:0 0 10px}.receipt-note,.club-receipts [role=status]{font-size:12px;line-height:1.55}.receipt-balance{font:800 30px/1.2 'Barlow Condensed',sans-serif;padding:12px 16px;background:var(--lemon);border:2px solid var(--plum);border-radius:14px}.receipt-filters{display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.receipt-filters input,.receipt-filters select,.receipt-card input{font:inherit;font-size:12px;min-width:0;max-width:100%;padding:10px;border:1px solid #a89dad;border-radius:9px;background:#fffdf5;color:var(--plum);box-sizing:border-box}.receipt-filters input,.receipt-filters select{min-height:44px}.receipt-card{margin:12px 0;padding:12px;border-left:6px solid var(--mint);border-bottom:1px dashed #b7aebc;background:#fffdf5;overflow-wrap:anywhere}.receipt-card[data-kind=award]{border-left-color:var(--coral)}.receipt-card summary{cursor:pointer;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;min-height:44px;align-items:center}.receipt-card summary span{font:800 24px/1 'Barlow Condensed',sans-serif}.receipt-card summary b{font-size:14px}.receipt-card time{grid-column:1/-1;font-size:11px;color:#6c6275}.receipt-card p,.receipt-card label{font-size:12px;line-height:1.5}.receipt-card label{display:block;margin-top:10px}.receipt-card input{display:block;width:100%;margin-top:4px}.receipt-help{color:#6c6275}.receipt-inventory{margin:18px 0;padding:12px;border:2px dashed #a9bca4;border-radius:14px;font-size:12px;overflow-wrap:anywhere}.receipt-inventory summary{cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center}.receipt-inventory code{display:block;overflow-wrap:anywhere}.receipt-actions{display:flex;flex-wrap:wrap;gap:8px;position:sticky;bottom:-20px;padding:12px 0;background:var(--cream)}.receipt-actions button{min-height:44px;flex:1;font-size:13px}.receipt-empty{font-size:13px;padding:18px;background:#e5f0e3;border-radius:12px}@media(max-width:370px){.receipt-filters{grid-template-columns:1fr}.club-receipts{padding:15px}.receipt-card summary span{font-size:21px}.receipt-actions{bottom:-15px}}
.receipt-retry-note{padding:12px;background:#fff0ca;border-left:4px solid #a15b22;font-size:12px;line-height:1.5}.club-receipts h3{font:800 25px/1.1 'Barlow Condensed',sans-serif;margin:18px 0 8px}

.runtime-status{border:2px solid #b7c99c;border-radius:16px;background:#eef5d6;padding:14px;margin:16px 0}.runtime-status h3{font:800 24px 'Barlow Condensed',sans-serif;margin:0 0 8px}.runtime-status p{font-size:12px;line-height:1.5;overflow-wrap:anywhere}.runtime-status button{min-height:44px;border:2px solid var(--plum);border-radius:12px;padding:8px 12px;background:var(--mint);color:var(--plum);font-weight:700;font-size:12px}.runtime-status[data-state=unavailable]{background:#fff0d6;border-color:#c89a81}.runtime-status button:disabled{opacity:.6;cursor:default}

.catalogue-status{border-top:1px solid #a9b88f;margin-top:14px;padding-top:12px}.catalogue-status summary{font-size:12px;font-weight:700;cursor:pointer;min-height:30px;line-height:1.5}.catalogue-status p{font-size:11px}.catalogue-status[data-state=unavailable] summary{color:#873c2c}

.purchase-review{max-width:440px}.purchase-review-actions{display:flex;flex-wrap:wrap;gap:10px}.purchase-review-actions button{min-height:44px;border:2px solid var(--plum);border-radius:12px;padding:10px 14px;background:var(--mint);color:var(--plum);font-weight:700;font-size:13px}.purchase-review-actions button.primary{background:var(--lemon)}
#practice-result-recovery section section{padding:14px 0;border-top:1px solid #cabfd4}#practice-result-recovery h3{font:800 25px/1.1 'Barlow Condensed',sans-serif;margin:6px 0}#practice-result-recovery button{width:100%;min-height:46px;border:2px solid var(--plum);border-radius:14px;background:var(--mint);color:var(--plum);font:800 23px/1 'Barlow Condensed',sans-serif;padding:10px 14px;margin-top:8px;box-shadow:0 3px 0 #47385855}#practice-result-recovery>button{background:var(--cream)}#practice-result-recovery button:disabled{opacity:.55;box-shadow:none}#practice-result-recovery button:focus-visible{outline:3px solid var(--coral);outline-offset:3px}

#match-record-review{max-width:540px}#match-record-review p{font-size:13px;line-height:1.6}#match-record-review .record-review-status{padding:14px;border:2px solid var(--plum);border-radius:14px;background:var(--lemon)}#match-record-review table{width:100%;border-collapse:collapse;font-size:13px}#match-record-review th,#match-record-review td{padding:10px 4px;border-bottom:1px solid #cabfd4;text-align:left}#match-record-review td{text-align:center;font-weight:700}#match-record-review button{width:100%;min-height:46px;margin-top:10px;border:2px solid var(--plum);border-radius:14px;background:var(--mint);color:var(--plum);font:800 23px 'Barlow Condensed',sans-serif;padding:8px 12px}#match-record-review>button:last-child{background:var(--cream)}#match-record-review button:disabled{opacity:.55}#match-record-review button:focus-visible{outline:3px solid var(--coral);outline-offset:3px}

.friend-room-check{font-size:12px;line-height:1.5;border-left:3px solid #ff917d;padding:8px 12px;background:#fff3ca;border-radius:5px;overflow-wrap:anywhere}

#adventure{max-width:760px}.adventure-intro{font-size:1.15rem;line-height:1.5}.adventure-region{border-left:6px solid #327caa;padding:4px 0 14px 18px;margin:24px 0}.adventure-region.garden{border-color:#498476}.adventure-region.rooftop{border-color:#697caa}.adventure-region h3{font-size:1.5rem;margin:0 0 10px}.adventure-stop{display:block;width:100%;text-align:left;margin:8px 0;padding:14px 18px}.adventure-stop span{display:block;font-size:.8rem;opacity:.8;margin-top:5px}.adventure-stop:disabled{opacity:.55}#match-search{margin:16px 0;padding:16px;border:2px solid #327caa;border-radius:16px}#match-search h3{margin:0 0 8px}
.adventure-stop:not(:disabled){background:#a9dabb;color:#332b46;border:2px solid #514361;border-radius:14px;font-weight:700}.adventure-stop:disabled{opacity:1;color:#6a6172;background:#eeebe2;border:1px solid #c3bbad;box-shadow:none}

/* Adventure: a three-court tour with a selected challenge and numbered route. */
#adventure{max-width:880px;width:calc(100% - 24px);max-height:calc(100dvh - 24px);overflow:auto;padding:24px}.adventure-intro{max-width:58ch;font-size:1rem}.adventure-progress{display:block;width:100%;height:9px;margin:12px 0 22px;accent-color:#498476}.adventure-featured{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);overflow:hidden;border:2px solid var(--plum);border-radius:20px;background:var(--cream)}.adventure-scene{display:grid;place-items:center;background:var(--tour-sky);min-height:240px}.adventure-scene svg{display:block;width:100%;height:auto}.adventure-brief{padding:22px}.adventure-meta{font-size:.75rem;margin:0 0 6px}.adventure-brief h3{font:800 34px/1.05 'Barlow Condensed',sans-serif;margin:0 0 12px}.adventure-tags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}.adventure-tags span{padding:4px 9px;border:1px solid #b6c6b7;border-radius:6px;font-size:.75rem;background:#e5efdf}.adventure-objective{font-weight:700;line-height:1.45;margin:10px 0}.adventure-tip,.adventure-unlock{font-size:.8rem;line-height:1.5}.adventure-unlock{color:#426453}.adventure-start{width:100%;margin-top:6px;min-height:46px}.adventure-region{border:0;padding:0;margin:24px 0}.adventure-region h3{font:800 24px/1.1 'Barlow Condensed',sans-serif;margin-bottom:12px}.adventure-route{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.adventure-route .adventure-stop{position:relative;display:grid;grid-template-columns:28px 1fr;align-content:start;gap:5px 8px;margin:0;padding:12px;min-height:112px;border-radius:12px}.adventure-stop b{font-size:.85rem;line-height:1.3}.adventure-route .adventure-stop span{font-size:.7rem;opacity:1;margin:0}.adventure-stop .adventure-number{grid-row:1 / 4;display:grid;place-items:center;align-self:start;width:26px;height:26px;border:1px solid currentColor;border-radius:50%;font-weight:700}.adventure-stop-state,.adventure-stop-rules{grid-column:2}.adventure-route .adventure-stop:not(:disabled){background:#fff9e9;border:1px solid #9bb4a1;color:var(--plum)}.adventure-route .adventure-stop[data-state=complete]{background:#dfeddf}.adventure-route .adventure-stop[aria-pressed=true]{background:var(--lemon);border:2px solid var(--plum);padding:11px}.adventure-route .adventure-stop:disabled{color:#6a6172;background:#eeebe2;border:1px solid #c3bbad}.adventure-featured:focus{outline:3px solid #327caa;outline-offset:3px}#leave-adventure{min-height:44px}@media(max-width:560px){#adventure{padding:16px}.adventure-featured{grid-template-columns:1fr}.adventure-scene{min-height:0;max-height:180px;overflow:hidden}.adventure-scene svg{max-width:330px}.adventure-brief{padding:16px}.adventure-brief h3{font-size:30px}.adventure-route{gap:7px}.adventure-route .adventure-stop{display:flex;flex-direction:column;gap:6px;padding:9px;min-height:142px}.adventure-route .adventure-stop[aria-pressed=true]{padding:8px}.adventure-stop b{font-size:.78rem}.adventure-route .adventure-number{width:24px;height:24px}.adventure-meta{font-size:.72rem}}

.match-versus{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;width:min(330px,100%);margin:10px auto;text-align:center;animation:match-reveal .55s ease-out}.match-contender{display:grid;justify-items:center;gap:3px;min-width:0}.match-contender img{width:54px;height:54px;object-fit:contain;border-radius:50%;background:#dcebdc;border:2px solid #9bb4a1}.match-contender b{font-size:12px;max-width:110px;overflow-wrap:anywhere}.match-avatar{display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:var(--mint);font-weight:700}.match-versus-mark{font:800 24px 'Barlow Condensed',sans-serif;color:var(--plum)}.match-venue{grid-column:1/-1;font-size:11px;margin:0}.match-insights{display:grid;grid-template-columns:1fr 1fr;gap:7px;width:min(330px,100%);margin:10px auto}.match-insights>div{padding:8px;background:#e4eddc;border-radius:10px;display:grid;gap:2px}.match-insights strong{font:800 28px/1 'Barlow Condensed',sans-serif}.match-insights span{font-size:11px}.match-insights-note,.match-personal-best{grid-column:1/-1;margin:0;font-size:10px;line-height:1.4}.match-personal-best{font-weight:700;color:#32674e}#court-ambience{margin-right:7px}@keyframes match-reveal{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.match-versus{animation:none}}@media(max-height:600px){.match-contender img,.match-avatar{width:36px;height:36px}.match-versus{margin:5px auto;gap:3px}.match-insights{margin:5px auto}.match-insights strong{font-size:22px}}

/* Keep complete intro/results readable above the fixed touch controls on compact screens. */
.overlay{grid-template-rows:minmax(0,1fr)}.overlay-box{min-height:0;max-height:100%;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin}.overlay[data-kind=result]{z-index:5}#overlay .overlay-box>#start{position:sticky;bottom:0;z-index:1}

/* Practice passport: medals line up like a scorecard; character stamps stay secondary. */
.academy-dialog{width:min(720px,calc(100% - 24px));max-width:720px;max-height:90dvh;overflow:auto}.academy-lead{font-size:1.05rem;max-width:48ch}.academy-status:empty{display:none}.academy-status{background:#edf79a;padding:12px;border-radius:12px}.academy-dialog h3{font:800 1.8rem 'Barlow Condensed',sans-serif;margin:25px 0 8px}.academy-pack{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:14px;align-items:center;padding:18px 0;border-bottom:2px solid #47385822}.academy-pack h4,.mastery-card h4{font:700 1.4rem 'Barlow Condensed',sans-serif;margin:0 0 6px}.academy-pack p,.mastery-card p{margin:5px 0;line-height:1.5}.academy-pack small,.mastery-card small{display:block;line-height:1.5}.academy-pack button{min-height:44px}.academy-medal{width:48px;height:56px;display:grid;place-items:center;border:3px solid #473858;border-radius:50% 50% 45% 45%;font:800 1.6rem 'Barlow Condensed',sans-serif;box-shadow:0 4px 0 #473858}.medal-0{background:#dae4db;color:#65726a}.medal-1{background:#dca47f}.medal-2{background:#cfd9e4}.medal-3{background:#f2d96a}.academy-mastery{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.mastery-card{display:flex;align-items:flex-start;gap:12px;padding:14px;border:2px solid #473858;border-radius:18px}.mastery-card img{width:64px;height:76px;object-fit:contain;border:3px solid #b7c9bc;border-radius:50%;background:#e2eddf}.mastery-mint img{border-color:#60ad91}.mastery-coral img{border-color:#ee8869}.mastery-gold img{border-color:#d4af32}.mastery-card label{display:block;font-size:.78rem;margin-top:12px}.mastery-card select{display:block;max-width:100%;width:100%;min-height:44px;margin-top:4px;font:inherit}.mastery-card>div{min-width:0}.mastery-card strong{font-size:.9rem}.rival-brief{display:grid;grid-template-columns:60px 1fr;gap:5px 12px;align-items:center;margin:12px 0}.rival-brief img{grid-row:span 2;width:60px;height:70px;object-fit:contain}.rival-brief p{margin:0;font-size:.9rem}.match-contender[data-frame=mint] img{outline:3px solid #60ad91}.match-contender[data-frame=coral] img{outline:3px solid #ee8869}.match-contender[data-frame=gold] img{outline:3px solid #d4af32}.match-mastery-title{display:block;font-size:.65rem;line-height:1.2;max-width:110px}#menu-academy{background:#edf79a}
@media(max-width:600px){.academy-mastery{grid-template-columns:1fr}.academy-pack{grid-template-columns:46px 1fr;gap:12px}.academy-pack button{grid-column:2;justify-self:start}.academy-medal{width:42px}.academy-dialog{padding:18px}.mastery-card img{width:55px}.rival-brief{grid-template-columns:44px 1fr}.rival-brief img{width:44px}}
.clubhouse-dialog h3{margin-top:28px}.passport-player{display:flex;gap:18px;align-items:center}.passport-player img{width:90px;height:110px;object-fit:contain;border:4px solid #b7c9bc;border-radius:50%;background:#dae7db}.passport-player.mastery-mint img{border-color:#60ad91}.passport-player.mastery-coral img{border-color:#ee8869}.passport-player.mastery-gold img{border-color:#d4af32}.passport-nickname{display:flex;gap:12px;align-items:end;flex-wrap:wrap}.passport-nickname label{flex:1;min-width:140px}.passport-nickname input{display:block;width:100%;min-height:44px}.passport-nickname button{min-height:44px}.passport-daily{margin:24px 0;padding:18px;border:3px solid #473858;border-radius:18px;background:#edf79a}.passport-daily small{display:block;line-height:1.5;margin:12px 0}.passport-party button{margin:5px 8px 5px 0}.passport-stamps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.passport-stamp{padding:14px;border:2px dashed #473858;border-radius:18px}.passport-stamp>span{font-size:2rem}.passport-stamp h4{margin:6px 0}.passport-stamp button{font-size:.85rem;min-height:44px;max-width:100%}.passport-stamp.locked{background:#e4e6dd}.passport-stamp.earned{background:#f5e3ba}.passport-rival{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:12px 0;border-bottom:1px solid #47385833}.highlights-dialog canvas{display:block;width:100%;height:min(55dvh,500px);object-fit:contain;background:#345966;border-radius:16px;margin:12px 0}.highlights-dialog button{margin:4px;min-height:44px}.highlights-dialog canvas[hidden]{display:none}#menu-passport{background:#a6dfc9}
@media(max-width:600px){.passport-stamps{grid-template-columns:1fr}.passport-stamp{display:grid;grid-template-columns:40px 1fr;gap:5px 10px}.passport-stamp>span{grid-row:span 2}.passport-stamp h4,.passport-stamp p{margin:0}.passport-stamp button{grid-column:2;justify-self:start}.passport-nickname{align-items:stretch}}

/* DinkTayo mark: preserve the accepted layout and touch targets. */
.dinktayo-mark{display:inline-block;flex:none;vertical-align:middle;object-fit:contain}.brand:has(.dinktayo-mark){gap:9px;align-items:center}
