:root{--ink:#112739;--blue:#087dbb;--yellow:#ffd12f;--orange:#f47732;--paper:#f5fbff}*{box-sizing:border-box}body{margin:0;background:#d9f2ff;color:var(--ink);font-family:'Trebuchet MS',Arial,'PingFang SC',sans-serif;font-size:16px}button,input,select{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button,.btn{border:3px solid var(--ink);border-radius:16px;padding:12px 20px;background:white;color:var(--ink);font-weight:900;cursor:pointer;box-shadow:0 4px 0 var(--ink);text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:transform .1s}button:active,.btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible{outline:4px solid #f47732;outline-offset:3px}.primary{background:var(--yellow)}.blue{background:var(--blue);color:#fff}.small{font-size:14px;padding:8px 12px;border-width:2px;box-shadow:0 2px var(--ink)}.top{max-width:1180px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 24px}.brand{color:var(--ink);font-size:27px;font-weight:1000;font-style:italic;text-decoration:none;letter-spacing:-1px}.brand em{color:var(--blue);font-style:inherit}.tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.tools select{padding:8px;border:2px solid var(--ink);border-radius:12px;background:white;font-weight:bold;max-width:110px}.lodge{max-width:1132px;margin:0 auto 24px;border:4px solid var(--ink);border-radius:26px;overflow:hidden;box-shadow:0 8px var(--ink);position:relative;background:#fff}.ski-cover{height:min(65vh,590px);min-height:400px;background:url('/ski/alpine.webp') center/cover;position:relative}.cover-copy{position:absolute;left:5%;top:7%;max-width:63%;text-align:center;transform:rotate(-3deg)}.ski-title{font-size:clamp(62px,10vw,124px);letter-spacing:-7px;font-weight:1000;font-style:italic;line-height:1;margin:0;color:white;-webkit-text-stroke:3px var(--ink);paint-order:stroke fill;text-shadow:5px 7px var(--ink)}.ski-title em{color:#48c4fb}.tag{font-size:clamp(15px,2vw,22px);font-weight:900;line-height:1.4;margin:24px 0 0;background:#ffdc47;border:2px solid var(--ink);padding:8px 12px;box-shadow:3px 3px var(--ink)}.cover-play{position:absolute;bottom:24px;left:7%;width:38%;font-size:28px;min-height:70px;transform:rotate(-2deg)}.lodge-nav{display:flex;justify-content:center;gap:16px;padding:23px;flex-wrap:wrap}.lodge-nav button{min-width:160px}.muted{color:#526779;font-size:14px;line-height:1.6}.foot{max-width:1120px;margin:26px auto;text-align:center;padding:0 16px 20px}.foot nav{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;margin:16px 0}.foot a{color:var(--ink);font-size:14px;font-weight:bold}.intro{text-align:center;padding:20px 16px}.intro h1{font-size:clamp(27px,5vw,49px);font-style:italic;margin:8px}.cards{max-width:1120px;margin:15px auto 35px;display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:0 16px}.game-card{border:4px solid var(--ink);box-shadow:0 7px var(--ink);border-radius:24px;overflow:hidden;background:white;transition:transform .15s}.game-card:hover{transform:translateY(-4px)}.card-art{height:320px;position:relative;overflow:hidden}.card-art>img{width:100%;height:100%;object-fit:cover}.card-art.hoof{background:#ffdf4b url('/art/arena.webp') center/cover}.card-art.hoof>img{position:absolute;width:75%;height:95%;right:0;bottom:0;object-fit:contain}.card-title{position:absolute;top:18px;left:20px;color:#fff;font-size:55px;font-style:italic;font-weight:1000;-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;text-shadow:3px 4px var(--ink);margin:0}.card-bottom{padding:20px}.card-bottom p{margin:0 0 16px}.card-bottom .btn{width:100%}dialog{color:var(--ink);background:#f7fcff;border:4px solid var(--ink);border-radius:24px;width:min(650px,calc(100% - 24px));max-height:92dvh;padding:24px;box-shadow:7px 8px 0 #11273955}dialog::backdrop{background:#0e294e99;backdrop-filter:blur(4px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}h2{margin:0;font-size:25px}.stack{display:grid;gap:16px}.stack label{display:grid;gap:6px;font-weight:bold}.stack input{width:100%;padding:13px;border:2px solid var(--ink);border-radius:10px;background:white}.stack label.check{display:flex;align-items:flex-start;font-size:14px;line-height:1.4;font-weight:normal}.check input{width:auto;margin-top:3px}.note{font-size:14px;line-height:1.5;overflow-wrap:anywhere}.error{color:#a02d1d}.draw-wrap{border:3px solid var(--ink);border-radius:12px;overflow:hidden;background:#fff;position:relative}.draw-wrap canvas{width:100%;height:auto;display:block;touch-action:none;background-image:radial-gradient(#c2d9e5 1px,transparent 1px);background-size:20px 20px}.draw-hint{position:absolute;left:10%;right:10%;top:44%;text-align:center;color:#8aa2b0;pointer-events:none}.draw-actions{display:flex;gap:8px;justify-content:flex-end;margin:10px 0 18px}.rider-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.rider-card{background:white;border:2px solid var(--ink);border-radius:14px;padding:12px;min-width:0;text-align:center}.rider-card.selected{background:#fff1a9}.rider-card img{width:100%;aspect-ratio:1.5;object-fit:contain}.rider-card button{width:100%;font-size:14px;margin-top:10px;padding:8px}.rider-card strong{display:block;overflow-wrap:anywhere}.rider-card.locked{background:#e8f0f4;display:grid;align-content:center;gap:15px}.lock-icon{font-size:34px}.game{position:fixed;inset:0;background:#99dfff;z-index:10;display:flex;flex-direction:column}.game[hidden]{display:none}.stage{flex:1;min-height:0;position:relative;overflow:hidden}.stage canvas{width:100%;height:100%;display:block}.hud{position:absolute;top:max(16px,env(safe-area-inset-top));left:16px;right:16px;display:flex;gap:12px;align-items:flex-start;justify-content:space-between;pointer-events:none}.hud>div{background:#ffffffe8;border:3px solid var(--ink);border-radius:14px;padding:8px 14px;box-shadow:2px 3px var(--ink)}.hud small{display:block;font-size:12px;font-weight:bold}.hud strong{font-size:29px;white-space:nowrap}.hud button{pointer-events:auto}.spin-count{position:absolute;top:24%;left:0;right:0;text-align:center;font-size:42px;font-weight:1000;color:#fff;-webkit-text-stroke:2px var(--ink);paint-order:stroke fill;pointer-events:none}.controls{padding:14px 20px max(20px,env(safe-area-inset-bottom));display:flex;gap:16px;background:#f4fbff;border-top:3px solid var(--ink)}.controls button{flex:1;min-height:74px;font-size:22px;touch-action:none;user-select:none}.controls button.held{background:#f47732;color:white}.result-number{font-size:66px;font-weight:1000;text-align:center;line-height:1.1;margin:15px 0}.result-meta{display:flex;justify-content:center;gap:24px;text-align:center;margin:16px 0}.result-meta strong{display:block;font-size:28px}.board-controls{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.board-controls select{padding:9px;border:2px solid var(--ink);border-radius:10px;max-width:100%}.rank-row{display:grid;grid-template-columns:32px 1fr auto;gap:10px;padding:14px 6px;border-bottom:1px solid #c7dce8;align-items:center}.rank-row strong{font-size:18px}.rank-row small{display:block;margin-top:3px}.rank-row button{margin-top:6px}.info{max-width:820px;margin:20px auto 40px;padding:28px;background:#fff;border:3px solid var(--ink);border-radius:20px;box-shadow:5px 6px var(--ink);line-height:1.7}.info h1{font-size:36px;line-height:1.2}.info h2{margin-top:28px;font-size:22px}.info a{color:#066ba2}.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:100;background:var(--ink);color:#fff;border-radius:12px;padding:14px 20px;max-width:90%;text-align:center}.toast[hidden]{display:none}.challenge{max-width:700px;margin:0 auto 16px;background:#ffdf4b;border:2px solid var(--ink);border-radius:12px;padding:12px;text-align:center}.country-pick{padding:10px;border:2px solid var(--ink);border-radius:10px;width:100%}@media(max-width:650px){.top{padding:12px;gap:8px}.brand{font-size:22px}.tools{gap:6px}.tools button{font-size:12px;padding:8px}.tools select{font-size:14px;padding:6px}.lodge{margin:8px 12px 20px;border-radius:20px}.ski-cover{height:60dvh;min-height:390px;max-height:580px;background-position:85% center}.cover-copy{top:8%;left:3%;max-width:92%}.ski-title{font-size:76px;letter-spacing:-5px}.tag{margin-top:20px;font-size:14px}.cover-play{left:8%;width:84%;font-size:27px;bottom:22px}.lodge-nav{gap:10px;padding:18px 10px}.lodge-nav button{min-width:0;flex:1;padding:12px 8px;font-size:14px}.cards{grid-template-columns:1fr;gap:25px}.card-art{height:270px}.intro{padding:12px}.intro p{font-size:14px}.rider-grid{gap:8px}.rider-card{padding:8px}.rider-card button{font-size:12px}.hud{left:10px;right:10px;gap:8px}.hud>div{padding:8px}.hud strong{font-size:24px}.hud small{font-size:12px}.controls{padding:12px 12px max(18px,env(safe-area-inset-bottom));gap:10px}.controls button{font-size:18px;padding:10px;min-height:70px}dialog{padding:18px}.info{margin:15px 12px;padding:22px}.foot nav{gap:13px}}
/* Slow, high-contrast cues stop immediately when the requested action is taken. */
@keyframes ski-prompt{0%,100%{box-shadow:0 4px 0 var(--ink),0 0 0 0 #ffcf30;background:#ffda47;color:var(--ink)}50%{box-shadow:0 4px 0 var(--ink),0 0 0 7px #ffcf3066;background:#fff6bf;color:var(--ink)}}
.controls button.prompt{animation:ski-prompt 1s ease-in-out infinite}.controls button.held{animation:none}.run-meter{display:flex;gap:12px;align-items:center;justify-content:center;padding:0 18px 18px;flex-wrap:wrap}.run-meter button{min-width:0}.reward-note{color:#075d83;font-weight:bold}.run-count{white-space:nowrap}.energy-copy{line-height:1.7;font-size:16px}.share-link{width:100%;padding:12px;border:2px solid var(--ink);border-radius:10px;font-size:14px}.controls button:disabled{animation:none}@media(prefers-reduced-motion:reduce){.controls button.prompt{animation:none;outline:5px solid #ffcb2f;outline-offset:-8px}}

.slope-reward{position:absolute;top:max(100px,calc(env(safe-area-inset-top) + 84px));left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 32px);padding:8px 14px;border:2px solid var(--ink);border-radius:12px;background:#ffdc47;color:var(--ink);font-size:clamp(12px,3.5vw,17px);font-weight:900;text-align:center;pointer-events:none;animation:ski-reward-fade 1.3s ease-out both}.slope-reward[hidden]{display:none}@keyframes ski-reward-fade{0%{opacity:0}12%,75%{opacity:1}100%{opacity:0}}@media(prefers-reduced-motion:reduce){.slope-reward{animation:none}}

.saved-score-action{text-align:center;margin:0 0 22px}.saved-score-action p{font-size:15px;font-weight:700;margin:0 0 12px}.saved-score-action button{width:100%;min-height:64px;font-size:22px}

.platform-home-nav{max-width:1180px;margin:0 auto;padding:0 24px max(20px,env(safe-area-inset-bottom));display:flex;justify-content:flex-end}.platform-home-button{display:inline-block;padding:10px 0;color:#526779;font-size:14px;font-weight:400;text-decoration:none;background:none;border:0;box-shadow:none}.platform-home-button:hover{text-decoration:underline}.platform-home-button:focus-visible{outline:2px solid #087dbb;outline-offset:4px}

.result-confetti{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:2}.result-confetti span{position:absolute;left:50%;top:25%;width:9px;height:15px;border-radius:2px;pointer-events:none}

.ski-rank-row{grid-template-columns:26px 68px minmax(0,1fr) auto}.ski-replay-thumb{width:68px;height:62px;padding:3px;border-width:2px;border-radius:10px;background:#fff;box-shadow:none}.ski-replay-thumb img{width:100%;height:100%;object-fit:contain}.ski-replay-portrait{display:block;width:150px;height:100px;object-fit:contain;background:white;margin:12px auto;border-radius:12px}.ski-replay-canvas{width:100%;height:auto;aspect-ratio:800/520;border:2px solid var(--ink);border-radius:12px;background:#83d6fc}.ski-replay-controls{display:flex;gap:10px;align-items:center;margin-top:12px}.ski-replay-controls input{min-width:0;flex:1}.ski-rank-row>div{min-width:0;overflow-wrap:anywhere}@media(max-width:420px){.ski-rank-row{grid-template-columns:22px 52px minmax(0,1fr) auto;gap:6px}.ski-replay-thumb{width:52px;height:52px}.ski-rank-row strong{font-size:15px}.ski-rank-row .small{font-size:12px;padding:6px}}

/* Account identity stays secondary to the player drawing. */
.rank-row img.leaderboard-user-avatar{display:inline-block;width:18px;height:18px;min-width:18px;max-width:18px;border-radius:50%;object-fit:cover;vertical-align:middle;margin:0 5px 1px 0;border:0;box-shadow:none;}
