:root{--ink:#1b1f2a;--ink-muted:#5a5650;--washi:#f3ead7;--wood:#d9b98a;--prussia:#1f3a5f;--indigo:#2b3a67;--vermilion:#b5371f;--ochre:#c8902e;--splash:#f3ebdd;--font-ui:"Noto Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-title:"Shippori Mincho B1", "Hiragino Mincho ProN", "Yu Mincho", Georgia, serif;--ease-in:cubic-bezier(.2, .8, .2, 1);--ease-ink:cubic-bezier(.165, .84, .44, 1);--ease-press:cubic-bezier(.895, .03, .685, .22);--ease-settle:cubic-bezier(.215, .61, .355, 1);--ease-enter:cubic-bezier(.2, .8, .2, 1);--ease-exit:cubic-bezier(.55, .085, .68, .53);--ease-glow:cubic-bezier(.39, .575, .565, 1);--ease-breathe:cubic-bezier(.445, .05, .55, .95);--ease-fog:cubic-bezier(.645, .045, .355, 1);--ease-camera:cubic-bezier(.645, .045, .355, 1);--ease-ignite:cubic-bezier(.18, .89, .32, 1.25);--dur-frame:0s;--dur-micro:90ms;--dur-short:.12s;--dur-base:.18s;--dur-medium:.25s;--dur-long:.4s;--dur-screen:.3s;--dur-guard:.6s;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--touch:48px;--radius-card:8px}@media (prefers-reduced-motion:reduce){:root{--dur-micro:0s;--dur-screen:.15s}}html[data-motion=reduced]{--dur-micro:0s;--dur-screen:.15s}*,:before,:after{box-sizing:border-box}html,body{overscroll-behavior:none;background:var(--splash);height:100%;color:var(--ink);font:16px / 1.5 var(--font-ui);-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-webkit-user-select:none;user-select:none;margin:0;overflow:hidden}button{font:inherit;color:inherit}#world{z-index:0;width:100%;height:100%;display:block;position:fixed;inset:0}html[data-scene=none] #world{visibility:hidden}#ui,#overlay{pointer-events:none;position:fixed;inset:0}#ui{z-index:10}#overlay{z-index:20}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.screen{padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);pointer-events:auto;flex-direction:column;display:flex;position:absolute;inset:0}.screen--opaque{background:var(--washi)}.screen--level{pointer-events:none}.screen-title{font:600 32px / 40px var(--font-title);text-align:center;margin:0}.btn{min-width:var(--touch);min-height:var(--touch);border:1.5px solid var(--ink);border-radius:var(--radius-card);background:var(--washi);cursor:pointer;transition:transform var(--dur-micro) var(--ease-in);justify-content:center;align-items:center;gap:8px;padding:8px 20px;font-size:18px;line-height:24px;display:inline-flex}.btn:active:not(:disabled){transform:translateY(2px)}.btn:focus-visible,.icon-btn:focus-visible,.slot:focus-visible,.board-host:focus-visible{outline:3px solid var(--ochre);outline-offset:2px}.btn:disabled{opacity:.5;cursor:default}.btn--primary{background:var(--wood);font:600 22px / 28px var(--font-title);border-width:2px;padding:14px 32px}.btn--danger{color:var(--vermilion);border-color:var(--vermilion)}.icon-btn{min-width:var(--touch);min-height:var(--touch);cursor:pointer;background:0 0;border:0;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;padding:4px;display:inline-flex}.icon-btn:disabled{opacity:.4;cursor:default}.icon-btn svg{width:28px;height:28px}.icon-btn__label{font-size:13px;line-height:18px}.home{justify-content:safe center;align-items:center;gap:24px;overflow-y:auto}.home__title{margin-bottom:24px}.home__actions{flex-direction:column;align-items:stretch;gap:12px;min-width:min(240px,100%);max-width:100%;display:flex}.home__lang{min-width:min(240px,100%);max-width:100%;font-size:14px}.home__lang select{min-height:var(--touch);max-width:100%;font:inherit}.bar{flex-wrap:wrap;align-items:center;gap:8px;min-height:56px;padding:4px 8px;display:flex}.bar__title{overflow-wrap:anywhere;min-width:0;font:600 20px / 28px var(--font-title);text-align:center;flex:1;margin:0}.bar__end{min-width:var(--touch);justify-content:flex-end;display:flex}.map__slots{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:12px;padding:16px;display:grid;overflow-y:auto}.slot{aspect-ratio:1;min-height:var(--touch);border:1.5px solid var(--ink);background:var(--washi);font:600 20px / 1 var(--font-title);cursor:pointer;border-radius:50%;position:relative}.slot--done{background:var(--wood)}.slot--done:after{content:"";background:var(--vermilion);border-radius:50%;width:14px;height:14px;position:absolute;top:2px;right:2px}.slot--update{opacity:.55;border-style:dashed}.home__update{border:1.5px solid var(--ink);background:var(--washi);border-radius:12px;flex-direction:column;align-items:center;gap:8px;padding:12px 16px;display:flex}.home__note{opacity:.8;margin:0;font-size:14px}.map__chapters{justify-content:center;gap:8px;padding:0 16px 16px;display:flex}.level__flames{align-items:center;gap:2px;display:inline-flex}.flame{width:18px;height:24px;color:var(--ochre)}.flame--out{color:var(--ink-muted);opacity:.35}.board-host{touch-action:none;outline:none;flex:1;min-height:0;margin:12px 16px;position:relative}.board-host__status{color:var(--ink-muted);justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.bar--actions{justify-content:center;gap:32px;min-height:72px;padding-bottom:8px}.mirror-slot{display:contents}.mirror{border-spacing:0;pointer-events:none;flex-direction:column;margin:0;font-size:1px;display:flex;position:absolute;overflow:hidden}.mirror:not(.mirror--visual){opacity:0}.mirror>tr{flex:1;min-height:0;display:flex}.mirror__cell{flex:1;justify-content:center;align-items:center;min-width:0;padding:0;font-weight:700;display:flex;overflow:hidden}.mirror--visual .mirror__cell{border:1px solid #1b1f2a38}.overlay{pointer-events:auto;animation:fade-in var(--dur-micro) var(--ease-in);background:#1b1f2a73;justify-content:center;align-items:center;padding:clamp(8px,7vw,24px);display:flex;position:absolute;inset:0}.sheet{overscroll-behavior:contain;border-radius:var(--radius-card);background:var(--washi);flex-direction:column;gap:12px;width:min(100%,420px);max-height:100%;padding:clamp(12px,7vw,24px);display:flex;overflow-y:auto;box-shadow:0 8px 32px #1b1f2a4d}.sheet__title{font:600 24px / 32px var(--font-title);text-align:center;margin:0 0 8px}.sheet__body{text-align:center;margin:0 0 8px}.sheet__row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:4px 12px;display:flex}.reloading{z-index:30;background:#f3ead7d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}}@media (width<=299px){.screen--level>.bar:not(.bar--actions){justify-content:space-between;row-gap:0;min-height:0;padding:2px 4px}.screen--level>.bar--actions{min-height:64px;padding:0 4px 4px}.screen--level>.board-host{margin:4px}.screen--level .bar__tools{column-gap:8px}.screen--level .bar__tools>.action-slot{display:none}.screen--level>.bar:not(.bar--actions)>.bar__title{flex-basis:100%;order:-1}}.screen--level .bar,.screen--level .board-host{pointer-events:auto}#spike-open{right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:25;border:1px solid var(--ink-muted);color:var(--ink-muted);background:0 0;border-radius:8px;padding:10px 14px;font:15px/1 system-ui,sans-serif;position:fixed}html:not([data-route=home]) #spike-open{display:none}.board-layer{pointer-events:none;position:absolute;inset:0}.board-layer>*{pointer-events:none}.strip{justify-content:center;align-items:center;min-height:44px;padding:0 16px;display:flex}.strip__line{text-align:center;max-width:36em;margin:0;font-size:16px;line-height:22px}.strip__msg{animation:fade-in var(--dur-micro) var(--ease-in);display:inline-block}.strip__speaker{font:600 15px / 22px var(--font-title);color:var(--prussia);margin-right:.5em}.strip__speaker--bolinha{color:var(--ochre)}.strip__speaker:after{content:":"}.action-slot{width:var(--touch);height:var(--touch);display:inline-block}.action-btn{position:relative}.action-btn--on{background:var(--ochre);color:var(--washi)}.action-btn__badge{background:var(--ochre);min-width:22px;height:18px;color:var(--washi);font:700 14px / 14px var(--font-ui);border-radius:9px;position:absolute;top:0;right:-2px}.action-btn--wave svg{animation:bolinha-wave .9s var(--ease-in) 3;transform-origin:50% 90%}.action-btn--intro{animation:action-intro .6s var(--ease-in)}@keyframes bolinha-wave{25%{transform:rotate(-14deg)}75%{transform:rotate(14deg)}}@keyframes action-intro{0%{opacity:0;transform:scale(.4)}60%{transform:scale(1.15);box-shadow:0 0 0 8px #c8902e59}}.bar--panel{justify-content:stretch;gap:0}.hint-panel{border-top:1.5px solid var(--ink);border-radius:var(--radius-card) var(--radius-card) 0 0;background:var(--washi);flex-direction:column;gap:8px;width:min(100%,560px);margin:0 auto;padding:8px 12px 4px;display:flex}.hint-panel__head{align-items:flex-start;gap:8px;display:flex}.hint-panel__text{flex:1;min-height:24px;margin:12px 0 0;font-size:17px;line-height:24px}.hint-panel__chip{border:1.5px solid var(--prussia);color:var(--prussia);border-radius:999px;align-self:flex-start;padding:2px 10px;font-size:14px;line-height:20px}.hint-panel__actions{flex-wrap:wrap;gap:8px;display:flex}.hint-panel__actions .btn{flex-direction:column;flex:auto;gap:0}.btn--accent{background:var(--wood);border-width:2px}.hint-panel__cost{color:var(--ink-muted);font-size:13px;line-height:16px}.hint-layer__frame{position:absolute}.hint-layer__area{background:#c8902e42;position:absolute}.hint-layer--check .hint-layer__area{background:#b5371f33;box-shadow:inset 0 0 0 1px #b5371f80}.hint-layer__focus{box-shadow:inset 0 0 0 3px var(--ochre);border-radius:4px;animation:1.4s ease-in-out infinite hint-focus;position:absolute}.hint-layer__elim{background:repeating-linear-gradient(-45deg,#1b1f2a61 0 2px,#0000 2px 7px);position:absolute}.hint-layer__place{box-shadow:inset 0 0 0 2px var(--ochre);background:repeating-linear-gradient(45deg,#c8902eb3 0 3px,#0000 3px 8px);position:absolute}.hint-layer__ghost{justify-content:center;align-items:center;display:flex;position:absolute}.hint-layer__ghost span{border:2px dashed var(--prussia);width:60%;height:60%;color:var(--prussia);font:700 14px / 1 var(--font-ui);opacity:.8;border-radius:50%;justify-content:center;align-items:center;display:flex}@keyframes hint-focus{50%{box-shadow:inset 0 0 0 5px var(--ochre)}}@media (prefers-reduced-motion:reduce){.hint-layer__focus,.action-btn--wave svg,.action-btn--intro{animation:none}}.lens__dim{background:#1b1f2a8c;position:absolute}.lens__shadow{box-shadow:inset 0 0 0 2px var(--prussia);background:#1f3a5f2e;position:absolute}.lens__cell{box-shadow:inset 0 0 0 3px var(--ochre);border-radius:4px;position:absolute}.lens__frame{box-sizing:content-box;border:3px solid var(--ochre);border-radius:var(--radius-card);margin:-6px;padding:6px;position:absolute}.lens__balloon{border-radius:var(--radius-card);background:var(--ink);color:var(--washi);white-space:nowrap;animation:fade-in var(--dur-micro) var(--ease-in);margin:0;padding:4px 12px;font-size:15px;line-height:20px;position:absolute;transform:translate(-50%,-50%)}.lens__balloon--start{transform:translateY(-50%)}.lens__balloon--end{transform:translate(-100%,-50%)}.tut-hand{width:var(--hand);height:calc(var(--hand) * 4 / 3);margin-left:calc(var(--hand) * -.5);margin-top:calc(var(--hand) * -.08);translate:var(--x0) var(--y0);transform-origin:50% 8%;filter:drop-shadow(0 4px 6px #1b1f2a4d);opacity:.92;animation:3.5s var(--ease-in) infinite;position:absolute;top:0;left:0}.tut-hand svg{width:100%;height:100%;display:block}.tut-hand--tap{animation-name:hand-tap}.tut-hand--double{animation-name:hand-double}.tut-hand--tapDouble{animation-name:hand-tap-double}.tut-hand--drag{animation-name:hand-drag}.tut-hand--hold{animation-name:hand-hold}.tut-hand--point{animation-name:hand-point}@keyframes hand-tap{0%,to{opacity:0;scale:1.1}15%,30%{opacity:.92;scale:1}36%{scale:.82}44%,80%{opacity:.92;scale:1}}@keyframes hand-double{0%,to{opacity:0;scale:1.1}15%,30%{opacity:.92;scale:1}34%{scale:.82}38%{scale:1}42%{scale:.82}48%,80%{opacity:.92;scale:1}}@keyframes hand-tap-double{0%,to{opacity:0;scale:1.1}10%,20%{opacity:.92;scale:1}24%{scale:.82}30%,55%{scale:1}59%{scale:.82}63%{scale:1}67%{scale:.82}72%,85%{opacity:.92;scale:1}}@keyframes hand-drag{0%,to{opacity:0;translate:var(--x0) var(--y0)}12%{opacity:.92;scale:1;translate:var(--x0) var(--y0)}20%{scale:.86;translate:var(--x0) var(--y0)}70%{scale:.86;translate:var(--x1) var(--y1)}78%,86%{opacity:.92;scale:1;translate:var(--x1) var(--y1)}}@keyframes hand-hold{0%,to{opacity:0;scale:1.1}12%{opacity:.92;scale:1}20%,75%{scale:.84}82%,90%{opacity:.92;scale:1}}@keyframes hand-point{0%,to{opacity:.92;translate:var(--x0) var(--y0)}50%{opacity:.92;translate:var(--x0) calc(var(--y0) - 10px)}}.tut-pulse{box-shadow:inset 0 0 0 3px var(--ochre);border-radius:4px;animation:1.2s ease-in-out infinite tut-pulse;position:absolute}.tut-pulse--island{box-shadow:none;background:#c8902e3d;border-radius:0;animation-name:tut-pulse-area}@keyframes tut-pulse{50%{box-shadow:inset 0 0 0 6px #c8902e73}}@keyframes tut-pulse-area{50%{background:#c8902e66}}.tut-bubble{z-index:1;border:1.5px solid var(--ink);border-radius:var(--radius-card);background:var(--washi);max-width:260px;color:var(--ink);text-align:center;animation:fade-in var(--dur-micro) var(--ease-in);margin:0;padding:6px 12px;font-size:15px;line-height:20px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 4px 12px #1b1f2a33}.tut-bubble--start{transform:translateY(-50%)}.tut-bubble--end{transform:translate(-100%,-50%)}.tut-bubble--hud{top:0;right:0;transform:none}.tut-demo{position:absolute}.tut-demo--lamp:after{content:"";border:2px dashed var(--ochre);background:#c8902e59;border-radius:50%;animation:1.2s ease-in forwards tut-demo;position:absolute;inset:22%}.tut-demo--against{box-shadow:inset 0 0 0 3px var(--vermilion);animation:1.2s ease-in forwards tut-demo}@keyframes tut-demo{60%{opacity:1}to{opacity:0}}.lantern-slot{display:contents}.lantern-slot--intro{animation:flames-in .5s var(--ease-in);display:inline-flex}@keyframes flames-in{0%{opacity:0;transform:translateY(40vh)scale(1.6)}}@media (prefers-reduced-motion:reduce){.tut-hand{opacity:.85;animation:none}.tut-pulse,.tut-pulse--island,.lantern-slot--intro{animation:none}}.overlay--ceremony{padding-bottom:calc(72px + 16px + var(--safe-bottom));pointer-events:none;background:0 0;align-items:flex-end;animation:none}.overlay--ceremony>*{pointer-events:auto}.ceremony-card{animation:card-rise var(--card-ms,.25s) var(--ease-enter) both}@keyframes card-rise{0%{opacity:0;transform:translateY(24px)}}.ceremony-card__actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.ceremony-next{animation:fade-in .16s var(--ease-enter) both}.fx-static,.fx-static *{animation:none!important}.stamps{flex-wrap:wrap;justify-content:center;gap:8px 20px;min-height:64px;margin-bottom:8px;display:flex}.stamp{flex:none;width:56px;height:56px;position:relative}.stamp__mark,.stamp__shadow{transform:rotate(var(--rot,0deg));border-radius:10px;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.stamp__mark{border:3px solid var(--vermilion);color:var(--vermilion)}.stamp__mark svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;width:34px;height:34px}.stamp__shadow{opacity:0;background:#1b1f2a2e}.stamp--missing .stamp__mark{border-style:dashed;border-color:var(--ink-muted);color:var(--ink-muted);opacity:.4}.stamp--slot{visibility:hidden}.stamp--fade{animation:fade-in var(--dur-short) var(--ease-enter) both}.stamp--strike .stamp__mark{animation:.16s linear both stamp-mark}.stamp--strike .stamp__shadow{animation:.16s linear both stamp-shadow}@keyframes stamp-mark{0%{opacity:.35;animation-timing-function:var(--ease-press);transform:rotate(0)scale(1.25)}37.5%{opacity:1;animation-timing-function:var(--ease-settle);transform:rotate(0)scale(1)}62.5%{transform:rotate(calc(var(--rot,0deg) * .5)) scale(.97);animation-timing-function:var(--ease-settle)}to{opacity:1;transform:rotate(var(--rot,0deg)) scale(1)}}@keyframes stamp-shadow{0%{opacity:.6;animation-timing-function:var(--ease-press);transform:rotate(0)scale(1.3)}37.5%{opacity:.25;transform:rotate(0)scale(1)}to{opacity:0;transform:rotate(var(--rot,0deg)) scale(1)}}.stamp>i{width:var(--size,3px);height:var(--size,3px);background:var(--vermilion);opacity:0;animation:stamp-drop .12s var(--ease-ink) 60ms both;border-radius:50%;margin:-1.5px 0 0 -1.5px;position:absolute;top:50%;left:50%}@keyframes stamp-drop{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(var(--dx,0), var(--dy,0)) scale(.6)}}.bar--actions{position:relative}.bar__tools{flex-wrap:wrap;justify-content:center;gap:4px clamp(16px,6vw,32px);max-width:100%;display:flex}.bar__tools--out{opacity:0;pointer-events:none;transition:opacity var(--dur-short) var(--ease-exit), transform var(--dur-short) var(--ease-exit);transform:translateY(12px)}.bar__tools--out~.ceremony-next{width:max-content;max-width:calc(100vw - 32px);position:absolute;top:50%;left:50%;translate:-50% -50%}.hud-swap{animation:fade-in .15s var(--ease-glow) both}.hud-flame{display:inline-flex;position:relative}.hud-flame__lit{transform-origin:50% 90%;animation:flame-flicker var(--flick,.7s) var(--ease-breathe) infinite alternate;display:inline-flex}@keyframes flame-flicker{0%{transform:scaleY(.96)}to{transform:scaleY(1.04)}}.hud-flame--going .hud-flame__lit{animation:flame-out .15s var(--ease-exit) .29s both;position:absolute;inset:0}@keyframes flame-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.2)}}.hud-flame__smoke{background:var(--ink-muted);opacity:0;width:6px;height:10px;animation:flame-smoke .4s var(--ease-ink) .29s both;border-radius:50%;margin-left:-3px;position:absolute;top:0;left:50%}@keyframes flame-smoke{0%{opacity:.45;transform:translateY(0)scale(.6)}to{opacity:0;transform:translateY(-12px)scale(1.2)}}.hud-flame--ignite .hud-flame__lit{animation:flame-ignite .2s var(--ease-ignite) var(--delay,0s) both, flame-flicker var(--flick,.7s) var(--ease-breathe) calc(var(--delay,0s) + .2s) infinite alternate}@keyframes flame-ignite{0%{transform:scale(0)}60%{transform:scale(1.15)}to{transform:scale(1)}}.fx-undo-spin,.fx-wobble{display:inline-flex}.fx-undo-spin{animation:undo-spin var(--dur-short) var(--ease-settle)}@keyframes undo-spin{50%{transform:rotate(-30deg)}}.fx-wobble{animation:.25s linear wobble}@keyframes wobble{12.5%{transform:translate(-2px)}37.5%{transform:translate(2px)}62.5%{transform:translate(-2px)}87.5%{transform:translate(2px)}to{transform:translate(0)}}@media (prefers-reduced-motion:reduce){.ceremony-card,.stamp--strike .stamp__mark{animation:fade-in var(--dur-short) linear both}.stamp--strike .stamp__shadow,.stamp>i,.hud-flame__smoke,.fx-undo-spin,.fx-wobble,.hud-flame__lit,.hud-flame--ignite .hud-flame__lit{animation:none}.hud-flame--going .hud-flame__lit{animation:flame-fade var(--dur-short) linear both}.bar__tools--out{transform:none}}html[data-motion=reduced] .ceremony-card,html[data-motion=reduced] .stamp--strike .stamp__mark{animation:fade-in var(--dur-short) linear both}html[data-motion=reduced] .stamp--strike .stamp__shadow,html[data-motion=reduced] .stamp>i,html[data-motion=reduced] .hud-flame__smoke,html[data-motion=reduced] .fx-undo-spin,html[data-motion=reduced] .fx-wobble,html[data-motion=reduced] .hud-flame__lit,html[data-motion=reduced] .hud-flame--ignite .hud-flame__lit{animation:none}html[data-motion=reduced] .hud-flame--going .hud-flame__lit{animation:flame-fade var(--dur-short) linear both}html[data-motion=reduced] .bar__tools--out{transform:none}@keyframes flame-fade{to{opacity:0}}
