:root{font-family:'Nunito Sans',system-ui,sans-serif;color:#22223b;background:#22223b;font-synthesis:none;color-scheme:light;--cream:#f2e9e4;--plum:#22223b;--orange:#ff6b35;--muted:#6a626d}*{box-sizing:border-box}body{margin:0}button,select{font:inherit}button{border:1px solid #c9bcb8;border-radius:12px;min-height:44px;padding:.55rem .9rem;color:var(--plum);background:#fff9f4;font-weight:750;cursor:pointer;line-height:1.2;overflow-wrap:anywhere}button:hover:not(:disabled){background:#ffe1c8;border-color:#e28a65}button:disabled{opacity:.46;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid #ff8a51;outline-offset:3px}button.primary,#tour[aria-pressed=true],#practice[aria-pressed=true],#continue{background:var(--orange);border-color:#c84924;color:#27162b}button[aria-pressed=true]{box-shadow:inset 0 0 0 2px #22223b}a{color:inherit}p{line-height:1.5}#app{height:100dvh;max-width:1440px;margin:auto;display:flex;flex-direction:column;background:var(--cream);overflow:hidden;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}header{min-height:62px;display:flex;align-items:center;gap:12px;padding:9px max(16px,env(safe-area-inset-left));background:#f2e9e4;z-index:2;flex-shrink:0}#brand{font-weight:900;font-size:1rem;text-decoration:none;letter-spacing:-.035em;max-width:12ch;line-height:1}header .head-buttons{margin-left:auto;display:flex;gap:8px}#match-hud{display:flex;gap:12px;align-items:center}#rival{font-size:.85rem;line-height:1.1}#points{white-space:nowrap;font-weight:950;font-size:1.6rem;font-variant-numeric:tabular-nums}#play-area{position:relative;min-height:100px;flex:1;background:#c8d7d0;overflow:hidden}#court{display:block;width:100%;height:100%;touch-action:none;outline-offset:-4px}#lobby{position:absolute;inset:0;overflow:auto;background:var(--cream)}.hero{position:relative;background:#4a4e69;min-height:300px;isolation:isolate;display:flex;align-items:flex-end}.hero>img{position:absolute;width:100%;height:100%;inset:0;object-fit:cover;object-position:center 44%;z-index:-2}.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#22223bee,#22223b33 75%),linear-gradient(0deg,#22223bbb,transparent 75%);z-index:-1}.hero-copy{color:#fff6ea;padding:clamp(22px,4vw,48px);max-width:620px}.eyebrow{font-size:.7rem;letter-spacing:.2em;font-weight:900;color:#ffbd8e}h1{font-size:clamp(1.7rem,4.8vw,3.5rem);line-height:1.02;letter-spacing:-.045em;margin:.5em 0 .35em;text-wrap:balance}#progress{font-weight:750;margin:.6em 0}#continue{margin-top:8px}.lobby-bottom{padding:16px max(16px,3vw) 26px}#modes{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}.rival-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.rival-card{text-align:left;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px 12px;padding:14px}.rival-card .number{grid-row:span 2;font-size:1.6rem;font-weight:950;color:#9b553f}.rival-card strong{font-size:1.05rem}.rival-card small{font-weight:500;color:#655d69;line-height:1.3}#run-footer{display:flex;align-items:center;gap:14px;padding:8px max(16px,env(safe-area-inset-right));background:var(--cream);flex-shrink:0}#status{flex:1;margin:0;font-weight:750;font-size:.9rem;line-height:1.35}#primary{max-width:50%;min-width:110px}#recovery{background:var(--cream);padding:0 max(16px,env(safe-area-inset-left));flex-shrink:0;max-height:30vh;overflow:auto}#notice{font-size:.8rem;margin:0;line-height:1.4}#notice:not(:empty){padding:6px 0;color:#7c2b21}.recovery-actions{display:flex;flex-wrap:wrap;gap:6px}.recovery-actions:has(button:not([hidden])){padding-bottom:8px}.recovery-actions button{font-size:.85rem}dialog{border:0;border-radius:22px;box-shadow:0 15px 80px #15142560;background:var(--cream);color:var(--plum);width:min(660px,calc(100% - 24px));max-height:calc(100dvh - 28px);padding:24px;overscroll-behavior:contain}dialog::backdrop{background:#17162c99;backdrop-filter:blur(5px)}.sheet-head{display:flex;gap:16px;align-items:flex-start;justify-content:space-between;position:sticky;top:-24px;background:var(--cream);padding:8px 0;z-index:1}.sheet-head h2{margin:6px 0;font-size:1.6rem;letter-spacing:-.035em;line-height:1.15}.sheet-head button{flex-shrink:0}#sheet-content{display:grid;gap:12px}#sheet-content p{margin:4px 0}#sheet-content label{display:flex;gap:14px;align-items:center;justify-content:space-between}select{max-width:60%;min-height:46px;border:1px solid #b7aaa8;border-radius:10px;padding:8px;background:#fff9f4;color:var(--plum)}.setting{display:flex;justify-content:space-between;gap:15px;text-align:left}.collection-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.finish{border-radius:12px;border:1px solid #c9bcb8;padding:12px;display:grid;gap:6px;text-align:center}.swatch{display:block;width:48px;height:48px;margin:0 auto;border-radius:50%;border:5px solid #e3d0bc;box-shadow:0 2px 0 #4a4e69}.keepsake{margin:0;text-align:center}.keepsake img{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:contain}.keepsake figcaption{line-height:1.3;font-size:.85rem}.keepsake.locked img{filter:grayscale(1);opacity:.35}#loading progress{width:100%;accent-color:#ff6b35;margin:1rem 0}#loading button{display:block}[hidden]{display:none!important}@media(min-width:900px){.hero{min-height:360px}#lobby .hero-copy{min-height:360px}.lobby-bottom{max-width:1150px;margin:auto}}@media(max-width:620px){.rival-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero{min-height:270px}.hero-copy{max-width:340px}#brand{font-size:.9rem;max-width:10ch}header{gap:8px;padding:7px 12px;min-height:60px}.head-buttons button{padding:.5rem .7rem}#match-hud{gap:5px;flex-wrap:wrap;max-width:120px}#rival{font-size:.65rem}#points{font-size:1.3rem}.rival-card{padding:12px}.collection-grid{gap:6px}.finish{padding:10px 5px;font-size:.85rem}dialog{padding:18px}.sheet-head{top:-18px}}@media(max-height:500px) and (orientation:landscape){header{min-height:48px;padding:3px 14px}#brand{max-width:none;font-size:.85rem}#rival{font-size:.8rem}#match-hud{flex-wrap:nowrap;max-width:none}#points{font-size:1.25rem}header button{min-height:38px}#run-footer{padding:3px 14px;min-height:48px}#status{font-size:.8rem}#primary{min-height:40px}.hero{min-height:240px}.hero-copy{padding:20px;max-width:420px}h1{font-size:2rem}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
/* User text size may be32px. Controls wrap as units and retain native targets. */
button{padding:.55rem clamp(10px,2vw,16px)}.sheet-head{flex-wrap:wrap}.sheet-head h2{min-width:0;max-width:100%;overflow-wrap:anywhere}#sheet-content label{flex-wrap:wrap}#sheet-content label select{max-width:100%}.stop-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.stop-grid p{border-bottom:1px solid #d8c5bb;padding:8px 0;overflow-wrap:anywhere}.head-buttons button{padding:8px 12px;min-width:44px}#notice{overflow-wrap:anywhere}#sheet-content p{overflow-wrap:anywhere}
@media(max-width:620px){header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 10px}#brand{grid-column:1;grid-row:1;max-width:none;min-width:0}.head-buttons{grid-column:2;grid-row:1}#match-hud{grid-column:1/-1;grid-row:2;max-width:none;flex-wrap:nowrap;justify-content:space-between}#rival{font-size:.8rem}#points{font-size:1.3rem}.rival-card{grid-template-columns:minmax(0,1fr);gap:4px}.rival-card .number{grid-row:auto;font-size:1.15rem}.rival-card strong,.rival-card small{min-width:0;overflow-wrap:anywhere}.hero-copy{max-width:100%}}
dialog{max-width:calc(100% - 24px)}#sheet-content{grid-template-columns:minmax(0,1fr);min-width:0}#sheet-content>*{min-width:0}#sheet-content label{min-width:0}#sheet-content label select{width:100%;min-width:0}.setting{display:block;overflow-wrap:anywhere}
/* Compact landscape retains the same44CSS-pixel native touch target floor. */
header .head-buttons button,#primary{min-height:44px}
