/* The approved arcade direction: warm raised buttons and crisp, readable cards. */
:root{--finish-bg:#101923;--finish-surface:#192635;--finish-raised:#304256;--finish-line:#596779;--finish-text:#fff4de;--finish-muted:#c7d2db;--finish-red:#ff5964;--finish-focus:#7ff4fa;--finish-radius:20px;--arcade-gold:#ffca45}
#startOverlay .card,#controlsMenu .controls-card,dialog{background:linear-gradient(155deg,#26364a,#152231 75%);border:3px solid #647185;border-radius:20px;box-shadow:0 9px 0 #0b1420,0 28px 80px #0009;color:var(--finish-text)}
#startOverlay #startName,#controlsTitle,dialog h2{font-family:Impact,'Arial Black',sans-serif;font-weight:900;letter-spacing:.02em;text-transform:uppercase;color:#fff4de;text-shadow:0 3px 0 #0a1421;line-height:1.1}
dialog h2,#controlsTitle{font-size:32px}
#startOverlay .btn,#controlsMenu .btn,dialog button,.pause-tabs button{border:2px solid #0c1622;border-radius:12px;box-shadow:0 4px 0 #0c1622;min-height:46px;padding:11px 16px;font-size:14px;font-weight:800;color:#fff4de;background:#304256;transition:background .15s,transform .1s,box-shadow .1s}
#startOverlay .btn:hover,#controlsMenu .btn:hover,dialog button:hover{background:#405773;border-color:#0c1622}
#startOverlay .btn:active,#controlsMenu .btn:active,dialog button:active{transform:translateY(2px);box-shadow:0 2px 0 #0c1622}
#startOverlay #btnStart,#controlsMenu #btnResume,#avatarCreator #avatarSave{background:var(--arcade-gold);color:#14202e;border-color:#0c1622;box-shadow:0 5px 0 #0c1622}
#startOverlay #btnStart:hover,#controlsMenu #btnResume:hover,#avatarCreator #avatarSave:hover{background:#ffda77}
#startOverlay .card{width:min(640px,calc(100vw - 28px));padding:28px;gap:12px;max-height:calc(100dvh - 32px);overflow:auto}
#startOverlay #startName{font-size:clamp(36px,5vw,56px);margin:8px 0 18px}
#startOverlay .eyebrow{font-size:13px;color:var(--arcade-gold);font-weight:800}
#startOverlay ul{font-size:14px;line-height:1.55;padding-left:20px;margin:12px 0;color:#c7d2db}
#startOverlay .welcome-actions{display:grid;grid-template-columns:minmax(0,1.15fr) repeat(2,minmax(0,1fr));gap:10px;margin:18px 0 0}
#startOverlay .welcome-actions .btn{min-height:60px;font-size:18px;text-align:center}
#startOverlay #btnWelcomeCharacter{background:#ff5964;color:#152231}
#startOverlay .card>#welcomePersonalBest:not([hidden]){display:block!important}
#startOverlay .welcome-player{margin-top:16px;padding-top:16px}
#startOverlay .welcome-player .row{gap:12px}
#startOverlay .welcome-player .btn{font-size:13px}
#startOverlay .welcome-player label{font-size:14px;font-weight:700}
#welcomeIdentity{font-size:13px;line-height:1.4}
#startOverlay .welcome-about{margin:20px 0 0;font-size:13px;color:#c7d2db}
.welcome-about summary{cursor:pointer;padding:8px 0}
#welcomePersonalBest{background:#101c29;border-left:4px solid var(--arcade-gold);padding:12px;border-radius:6px;color:#ffda77!important}
dialog .sub{font-size:13px}
dialog :is(input,select,textarea){font-size:16px!important}
dialog :is(button,input,select,textarea,summary,[role=combobox]):focus-visible,#startOverlay :is(button,input,summary):focus-visible,#controlsMenu :is(button,input,select,summary):focus-visible{outline:3px solid var(--finish-focus);outline-offset:3px}
#avatarCreator .avatar-stage{background:radial-gradient(ellipse at bottom,#4c6472,#142131 75%)}
#avatarCreator header,#avatarCreator footer{background:#172535}
#avatarCreator .avatar-swatch{box-shadow:none;min-height:40px;padding:0}
#avatarCreator .avatar-choice-list button{box-shadow:none}
@media(max-width:640px){#startOverlay .card{padding:20px}#startOverlay .welcome-actions{gap:8px}#startOverlay .welcome-actions .btn{font-size:16px;padding:8px 12px}#startOverlay .welcome-player .row{grid-template-columns:1fr 1fr}dialog h2,#controlsTitle{font-size:28px}}
@media(prefers-reduced-motion:reduce){#startOverlay .btn,#controlsMenu .btn,dialog button,.pause-tabs button{transition:none}}
/* Readable rounded type, served locally so menus never depend on a font service. */
@font-face{font-family:Nunito;src:url('./assets/fonts/nunito-variable.woff') format('woff');font-style:normal;font-weight:200 1000;font-display:swap}
:root{--body:Nunito,'Trebuchet MS',sans-serif}
#startOverlay .card,#controlsMenu .controls-card,dialog,#rankingDialog{font-family:var(--body)}
#startOverlay :is(button,input,summary),#controlsMenu :is(button,input,select),dialog :is(button,input,select){font-family:var(--body)}
#startOverlay #startName,#controlsMenu #controlsTitle,dialog h2,#rankingDialog #rankingTitle{font-family:var(--body);font-weight:900;letter-spacing:-.025em;text-transform:none;text-shadow:none}
#startOverlay .card{width:min(580px,calc(100vw - 28px));padding:20px;gap:0}
#startOverlay #startName{font-size:38px;line-height:1.15;margin:0 0 20px}
#startOverlay .welcome-player{border:0;margin:0;padding:0}
#startOverlay .welcome-player label{font-size:17px;font-weight:800;margin-bottom:4px}
#startOverlay .welcome-player input{font-size:18px;font-weight:650;text-align:left;padding:10px 12px;min-height:44px}
#startOverlay #welcomeIdentity{font-size:14px;font-weight:600;line-height:1.35;color:#e1e9f1;margin:6px 0 0}
#startOverlay .welcome-player .row{display:block;margin:0}
#startOverlay .welcome-actions #btnWelcomeAccount{width:100%;background:#304256;color:#fff4de;text-decoration:none}
#startOverlay .welcome-actions{margin:12px 0 0;gap:8px}
#startOverlay .welcome-actions .btn{grid-column:1/-1;width:100%;min-height:44px;font-size:16px;font-weight:800;padding:8px 12px;box-sizing:border-box}
#startOverlay .welcome-actions :is(#btnWelcomeLeaderboard,#btnWelcomeSettings,#btnWelcomeRaces){grid-column:auto;min-width:0;padding:8px 2px;font-size:clamp(12px,3.6vw,16px);overflow-wrap:anywhere}
#startOverlay #btnWelcomeCharacter{background:#30445a;color:#f3f6fa;border-color:#7d91a6;box-shadow:0 4px #0c1622}
#startOverlay #btnWelcomeCharacter:hover{background:#405b76}
#startOverlay #welcomePersonalBest{margin:16px 0 0;padding:12px 14px;background:#263b4b;border:0;border-radius:12px;color:#f3f6fa!important;font-family:var(--body);font-size:17px;line-height:1.4}
#welcomePersonalBest strong{display:block;font-size:19px;font-weight:800;font-variant-numeric:tabular-nums}
#welcomePersonalBest span{display:block;margin-top:2px;font-size:16px;font-weight:600;color:#d3e2ed}
#startOverlay .welcome-about{margin:12px 0 0;font-size:15px;font-weight:600;color:#d3e2ed}
#startOverlay .welcome-about p{font-size:15px;line-height:1.5}
#controlsMenu .btn,dialog button{font-weight:700}
#rankingDialog :is(.ranking-position,.ranking-value){font-variant-numeric:tabular-nums}
@media(max-width:640px){#startOverlay .card{padding:20px}#startOverlay #startName{font-size:34px;margin-bottom:16px}#startOverlay .welcome-actions .btn{font-size:16px;padding:8px 12px}}
/* Compact brand lockup keeps the climb as the main action. */
#startOverlay #startName.welcome-brand{margin:0 0 10px;line-height:1;text-align:center}
#startOverlay .welcome-brand>span{display:block;font-size:17px;font-weight:700;letter-spacing:0;color:#d8e5ef;margin-bottom:2px}
#startOverlay .welcome-brand>img{display:block;width:min(100%,280px);height:auto;margin:0 auto;max-width:100%}
@media(max-width:640px){#startOverlay #startName.welcome-brand{margin-bottom:10px}#startOverlay .welcome-brand>span{font-size:17px}}
/* Save stays beside Close, even at the bottom of the character options. */
#avatarCreator>header{position:sticky;top:0;z-index:20;gap:16px;isolation:isolate;border-bottom:1px solid #506579}
#avatarCreator .avatar-header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
#avatarCreator #avatarCancel{width:44px;min-height:44px;padding:8px;flex:none}
#avatarCreator>footer{position:static}
@media(max-width:640px){#avatarCreator>header{gap:10px;padding:14px}#avatarCreator>header>div:first-child{min-width:0}#avatarCreator>header .eyebrow{display:none}#avatarCreator #avatarTitle{font-size:22px;margin:0;line-height:1.15}#avatarCreator .avatar-header-actions{gap:6px}#avatarCreator #avatarSave{font-size:14px;padding:10px;min-height:44px}}
#runShareDialog{width:min(520px,calc(100vw - 24px));box-sizing:border-box;max-height:calc(100dvh - 24px);overflow:auto;padding:24px}
#runShareDialog::backdrop{background:#07111dc4}
#runShareDialog .row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
#runShareDialog :is(button,input){min-width:0}
#runShareDialog #shareLink{box-sizing:border-box;width:100%;margin-top:16px}
#runShareDialog #shareStatus{font-size:16px;color:#fff4de}
#runShareDialog #btnShareMenu{background:var(--arcade-gold);color:#14202e}
#runShareDialog #runShareClose{width:100%;margin-top:16px}
#runShareDialog .sub{line-height:1.5}
@media(max-width:400px){#runShareDialog{padding:18px}#runShareDialog .row{grid-template-columns:1fr}}

#startOverlay .welcome-brand>.welcome-course{margin:5px 0 0;font-size:15px;font-weight:800;color:#ffcf45;line-height:1.25}

#runShareDialog .share-social{margin:20px 0 14px}#runShareDialog .share-social button{background:var(--arcade-gold);color:#14202e;min-height:56px}#runShareDialog #btnShareMenu{background:#293f54;color:#fff3dc}
/* Optional server-approved prize follows the same readable game type. */
.bounty-summary{font-family:var(--body);font-size:16px;font-weight:700;line-height:1.4;color:#d2e2ef;margin:10px 0 14px}
#bountyPanel .btn{display:inline-flex;text-decoration:none;align-items:center;justify-content:center}

/* Feedback stays separate from the six climb choices and opens a mail draft. */
#startOverlay .welcome-feedback{margin-top:10px}
#startOverlay #btnWelcomeFeedback,#controlsMenu #menuFeedbackEmail{display:flex;align-items:center;justify-content:center;width:100%;box-sizing:border-box;min-height:44px;padding:8px 12px;background:#254d58;border-color:#7fc4cb;color:#efffff;text-decoration:none;font-size:16px;font-weight:800}
#startOverlay #btnWelcomeFeedback:hover,#controlsMenu #menuFeedbackEmail:hover{background:#326570}
#startOverlay #welcomeFeedbackHint{margin:4px 0 0;font-size:13px;text-align:center;line-height:1.35;color:#d3e2ed}

/* Welcome full screen stays above the logo and outside the climb choices. */
#startOverlay .card{position:relative}
#startOverlay #startName.welcome-brand{padding-top:48px}
#startOverlay #btnFullscreenWelcome{position:absolute;top:14px;right:16px;width:auto;min-height:44px;padding:8px 12px;font-size:14px;line-height:20px;white-space:nowrap}
#startOverlay #welcomeFullscreenHint{margin:0 0 10px;font-size:13px;line-height:1.4;color:#d3e2ed}
