/* Original project fonts. Readable outlines; no distress baked into small text. */
@font-face{font-family:'Gameballs UI';src:url('assets/fonts/gameballs-ui-regular.woff') format('woff');font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:'Gameballs UI';src:url('assets/fonts/gameballs-ui-bold.woff') format('woff');font-style:normal;font-weight:700 900;font-display:swap}
@font-face{font-family:'Gameballs Display';src:url('assets/fonts/gameballs-display-bold.woff') format('woff');font-style:normal;font-weight:700 900;font-display:swap}
:root{--gb-ui:'Gameballs Clear',sans-serif;--gb-display:'Gameballs Clear',sans-serif;--gb-ink:#263d36;--gb-cream:#f4dfad;--gb-gold:#efbd70;--gb-rust:#ac5737}
html body,#game *{font-family:var(--gb-ui)}
#game :is(h1,h2,h3),#game :is(.titleLogo,.titleLogo span,.titleSubtitle,.titleSubtitle span),#raceCountdown{font-family:var(--gb-display);font-style:normal}
#game button{font-weight:700;letter-spacing:.015em;border-radius:8px 11px 7px 10px;border:2px solid #9aa68b;box-shadow:0 3px 0 #102a25;transition:background .12s,box-shadow .12s,translate .12s}
#game button:active{translate:0 2px;box-shadow:0 1px 0 #102a25}
#game button:focus-visible{outline:3px solid #f4dfad;outline-offset:4px}
#game button:disabled{translate:none;box-shadow:none}
#game #pause{border:0;box-shadow:0 2px 0 #18332b}
#game .characterCard{box-shadow:0 4px 0 #142b24;border-color:#697d6c}
#game .characterCard[aria-pressed=true]{border-color:#f1c983;box-shadow:0 4px 0 #6c4c2a,inset 0 0 0 1px #f1c983}
#game :is(#start,#resume){border-color:#f4dfad;box-shadow:0 4px 0 #8f6036;background:#efbd70;color:#263d36}
#intro h1{letter-spacing:-.02em;line-height:1.15}
#intro :is(#selectedName,.characterCard span){letter-spacing:.005em;font-style:normal}
#game :is(.pauseCard,.selectionShell){border-radius:10px 14px 9px 12px}
#game .pauseCard{border:2px solid #5c7664;box-shadow:0 4px 0 #112b25}
#game :is(.pauseHelp,#selectionControls,#controllerStatus){line-height:1.75}
#game #raceCountdown{font-weight:900}
#game .armAim i{font-style:normal}
@media(prefers-reduced-motion:reduce){#game button{transition:none}}
.on-title #game>:not(#world):not(#titleScreen){visibility:hidden}
@font-face{font-family:'Gameballs Stamp';src:url('assets/fonts/gameballs-stamp-bold.woff') format('woff');font-weight:900;font-display:swap}
@font-face{font-family:'Gameballs Dash';src:url('assets/fonts/gameballs-dash-bold.woff') format('woff');font-weight:900;font-display:swap}
@font-face{font-family:'Gameballs Slab';src:url('assets/fonts/gameballs-slab-bold.woff') format('woff');font-weight:900;font-display:swap}

@font-face{font-family:"Gameballs Boulder";src:url("./assets/fonts/gameballs-boulder-bold.woff") format("woff");font-weight:900;font-style:normal;font-display:swap;}

@font-face{font-family:"Gameballs Softblock";src:url("./assets/fonts/gameballs-softblock-bold.woff") format("woff");font-weight:900;font-style:normal;font-display:swap;}

@font-face{font-family:"Gameballs Squash";src:url("./assets/fonts/gameballs-squash-bold.woff") format("woff");font-weight:900;font-style:normal;font-display:swap;}

@font-face{font-family:"Gameballs Clear";src:url("assets/fonts/gameballs-clear-regular.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}

@font-face{font-family:"Gameballs Clear";src:url("assets/fonts/gameballs-clear-bold.woff") format("woff");font-weight:700 900;font-style:normal;font-display:swap}

@font-face{font-family:"Gameballs Round";src:url("assets/fonts/gameballs-round-regular.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}

@font-face{font-family:"Gameballs Round";src:url("assets/fonts/gameballs-round-bold.woff") format("woff");font-weight:700 900;font-style:normal;font-display:swap}

@font-face{font-family:"Gameballs Track";src:url("assets/fonts/gameballs-track-regular.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}

@font-face{font-family:"Gameballs Track";src:url("assets/fonts/gameballs-track-bold.woff") format("woff");font-weight:700 900;font-style:normal;font-display:swap}

html[data-ui-lettering] #game :is(.titleSubtitle,.titleKicker,.titleTagline,.titleInputHint,.titleSceneNote){-webkit-text-stroke:0;text-shadow:0 2px 0 #17372b}

#game .ps5Connect[hidden]{display:none!important}#game .ps5ConnectionNote{font-size:11px;line-height:1.5;color:#f4dfad;margin:8px 0}#game #selectConnectPS5{position:absolute;bottom:12px;right:18px;font-size:12px;padding:10px}#game #intro>.ps5ConnectionNote{position:absolute;bottom:56px;right:18px}#titleScreen .titleNavigation .ps5ConnectionNote{max-width:280px}#game #titleConnectPS5{font-size:clamp(12px,1.25vw,19px)}

.audioSettings{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;width:100%}.audioSettings button{flex:1 1 44%;font-size:13px}.audioStatus{width:100%;margin:3px 0;font-size:12px;line-height:1.5;color:#c4d2bd}.audioUnlockHint{color:#f4dfb3;font-size:12px;max-width:270px;margin-top:12px}.audioUnlockHint[hidden]{display:none}#titleSettings .audioSettings button{font-size:13px;padding:9px;min-height:36px}#titleSettings .audioStatus{font-size:12px;margin:0}

/* Text menus use the same hollow pasta cursor as the title screen. */
#game :is(#paused,#victory,#titleSettings,#titleRest,#titleLevelsPanel) button,
#game #paused nav label{
 position:relative;background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;color:#f4dfad!important;text-align:left;padding:12px 10px 12px 39px!important;outline:none;text-shadow:0 2px 0 #163226;
}
#game :is(#paused,#victory,#titleSettings,#titleRest,#titleLevelsPanel) button:is(:hover,:focus-visible,.noodleSelected),
#game #paused nav label.noodleSelected{color:#ffd184!important;background:transparent!important;box-shadow:none!important;}
#game :is(#paused,#victory,#titleSettings,#titleRest,#titleLevelsPanel) button::before,
#game #paused nav label::before{
 content:'';position:absolute;left:3px;top:50%;width:24px;height:11px;transform:translateY(-50%) rotate(24deg);border:2px solid #e6b05e;border-radius:4px;background:linear-gradient(#ffe8a2 0 28%,#efbd70 30% 67%,#b47738 70%);box-shadow:0 2px 0 #173125;opacity:0;pointer-events:none;
}
#game :is(#paused,#victory,#titleSettings,#titleRest,#titleLevelsPanel) button::after,
#game #paused nav label::after{
 content:'';position:absolute;left:23px;top:50%;width:8px;height:11px;transform:translateY(-20%) rotate(24deg);background:#805b30;border:2px solid #ffe0a0;border-radius:50%;opacity:0;pointer-events:none;
}
#game .noodleMenu .noodleSelected::before,#game .noodleMenu .noodleSelected::after,
#game :is(#titleSettings,#titleRest,#titleLevelsPanel) button:is(:hover,:focus)::before,
#game :is(#titleSettings,#titleRest,#titleLevelsPanel) button:is(:hover,:focus)::after{opacity:1;}
#game .noodleMenu button:focus-visible{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px;}
#game #paused #resume{font-size:17px;white-space:normal;}
#game #paused .pauseActions{display:flex;flex-direction:column;align-items:flex-start;gap:2px;}
#game #paused nav{display:flex;flex-direction:column;align-items:stretch;gap:2px;}
#game #paused nav label{min-height:42px;display:flex;align-items:center;gap:8px;}
#game #paused button:disabled,#game #paused nav label:has(input:disabled){opacity:.4;}
#game #paused .audioSettings{display:flex;flex-direction:column;gap:2px;}
#game #paused .audioSettings button{flex:none;}
#game .pauseMenuHint{font-size:11px;color:#edbd74;margin:-8px 0 20px;line-height:1.6;}
#game #victory button{display:block;margin:8px auto;min-width:230px;}
#game :is(#paused,#victory) .noodleSelected::before,
#game :is(#paused,#victory) .noodleSelected::after{opacity:1;}
/* Audio activation happens on pointerdown: reserve the hint's space so Play
   cannot move out from under the pointer before pointerup/click. */
#game #titleScreen .audioUnlockHint[hidden]{display:block!important;visibility:hidden;}
