:root{--ink:#173b35;--forest:#214d40;--cream:#f6f2e7;--paper:#fffdf6;--gold:#ecc069;--rust:#b04b2b;--muted:#5d6f64;--line:#d8dacc;--shadow:0 18px 60px #14332918;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--cream);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:3px solid #df812a;outline-offset:4px}button{touch-action:manipulation}a{color:inherit}button[hidden],[hidden]{display:none!important}.skip-link{position:absolute;left:20px;top:-100px;background:var(--ink);color:white;padding:12px;z-index:20}.skip-link:focus{top:10px}.site-header{max-width:1240px;margin:auto;display:flex;align-items:center;justify-content:space-between;padding:25px 30px;border-bottom:1px solid var(--line)}.brand{display:flex;gap:11px;text-decoration:none;font-size:13px;font-weight:800;letter-spacing:1.4px;align-items:center}.brand small{display:block;font-size:8px;letter-spacing:1.4px;margin-top:5px;color:var(--muted)}.brand-mark{width:40px;height:40px;border:2px solid var(--ink);border-radius:50%;display:grid;place-items:center;font-size:32px;font-family:Georgia,serif;font-weight:700;line-height:1;outline:1px solid var(--ink);outline-offset:-6px}.back-link{font-size:12px;font-weight:700;text-decoration:none}.back-link:hover{text-decoration:underline}main{max-width:1180px;margin:auto;padding:36px 24px 0}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:27px;gap:20px}.eyebrow{font-size:10px;font-weight:800;letter-spacing:2.3px;margin:0 0 10px;display:block}.page-heading .eyebrow{display:flex;gap:8px;align-items:center}.eyebrow>span{height:7px;width:7px;border-radius:50%;background:var(--rust)}h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(28px,3.7vw,46px);letter-spacing:-1.5px;line-height:1.05;margin:0;font-weight:600}h1 em{font-weight:500;color:var(--rust)}.heading-note{font-size:12px;line-height:1.75;margin:0;color:var(--muted)}.heading-note strong{color:var(--ink);font-weight:600}.arena{background:var(--ink);border:1px solid var(--ink);border-radius:15px;overflow:hidden;box-shadow:var(--shadow);scroll-margin-top:10px}.game-toolbar{display:flex;align-items:center;gap:24px;padding:15px 22px;color:var(--cream);height:70px}.chapter{display:flex;align-items:center;gap:12px;min-width:160px}.chapter>span{font-size:18px;font-family:Georgia,serif;color:var(--gold);border-right:1px solid #ffffff30;padding-right:12px}.chapter small{font-size:8px;letter-spacing:1.7px;color:#bbd0c1;display:block;margin-bottom:5px}.chapter strong{font-size:13px;font-weight:600}.course-progress{height:5px;background:#ffffff1c;position:relative;flex:1;border-radius:8px;max-width:420px}.course-progress>span{height:100%;width:0%;background:var(--gold);display:block;border-radius:8px;transition:width .1s linear}.course-progress i{position:absolute;top:-2px;left:35%;height:9px;width:3px;background:#769183}.course-progress i+i{left:70%}.hud-stats{margin-left:auto;display:flex;align-items:center;gap:22px;white-space:nowrap;font-size:14px}.hearts{color:#ef9578;letter-spacing:3px;font-size:18px}.token-stat{display:flex;align-items:center;gap:5px;font-variant-numeric:tabular-nums}.token-stat>span:first-child{font-size:24px;color:var(--gold)}.token-stat b{font-size:14px}.token-total{font-size:11px;color:#b4c6b9}.icon-button{width:32px;height:32px;border:1px solid #ffffff40;background:#ffffff08;border-radius:8px;color:var(--cream);font-weight:800}.icon-button:hover{background:#ffffff20}.stage{width:100%;position:relative;background:#b8d2ae;aspect-ratio:16/9;isolation:isolate}canvas{display:block;width:100%;height:100%;touch-action:none}.screen{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;background:linear-gradient(180deg,#eef0d3db 0%,#edf2d0c9 63%,#cbd6b9df 100%);padding:24px}.start-copy .adventure-tag{margin-bottom:14px}.adventure-tag{font-size:9px;font-weight:800;letter-spacing:2.6px;display:block}.screen h2{font-family:Georgia,serif;font-size:clamp(30px,4vw,49px);line-height:1;letter-spacing:-1.2px;margin:0}.screen h2 em{color:var(--rust);font-weight:500}.screen p{font-size:13px;line-height:1.5;margin:12px 0 0}.character-select{display:flex;gap:10px;margin:23px 0 18px;justify-content:center;width:100%;max-width:510px}.character-card{background:#fffdf688;color:var(--ink);border:1px solid #47674544;border-radius:9px;padding:7px 7px 12px;position:relative;width:25%;transition:background .15s,transform .15s,box-shadow .15s}.character-card:hover{background:#fffdf6;transform:translateY(-3px)}.character-card.selected{border:2px solid var(--forest);padding:6px 6px 11px;background:#fffdf6;box-shadow:0 3px 0 var(--forest)}.character-card>strong{display:block;font-family:Georgia,serif;font-size:19px;line-height:1.05;margin:3px 0 5px}.character-card>span:not(.portrait){display:block;font-size:7px;letter-spacing:1.1px;font-weight:700}.portrait{display:block;height:90px;width:100%;background-image:url('assets/characters.webp');background-size:300% 200%;background-repeat:no-repeat}.finn{background-position:0 0}.pip{background-position:50% 0}.ollie{background-position:100% 0}.rae{background-position:0 100%}.belt{display:block;height:4px;width:23px;border-radius:1px;margin:9px auto 0}.yellow{background:#e3b72e}.orange{background:#df7630}.green{background:#3d8d5a}.black{background:#202b26}.start-actions{display:flex;gap:19px;align-items:center}.primary-button{display:flex;align-items:center;justify-content:space-between;gap:35px;min-height:46px;border:0;border-radius:7px;background:var(--rust);color:#fffaf0;padding:12px 23px;font-size:13px;font-weight:700;box-shadow:0 3px 0 #87381f}.primary-button:hover{background:#a84024}.primary-button:active{transform:translateY(2px);box-shadow:0 1px 0 #87381f}.primary-button>span{font-size:20px;font-weight:400}.text-button{background:none;border:0;border-bottom:1px solid #173b3560;padding:6px 0;color:var(--ink);font-size:12px;font-weight:600}.dialog-card{max-width:360px;width:100%;padding:32px 30px;background:#fffdf6ef;border:1px solid #74936e80;border-radius:12px;box-shadow:0 12px 50px #153a3620}.dialog-card .adventure-tag{margin:0 0 14px}.dialog-card h2{font-size:39px}.dialog-card p{font-size:13px;margin:14px 0 20px}.dialog-card .primary-button{width:100%}.dialog-card .text-button{margin-top:15px}.secondary-button{display:block;width:100%;border:1px solid #73877260;background:transparent;color:var(--ink);border-radius:7px;margin-top:12px;padding:12px;font-size:12px}.win-score{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:15px 0 21px;padding:13px 0;font-size:12px}.win-score>span{color:#bc822c;font-size:20px}.win-score>b{font-size:20px}.victory-star{color:#bc822c;font-size:43px;display:block;margin:-12px 0 8px}.game-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 19px;color:#dce5d4;min-height:46px}.coach-message{font-size:11px;line-height:1.35}.game-options{display:flex;gap:14px;align-items:center;flex-shrink:0}.game-options button{background:none;color:#dce5d4;border:0;font-size:14px;padding:3px}.game-options button span{font-size:10px;margin-left:3px}.game-options #expand{font-size:22px;line-height:1}.event-toast{position:absolute;top:18px;left:50%;transform:translateX(-50%) translateY(-5px);background:#fffaf1f2;padding:11px 20px;border:1px solid #ccdaa5;color:var(--ink);border-radius:25px;font-size:12px;font-weight:700;box-shadow:0 5px 15px #173b3522;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;white-space:nowrap;max-width:92%;text-overflow:ellipsis;overflow:hidden}.event-toast.visible{opacity:1;transform:translateX(-50%) translateY(0)}.touch-controls{display:none;justify-content:space-between;align-items:center;background:var(--ink);padding:10px 14px 3px;gap:8px;user-select:none;-webkit-user-select:none}.move-controls,.action-controls{display:flex;gap:9px}.touch-controls button{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;height:58px;width:58px;border:1px solid #819d884f;border-radius:12px;background:#ffffff12;color:#fff8e9;font-size:27px;display:flex;align-items:center;justify-content:center;flex-direction:column}.touch-controls button.active{background:#ffffff36;transform:translateY(2px)}.touch-controls small{font-size:8px;font-weight:800;letter-spacing:1px;margin-top:2px}.touch-controls .jump-button{width:68px;background:var(--gold);color:var(--ink);border-color:var(--gold)}.touch-controls .jump-button.active{background:#fce0a2}.touch-hint{font-size:8px;letter-spacing:1.3px;color:#a2b8a5}.under-game{display:flex;justify-content:space-between;align-items:center;padding:16px 2px;gap:15px}.keyboard-legend{display:flex;gap:5px;align-items:center;margin:0;font-size:10px;color:var(--muted)}kbd{font-family:inherit;font-size:9px;border:1px solid #c6cebe;border-bottom-width:2px;border-radius:4px;padding:3px 5px;min-width:21px;text-align:center;background:#fffaf0;color:var(--ink)}.keyboard-legend>span{margin:0 6px;color:#a0ac9c}.version-label{font-size:8px;font-weight:700;letter-spacing:1.4px;color:var(--muted);white-space:nowrap}.field-guide{padding:45px 0 50px}.guide-heading{text-align:center;margin-bottom:25px}.guide-heading .eyebrow{font-size:8px;color:var(--rust)}.guide-heading h2{font:400 30px/1.2 Georgia,serif;margin:0 0 10px;letter-spacing:-.7px}.guide-heading p{font-size:12px;color:var(--muted);margin:0}.guide-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.guide-grid article{position:relative;padding:24px;border:1px solid var(--line);border-radius:10px;background:#fffdf55e}.guide-number{display:block;font:italic 27px Georgia,serif;color:#76866d;margin-bottom:19px}.guide-grid h3{font-size:15px;margin:0 0 12px;letter-spacing:-.2px}.guide-grid p{font-size:12px;line-height:1.8;color:var(--muted);margin:0 0 20px}.guide-grid strong{color:var(--ink);font-weight:600}.guide-chip{font-size:8px;font-weight:800;letter-spacing:1.3px;color:var(--rust)}.site-footer{border-top:1px solid var(--line);max-width:1180px;margin:auto;padding:25px 24px;display:flex;justify-content:space-between;gap:16px;font-size:10px;color:var(--muted);line-height:1.5}.site-footer a{text-underline-offset:3px}dialog{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:13px;padding:0;max-width:470px;width:calc(100% - 34px);max-height:90dvh}dialog::backdrop{background:#0e292bcc;backdrop-filter:blur(4px)}.help-content{padding:30px}.help-content h2{font:32px Georgia,serif;margin:0}.help-content p{font-size:13px;line-height:1.65;color:var(--muted)}dl{font-size:12px}dl>div{display:grid;grid-template-columns:90px 1fr;border-top:1px solid var(--line);padding:12px 0;gap:10px}dt{font-weight:700}dd{margin:0;line-height:1.45}.help-content .primary-button{width:100%}.arena:fullscreen{background:var(--ink);border:0;border-radius:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center}.arena:fullscreen .stage{width:100%;max-height:calc(100dvh - 116px);aspect-ratio:16/9;flex:1;min-height:0}.arena:fullscreen canvas{object-fit:contain}.arena:fullscreen .game-toolbar,.arena:fullscreen .game-footer{flex-shrink:0}.arena:fullscreen .screen{max-width:none}.arena:fullscreen .touch-controls{flex-shrink:0}.arena:fullscreen .stage .start-screen{overflow:auto}.arena:fullscreen .game-footer{padding-bottom:max(8px,env(safe-area-inset-bottom))}
@media(hover:none),(pointer:coarse){.touch-controls{display:flex}.keyboard-legend{display:none}.under-game{justify-content:center;padding:12px}.arena:fullscreen .stage{max-height:calc(100dvh - 190px)}}

@media(max-width:700px){.heading-note{display:none}.page-heading{margin-bottom:20px}.game-toolbar{gap:13px;padding:12px 14px;height:59px}.chapter{min-width:140px;gap:9px}.hud-stats{gap:13px}.course-progress{display:none}.token-total{display:none}.guide-grid{gap:10px}.guide-grid article{padding:18px}.start-copy .adventure-tag{margin-bottom:9px}.screen{padding:18px}.screen h2{font-size:34px}.screen p{font-size:11px;margin-top:9px}.character-select{margin:16px 0 14px;gap:7px;max-width:440px}.portrait{height:70px}.character-card{padding:5px 5px 9px}.character-card.selected{padding:4px 4px 8px}.character-card>strong{font-size:17px}.character-card>span:not(.portrait){font-size:6px}.belt{margin-top:6px}.start-actions{gap:14px}.primary-button{min-height:42px;font-size:12px}.game-footer{padding:11px 13px}.coach-message{font-size:10px}.game-options button span{display:none}.game-options{gap:8px}.field-guide{padding:27px 0 34px}.under-game{gap:8px}.version-label{font-size:7px}}
@media(max-width:560px){.site-header{padding:17px 17px}.brand-mark{height:33px;width:33px;font-size:25px}.brand{font-size:11px}.brand small{font-size:6px}.back-link{font-size:10px}main{padding:25px 12px 0}.eyebrow{font-size:8px;letter-spacing:1.6px}h1{font-size:32px;letter-spacing:-1.1px}.page-heading{margin-bottom:20px}.arena{border-radius:11px}.stage{aspect-ratio:640/576;min-height:330px}.screen{padding:18px 12px}.screen h2{font-size:32px}.start-copy p{font-size:10px}.adventure-tag{font-size:7px;letter-spacing:2px}.character-select{gap:6px;margin:15px 0 15px}.character-card>strong{font-size:16px}.portrait{height:68px}.character-card>span:not(.portrait){font-size:6px;letter-spacing:.3px}.start-actions{gap:15px}.primary-button{padding:10px 18px;gap:30px;font-size:12px}.text-button{font-size:10px}.chapter{min-width:130px}.chapter strong{font-size:12px}.chapter small{font-size:7px}.chapter>span{font-size:16px}.hud-stats{gap:10px}.hearts{font-size:14px;letter-spacing:1px}.token-stat>span:first-child{font-size:20px}.token-stat b{font-size:12px}.game-toolbar{gap:8px;padding:11px 12px;height:57px}.icon-button{width:29px;height:29px}.touch-controls{display:flex}.touch-hint{font-size:7px;letter-spacing:.6px}.game-footer{min-height:51px}.coach-message{font-size:10px;max-width:260px}.keyboard-legend{display:none}.under-game{justify-content:center;padding:14px}.guide-heading h2{font-size:25px}.guide-grid{grid-template-columns:1fr}.guide-grid article{padding:20px 20px 19px 63px;min-height:138px}.guide-number{position:absolute;left:19px;top:19px;font-size:24px}.guide-grid p{margin-bottom:12px}.guide-grid h3{margin-bottom:8px}.field-guide{padding-top:18px}.site-footer{padding:23px 20px;flex-direction:column;gap:8px;font-size:10px}.dialog-card{padding:20px;max-width:300px}.dialog-card h2{font-size:32px}.dialog-card p{font-size:11px}.victory-star{font-size:30px}.win-score{margin:12px 0;padding:8px}.event-toast{font-size:10px;padding:8px 12px;top:10px}.arena:fullscreen .stage{aspect-ratio:640/576;min-height:0}.arena:fullscreen .start-screen{justify-content:center}.arena:fullscreen .game-toolbar{height:57px}}
@media(max-height:530px) and (orientation:landscape){.site-header,.page-heading,.under-game,.field-guide,.site-footer{display:none}main{padding:0;max-width:none}.arena{border-radius:0;border:0;height:100dvh;max-height:100dvh;display:flex;flex-direction:column}.game-toolbar{height:42px;padding:6px 16px;flex-shrink:0}.chapter small{display:none}.chapter>span{font-size:15px}.stage{aspect-ratio:auto;height:0;min-height:0;flex:1 1 0;overflow:hidden}.stage canvas{object-fit:contain}.game-footer{height:38px;min-height:38px;flex-shrink:0;padding:6px 15px}.touch-controls{position:absolute;z-index:4;bottom:45px;left:0;right:0;background:none;pointer-events:none;padding:5px 20px}.touch-controls button{pointer-events:auto;background:#163e37c9;border-color:#b6c9a2}.touch-controls .jump-button{background:var(--gold)}.touch-hint{display:none}.screen{padding:8px}.start-copy h2{font-size:28px}.start-copy h2 br{display:none}.start-copy p{display:none}.start-copy .adventure-tag{font-size:7px;margin-bottom:6px}.character-select{max-width:340px;margin:10px 0}.portrait{height:52px}.character-card>strong{font-size:13px}.character-card>span:not(.portrait){font-size:6px}.character-card{padding-bottom:5px}.character-card.selected{padding-bottom:4px}.belt{height:3px;margin-top:5px}.primary-button{min-height:34px;padding:6px 17px;font-size:11px}.dialog-card{max-width:420px;padding:16px}.dialog-card h2{font-size:25px}.dialog-card p{font-size:11px;margin:9px 0}.dialog-card h2 br{display:none}.dialog-card .adventure-tag{font-size:7px;margin:0 0 8px}.dialog-card .secondary-button{margin-top:8px;padding:7px}.dialog-card .text-button{margin-top:6px}.victory-star{display:none}.win-score{margin:9px 0;padding:7px}.arena:fullscreen .stage{max-height:unset}.arena:fullscreen .touch-controls{position:absolute}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.arena[data-mode="ready"] .touch-controls,.arena[data-mode="paused"] .touch-controls,.arena[data-mode="won"] .touch-controls{display:none;visibility:hidden;pointer-events:none}.arena[data-mode="ready"] .touch-controls button,.arena[data-mode="paused"] .touch-controls button,.arena[data-mode="won"] .touch-controls button{pointer-events:none}

.portrait{background:none}.portrait canvas{width:100%;height:100%;object-fit:contain;touch-action:auto}

.artwork-loading{max-width:510px;width:100%;margin:-5px 0 14px;min-height:38px}.screen .artwork-loading p{font-size:11px;line-height:1.4;margin:0}.screen .artwork-loading .artwork-hint{font-size:9px;margin-top:3px;color:var(--muted)}.artwork-loading[data-status="error"]{color:#923718}.artwork-loading .text-button{margin-top:5px}.start-screen{overflow:auto}.start-actions{flex-shrink:0}
@media(max-width:560px){.artwork-loading{margin:-5px 0 10px;min-height:35px}.screen .artwork-loading p{font-size:10px}.screen .artwork-loading .artwork-hint{font-size:8px}.start-screen .character-select{margin:11px 0}}
@media(max-height:530px) and (orientation:landscape){.artwork-loading{margin:0 0 6px;min-height:15px}.screen .artwork-loading p{font-size:9px}.screen .artwork-loading .artwork-hint{display:none}.start-screen .character-select{margin:6px 0}.start-screen{justify-content:flex-start}.start-screen .start-copy{flex-shrink:0}.start-screen .character-select{flex-shrink:0}}

.start-screen{background:#e7ebd3}

.arena[data-mode="ready"] .stage{min-height:430px}.artwork-loading{flex-shrink:0}
@media(max-width:560px){.arena[data-mode="ready"] .stage{min-height:410px}}
@media(max-height:530px) and (orientation:landscape){.arena[data-mode="ready"] .stage{min-height:0}}
