:root{--green:#215b46;--green-deep:#17402f;--cream:#f4ead3;--red:#d94f2f;--purple:#6a4fa3;--yellow:#f0b52c;--paper:#f4ead3;--paper-2:#eadbb9;--paper-ink:#21493a;--paper-dim:#63775f;--paper-line:#cdbd9a;--ink:var(--cream);--ink-dim:#b9d2c4;--surface:#1b4a39;--surface2:#163c2e;--line:#3d7159;--accent:var(--yellow);--accent-ink:#2c2306;--lamp:#f0b52c;--ok:#7fc98f;--ng:#ff9b81;--shell-pad:1rem;--font-display:"Mochiy Pop One", "Hiragino Maru Gothic ProN", sans-serif;--font-body:"Zen Maru Gothic", "Hiragino Maru Gothic ProN", "Yu Gothic UI", system-ui, sans-serif;--font-mono:"Courier New", ui-monospace, monospace;--shadow-pop:.3rem .3rem 0 #102a2059}.level-scope-cream{--accent:#2e8f63;--accent-ink:#f4ead3;--lamp:#e0a11c}.level-scope-red{--accent:#c93f1c;--accent-ink:#f9ecdd;--lamp:#e0a11c}.level-scope-purple{--accent:#6a4fa3;--accent-ink:#f2ecfa;--lamp:#e0a11c}.level-scope-yellow{--accent:#b07908;--accent-ink:#fff6df;--lamp:#cf8f06}.level-scope-night{--accent:#14524b;--accent-ink:#d8f2e3;--lamp:#e0a11c}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--green);color:var(--ink);font-family:var(--font-body);min-height:100dvh;margin:0;font-size:16px;font-weight:500;line-height:1.9}html.text-large body{font-size:18px}.app-shell{max-width:1080px;padding:0 var(--shell-pad) 3rem;flex-direction:column;min-height:100dvh;margin:0 auto;display:flex}.app-footer{text-align:center;flex-direction:column;gap:.2rem;margin-top:auto;padding:3.2rem 0 .6rem;display:flex}.footer-logo{font-family:var(--font-display);color:var(--green-deep);letter-spacing:.04em;font-size:clamp(2rem,8vw,4.4rem);line-height:1.1}.footer-note{font-family:var(--font-mono);letter-spacing:.22em;color:var(--ink-dim);font-size:.72rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;margin:-1px;position:absolute;overflow:hidden}.subtle{color:var(--ink-dim);font-size:.9em}.paper-card .subtle,.answer-form .subtle,.fig .subtle{color:var(--paper-dim)}.screen{animation:.5s cubic-bezier(.2,.9,.25,1.05) both screenIn}@keyframes screenIn{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.screen.narrow{width:100%;max-width:680px;margin:0 auto}.screen-title{font-family:var(--font-display);letter-spacing:.03em;margin:.5em 0;font-size:clamp(1.7rem,5.5vw,2.6rem);font-weight:400;line-height:1.25}html.reduce-motion *,html.reduce-motion :before,html.reduce-motion :after{transition-duration:1ms!important;animation-duration:1ms!important;animation-delay:0s!important}html.reduce-motion .marquee-track{animation:none!important;transform:none!important}.preloader{z-index:200;background:var(--green-deep);place-items:center;animation:.35s 1s forwards preOut;display:grid;position:fixed;inset:0}.preloader-word{font-family:var(--font-display);color:var(--cream);text-shadow:.07em .07em 0 var(--red);font-size:clamp(2.6rem,12vw,6rem);animation:.55s cubic-bezier(.2,1.4,.4,1) both preWord}@keyframes preWord{0%{opacity:0;transform:scale(.2)rotate(-14deg)}to{opacity:1;transform:none}}@keyframes preOut{to{opacity:0;visibility:hidden}}.marquee{white-space:nowrap;background:var(--cream);color:var(--green-deep);border-top:3px solid var(--green-deep);border-bottom:3px solid var(--green-deep);margin:0 calc(-1 * var(--shell-pad)) 1.4rem;font-family:var(--font-display);letter-spacing:.12em;padding:.35rem 0;font-size:.95rem;overflow:hidden}.marquee-track{animation:22s linear infinite marquee;display:inline-block}.marquee-track span{padding-right:1em}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.btn{font-family:var(--font-body);border:3px solid var(--cream);color:var(--cream);cursor:pointer;background:0 0;border-radius:999px;min-height:46px;padding:.6em 1.5em;font-size:1rem;font-weight:700;transition:transform .16s,box-shadow .16s,background .2s,color .2s}.btn:hover:not(:disabled){box-shadow:var(--shadow-pop);transform:translate(-2px,-2px)rotate(-1deg)}.btn:active:not(:disabled){box-shadow:none;transform:translate(0)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:focus-visible,.chip:focus-visible,button:focus-visible{outline:3px solid var(--yellow);outline-offset:2px}.btn-primary{background:var(--cream);color:var(--green-deep);border-color:var(--cream)}.btn-accent{background:var(--yellow);color:#2c2306;border-color:var(--green-deep);box-shadow:var(--shadow-pop)}.btn-accent:hover:not(:disabled){transform:translate(-2px,-2px)rotate(-1.5deg);box-shadow:.45rem .45rem #102a2059}.btn-ghost{background:0 0}.btn.big{font-size:1.25rem;font-family:var(--font-display);padding:.75em 2.4em;font-weight:400}.danger-btn{border-color:var(--ng);color:var(--ng)}.danger-btn.solid{color:#fff3ea;background:#d94f2f;border-color:#d94f2f}.form-actions{flex-wrap:wrap;align-items:center;gap:.7rem;margin-top:1rem;display:flex}.chip{font-family:var(--font-body);border:2px solid var(--cream);color:var(--cream);cursor:pointer;background:0 0;border-radius:999px;min-height:38px;padding:.3em 1em;font-size:.85rem;font-weight:700;transition:transform .15s,background .2s,color .2s}.chip:hover{background:var(--cream);color:var(--green-deep);transform:rotate(-2deg)}.chip.static{cursor:default;border-color:var(--paper-line);color:var(--paper-dim);background:0 0}.chip.static:hover{background:0 0;transform:none}.chip.visited{border-color:var(--ok);color:var(--ok)}.play-screen .chip:not(.static){border-color:var(--paper-ink);color:var(--paper-ink)}.play-screen .chip:not(.static):hover{background:var(--paper-ink);color:var(--paper)}.paper-card{background:var(--paper);color:var(--paper-ink);border:3px solid var(--green-deep);box-shadow:var(--shadow-pop);border-radius:22px;margin:.9rem 0;padding:1.3rem 1.5rem}.paper-card h3{font-family:var(--font-display);color:var(--paper-ink);margin:.15em 0 .3em;font-weight:400}.title-screen{text-align:center}.title-inner{flex-direction:column;align-items:center;padding-top:1.8rem;display:flex}.title-eyebrow{font-family:var(--font-mono);color:var(--yellow);letter-spacing:.4em;margin:0 0 .2rem;font-size:.78rem;animation:.6s 50ms both screenIn}.title-logo{margin:0;line-height:.95;animation:.7s cubic-bezier(.2,1.3,.35,1) .15s both logoPop}@keyframes logoPop{0%{opacity:0;transform:scale(.6)rotate(-5deg)}to{opacity:1;transform:none}}.title-jp{font-family:var(--font-display);color:var(--cream);text-shadow:.055em .055em 0 var(--red);letter-spacing:.02em;font-size:clamp(3rem,14vw,7rem);font-weight:400;display:block}.title-num{font-family:var(--font-display);color:var(--yellow);text-shadow:.05em .05em 0 var(--green-deep);letter-spacing:.06em;font-size:clamp(3.4rem,16vw,8rem);display:block}.title-badges{flex-wrap:wrap;justify-content:center;gap:1rem;margin:1.3rem 0 .4rem;animation:.6s .45s both screenIn;display:flex}.badge{text-align:center;width:92px;height:92px;font-family:var(--font-display);background:var(--cream);color:var(--green-deep);border:3px solid var(--green-deep);box-shadow:var(--shadow-pop);border-radius:50%;place-items:center;font-size:.82rem;line-height:1.3;display:grid}.badge.rot-l{background:var(--yellow);color:#2c2306;transform:rotate(-8deg)}.badge.rot-r{transform:rotate(6deg)}.badge.rot-l2{background:var(--red);color:#fff3ea;border-color:var(--green-deep);transform:rotate(-4deg)}.title-sub{color:var(--ink-dim);margin:.7rem 0 0;animation:.6s .55s both screenIn}.title-actions{flex-direction:column;align-items:center;gap:.9rem;margin-top:1.6rem;animation:.6s .65s both screenIn;display:flex}.title-subactions{gap:.8rem;display:flex}.title-note{color:var(--ink-dim);margin-top:1.5rem;font-size:.78rem}.start-card p,.tutorial-card p{margin:.3em 0}.tutorial-step{font-family:var(--font-mono);color:var(--paper-dim);margin:0;font-size:.8rem}.tutorial-card{animation:.4s both screenIn}.story-screen,.hidden-unlock-screen,.ending-screen{flex-direction:column;justify-content:center;min-height:68dvh;display:flex}.story-lines{flex-direction:column;gap:1rem;display:flex}.story-line{margin:0;font-size:1.08rem;animation:.5s both screenIn}.hidden-unlock-screen .story-line{font-family:var(--font-display);font-size:clamp(1.2rem,4.5vw,1.9rem);font-weight:400;line-height:1.5}.hidden-unlock-screen .story-line:first-child{color:var(--yellow);text-shadow:.06em .06em 0 var(--green-deep);font-size:clamp(2rem,9vw,3.4rem)}.ending-screen{text-align:center}.ending-screen .story-line{font-family:var(--font-display);font-size:clamp(1.1rem,4vw,1.6rem);font-weight:400}.howto-list{margin:1rem 0}.howto-list dt{font-family:var(--font-display);color:var(--red);margin-top:1em;font-weight:400}.howto-list dd{margin:.15em 0 0}.setting-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.setting-row h3{font-size:1.05rem}.setting-row.danger{border-color:var(--red)}.setting-row .btn{border-color:var(--green-deep);color:var(--paper-ink)}.setting-row .btn.btn-accent{color:#2c2306}.setting-row .danger-btn{color:#c93f1c;border-color:#c93f1c}.confirm-box{border:3px solid var(--red);background:#fff6ea;border-radius:14px;width:100%;padding:.9rem 1.1rem}.confirm-box p{margin:0 0 .4em}.hub-header{margin-bottom:1.1rem}.hub-lead{color:var(--ink-dim);margin:.2em 0 .7em}.hub-nav{flex-wrap:wrap;gap:.5rem;display:flex}.chapter-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,460px),1fr));gap:1.2rem;display:grid}.chapter-card{text-align:center;border:3px solid var(--green-deep);cursor:pointer;width:100%;box-shadow:var(--shadow-pop);font-family:var(--font-body);border-radius:clamp(56px,11vw,120px) clamp(56px,11vw,120px) 22px 22px;padding:clamp(1.6rem,5vw,2.6rem) 1.4rem 1.4rem;transition:transform .2s cubic-bezier(.2,1.2,.4,1),box-shadow .2s;animation:.55s cubic-bezier(.2,1,.3,1) both cardRise;position:relative}@keyframes cardRise{0%{opacity:0;transform:translateY(26px)scale(.97)}to{opacity:1;transform:none}}.chapter-card:hover:not(:disabled){transform:translate(-3px,-4px)rotate(-.6deg);box-shadow:.55rem .55rem #102a2059}.chapter-card:disabled,.chapter-card.locked{cursor:not-allowed}.level-cream{background:var(--cream);color:var(--green-deep)}.level-red{background:var(--red);color:#fff3ea}.level-purple{background:var(--purple);color:#f2ecfa}.level-yellow{background:var(--yellow);color:#2c2306}.level-night{background:var(--green-deep);color:var(--cream)}.chapter-card.locked:not(.hidden-tease){filter:saturate(.5)brightness(.82)}.chapter-no{font-family:var(--font-mono);letter-spacing:.3em;opacity:.85;margin:0;font-size:.75rem}.chapter-name{font-family:var(--font-display);margin:.05em 0 .2em;font-size:clamp(2rem,7vw,3.2rem);font-weight:400;line-height:1.05}.chapter-name-jp{letter-spacing:.3em;margin-top:.3em;font-size:.38em;display:block}.chapter-progress{justify-content:center;align-items:center;gap:.7rem;margin:.4rem 0 0;font-weight:700;display:flex}.progress-num{font-family:var(--font-mono)}.clear-mark{font-family:var(--font-display);font-size:.85rem}.lock-note,.tease-note{background:#0c1e1659;border-radius:999px;margin:.4rem 0 0;padding:.25em 1em;font-size:.85rem;font-weight:700;display:inline-block}.level-cream .lock-note{background:#21493a24}.level-yellow .lock-note{background:#2c230624}.hidden-tease{border-style:dashed}.bar{background:#0c1e164d;border-radius:999px;flex:0 220px;height:10px;display:inline-block;overflow:hidden}.level-cream .bar,.level-yellow .bar{background:#21493a2e}.bar-fill{background:currentColor;border-radius:999px;height:100%;transition:width .5s;display:block}.tier-list{gap:.8rem;margin:1rem 0;display:grid}.tier-card{background:var(--cream);color:var(--paper-ink);border:3px solid var(--green-deep);box-shadow:var(--shadow-pop);cursor:pointer;text-align:left;border-radius:999px;grid-template-columns:auto auto 1fr auto;align-items:center;gap:.9rem;padding:.7rem 1.5rem;transition:transform .16s;display:grid}.tier-card:hover:not(:disabled){transform:translate(-2px,-2px)rotate(-.5deg)}.tier-card.locked{opacity:.65;cursor:not-allowed}.tier-stars{color:var(--red);letter-spacing:.08em}.tier-label{font-family:var(--font-display);letter-spacing:.06em}.tier-count{font-family:var(--font-mono);color:var(--paper-dim)}.tier-card .subtle{color:var(--paper-dim)}@media (max-width:560px){.tier-card{grid-template-columns:auto 1fr auto}.tier-desc{display:none}}.title-level-jp{letter-spacing:.25em;margin-left:.6em;font-size:.5em}.title-count{font-family:var(--font-mono);color:var(--ink-dim);margin-left:.8em;font-size:.5em}.chapter-intro{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.chapter-intro p{flex:260px;margin:0}.chapter-intro .btn{border-color:var(--green-deep);color:var(--paper-ink)}.puzzle-grid{grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:.8rem;display:grid}.puzzle-card{text-align:left;background:var(--cream);color:var(--paper-ink);border:3px solid var(--green-deep);cursor:pointer;border-radius:16px;flex-direction:column;gap:.15rem;min-height:96px;padding:.8rem .95rem;transition:transform .16s,box-shadow .16s;display:flex;position:relative;box-shadow:.22rem .22rem #102a204d}.puzzle-card:hover{transform:translate(-2px,-3px)rotate(-.8deg);box-shadow:.4rem .4rem #102a204d}.puzzle-card.solved{background:#dff0d6}.puzzle-card.locked{filter:saturate(.4)brightness(.92)}.puzzle-card.final-card{text-align:center;background:var(--yellow);border-radius:60px 60px 18px 18px;grid-column:1/-1;align-items:center;min-height:120px}.puzzle-no{font-family:var(--font-mono);color:var(--red);letter-spacing:.14em;font-size:.72rem;font-weight:700}.final-card .puzzle-no{color:#7a3213}.puzzle-title{font-weight:700;line-height:1.4}.final-card .puzzle-title{font-family:var(--font-display);font-size:1.35rem;font-weight:400}.puzzle-tags{color:var(--paper-dim);margin-top:auto;font-size:.75rem}.puzzle-check{color:#eafff2;border:3px solid var(--green-deep);background:#2e8f63;border-radius:50%;place-items:center;width:1.9rem;height:1.9rem;font-weight:700;display:grid;position:absolute;top:-.6rem;right:-.45rem}.play-screen{width:100%;max-width:780px;margin:0 auto}.play-header{align-items:flex-start;gap:1rem;margin:.8rem 0 1rem;display:flex}.back-btn{flex-shrink:0}.play-no{font-family:var(--font-mono);color:var(--yellow);letter-spacing:.16em;margin:0;font-size:.85rem;font-weight:700}.play-level-tag{color:var(--ink-dim)}.play-title{font-family:var(--font-display);margin:.05em 0 .25em;font-size:clamp(1.5rem,5.5vw,2.3rem);font-weight:400;line-height:1.3}.play-meta{flex-wrap:wrap;gap:.4rem;margin:0;display:flex}.play-meta .chip.static{border-color:var(--line);color:var(--ink-dim)}.play-body{flex-direction:column;gap:1.1rem;display:flex}.play-description{background:var(--paper);color:var(--paper-ink);border:3px solid var(--green-deep);box-shadow:var(--shadow-pop);border-radius:22px;padding:1.2rem 1.5rem}.play-description p{margin:.35em 0}.final-mode .play-description{background:var(--yellow);color:#2c2306}.final-lead{font-family:var(--font-display);color:var(--yellow);text-align:center;letter-spacing:.3em;margin:0;font-size:1.2rem}.locked-panel{text-align:center;background:var(--surface);border:3px dashed var(--line);border-radius:22px;padding:2.2rem 1.4rem}.locked-icon{margin:0;font-size:2rem}.related-row{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.related-row .subtle{color:var(--ink-dim)}.fig{background:var(--paper);color:var(--paper-ink);border:3px solid var(--green-deep);text-align:center;--ink:var(--paper-ink);--ink-dim:#7d8b74;--surface:#e9dcc0;--line:var(--paper-line);border-radius:18px;margin:0;padding:1rem;box-shadow:.22rem .22rem #102a2047}.fig figcaption{color:var(--paper-dim);margin-top:.6rem;font-size:.82rem}.fig-svg{max-width:min(100%,400px);height:auto;display:inline-block}.fig-plate.frame-board{background:#efe2c4}.fig-plate.frame-paper{background:#fbf3df}.fig-plate.frame-stone{background:#e4e0d2}.plate-line{flex-wrap:wrap;justify-content:center;gap:.4em;margin:.2em 0;display:flex}.plate-mirror{display:inline-block;transform:scaleX(-1)}.plate-char{font-size:1.5rem;font-family:var(--font-display);min-width:1.3em;font-weight:400;display:inline-block}.plate-char.em{color:var(--red)}.plate-char.small{color:#6d7a64;align-self:center;font-size:.95rem}.grid-box{justify-content:center;gap:.3rem;display:grid}.grid-cell{aspect-ratio:1;border:2px solid var(--paper-line);background:#ffffff9c;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;font-size:1.05rem;display:flex}.grid-cell.mark-empty{opacity:.5;background:0 0;border-style:dashed}.cell-label{font-weight:700;line-height:1.2}.cell-sub{color:var(--paper-dim);font-size:.65rem}.gojuon-scroll{overflow-x:auto}.gojuon-table{border-collapse:collapse;margin:0 auto;font-size:.95rem}.gojuon-table th{color:var(--paper-dim);text-align:right;padding:.1rem .5rem;font-size:.72rem;font-weight:500}.gojuon-table td{border:2px solid var(--paper-line);text-align:center;min-width:2.1rem;padding:.15rem .3rem;font-weight:700}.gojuon-table td small{color:var(--paper-dim);font-size:.62rem;font-weight:400;line-height:1;display:block}.answer-form{background:var(--paper);color:var(--paper-ink);border:3px solid var(--green-deep);box-shadow:var(--shadow-pop);--ink:var(--paper-ink);--line:var(--paper-line);border-radius:22px;flex-direction:column;gap:.8rem;padding:1.1rem 1.3rem;display:flex}form.answer-form{flex-flow:wrap;align-items:center}.answer-form .btn{border-color:var(--green-deep);color:var(--paper-ink)}.answer-form .btn-primary{background:var(--green);color:var(--cream);border-color:var(--green-deep)}.answer-form .btn-ghost:hover:not(:disabled){box-shadow:.3rem .3rem #21493a40}.answer-input{min-width:200px;font-size:1.05rem;font-family:var(--font-body);color:#223c2f;border:3px solid var(--green-deep);background:#fff;border-radius:14px;flex:1;min-height:50px;padding:.65em 1em;font-weight:700}.answer-input::placeholder{color:#9aa895;font-weight:500}.answer-input:focus-visible{outline:3px solid var(--yellow);outline-offset:1px}.form-help{color:var(--paper-dim);margin:0;font-size:.88rem}.choice-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.6rem;display:grid}.choice-btn{border:3px solid var(--green-deep);color:var(--paper-ink);cursor:pointer;background:#fffdf6;border-radius:14px;min-height:54px;padding:.8em 1em;font-size:1rem;font-weight:700;transition:transform .14s,background .18s}.choice-btn:hover:not(:disabled){transform:translate(-1px,-2px)}.choice-btn.selected{background:var(--yellow)}.order-sequence{border:3px dashed var(--paper-line);background:#fffdf6;border-radius:14px;flex-wrap:wrap;align-items:center;gap:.5rem;min-height:58px;padding:.5rem;display:flex}.order-placeholder{color:var(--paper-dim);padding-left:.5rem}.order-pool{flex-wrap:wrap;gap:.5rem;display:flex}.token-btn{border:3px solid var(--green-deep);color:var(--paper-ink);cursor:pointer;background:#fffdf6;border-radius:12px;min-height:46px;padding:.5em 1em;font-size:1rem;font-weight:700;position:relative}.token-btn.placed{background:var(--yellow)}.token-btn small{background:var(--red);color:#fff3ea;border:2px solid var(--green-deep);border-radius:999px;place-items:center;width:1.5em;height:1.5em;font-size:.7rem;font-weight:700;display:grid;position:absolute;top:-.6em;left:-.4em}.token-btn:disabled{opacity:.35}.select-grid{justify-content:center;gap:.35rem;display:grid}.select-cell{aspect-ratio:1;border:3px solid var(--green-deep);color:var(--paper-ink);cursor:pointer;background:#fffdf6;border-radius:12px;min-width:2.7rem;font-size:.98rem;font-weight:700}.select-cell.selected{background:var(--yellow)}.toggles-row{flex-wrap:wrap;justify-content:center;gap:.7rem;display:flex}.toggle-btn{border:3px solid var(--green-deep);color:var(--paper-ink);cursor:pointer;background:#fffdf6;border-radius:14px;flex-direction:column;align-items:center;gap:.1rem;min-width:5.6rem;padding:.65em 1em;font-weight:700;display:flex}.toggle-btn.on{background:#ffe9a8}.toggle-btn .toggle-lamp{color:#b9b39f;font-size:1.3rem}.toggle-btn.on .toggle-lamp{color:var(--lamp)}.lights-grid{justify-content:center;gap:.4rem;display:grid}.light-cell{aspect-ratio:1;border:3px solid var(--green-deep);color:#b9b39f;cursor:pointer;background:#fffdf6;border-radius:12px;font-size:1.3rem;transition:background .15s,color .15s}.light-cell.on{color:#9a6a00;background:#ffe9a8}.lights-done{color:#2e8f63;font-weight:700}.timed-reveal,.room-explore,.item-gate,.rotary-shelf{background:var(--paper);color:var(--paper-ink);border:3px solid var(--green-deep);box-shadow:var(--shadow-pop);--ink:var(--paper-ink);--ink-dim:#7d8b74;--surface:#fffdf6;--line:var(--paper-line);border-radius:22px;padding:1rem 1.2rem}.timed-reveal{text-align:center}.timed-reveal .fig{box-shadow:none;border-width:2px}.timed-count{font-family:var(--font-display);color:var(--red);letter-spacing:.2em}.room-map{aspect-ratio:5/3;border:2px solid var(--paper-line);background:#eee0c2;border-radius:14px;position:relative;overflow:hidden}.room-bg{color:#c4b28d;width:100%;height:100%;position:absolute;inset:0}.room-spot{border:3px solid var(--green-deep);color:var(--paper-ink);cursor:pointer;background:#fffdf6;border-radius:999px;min-height:38px;padding:.25em .9em;font-size:.85rem;font-weight:700;animation:2.2s ease-in-out infinite spotPulse;position:absolute;transform:translate(-50%,-50%)}@keyframes spotPulse{0%,to{box-shadow:0 0 #d94f2f80}55%{box-shadow:0 0 0 9px #0000}}.room-spot.visited{border-color:#2e8f63;animation:none}.room-spot.open{background:var(--yellow)}.room-chips{flex-wrap:wrap;gap:.45rem;margin-top:.7rem;display:flex}.room-chips .chip{border-color:var(--green-deep);color:var(--paper-ink)}.room-chips .chip:hover{background:var(--green-deep);color:var(--cream)}.room-chips .chip.visited{color:#226b49;border-color:#2e8f63}.room-detail{border:2px solid var(--paper-line);background:#fffdf6;border-radius:14px;min-height:4.6rem;margin-top:.7rem;padding:.8rem 1.1rem}.room-detail h4{color:var(--red);font-family:var(--font-display);margin:0 0 .2em;font-weight:400}.room-detail p{margin:0}.item-row{flex-wrap:wrap;gap:.6rem;margin:.6rem 0;display:flex}.item-btn{border:3px solid var(--green-deep);color:var(--paper-ink);cursor:pointer;background:#fffdf6;border-radius:999px;min-height:50px;padding:.55em 1.2em;font-weight:700}.item-btn.used{background:var(--yellow)}.item-btn:disabled{opacity:.4;cursor:not-allowed}.item-result{min-height:2rem}.flip-card{text-align:center;flex-direction:column;align-items:center;gap:.7rem;display:flex}.flip-card .btn{border-color:var(--cream)}.flip-inner{perspective:900px;width:100%}.flip-inner>.fig{animation:.5s both flipIn}@keyframes flipIn{0%{opacity:.2;transform:rotateY(80deg)}to{opacity:1;transform:none}}.rotary-shelf{text-align:center}.rotary-reading{font-family:var(--font-mono);letter-spacing:.1em;color:var(--paper-dim);font-size:.9rem;font-weight:700}.rotary-shelf .form-actions{justify-content:center}.rotary-shelf .btn{border-color:var(--green-deep);color:var(--paper-ink)}.feedback-area{min-height:1.6rem}.feedback{margin:0;font-weight:700}.feedback.note{color:var(--yellow)}.feedback.wrong{color:var(--ng);animation:.4s shake}@keyframes shake{0%,to{transform:none}25%{transform:translate(-6px)}60%{transform:translate(5px)}80%{transform:translate(-3px)}}.hint-panel{background:var(--paper);color:var(--paper-ink);border:3px solid var(--green-deep);box-shadow:var(--shadow-pop);border-radius:22px;padding:1rem 1.3rem}.hint-title{font-family:var(--font-display);color:var(--paper-ink);margin:0 0 .4em;font-size:1.05rem;font-weight:400}.hint-list{flex-direction:column;gap:.5rem;margin:0;padding-left:1.3em;display:flex}.hint-text{margin:0}.hint-locked{color:var(--paper-dim);margin:0}.hint-open{border-color:var(--green-deep);color:var(--paper-ink);font-size:.92rem}.solved-panel{color:#1d4a33;border:3px solid var(--green-deep);box-shadow:var(--shadow-pop);background:#dff0d6;border-radius:22px;padding:1.2rem 1.4rem}.solved-panel .btn{border-color:var(--green-deep);color:#1d4a33}.solved-panel .btn-primary{background:var(--green);color:var(--cream)}.solved-badge{font-family:var(--font-display);color:#226b49;background:#fffdf6;border:3px solid #2e8f63;border-radius:12px;margin:0;padding:.05em .7em;display:inline-block;transform:rotate(-3deg)}.solved-answer{font-size:1.1rem}.explanation{border:2px solid var(--paper-line);color:#2c4636;background:#fffdf6;border-radius:14px;margin-top:.6rem;padding:.9rem 1.2rem}.explanation h3{font-family:var(--font-display);color:var(--red);margin:0 0 .3em;font-size:.95rem;font-weight:400}.explanation p{margin:0}.overlay{z-index:50;background:#0e2219cc;place-items:center;padding:1rem;animation:.25s both fadeIn;display:grid;position:fixed;inset:0;overflow-y:auto}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.overlay-card{background:var(--paper);color:var(--paper-ink);border:4px solid var(--green-deep);border-radius:26px;width:100%;max-width:640px;max-height:90dvh;padding:1.6rem 1.8rem;animation:.45s cubic-bezier(.2,1.35,.35,1) both cardIn;overflow-y:auto;box-shadow:.5rem .5rem #0000004d}@keyframes cardIn{0%{opacity:0;transform:scale(.85)translateY(20px)rotate(-1.5deg)}to{opacity:1;transform:none}}.overlay-card .btn{border-color:var(--green-deep);color:var(--paper-ink)}.overlay-card .btn-primary{background:var(--green);color:var(--cream)}.stamp{font-family:var(--font-display);color:var(--red);border:4px solid var(--red);background:#fffdf6;border-radius:16px;padding:.02em .45em;font-size:2.2rem;animation:.5s cubic-bezier(.2,1.6,.4,1) .12s both stampIn;display:inline-block;transform:rotate(-7deg)}@keyframes stampIn{0%{opacity:0;transform:rotate(-7deg)scale(2.4)}to{opacity:1;transform:rotate(-7deg)scale(1)}}.correct-title{font-size:1.15rem;font-weight:700}.grant-note{color:#a15c00;font-weight:700}.tab-row{flex-wrap:wrap;gap:.5rem;margin-bottom:1rem;display:flex}.tab{font-family:var(--font-body);border:3px solid var(--cream);color:var(--cream);cursor:pointer;background:0 0;border-radius:999px;min-height:44px;padding:.45em 1.2em;font-weight:700}.tab.active{background:var(--cream);color:var(--green-deep);box-shadow:var(--shadow-pop)}.records-list{flex-direction:column;gap:.5rem;display:flex}.record-row{background:var(--cream);color:var(--paper-ink);border:3px solid var(--green-deep);cursor:pointer;text-align:left;border-radius:16px;grid-template-columns:auto 1fr auto;align-items:baseline;gap:.3rem .9rem;padding:.55rem 1.1rem;transition:transform .14s;display:grid}.record-row:hover{transform:translate(-2px,-2px);box-shadow:.28rem .28rem #102a204d}.record-no{font-family:var(--font-mono);color:var(--red);font-size:.8rem;font-weight:700}.record-title,.record-answer{font-weight:700}.record-meta{color:var(--paper-dim);grid-column:1/-1;font-size:.75rem}.record-detail{color:var(--paper-ink);border:3px solid var(--green-deep);box-shadow:var(--shadow-pop);background:#fffdf6;border-radius:18px;margin-top:.5rem;padding:1rem 1.3rem}.record-detail h3{font-family:var(--font-display);margin:0 0 .3em;font-weight:400}.record-detail .btn{border-color:var(--green-deep);color:var(--paper-ink)}.items-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.8rem;display:grid}.item-card{background:var(--cream);color:var(--paper-ink);border:3px solid var(--green-deep);border-radius:18px;padding:1rem 1.2rem;box-shadow:.25rem .25rem #102a204d}.item-card h3{color:var(--red);font-family:var(--font-display);margin:0 0 .2em;font-size:1.02rem;font-weight:400}.item-card .subtle{color:var(--paper-dim)}.fragments-list{flex-direction:column;gap:.6rem;display:flex}.fragment{background:var(--cream);color:var(--paper-ink);border:3px solid var(--green-deep);border-radius:16px;padding:.6rem 1.1rem;box-shadow:.22rem .22rem #102a2047}.fragment summary{cursor:pointer;align-items:center;gap:.4rem;min-height:38px;font-weight:700;display:flex}.fragment.unread summary{color:#b0480f}.new-dot{background:var(--red);border-radius:999px;width:9px;height:9px;display:inline-block}.progress-total{font-size:1.3rem;font-weight:700}.progress-chapters{flex-direction:column;gap:.7rem;display:flex}.progress-row{color:var(--paper-ink);grid-template-columns:minmax(9em,auto) 1fr auto;align-items:center;gap:.8rem;display:grid}.progress-row .bar{background:#21493a29}.progress-row .bar-fill{background:var(--red)}.progress-name{font-size:.95rem;font-weight:700}.stat-list{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem;margin:1rem 0;display:grid}.stat-list>div{background:var(--cream);color:var(--paper-ink);border:3px solid var(--green-deep);border-radius:18px;padding:.8rem 1.1rem;box-shadow:.22rem .22rem #102a2047}.stat-list dt{color:var(--paper-dim);font-size:.8rem;font-weight:700}.stat-list dd{margin:0;font-size:1.2rem;font-weight:700}.result-hero{text-align:center;margin:1.2rem 0}.result-big{font-family:var(--font-display);color:var(--yellow);text-shadow:.05em .05em 0 var(--green-deep);margin:0;font-size:clamp(3rem,14vw,6rem);line-height:1.1}.result-sub{font-family:var(--font-display);margin:.2em 0 0;font-size:1.2rem}@media (max-width:640px){:root{--shell-pad:.85rem}.app-shell{padding-bottom:2.2rem}.play-header{flex-direction:column;gap:.4rem}form.answer-form{flex-direction:column;align-items:stretch}.grid-box{grid-template-columns:repeat(auto-fit,minmax(2rem,1fr))!important}.badge{width:78px;height:78px;font-size:.72rem}}
