*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#000;color:white}body{min-height:100svh;display:flex;justify-content:center;align-items:center;font-family:Arial,sans-serif}button,label{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,label:focus-visible{outline:1px solid #cdeaa0;outline-offset:3px}[hidden]{display:none!important}.game-wrap{width:640px;max-width:100vw;margin:20px auto}.game-frame{position:relative;width:100%;aspect-ratio:4/3;background:#91baff;isolation:isolate;overflow:hidden;container-type:inline-size}canvas{display:block;width:100%;height:100%;outline:none}.title-screen,.title-art{position:absolute;inset:0;width:100%;height:100%}.title-art{object-fit:fill}.magic{font-family:'Harrington','Monotype Corsiva','Palatino Linotype',Georgia,serif;font-weight:400;color:#e8f9d4;text-align:center;text-shadow:0 0 3px #a5d47b,0 0 7px #75ad5b,0 0 13px #4d8045}.play,.instructions button,.result button,.paused button{padding:0;border:0;background:transparent}.play{position:absolute;bottom:5.6%;width:100%;font-size:29px;font-size:4.53cqw;font-variant:small-caps;letter-spacing:-1px}.play:hover,.instructions button:hover,.result button:hover,.paused button:hover{color:#fff;text-shadow:0 0 5px white,0 0 10px #b1df88,0 0 18px #79b85d}.instructions{position:absolute;inset:auto 0 2%;height:11%;text-align:center;color:#d8efc3}.instructions p{font:italic 19px Georgia,serif;font-size:2.97cqw;margin:0 0 1.2%;text-shadow:0 0 5px #5b9e4f}.instructions button{font-size:27px;font-size:4.2cqw;line-height:1}.purple-screen{position:absolute;inset:0;background:#173d2b}.intro{display:flex;flex-direction:column;align-items:center;justify-content:space-between;padding:14px 0 25px}.intro p{font-size:29px;font-size:4.53cqw;margin:0;letter-spacing:-1px}.wish-fairy{position:absolute;left:47%;top:44%;font-size:50px;color:#e5f8d3;text-shadow:0 0 8px #c1e39b,0 0 20px #9bca73,0 0 35px #66994f;animation:wish 1.8s ease-in-out infinite}.wish-fairy:after,.wish-fairy:before{content:'✧';font-size:21px;position:absolute;left:-35px;top:23px}.wish-fairy:after{left:-65px;top:40px;font-size:10px}.hud{position:absolute;inset:0;pointer-events:none}.hud #score{position:absolute;top:7px;left:0;right:0;text-align:center;font:italic 32px Georgia,serif;font-size:5cqw;text-shadow:0 0 4px #bcdf9c,0 0 10px #85b86a;color:white}.lives{position:absolute;top:8px;left:8px;display:flex;gap:3px}.life{position:relative;width:38px;height:24px}.life svg{width:100%;height:100%;fill:#fff;stroke:#c8e5ae;stroke-width:.6;filter:drop-shadow(0 0 2px #a5d181)}.life.used:after{content:'X';position:absolute;inset:-8px 0 0;color:#acd77b;font:bold italic 31px Georgia;text-align:center;text-shadow:0 0 3px #96c96c}.life.used svg{opacity:.3}.result{display:flex;align-items:center;flex-direction:column;padding:28px 12px}.result h1{font-size:39px;font-size:6.1cqw;margin:0 0 25px}.wish-scores{display:flex;flex-direction:column;width:53%;gap:18px}.wish-score{display:flex;align-items:center;justify-content:space-between;gap:25px;font:italic 27px Georgia,serif;font-size:4.2cqw;text-shadow:0 0 8px #a4ce83}.wish-score strong{font-weight:400}.result-total{font:italic 35px Georgia,serif;font-size:5.47cqw;margin:23px 0 0;text-shadow:0 0 8px #a4ce83}.result-message{font-size:25px;font-size:3.9cqw;margin:auto 0 13px}.result button{font-size:25px;font-size:3.9cqw;line-height:1.2;margin-bottom:9px}.paused{background:#173d2bde;display:flex;align-items:center;justify-content:center;flex-direction:column}.paused h2{font-size:45px;font-size:7cqw;margin:0 0 30px}.paused button{font-size:25px;font-size:3.9cqw}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 0 0;color:#777;font:9px Arial,sans-serif}.toolbar>div{display:flex;gap:10px;align-items:center}.toolbar button,.toolbar label{font:8px Arial,sans-serif;padding:0;border:0;background:none;color:#999;cursor:pointer;white-space:nowrap}.toolbar button:hover,.toolbar label:hover{color:#fff}.notice{font:10px Arial,sans-serif;color:#a0b888;min-height:12px;margin:8px 0 0;text-align:right}.touch-controls{position:absolute;inset:auto 14px 13px;justify-content:space-between;pointer-events:none;display:none}.touch-controls button{width:54px;height:45px;background:#183c2f8c;border:1px solid #b3d38a99;border-radius:8px;color:#eaf7df;font:italic 26px Georgia;text-shadow:0 0 4px #92c86e;pointer-events:auto;touch-action:none;user-select:none}.game-frame:fullscreen{height:100dvh;width:min(100vw,133.333dvh);margin:auto;overflow:hidden}.game-wrap:has(.game-frame:fullscreen){width:100%}@keyframes wish{0%{transform:translate(-70px,35px) rotate(-15deg) scale(.6);opacity:0}30%{opacity:1}70%{opacity:1}100%{transform:translate(70px,-35px) rotate(25deg) scale(1.1);opacity:0}}@media(pointer:coarse){.touch-controls{display:flex}.toolbar>span{display:none}.toolbar{justify-content:center;padding:12px 0}.toolbar>div{gap:21px}.toolbar button,.toolbar label{font-size:9px}}@media(max-width:640px){.game-wrap{margin:auto 0}.toolbar{padding:10px}.notice{padding:0 10px}.life{width:5.94cqw;height:3.75cqw}.lives{top:1.25cqw;left:1.25cqw;gap:.47cqw}.life.used:after{font-size:4.84cqw;top:-1.25cqw}.intro{padding:2.2cqw 0 3.9cqw}.result{padding:4.4cqw 2cqw}.result h1{margin-bottom:3.9cqw}.wish-scores{gap:2.8cqw}.result-message{margin-bottom:2cqw}.result button{margin-bottom:1.4cqw}.result-total{margin-top:3.6cqw}.toolbar>span{font-size:7px}.toolbar>div{gap:8px}.toolbar button,.toolbar label{font-size:7px}}@media(prefers-reduced-motion:reduce){.wish-fairy{animation:none}}
.result{background:#203d2a;padding:61px 0 0}.result h1{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.wish-scores{width:84.4%;gap:3px}.wish-score{height:31px;flex-shrink:0;display:grid;grid-template-columns:1fr 1fr 1fr;gap:0;background:linear-gradient(90deg,#245936e6,#315f3bdb);border:1px solid #8cbc6a;border-radius:10px;font-size:20px;font-size:3.125cqw}.wish-score span{text-align:right;font-family:'Harrington','Monotype Corsiva',Georgia,serif;font-size:17px;font-size:2.66cqw;white-space:nowrap}.wish-score strong{text-align:center;font-style:normal;font-weight:bold}.result-total{position:absolute;bottom:39px;left:0;right:0;text-align:center;font:italic 64px Georgia,serif;font-size:10cqw;line-height:1;margin:0;text-shadow:0 0 5px #c8eaa7,0 0 13px #91c879}.result-message{display:none}.result button{position:absolute;bottom:20px;left:0;right:0;width:100%;margin:0;font-size:28px;font-size:4.375cqw;letter-spacing:-.7px}.result:has(#result-total:not([hidden])){padding-top:9.53cqw}.wish-score{height:4.84cqw;border-radius:1.56cqw}.wish-scores{gap:.47cqw}.result-total{bottom:6.1cqw}.result button{bottom:3.1cqw}
.game-wrap{position:relative}.toolbar{position:absolute;top:100%;left:0;width:100%}.notice{position:absolute;top:calc(100% + 22px);left:0;right:0;margin:0}
.wish-spirit{position:absolute;width:46%;height:61.333%;left:27%;top:17%;background:#b2d88c;mask:url('boar-run-brown.png') 0 0/400% 200% no-repeat;filter:drop-shadow(0 0 5px #b5e291) drop-shadow(0 0 11px #81b964);animation:spirit 1.8s ease-out both}.wish-spirit:after{content:'✦';position:absolute;bottom:0;left:0;color:white;font-size:30px}@keyframes spirit{0%{opacity:0;transform:translateX(-40px) scale(.4)}40%{opacity:1}100%{opacity:1;transform:translateX(30px) scale(1)}}@media(prefers-reduced-motion:reduce){.wish-spirit{animation:none}}

/* Woodland palette; the brown Uniboar keeps its rainbow mane, tail and horn. */
.game-frame{background:#244b3b}.magic{color:#e5f6d5;text-shadow:0 2px 3px #112e24,0 0 10px #b4cd70}
.forest-logo{position:absolute;top:5.5%;left:0;right:0;margin:0;text-align:center;font:bold 11.3cqw/.94 Georgia,serif;letter-spacing:.2cqw;color:#d5edb5;text-shadow:0 3px 0 #365338,0 6px 9px #102a24;pointer-events:none}
.forest-logo span{display:block;font-size:4.25cqw;line-height:1.3;letter-spacing:1.15cqw;padding-left:1.15cqw}
.title-hero{position:absolute;left:24%;top:17%;width:52%;height:69.333%;background:url('boar-run-brown.png') 0 0/400% 200% no-repeat;filter:drop-shadow(0 9px 9px #15332780);pointer-events:none}
.play:hover,.instructions button:hover,.result button:hover,.paused button:hover{color:#f1ffe5;text-shadow:0 0 5px #d7f2af,0 0 14px #a6c75a}
.instructions{color:#dfefca}.instructions p{text-shadow:0 1px 5px #0f2f25}.purple-screen{background:linear-gradient(150deg,#122d23,#345738 65%,#213e2d)}
.wish-spirit{background:#d4e99c;filter:drop-shadow(0 0 5px #cce9a3) drop-shadow(0 0 14px #a3c969)}
.hud #score{color:#edfade;text-shadow:0 2px 3px #203d28,0 0 8px #38542b}.life svg{stroke:#bfdc9b;filter:drop-shadow(0 1px 2px #153f2c)}.life.used:after{color:#e7bd77;text-shadow:0 1px 3px #173824}
.paused{background:#132f25e8}.result{background:#1c3d2b url('forest-panorama.webp') center/cover no-repeat}
.wish-score{background:linear-gradient(90deg,#163b2ee8,#4a6739dc);border-color:#91ac66;color:#e3f2d1;text-shadow:0 1px 4px #132f25}
.result-total{text-shadow:0 2px 5px #122e24,0 0 12px #9cb976}.result button{text-shadow:0 2px 4px #153526}
.touch-controls button{background:#183c2f9c;border-color:#bed29199;color:#e6f6d4;text-shadow:0 1px 3px #213f2c}.notice{color:#a0b888}
button:focus-visible,label:focus-visible{outline-color:#d8e8a4}

/* Keep result numbers and the next-wish prompt in separate flow rows. */
.result{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:9.5cqw 7.8cqw 4.2cqw;gap:0}
.result:has(#result-total:not([hidden])){padding-top:9.5cqw}
.result .wish-scores{width:100%;gap:max(3px,.47cqw);flex-shrink:0}
.result .wish-score{height:auto;min-height:max(22px,4.84cqw);padding:.25cqw .6cqw;line-height:1.15;font-size:max(12px,3.125cqw);grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1fr)}
.result .wish-score span{font-size:max(11px,2.66cqw);line-height:1.15}
.result .wish-score strong{min-width:0;font-variant-numeric:tabular-nums}
.result .result-total{position:static;inset:auto;flex-shrink:0;max-width:100%;margin:auto 0 0;line-height:1.05;font-size:clamp(30px,10cqw,112px);font-variant-numeric:tabular-nums;white-space:nowrap}
.result #next{position:static;inset:auto;flex-shrink:0;display:block;width:100%;max-width:100%;margin:1.8cqw 0 0;font-size:max(16px,4.2cqw);line-height:1.25;letter-spacing:0;white-space:normal;text-wrap:balance;overflow-wrap:break-word}
.instructions{inset:auto 3% 3%;height:auto;display:flex;flex-direction:column;align-items:center;gap:1.2cqw}
.instructions p{margin:0;line-height:1.2}
.instructions button{max-width:100%;line-height:1.2;text-wrap:balance}
.game-wrap:fullscreen{display:flex;align-items:center;justify-content:center;margin:0;background:#000}
.game-wrap:fullscreen .game-frame{flex:none;width:min(100vw,133.333333dvh);height:min(100dvh,75vw);max-width:none;margin:0}
.game-wrap:fullscreen .toolbar,.game-wrap:fullscreen .notice{display:none}

/* Widescreen: expose more world without stretching the boar or changing gravity. */
.game-wrap{width:min(960px,100vw,calc((100svh - 72px)*16/9));max-width:100vw}
.game-frame{aspect-ratio:16/9}
.title-art{object-fit:cover}
.forest-logo{top:18%;left:4%;right:auto;width:48%;font-size:7.9cqw;line-height:.98}
.forest-logo span{font-size:3cqw;line-height:1.3;letter-spacing:.8cqw;padding-left:.8cqw}
.title-hero{left:51%;top:7%;width:43%;height:auto;aspect-ratio:1}
.play{font-size:max(16px,3.7cqw)}
.instructions{gap:.9cqw}
.instructions p{font-size:max(10px,2.2cqw)}
.instructions button{font-size:max(14px,3cqw)}
.intro p{font-size:max(14px,3.5cqw)}
.wish-spirit{left:34%;top:10%;width:32%;height:auto;aspect-ratio:1}
.hud #score{font-size:3.8cqw}
.result,.result:has(#result-total:not([hidden])){padding:4.5cqw 7.8cqw 2.3cqw}
.result .wish-score{min-height:max(22px,3.8cqw);font-size:max(12px,2.5cqw)}
.result .wish-score span{font-size:max(11px,2.2cqw)}
.result .result-total{font-size:clamp(30px,8.2cqw,100px)}
.result #next{margin-top:1.3cqw;font-size:max(14px,3.2cqw)}
.result #result-message{display:none}
.result .wish-scores{margin-bottom:6px}
.game-wrap:fullscreen .game-frame{width:min(100vw,177.7777778dvh);height:min(100dvh,56.25vw)}

.dash-hint{position:absolute;left:50%;top:18%;transform:translateX(-50%);padding:.65em 1em;border:1px solid #bdd59380;border-radius:999px;background:#153c2de8;color:#eaf8d6;font:500 max(11px,1.7cqw)/1.2 Arial,sans-serif;box-shadow:0 2px 12px #18362955;pointer-events:none;white-space:nowrap}
.dash-hint kbd{display:inline-block;margin:0 .15em;padding:.1em .35em;border:1px solid #cce2a5;border-radius:3px;background:#38613e;font:700 1em Arial,sans-serif;color:#f4ffe8}

/* Four separate rows keep the centered wreck clear of all score text. */
.result,.result:has(#result-total:not([hidden])){display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto;justify-content:stretch;justify-items:center;align-items:center;padding:2.5cqw 7.8cqw 1.5cqw}
.result .wish-scores{grid-row:1;align-self:start;gap:.35cqw;margin:0}
.result .wish-score{height:3.3cqw;min-height:16px;padding:.12cqw .6cqw;font-size:max(10px,2.2cqw)}
.result .wish-score span{font-size:max(10px,2cqw)}
.result-head-wrap{grid-row:2;align-self:stretch;width:100%;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}
#result-head{position:static;inset:auto;width:auto;height:100%;max-width:60%;max-height:27cqw;aspect-ratio:3/2;object-fit:contain;pointer-events:none;filter:drop-shadow(0 3px 4px #10291c80)}
.result .result-total{grid-row:3;margin:0;line-height:1;font-size:clamp(24px,7.5cqw,90px)}
.result #next{grid-row:4;margin:.65cqw 0 0;font-size:max(12px,3cqw);line-height:1.15}
