:root{--ink:#3a2418;--ink-soft:#7a5a44;--paper:#fff8ec;--paper-2:#f6e7c8;--accent:#d9534f;--gold:#e3a64a;--green:#2f5d50;--shadow:0 10px 30px #3a24182e, 0 2px 6px #3a24181f;color:var(--ink);font-family:Nunito,system-ui,sans-serif}*{box-sizing:border-box;touch-action:manipulation}html,body{-webkit-tap-highlight-color:transparent;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#f3d2b0;height:100%;margin:0;overflow:hidden}img{-webkit-user-drag:none;user-drag:none}#scene{touch-action:none;cursor:pointer;opacity:0;width:100%;height:100%;transition:opacity .8s;display:block;position:fixed;inset:0}body.ready #scene{opacity:1}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}.hud{top:max(14px, env(safe-area-inset-top));text-align:center;background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);min-width:260px;box-shadow:var(--shadow);border-radius:22px;padding:12px 22px;position:absolute;left:calc(50% - 160px);transform:translate(-50%);pointer-events:none!important}.hud.bump .coins{animation:.18s ease-out bump}.hud.spend .coins{animation:.5s ease-out spend}@keyframes bump{40%{transform:scale(1.08)}}@keyframes spend{0%{color:var(--accent);transform:scale(.94)}}.coins{font-variant-numeric:tabular-nums;height:1.2em;color:var(--ink);font-family:Fraunces,Georgia,serif;font-size:clamp(38px,6vw,58px);font-weight:800;line-height:1.2;display:inline-flex}.odo-digit{height:1.2em;display:inline-block;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,#000 22% 78%,#0000);mask-image:linear-gradient(#0000,#000 22% 78%,#0000)}.odo-strip{flex-direction:column;transition:transform .38s cubic-bezier(.2,1.3,.4,1);display:flex}.odo-strip>span{height:1.2em;line-height:1.2}.odo-char{height:1.2em;display:inline-block}.odo-new{animation:.3s ease-out odoIn}@keyframes odoIn{0%{opacity:0;transform:translateY(-.3em)}}.coins-label{letter-spacing:.22em;text-transform:uppercase;color:var(--ink-soft);margin-top:4px;font-size:11px;font-weight:800}.rates{color:var(--ink-soft);margin-top:4px;font-size:13px;font-weight:700}.progress{text-align:left;margin-top:10px}.progress-label{color:var(--green);margin-bottom:4px;font-size:12px;font-weight:800}.progress-track{background:#3a24181a;border-radius:99px;height:8px;overflow:hidden}.progress-fill{transform-origin:0;background:linear-gradient(90deg, var(--gold), #f7d58b, var(--gold));background-size:200% 100%;height:100%;transition:transform .3s ease-out;animation:2s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.hint{flex-direction:column;align-items:center;transition:opacity .4s;display:flex;position:absolute;transform:translate(-50%);pointer-events:none!important}.hint.gone{opacity:0}.hint-hand{filter:drop-shadow(0 4px 4px #3a241859);font-size:46px;animation:.9s ease-in-out infinite tap}.hint-text{background:var(--accent);color:#fff;letter-spacing:.08em;box-shadow:var(--shadow);border-radius:999px;margin-top:2px;padding:6px 16px;font-size:18px;font-weight:800}@keyframes tap{0%,to{transform:translateY(0)}45%{transform:translateY(-14px)rotate(-6deg)}60%{transform:translateY(2px)scale(.92)}}.shop{background:color-mix(in srgb, var(--paper) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:300px;box-shadow:var(--shadow);border-radius:20px;flex-direction:column;padding:14px;display:flex;position:absolute;top:16px;bottom:72px;right:16px}.shop h2{margin:2px 6px 10px;font-family:Fraunces,Georgia,serif;font-size:22px}.shop-list{flex-direction:column;gap:8px;padding:2px;display:flex;overflow-y:auto}.item{text-align:left;font:inherit;color:inherit;cursor:pointer;background:#fff;border:2px solid #0000;border-radius:14px;grid-template-columns:56px 1fr auto;align-items:center;gap:10px;padding:8px 10px 8px 6px;transition:transform .12s,border-color .12s,opacity .2s;display:grid;box-shadow:0 2px #3a24181f}.item:not(:disabled):hover{border-color:var(--gold);transform:translateY(-1px)}.item:not(:disabled):active{transform:translateY(1px)scale(.99)}.item:disabled{opacity:.55;cursor:default;filter:saturate(.6)}.item.affordable{border-color:color-mix(in srgb, var(--gold) 70%, transparent);animation:1.4s ease-in-out infinite canbuy}@keyframes canbuy{50%{box-shadow:0 0 0 4px color-mix(in srgb, var(--gold) 35%, transparent), 0 2px 0 #3a24181f}}.item.golden{background:linear-gradient(135deg,#fff 60%,#fff3d6)}.item-side{flex-direction:column;align-items:center;min-width:2ch;display:flex}.item-stars{color:var(--gold);letter-spacing:1px;font-size:11px}.item[hidden]{display:none}.thumb{image-rendering:auto;width:56px;height:56px}.item-name{font-size:15px;font-weight:800}.item-desc{color:var(--ink-soft);font-size:12px;line-height:1.25}.item-cost{color:var(--green);margin-top:2px;font-size:13px;font-weight:800}.item-owned{color:var(--gold);min-width:1ch;font-family:Fraunces,Georgia,serif;font-size:24px;font-weight:800}.bar{left:16px;bottom:max(16px, env(safe-area-inset-bottom));flex-wrap:wrap;gap:8px;display:flex;position:absolute}.chip{font:inherit;background:var(--paper);color:var(--ink);box-shadow:var(--shadow);cursor:pointer;border:0;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:800}.chip.ghost{background:color-mix(in srgb, var(--paper) 60%, transparent)}.float{color:#ffe9a8;-webkit-text-stroke:6px #5a3420;paint-order:stroke fill;filter:drop-shadow(0 3px #3a241859);font-family:Fraunces,Georgia,serif;font-size:30px;font-weight:800;animation:1s ease-out forwards rise;position:absolute;transform:translate(-50%,-50%);pointer-events:none!important}@keyframes rise{0%{opacity:1;transform:translate(-50%,-50%)scale(.7)}20%{transform:translate(-50%,-75%)scale(1.2)}to{opacity:0;transform:translate(-50%,-170%)scale(1)}}.toasts{flex-direction:column;align-items:center;gap:8px;width:min(440px,100vw - 32px);display:flex;position:absolute;top:200px;left:calc(50% - 160px);transform:translate(-50%);pointer-events:none!important}.toast{background:var(--green);color:var(--paper);text-align:center;box-shadow:var(--shadow);border-radius:14px;padding:10px 18px;font-weight:700;transition:opacity .6s,transform .6s;animation:.35s cubic-bezier(.2,1.4,.4,1) toastIn}@keyframes toastIn{0%{opacity:0;transform:translateY(-10px)scale(.95)}}.toast.out{opacity:0;transform:translateY(-10px)}.fatal{text-align:center;background:var(--paper);place-items:center;padding:24px;font-weight:800;display:grid;position:absolute;inset:0}@media (width<=720px){.shop{top:auto;left:16px;right:16px;bottom:max(64px, calc(env(safe-area-inset-bottom) + 56px));width:auto;max-height:min(34vh,320px);padding:8px}.shop h2{display:none}.toasts{top:auto;bottom:calc(min(34vh,320px) + 76px);left:50%}.coins{font-size:38px}.rates{font-size:12px}.item-desc{display:none}.item{padding:6px 8px 6px 4px}.hud{width:calc(100% - 32px);min-width:0;padding:10px 16px;left:50%}.item{grid-template-columns:44px 1fr auto}.thumb{width:44px;height:44px}.bar{scrollbar-width:none;flex-wrap:nowrap;gap:6px;left:16px;right:16px;overflow-x:auto}.chip{white-space:nowrap;padding:7px 11px;font-size:12px}}.rates{white-space:pre-line}.chip.icon{padding:8px 11px;font-size:15px}.chip.star{background:linear-gradient(135deg,#fff1c9,#f7d58b);animation:1.4s ease-in-out infinite canbuy}.chip[hidden]{display:none}.modal-back{z-index:5;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#3a241859;place-items:center;padding:16px;transition:opacity .2s;animation:.2s fadeIn;display:grid;position:absolute;inset:0}.modal-back.out{opacity:0}@keyframes fadeIn{0%{opacity:0}}.modal{background:var(--paper);width:min(420px,100%);box-shadow:var(--shadow);border-radius:22px;padding:22px;animation:.28s cubic-bezier(.2,1.4,.4,1) pop}@keyframes pop{0%{opacity:0;transform:scale(.9)}}.modal h3{margin:0 0 8px;font-family:Fraunces,Georgia,serif;font-size:22px}.modal p{margin:0 0 12px;line-height:1.45}.modal .muted{color:var(--ink-soft);font-size:13px}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.btn{font:inherit;cursor:pointer;border:0;border-radius:12px;padding:10px 16px;font-weight:800}.btn.primary{background:var(--green);color:var(--paper)}.btn.danger{background:var(--accent);color:#fff}.btn.ghost{color:var(--ink);background:#3a241814}.btn.wide{width:100%;margin-top:8px}.setting-row{justify-content:space-between;align-items:center;margin-bottom:12px;font-weight:800;display:flex}.segmented{background:#3a241814;border-radius:10px;padding:3px;display:inline-flex}.segmented button{font:inherit;cursor:pointer;color:var(--ink-soft);background:0 0;border:0;border-radius:8px;padding:6px 14px;font-weight:800}.segmented button.on{color:var(--ink);background:#fff;box-shadow:0 1px 3px #3a241833}.modal-back.instant,.modal-back.instant .modal{animation:none}.fest-banner{color:#fff6df;background:linear-gradient(135deg,#c0392b,#e67e22);border-radius:12px;margin:-2px -8px 8px;padding:6px 10px 7px;display:none}.hud.festival .fest-banner{animation:.35s cubic-bezier(.2,1.4,.4,1) toastIn;display:block}.fest-text{font-size:13px;font-weight:800}.fest-track{background:#fff6df4d;border-radius:99px;height:5px;margin-top:5px;overflow:hidden}.fest-fill{transform-origin:0;background:#fff1c9;height:100%;transition:transform .25s linear}.hud.festival{box-shadow:0 0 0 3px #e3a64a, 0 0 28px #ffa03ca6, var(--shadow);background:linear-gradient(#fff3dc,#ffe2bf);animation:1.6s ease-in-out infinite festGlow}@keyframes festGlow{50%{box-shadow:0 0 0 3px #f7d58b, 0 0 42px #ffa03ce6, var(--shadow)}}.chip.fest.ready{color:#fff6df;background:linear-gradient(135deg,#e67e22,#c0392b);animation:1.2s ease-in-out infinite canbuy}.chip.fest.running{color:#fff6df;opacity:1;background:#c0392b}.chip.fest:disabled:not(.running){opacity:.75;cursor:default}.chip:disabled{cursor:default}.float.fest{color:#ffd8a8;-webkit-text-stroke-color:#8b2e2e}.float.big{font-size:38px}body.festival:after{content:"";pointer-events:none;animation:.6s fadeIn;position:fixed;inset:0;box-shadow:inset 0 0 120px #ff782859}:root{--glass:color-mix(in srgb, var(--paper) 76%, transparent)}.hud{left:16px;top:max(16px, env(safe-area-inset-top));text-align:left;background:var(--glass);-webkit-backdrop-filter:blur(14px)saturate(1.2);border:1px solid #ffffff8c;width:270px;min-width:0;padding:12px 16px;transform:none}.hud .coins{font-size:44px}.hud .rates{margin-top:2px;font-size:12px}.progress{margin-top:8px}.progress-label{margin-bottom:3px;font-size:11px}.progress-track{height:6px}.fest-banner{margin:-4px -6px 8px}.shop{background:var(--glass);-webkit-backdrop-filter:blur(14px)saturate(1.2);border:1px solid #ffffff8c;width:290px}.item{background:#ffffffdb}.toasts{top:max(16px, env(safe-area-inset-top));left:calc(50% - 155px)}@media (width<=720px){.hud{border-radius:18px;grid-template-columns:auto 1fr;grid-template-areas:"fest fest""coins rates""prog prog";align-items:center;column-gap:10px;width:auto;padding:8px 12px 9px;display:grid;left:12px;right:12px}.hud .fest-banner{grid-area:fest;margin:-2px -4px 6px;padding:4px 8px 5px}.hud .fest-text{font-size:11px}.hud .coins{grid-area:coins;font-size:32px}.hud .coins-label{display:none}.hud .rates{text-align:right;grid-area:rates;margin:0;font-size:11px;line-height:1.3}.hud .progress{grid-area:prog;margin-top:6px}.hud .progress-label{margin-bottom:2px;font-size:10px}.hud .progress-track{height:4px}.shop{left:0;right:0;bottom:max(58px, calc(env(safe-area-inset-bottom) + 52px));-webkit-backdrop-filter:none;max-height:none;box-shadow:none;background:0 0;border:0;border-radius:0;padding:6px 0}.shop-list{scroll-snap-type:x proximity;scrollbar-width:none;flex-direction:row;gap:8px;padding:4px 12px;overflow:auto visible}.shop-list::-webkit-scrollbar{display:none}.item{text-align:center;scroll-snap-align:start;background:var(--glass);-webkit-backdrop-filter:blur(12px);width:100px;box-shadow:var(--shadow);flex-direction:column;flex:none;align-items:center;gap:2px;padding:6px 6px 7px;display:flex;position:relative}.item .thumb{width:46px;height:46px}.item .item-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-size:11px;line-height:1.15;overflow:hidden}.item .item-cost{margin:0;font-size:11px}.item .cost-rate{display:none}.item .item-side{min-width:0;position:absolute;top:3px;right:5px}.item .item-owned{font-size:17px;line-height:1}.item .item-stars{font-size:9px}.toasts{top:auto;left:50%;bottom:calc(max(58px, env(safe-area-inset-bottom) + 52px) + 132px)}}.cost-rate{white-space:pre}.hud{width:300px}.item-cost,.item-stars{white-space:nowrap}.item-cost{font-size:12px}@media (width<=720px){.hud,.shop{width:auto}.item .item-side{top:4px;right:4px}.item .item-owned:not(:empty){color:#fff;background:var(--gold);border-radius:99px;padding:1px 6px;font-family:Nunito,system-ui,sans-serif;font-size:11px;font-weight:800}.item.golden .item-owned:not(:empty){background:linear-gradient(135deg,#e3a64a,#c07a2c)}.item .item-stars{display:none}}.hud{text-align:center}.hud .coins{justify-content:center}.hud .coins-label{vertical-align:0;margin:2px 0 0;display:block}@media (width<=720px){.hud{text-align:center;padding:8px 14px 9px;display:block}.hud .coins{font-size:32px}.hud .coins-label{display:none}.hud .rates{text-align:center;margin-top:2px}}.hud .progress{text-align:center}.item{font-variant-numeric:tabular-nums;grid-template-columns:56px minmax(0,1fr) 62px}.item-side{width:62px;overflow:hidden}.item-owned,.item-stars,.item-cost,.rates{font-variant-numeric:tabular-nums}.item-stars{font-size:10px}@media (width<=720px){.item{grid-template-columns:none}.item .item-side{width:auto}}@media (width>=721px){.shop{max-height:calc(100dvh - max(16px, env(safe-area-inset-top)) - 72px);bottom:auto}.shop-list{overscroll-behavior:contain;min-height:0}}@media (width<=720px){.item .item-side{display:contents}.item .item-owned:not(:empty){position:absolute;top:4px;right:4px}.item .item-stars{letter-spacing:.5px;font-size:9px;line-height:1.1;display:block}.item .item-stars:empty{display:none}}
