:root{--fat-font-body: system-ui, sans-serif;--fat-page: #e6e1d7;--fat-ink: #111;--fat-paper: #f6f4ee;--fat-rule: #777;--fat-space-xs: .25rem;--fat-space-sm: .5rem;--fat-space-md: .75rem;--fat-space-lg: 1rem;--fat-space-xl: 2rem;--fat-text-small: .875rem;--fat-text-label: .75rem;--fat-text-heading-min: 1.5rem;--fat-text-heading-max: 3rem;--fat-label-tracking: .14em;--fat-leading-body: 1.6;--fat-width-dialog: 480px;--fat-target: 44px;--fat-border: 2px;--fat-hairline: 1px;--fat-outline: 3px;--fat-outline-offset: 4px;--fat-radius-button: 8px;--fat-radius-dialog: 12px;--fat-font-display: Georgia, "Times New Roman", serif;--fat-muted: #57534d;--fat-secondary: #30302d;--fat-overlay: #e6e1d788;--fat-text-body: 1rem;--fat-text-heading-mobile: 2.25rem;--fat-width-select: 640px;--fat-width-reading: 64ch;--fat-shadow-panel: 0 12px 0 -6px #11111126, 0 24px 64px #11111126;--fat-shadow-card: 0 4px 16px #11111112;--fat-shadow-control: 0 4px 0 #11111133;--fat-motion-fast: .12s ease-out;--fat-overlay-inset: 80px;--fat-overlay-inset-landscape: 72px;--fat-menu-cat: 88px;--fat-menu-cat-mobile: 72px;--fat-weight-icon: 44px;--fat-weight-icon-mobile: 32px;--fat-hint-bottom: 108px;--fat-control-size: 64px;--fat-control-landscape: 56px;--fat-jump-width: 88px;--fat-eat-width: 72px;--fat-phone-hud-top: 76px;--fat-score-top: 112px;--fat-landscape-hint-width: 360px;--fat-save-bottom: 176px}:root{color-scheme:light;font-family:var(--fat-font-body);background:var(--fat-page);color:var(--fat-ink)}*{box-sizing:border-box}html,body,main{margin:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}body{height:100dvh}main{position:relative}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;font-size:var(--fat-text-small);font-weight:700;min-width:var(--fat-target);min-height:var(--fat-target);border:var(--fat-hairline) solid var(--fat-rule);background:var(--fat-paper);color:var(--fat-ink);border-radius:var(--fat-radius-button);padding:var(--fat-space-sm) var(--fat-space-lg);cursor:pointer;transition:transform var(--fat-motion-fast)}button:hover{background:var(--fat-page)}button:active{transform:translateY(2px)}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:var(--fat-outline) solid var(--fat-ink);outline-offset:var(--fat-outline-offset)}button:disabled{color:var(--fat-muted);cursor:default;border-style:dashed}a{color:inherit}button.primary{background:var(--fat-ink);color:var(--fat-paper);border-color:var(--fat-ink)}button.primary:hover{background:var(--fat-secondary)}[hidden]{display:none!important}.game-frame{position:absolute;inset:0;background:var(--fat-page)}canvas{display:block;width:100%;height:100%;touch-action:none}.game-top,.utility-controls{position:absolute;top:max(var(--fat-space-lg),env(safe-area-inset-top));z-index:3;display:flex;align-items:center;gap:var(--fat-space-sm)}.game-top{left:max(var(--fat-space-lg),env(safe-area-inset-left))}.game-top a{display:flex;gap:var(--fat-space-sm);align-items:center;min-height:var(--fat-target);padding:var(--fat-space-sm) var(--fat-space-md);border-radius:var(--fat-radius-button);background:var(--fat-paper);text-decoration:none;font-weight:800}.brand-label{background:var(--fat-paper);padding:var(--fat-space-xs) var(--fat-space-sm);border-radius:var(--fat-radius-button);font-size:var(--fat-text-label);font-weight:800;letter-spacing:var(--fat-label-tracking)}.utility-controls{right:max(var(--fat-space-lg),env(safe-area-inset-right))}.overlay{position:absolute;inset:0;z-index:2;display:flex;justify-content:center;align-items:center;padding:var(--fat-overlay-inset) var(--fat-space-lg);background:var(--fat-overlay)}.overlay article{width:100%;max-width:var(--fat-width-dialog);max-height:100%;overflow:auto;background:var(--fat-paper);border:var(--fat-border) solid var(--fat-ink);border-radius:var(--fat-radius-dialog);padding:var(--fat-space-xl);box-shadow:var(--fat-shadow-panel);text-align:left}.overlay article.course-select{max-width:var(--fat-width-select)}h2{font-family:var(--fat-font-display);font-size:var(--fat-text-heading-max);line-height:1.1;letter-spacing:-.04em;margin:var(--fat-space-sm) 0 var(--fat-space-lg)}p{line-height:var(--fat-leading-body)}.overlay p{margin:var(--fat-space-md) 0}.eyebrow{display:block;font-size:var(--fat-text-label);font-weight:800;letter-spacing:.08em;text-transform:uppercase;line-height:1.5}.muted,.metric-note{color:var(--fat-muted)}.menu-heading{display:flex;justify-content:space-between;gap:var(--fat-space-lg);align-items:center}.menu-heading h2{margin-bottom:0}.menu-cat{width:var(--fat-menu-cat);height:var(--fat-menu-cat);object-fit:cover;object-position:center;border-radius:50%;border:var(--fat-border) solid var(--fat-ink)}.courses{display:grid;gap:var(--fat-space-md);margin-top:var(--fat-space-lg)}.courses button{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--fat-space-lg);text-align:left;width:100%;padding:var(--fat-space-lg);border-radius:var(--fat-radius-button)}.course-number{font-family:var(--fat-font-display);font-size:var(--fat-text-heading-min);font-weight:800}.course-copy strong{display:block;font-size:var(--fat-text-body);line-height:1.5}.courses small{display:block;font-size:var(--fat-text-label);font-weight:500;line-height:1.6}.course-stars{letter-spacing:.12em;font-size:var(--fat-text-body)}.course-status{font-size:var(--fat-text-label);font-weight:700;display:block;letter-spacing:0;text-align:right}.star-rule{font-size:var(--fat-text-label);color:var(--fat-muted);border-top:var(--fat-hairline) solid var(--fat-rule);padding-top:var(--fat-space-md)}.actions{display:flex;gap:var(--fat-space-sm);flex-wrap:wrap;position:sticky;bottom:calc(-1 * var(--fat-space-xl));background:var(--fat-paper);padding:var(--fat-space-lg) 0 0}.actions button:first-child{flex-basis:100%}.actions button{flex:1}.next-star{padding:var(--fat-space-md);border-left:var(--fat-border) solid var(--fat-ink);background:var(--fat-page);font-size:var(--fat-text-small)}.result-stars{font-size:var(--fat-text-heading-max);letter-spacing:.12em}.result-summary{display:flex;gap:var(--fat-space-xl);border-block:var(--fat-hairline) solid var(--fat-rule);padding:var(--fat-space-md) 0}.result-summary strong{font-size:var(--fat-text-heading-min);display:block;font-variant-numeric:tabular-nums}.hud{position:absolute;z-index:1;top:max(var(--fat-space-lg),env(safe-area-inset-top));left:max(var(--fat-space-lg),env(safe-area-inset-left));display:grid;grid-template-columns:auto auto;gap:var(--fat-space-sm);max-width:calc(100% - var(--fat-space-xl));pointer-events:none}.run-metrics{display:flex;background:var(--fat-paper);border:var(--fat-hairline) solid var(--fat-rule);border-radius:var(--fat-radius-dialog);box-shadow:var(--fat-shadow-card);padding:var(--fat-space-md) var(--fat-space-lg);gap:var(--fat-space-lg)}.metric+.metric{border-left:var(--fat-hairline) solid var(--fat-rule);padding-left:var(--fat-space-lg)}.metric strong{display:block;font-size:var(--fat-text-heading-min);font-variant-numeric:tabular-nums;line-height:1.2}.metric-note{display:block;font-size:var(--fat-text-label);line-height:1.5}.weight-state{display:flex;align-items:center;gap:var(--fat-space-sm);background:var(--fat-paper);border:var(--fat-hairline) solid var(--fat-rule);border-radius:var(--fat-radius-dialog);padding:var(--fat-space-sm) var(--fat-space-md)}.weight-state strong{display:block;font-size:var(--fat-text-body)}.weight-state svg{width:var(--fat-weight-icon);height:var(--fat-weight-icon);fill:var(--fat-ink);stroke:var(--fat-ink);stroke-width:4;stroke-linecap:round}.weight-state .cat-eye{stroke:var(--fat-paper);stroke-width:3}.weight-state[data-weight=heavy] svg{transform:scaleX(1.22)}.weight-state[data-weight=heavy]{border:var(--fat-border) solid var(--fat-ink)}.star-progress{grid-column:1/-1;display:flex;gap:var(--fat-space-md);padding:var(--fat-space-sm) var(--fat-space-md);background:var(--fat-paper);border:var(--fat-hairline) solid var(--fat-rule);border-radius:var(--fat-radius-button);font-size:var(--fat-text-label);font-weight:600}.star-progress span{white-space:nowrap}.score-line{grid-column:1/-1;margin:0;justify-self:start;background:var(--fat-paper);padding:var(--fat-space-xs) var(--fat-space-sm);border-radius:var(--fat-radius-button);font-size:var(--fat-text-label);font-variant-numeric:tabular-nums}.hint{position:absolute;z-index:1;bottom:var(--fat-hint-bottom);left:50%;transform:translate(-50%);width:max-content;max-width:calc(100% - var(--fat-space-xl));background:var(--fat-paper);border:var(--fat-hairline) solid var(--fat-rule);border-radius:var(--fat-radius-button);padding:var(--fat-space-sm) var(--fat-space-lg);margin:0;text-align:center;font-size:var(--fat-text-small);pointer-events:none}.touch-controls{position:absolute;z-index:1;bottom:max(var(--fat-space-lg),env(safe-area-inset-bottom));left:max(var(--fat-space-lg),env(safe-area-inset-left));right:max(var(--fat-space-lg),env(safe-area-inset-right));display:flex;justify-content:space-between;gap:var(--fat-space-lg);pointer-events:none}.move-controls,.action-controls{display:flex;align-items:flex-end;gap:var(--fat-space-sm)}.touch-controls button{pointer-events:auto;touch-action:none;user-select:none;min-height:var(--fat-control-size);box-shadow:var(--fat-shadow-control)}.touch-controls [data-hold]{min-width:var(--fat-control-size);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--fat-space-sm)}.touch-controls [data-hold]>span:first-child{font-size:var(--fat-text-heading-min);line-height:1}.control-label{font-size:var(--fat-text-label);line-height:1.5}.touch-controls [data-hold=jump]{min-width:var(--fat-jump-width);background:var(--fat-ink);color:var(--fat-paper);border-color:var(--fat-ink)}#eat{max-width:var(--fat-eat-width);font-size:var(--fat-text-label);padding:var(--fat-space-sm)}#eat[aria-pressed=true]{background:var(--fat-ink);color:var(--fat-paper);border-style:dashed}.keyboard-hints{position:absolute;bottom:var(--fat-space-lg);left:50%;transform:translate(-50%);background:var(--fat-paper);padding:var(--fat-space-sm) var(--fat-space-md);border-radius:var(--fat-radius-button);font-size:var(--fat-text-label);margin:0;white-space:nowrap}kbd{font:inherit;font-weight:800;margin-inline:var(--fat-space-xs)}body:not([data-screen=playing]) .keyboard-hints,body[data-screen=playing] .game-top{display:none}#save-status{position:absolute;z-index:4;bottom:0;margin:0;background:var(--fat-paper);padding:var(--fat-space-sm);font-size:var(--fat-text-label)}.instructions-dialog{max-width:var(--fat-width-reading);width:calc(100% - var(--fat-space-xl));max-height:calc(100dvh - var(--fat-space-xl));overflow:auto;background:var(--fat-paper);color:var(--fat-ink);border:var(--fat-border) solid var(--fat-ink);border-radius:var(--fat-radius-dialog);padding:0 var(--fat-space-lg) var(--fat-space-lg);line-height:var(--fat-leading-body)}.instructions-dialog::backdrop{background:var(--fat-overlay)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:var(--fat-space-lg);position:sticky;top:0;background:var(--fat-paper);padding:var(--fat-space-lg) 0}.dialog-heading h2{font-size:var(--fat-text-heading-min);margin:0}.dialog-heading button{font-size:var(--fat-text-label)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}progress{width:100%;accent-color:var(--fat-ink)}@media(pointer:coarse),(hover:none){.keyboard-hints,.keyboard-help{display:none}}@media(max-width:600px){.brand-label{display:none}.game-top{left:var(--fat-space-md)}.game-top a{padding-inline:var(--fat-space-sm)}.utility-controls{right:var(--fat-space-md);gap:var(--fat-space-sm)}.utility-controls button{padding-inline:var(--fat-space-md);font-size:var(--fat-text-label)}.overlay{padding-inline:var(--fat-space-md)}.overlay article{padding:var(--fat-space-lg)}h2{font-size:var(--fat-text-heading-mobile)}.menu-cat{width:var(--fat-menu-cat-mobile);height:var(--fat-menu-cat-mobile)}.courses button{gap:var(--fat-space-md);padding:var(--fat-space-md)}.course-number{font-size:var(--fat-text-body)}.course-copy strong{font-size:var(--fat-text-small)}.hud{top:var(--fat-phone-hud-top);left:var(--fat-space-md);right:var(--fat-space-md);max-width:none;grid-template-columns:1fr auto}.run-metrics{gap:var(--fat-space-md);padding:var(--fat-space-sm) var(--fat-space-md)}.metric+.metric{padding-left:var(--fat-space-md)}.metric strong{font-size:var(--fat-text-body)}.weight-state{padding:var(--fat-space-sm)}.weight-state svg{width:var(--fat-weight-icon-mobile)}.star-progress{justify-content:space-between;gap:var(--fat-space-xs);padding-inline:var(--fat-space-sm)}.touch-controls{left:var(--fat-space-md);right:var(--fat-space-md);gap:var(--fat-space-sm)}.action-controls{gap:var(--fat-space-sm)}.actions{bottom:calc(-1 * var(--fat-space-lg))}.hint{font-size:var(--fat-text-label)}.keyboard-hints{display:none}}@media(max-height:500px){.overlay{padding-block:var(--fat-overlay-inset-landscape) var(--fat-space-md)}.overlay article{padding:var(--fat-space-lg);max-width:var(--fat-width-select)}h2{font-size:var(--fat-text-heading-min);margin:var(--fat-space-xs) 0}.menu-cat{display:none}.overlay p{margin:var(--fat-space-sm) 0;font-size:var(--fat-text-label)}.courses{grid-template-columns:repeat(3,1fr);gap:var(--fat-space-sm);margin-top:var(--fat-space-sm)}.courses button{grid-template-columns:1fr;padding:var(--fat-space-md);gap:var(--fat-space-xs)}.course-number{display:none}.course-copy strong{font-size:var(--fat-text-small)}.course-stars{display:flex;justify-content:space-between;gap:var(--fat-space-sm);font-size:var(--fat-text-label)}.course-status{font-size:var(--fat-text-label)}.star-rule{padding-top:var(--fat-space-sm)}.actions{flex-wrap:nowrap;padding-top:var(--fat-space-sm);bottom:0}.actions button:first-child{flex-basis:auto}.result-summary{padding:var(--fat-space-xs) 0}.result-summary strong{font-size:var(--fat-text-body)}.result-stars{font-size:var(--fat-text-heading-min)}.hud{grid-template-columns:auto auto;gap:var(--fat-space-xs);top:var(--fat-space-md);left:var(--fat-space-md)}.run-metrics{padding:var(--fat-space-sm) var(--fat-space-md)}.metric strong{font-size:var(--fat-text-body)}.weight-state{padding:var(--fat-space-xs) var(--fat-space-sm)}.weight-state svg{width:var(--fat-weight-icon-mobile)}.star-progress{padding:var(--fat-space-xs) var(--fat-space-sm)}.score-line{position:absolute;top:var(--fat-score-top);left:0}.hint{bottom:var(--fat-space-lg);max-width:var(--fat-landscape-hint-width);font-size:var(--fat-text-label)}.keyboard-hints{display:none}.touch-controls button{min-height:var(--fat-control-landscape)}.touch-controls [data-hold]{min-width:var(--fat-control-landscape)}.touch-controls [data-hold=jump]{min-width:var(--fat-jump-width)}.next-star{padding:var(--fat-space-sm)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important;scroll-behavior:auto}button:active{transform:none}}@media(forced-colors:active){button,.hud>*,.run-metrics,.overlay article{border-color:ButtonText}button:focus-visible,a:focus-visible{outline-color:Highlight}}body:has(#save-status:not([hidden])) .overlay{padding-bottom:var(--fat-overlay-inset)}#save-status{left:50%;transform:translate(-50%);width:max-content;max-width:calc(100% - var(--fat-space-xl));bottom:var(--fat-space-lg);border:var(--fat-hairline) solid var(--fat-rule);border-radius:var(--fat-radius-button)}body[data-screen=playing] #save-status{bottom:var(--fat-save-bottom)}@media(max-height:500px){body[data-screen=playing] #save-status{bottom:var(--fat-overlay-inset)}}.actions .game-exit{display:inline-flex;align-items:center;justify-content:center;min-height:var(--fat-target);min-width:var(--fat-target);padding:var(--fat-space-sm) var(--fat-space-md);border:var(--fat-hairline) solid var(--fat-ink);border-radius:var(--fat-radius-button);color:var(--fat-ink);background:var(--fat-paper);font-size:var(--fat-text-small);text-decoration:none}.actions [data-action=resume]{flex-basis:100%;order:-1}.hud{display:flex;flex-wrap:wrap;align-items:center;gap:0;padding:6px var(--fat-space-md);max-width:calc(100% - 2 * var(--fat-space-lg) - 160px);background:var(--fat-paper);border:var(--fat-hairline) solid var(--fat-rule);border-radius:var(--fat-radius-button);box-shadow:var(--fat-shadow-card)}.run-metrics,.weight-state,.star-progress{background:none;border:0;box-shadow:none;padding:0 var(--fat-space-sm);border-radius:0}.run-metrics{gap:var(--fat-space-sm)}.metric+.metric,.weight-state,.star-progress{border-left:var(--fat-hairline) solid var(--fat-rule);padding-left:var(--fat-space-sm)}.metric{display:flex;align-items:baseline;gap:6px}.metric strong,.weight-state strong{display:inline;font-size:1rem;line-height:1.4}.metric .eyebrow{font-size:var(--fat-text-label)}.metric-note,.weight-state .eyebrow{display:none}.score-line{grid-column:auto;margin:0;background:none;padding:0 var(--fat-space-sm);border-left:var(--fat-hairline) solid var(--fat-rule);border-radius:0;font-size:var(--fat-text-label)}.weight-state{gap:6px}.weight-state svg{width:22px;height:18px}.weight-state[data-weight=heavy]{border-top:0;border-right:0;border-bottom:0}.star-progress{grid-column:auto;gap:6px;font-size:var(--fat-text-label)}.star-progress span{font-size:1rem}.hint{top:calc(max(var(--fat-space-lg),env(safe-area-inset-top)) + 56px);bottom:auto;font-size:var(--fat-text-body, 1rem);font-weight:700;border-radius:999px;white-space:nowrap;opacity:0;transition:opacity .3s}.hint.is-on{opacity:1}.keyboard-hints{display:none}.touch-controls{opacity:.92}.touch-controls button{border:2px solid var(--fat-paper);outline:1px solid var(--fat-ink)}.touch-controls [data-hold]{width:60px;min-width:60px;height:60px;min-height:60px;border-radius:50%;padding:0}.touch-controls [data-hold]>span:first-child{font-size:1.5rem}.touch-controls .control-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.touch-controls [data-hold=jump]{width:72px;min-width:72px;height:72px}#eat{min-width:60px;min-height:60px;border-radius:999px;font-size:var(--fat-text-label);font-weight:800}@media(hover:hover)and (pointer:fine){.touch-controls{opacity:.8}.touch-controls:hover{opacity:.92}}@media(max-width:600px){.hud{max-width:calc(100% - 2 * var(--fat-space-md));top:calc(max(var(--fat-space-lg),env(safe-area-inset-top)) + 56px)}.hint{top:calc(max(var(--fat-space-lg),env(safe-area-inset-top)) + 108px);white-space:normal}.metric .eyebrow,.score-line{display:none}}@media(prefers-reduced-motion:reduce){.hint{transition:none}}.touch-controls [data-hold=jump]{background:var(--fat-paper);color:var(--fat-ink);border:3px solid var(--fat-ink);outline:0}@media(max-height:500px){.score-line{display:none}}
