:root{--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--ink: #fff8e7;--shade: rgba(58, 42, 30, .72);--accent: #f08a24;--water: #1f6f86;--paper-ink: #3a2a1e}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden;background:#3a2a1e;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);user-select:none;-webkit-user-select:none;touch-action:none;overscroll-behavior:none}#scene{position:fixed;inset:0;width:100%;height:100%;display:block}#hud{position:fixed;inset:0;pointer-events:none;padding:calc(var(--tg-content-safe-area-inset-top, 0px) + var(--tg-safe-area-inset-top, var(--safe-top)) + 12px) 16px calc(var(--tg-safe-area-inset-bottom, var(--safe-bottom)) + 16px);display:flex;flex-direction:column;justify-content:space-between}#top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}#title{margin:0;font-size:22px;font-weight:800;letter-spacing:.3px;color:var(--paper-ink);text-shadow:0 2px 0 #fbf6ea}#stats{background:var(--shade);border-radius:10px;padding:6px 10px;font:12px/1.4 ui-monospace,monospace;white-space:pre}#hint{background:var(--shade);border-radius:999px;padding:10px 16px;font-size:14px;text-align:center}#loader{position:fixed;inset:0;display:grid;place-content:center;justify-items:center;gap:12px;background:#3a2a1e;transition:opacity .3s}#loader.hidden{opacity:0;pointer-events:none}.spinner{width:40px;height:40px;border-radius:50%;border:4px solid #fff3;border-top-color:var(--accent);animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#bottom{display:flex;flex-direction:column;align-items:center;gap:12px}#controls{display:flex;gap:8px;pointer-events:auto}#controls button{min-height:44px;min-width:44px;padding:0 16px;border:0;border-radius:999px;background:var(--shade);color:var(--ink);font:600 15px/1 system-ui,sans-serif;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#controls button.primary{background:var(--accent);color:var(--paper-ink);padding:0 22px}#controls button.on:not(.primary){background:#fff8e7;color:#1d3b2a}#controls button:active{transform:scale(.96)}#controls button[hidden]{display:none}#head{display:flex;flex-direction:column;gap:8px;min-width:0}#goal{background:var(--shade);border-radius:12px;padding:8px 12px;max-width:290px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#goal[hidden]{display:none}#goal-text{font:600 14px/1.3 system-ui,sans-serif}#goal-bar{height:6px;border-radius:3px;background:#ffffff26;margin:6px 0 4px;overflow:hidden}#goal-fill{height:100%;width:0;background:var(--ok);border-radius:3px;transition:width .2s linear}#goal-sub{font-size:12px;opacity:.85}#stats{font-size:10px;opacity:.8}:root{--ok: #4cc46a;--warn: #f2c641;--danger: #e5533d}#inv{display:flex;gap:8px;pointer-events:auto;flex-wrap:wrap;justify-content:center}#inv[hidden]{display:none}#inv button{min-height:52px;min-width:64px;padding:6px 12px;border:2px solid transparent;border-radius:14px;background:var(--shade);color:var(--ink);font:600 13px/1.15 system-ui,sans-serif;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#inv button .ico{width:34px;height:34px;border-radius:8px;object-fit:contain}#inv button .n{font:700 12px/1 ui-monospace,monospace;opacity:.9}#inv button.sel{border-color:var(--accent);background:#2a1a08cc}#inv button:disabled{opacity:.4}#inv button:active{transform:scale(.96)}#hint.warn{background:#7a2a1fcc}#hint:empty{display:none}#result{position:fixed;inset:0;display:grid;place-items:center;background:#0b140f80;padding:16px;z-index:5}#result[hidden]{display:none}#result .card{background:#fff8e7;color:#2a1a08;border-radius:20px;padding:20px 22px;width:min(360px,100%);text-align:center;box-shadow:0 12px 40px #0006;animation:pop .35s cubic-bezier(.2,1.4,.4,1)}@keyframes pop{0%{transform:scale(.7);opacity:0}}#result h2{margin:6px 0 4px;font-size:22px}#result p{margin:0 0 16px;font-size:14px;color:#5b4630;white-space:pre-line}#result-stars{display:flex;justify-content:center;gap:14px}#result-stars .star{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:11px;color:#7a6650;width:80px}#result-stars .star b{font-size:34px;line-height:1;color:#d8cbb2}#result-stars .star.on b{color:#f2a541;text-shadow:0 2px 0 #b8701a}#result .row{display:flex;gap:8px;justify-content:center}#result button{min-height:44px;padding:0 18px;border:0;border-radius:999px;font:600 15px/1 system-ui,sans-serif;background:#e9dcc2;color:#2a1a08;cursor:pointer}#result button.primary{background:var(--accent);color:var(--paper-ink)}#goal-bar[hidden]{display:none}#inv button.empty:not(.sel){opacity:.45}#slot-menu{position:fixed;z-index:4;display:flex;flex-direction:column;gap:6px;padding:8px;background:#fff8e7;border-radius:14px;box-shadow:0 8px 24px #0005;animation:pop .2s cubic-bezier(.2,1.4,.4,1)}#slot-menu[hidden]{display:none}#slot-menu button{min-height:44px;padding:0 16px;border:0;border-radius:10px;background:#e9dcc2;color:#2a1a08;font:600 14px/1 system-ui,sans-serif;text-align:left;cursor:pointer;white-space:nowrap}#slot-menu button.danger{background:#f3d2c8;color:#7a2a1f}#slot-menu button.muted{background:transparent;color:#7a6650;pointer-events:none}#slot-menu button img{width:28px;height:28px;object-fit:contain;vertical-align:middle;margin:-4px 8px -4px -6px}#result-art{display:flex;justify-content:center;align-items:flex-end;gap:4px;margin:-64px 0 4px;height:120px;pointer-events:none}#result-art img{height:120px;width:120px;object-fit:contain;filter:drop-shadow(0 3px 2px #0003)}#result-art img+img{height:96px;width:96px}#slot-menu button:active{transform:scale(.97)}#result button[hidden]{display:none}#alert{position:absolute;left:50%;top:38%;transform:translate(-50%);background:#b3261ee6;color:#fff;font:800 20px/1.2 system-ui,sans-serif;padding:10px 18px;border-radius:14px;pointer-events:none;box-shadow:0 6px 18px #0006;animation:alert-pulse .6s ease-in-out infinite alternate;white-space:nowrap}#alert[hidden]{display:none}@keyframes alert-pulse{0%{transform:translate(-50%) scale(1)}to{transform:translate(-50%) scale(1.06)}}#poll{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;align-items:center;margin-top:14px;padding-top:12px;border-top:1px solid #e3d8c3;font-size:14px}#poll[hidden]{display:none}#poll span{width:100%;font-weight:600}#poll button{min-height:40px}#result button.link{background:transparent;color:#2f6f8f;text-decoration:underline;min-height:36px;margin-top:8px;font-size:13px}#feedback{position:fixed;inset:0;z-index:6;display:grid;place-items:center;background:#0b140f99;padding:16px;overflow-y:auto}#feedback[hidden]{display:none}#feedback .card{background:#fff8e7;color:#2a1a08;border-radius:20px;padding:18px 18px 16px;width:min(400px,100%);box-shadow:0 12px 40px #0006;animation:pop .3s cubic-bezier(.2,1.4,.4,1);display:flex;flex-direction:column;gap:12px;max-height:calc(100dvh - 32px);overflow-y:auto}#feedback h2{margin:0;font-size:20px}#feedback .sub{margin:-6px 0 0;font-size:13px;color:#5b4630}#feedback fieldset{border:0;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}#feedback legend,#feedback label>span{font:600 14px/1.3 system-ui,sans-serif;margin-bottom:6px;padding:0}#feedback fieldset button{min-height:40px;min-width:44px;padding:0 14px;border:2px solid transparent;border-radius:999px;background:#e9dcc2;color:#2a1a08;font:600 14px/1 system-ui,sans-serif;cursor:pointer}#feedback fieldset button.sel{border-color:#2f6f8f;background:#d5e7ef}#feedback label{display:flex;flex-direction:column}#feedback textarea{font:15px/1.35 system-ui,sans-serif;border:1px solid #d8cbb2;border-radius:10px;padding:8px 10px;resize:vertical;background:#fff;color:#2a1a08;user-select:text;-webkit-user-select:text;touch-action:auto}#feedback .row{display:flex;gap:8px;justify-content:flex-end}#feedback .row button{min-height:44px;padding:0 18px;border:0;border-radius:999px;font:600 15px/1 system-ui,sans-serif;background:#e9dcc2;color:#2a1a08;cursor:pointer}#feedback .row button.primary{background:var(--accent);color:var(--paper-ink)}#feedback .row button:disabled{opacity:.5}#btn-map{pointer-events:auto;flex:none;width:44px;height:44px;border:0;border-radius:12px;background:var(--shade);color:var(--ink);display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#btn-map svg,#btn-result-map svg{width:22px;height:22px;fill:currentColor}#btn-map:active{transform:scale(.94)}#titlebar{display:flex;align-items:center;gap:10px;min-width:0}#result .row{flex-wrap:wrap}#result button.icon{width:44px;padding:0;display:grid;place-items:center;flex:none}#map{position:fixed;inset:0;z-index:7;display:flex;flex-direction:column;background:#1d3b2a;background-image:radial-gradient(circle at 20% 10%,#2a5238 0,transparent 40%),radial-gradient(circle at 85% 60%,#24492f 0,transparent 45%)}#map[hidden]{display:none}#map header{display:flex;align-items:center;gap:12px;padding:calc(var(--tg-content-safe-area-inset-top, 0px) + var(--tg-safe-area-inset-top, var(--safe-top)) + 12px) 16px 10px;background:linear-gradient(#1d3b2a,#1d3b2ae6 70%,transparent);position:relative;z-index:2}#map h2{margin:0;font-size:22px;font-weight:800;text-shadow:0 2px 0 #0006}#map .total{font:700 14px/1 system-ui,sans-serif;color:var(--accent);background:var(--shade);padding:8px 10px;border-radius:999px}#map .close{margin-left:auto;width:44px;height:44px;border:0;border-radius:12px;background:var(--shade);color:var(--ink);font-size:18px;cursor:pointer}#map .scroll{flex:1;overflow-y:auto;touch-action:pan-y;overscroll-behavior:contain;margin-top:-24px;padding-bottom:calc(var(--tg-safe-area-inset-bottom, var(--safe-bottom)) + 24px)}#map .river{position:relative;width:min(420px,100%);margin:0 auto}#map svg{position:absolute;inset:-40px 0 auto;width:100%;height:calc(100% + 80px)}#map .bank{fill:none;stroke:#5b4630;stroke-width:46;stroke-linecap:round;opacity:.55}#map .water{fill:none;stroke:#3d8fb3;stroke-width:30;stroke-linecap:round}#map .node{position:absolute;transform:translate(-50%,-50%);background:none;border:0;padding:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;color:var(--ink);font:inherit}#map .isl{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:#6fa04a;border:4px solid #fff8e7;box-shadow:0 4px #2a1a0899,0 8px 18px #0005}#map .isl b{font:800 24px/1 system-ui,sans-serif;color:#fff8e7;text-shadow:0 2px 0 #2a1a0880}#map .done .isl{background:#4f8a3a}#map .next .isl{background:var(--accent);animation:map-pulse 1.1s ease-in-out infinite alternate}#map .next .isl b{color:#2a1a08;text-shadow:none}#map .cur .isl{outline:3px dashed #fff8e7;outline-offset:4px}#map .locked{cursor:default}#map .locked .isl{background:#4a5a4e;border-color:#8a958c;box-shadow:0 4px #0006}#map .locked .isl b{font-size:20px;filter:grayscale(1);opacity:.8}#map .locked .name{opacity:.55}#map .stars{display:flex;gap:1px;font-size:15px;line-height:1;color:#ffffff40;text-shadow:0 1px 0 #0006}#map .stars .on{color:#f2a541}#map .locked .stars{visibility:hidden}#map .name{position:absolute;top:18px;width:120px;font:700 13px/1.2 system-ui,sans-serif;text-shadow:0 1px 2px #000a;background:var(--shade);padding:4px 8px;border-radius:8px;pointer-events:none}#map .name.r{left:calc(50% + 40px);text-align:left}#map .name.l{right:calc(50% + 40px);text-align:right}#map .bb{position:absolute;width:56px;height:56px;top:-44px;left:50%;transform:translate(-10%);pointer-events:none;filter:drop-shadow(0 3px 2px #0005)}#map .node:not(.locked):active .isl{transform:scale(.94)}@keyframes map-pulse{to{box-shadow:0 4px #2a1a0899,0 0 0 8px #f2a54155}}@media(prefers-reduced-motion:reduce){#map .next .isl{animation:none}}#map .snd{margin-left:auto;width:44px;height:44px;border:0;border-radius:12px;background:var(--shade);font-size:20px;cursor:pointer}#map .snd.sfx,#map .snd:not(.end)+.close{margin-left:0}#map .snd.off{opacity:.45;text-decoration:line-through}#map .snd:disabled{opacity:.3}#map header{gap:8px}#map h2{font-size:20px;white-space:nowrap}#map .total{white-space:nowrap}#map .snd,#map .close{width:40px;height:40px;flex:none}#stats[hidden]{display:none}#controls button,#result button:not(.link),#feedback .row button{background:#f3ead7;color:var(--paper-ink);border:2px solid var(--paper-ink);border-radius:999px;box-shadow:0 3px 0 var(--paper-ink);backdrop-filter:none;-webkit-backdrop-filter:none;transition:transform .06s,box-shadow .06s}#controls button.primary,#result button.primary,#feedback .row button.primary{background:var(--accent);color:var(--paper-ink)}#controls button.primary.on{background:var(--water);color:#fff8e7}#controls button.on:not(.primary){background:var(--paper-ink);color:#f3ead7}#controls button:active,#result button:not(.link):active,#feedback .row button:active{transform:translateY(2px);box-shadow:0 1px 0 var(--paper-ink)}#result button.link{color:var(--water)}#feedback fieldset button.sel{border-color:var(--water)}#map{background:#f3ead7;color:var(--paper-ink);background-image:radial-gradient(circle at 50% 40%,transparent 40%,#3a2a1e2e 100%),linear-gradient(#f3ead7,#d9c8a6)}#map header{background:linear-gradient(#f3ead7,#f3ead7e6 70%,transparent)}#map h2{color:var(--paper-ink);text-shadow:0 2px 0 #fbf6ea}#map .total{background:var(--paper-ink);color:#f2c230}#map .close,#map .snd{background:#f3ead7;color:var(--paper-ink);border:2px solid var(--paper-ink);box-shadow:0 3px 0 var(--paper-ink)}#map .close:active,#map .snd:active{transform:translateY(2px);box-shadow:0 1px 0 var(--paper-ink)}#map .bank{stroke:#b8996c;opacity:.8}#map .water{stroke:#3fa7b8}#map .isl{background:#8dba4a;border-color:#fbf6ea;box-shadow:0 4px #3a2a1e99,0 8px 18px #3a2a1e40}#map .isl b{color:#fbf6ea;text-shadow:0 2px 0 #3a2a1e80}#map .done .isl{background:#6f9a38}#map .next .isl b{color:var(--paper-ink)}#map .cur .isl{outline-color:var(--paper-ink)}#map .locked .isl{background:#d9c8a6;border-color:#fbf6ea;box-shadow:0 4px #3a2a1e55}#map .stars{color:#3a2a1e33;text-shadow:none}#map .stars .on{color:#f2c230;text-shadow:0 1px 0 #3a2a1e}#map .name{background:#fbf6ea;color:var(--paper-ink);border:2px solid var(--paper-ink);text-shadow:none}#map .locked .name{opacity:.6}@keyframes map-pulse{to{box-shadow:0 4px #3a2a1e99,0 0 0 8px #f08a2455}}
