:root{--plum-0:#140f22;--plum-1:#1c1530;--plum-2:#2c2342;--plum-3:#3a2f52;--plum-4:#4b3f68;--edge:#0f0a1a;--text:#fff4f8;--text-dim:#c8b8e0;--pink:#ff7eb6;--pink-d:#c4467f;--lav:#9b84ff;--lav-d:#5f48c9;--peach:#ffa877;--peach-d:#cf6a3e;--mint:#5fdcb8;--mint-d:#2a9c7c;--gold:#ffcf5c;--gold-d:#c8902a;--sky:#6cc0ff;--sky-d:#2f7fcc;--grey:#7d7394;--grey-d:#4c4463;--cream:#fff3e2;--cream-d:#e0c9a8;--font:"Tiny5", "Pixelify Sans", monospace;--shadow:0 6px 0 var(--edge)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--plum-1);color:var(--text);font-family:var(--font);letter-spacing:.02em;-webkit-font-smoothing:none;font-size:20px;overflow-x:hidden}button{font:inherit;color:inherit;cursor:pointer}.t-shadow,h1,h2,h3,.b-btn,.chip{text-shadow:0 3px #0f0a1a8c}.swirl{width:100%;height:100%;image-rendering:pixelated;z-index:0;position:fixed;inset:0}.sparkles{width:100%;height:100%;image-rendering:pixelated;pointer-events:none;z-index:9000;position:fixed;inset:0}.vignette{pointer-events:none;z-index:9500;background:radial-gradient(#0000 62%,#0a061459 100%);position:fixed;inset:0}.b-panel{background:var(--plum-3);box-shadow:var(--shadow), inset 0 0 0 3px #ffffff0f;border-radius:14px;padding:16px 20px}.b-inner{background:var(--plum-2);border-radius:10px;padding:12px 14px}.b-btn{--c:var(--pink);--cd:var(--pink-d);background:var(--c);color:var(--text);box-shadow:0 6px 0 var(--cd), 0 9px 0 #0f0a1a73;border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:10px 22px 12px;font-size:22px;transition:transform .12s cubic-bezier(.3,1.8,.5,1),box-shadow .12s,filter .1s;display:inline-flex;transform:translateY(0)}.b-btn:hover{filter:brightness(1.08);transform:translateY(-3px)rotate(-1.5deg)scale(1.04)}.b-btn:active{box-shadow:0 1px 0 var(--cd), 0 3px 0 #0f0a1a73;transition-duration:40ms;transform:translateY(5px)}.b-btn:disabled{filter:grayscale(.7)brightness(.8);cursor:default;transform:none}.b-btn.lav{--c:var(--lav);--cd:var(--lav-d)}.b-btn.peach{--c:var(--peach);--cd:var(--peach-d)}.b-btn.mint{--c:var(--mint);--cd:var(--mint-d)}.b-btn.gold{--c:var(--gold);--cd:var(--gold-d);color:#4a2d10;text-shadow:0 2px #ffffff59}.b-btn.sky{--c:var(--sky);--cd:var(--sky-d)}.b-btn.grey{--c:var(--grey);--cd:var(--grey-d)}.b-btn.lg{border-radius:14px;padding:14px 34px 16px;font-size:28px}.b-btn.sm{border-radius:10px;padding:8px 10px 9px;font-size:16px}.chip{--c:var(--plum-4);background:var(--c);color:var(--text);border-radius:8px;padding:6px 10px 7px;font-size:17px;line-height:1;display:inline-block;box-shadow:0 3px #0f0a1a99}.chip.pink{--c:var(--pink)}.chip.lav{--c:var(--lav)}.chip.peach{--c:var(--peach)}.chip.gold{--c:var(--gold);color:#4a2d10;text-shadow:none}.chip.mint{--c:var(--mint)}kbd{font-family:var(--font);text-align:center;background:var(--cream);min-width:26px;color:var(--plum-2);box-shadow:0 3px 0 var(--cream-d), 0 5px 0 #0f0a1a80;border-radius:6px;margin:0 3px;padding:3px 7px 5px;font-size:16px;display:inline-block}.wavy{white-space:pre;display:inline-block}.wavy span{animation:1.8s ease-in-out infinite wave;animation-delay:calc(var(--i) * -.12s);display:inline-block}@keyframes wave{50%{transform:translateY(calc(var(--amp,1) * -4px)) rotate(calc(var(--amp,1) * 2deg))}}.tilt{perspective:700px;display:inline-block}.tilt.float{animation:4.5s ease-in-out infinite float}.tilt:nth-child(odd).float{animation-delay:-2.2s}@keyframes float{50%{transform:translateY(-7px)rotate(1.2deg)}}.tilt-inner{transform-style:preserve-3d;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));cursor:pointer;border-radius:16px;transition:transform .25s cubic-bezier(.3,1.6,.5,1);position:relative}.tilt-inner:hover{transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) scale(1.07);transition-duration:80ms}.tilt-shine{border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(circle at var(--mx,50%) var(--my,50%), #ffffff73, transparent 45%);mix-blend-mode:soft-light;transition:opacity .2s;position:absolute;inset:0}.tilt-inner:hover .tilt-shine{opacity:1}.sprite{image-rendering:pixelated;background-repeat:no-repeat;flex:none}.sprite.placeholder{background:var(--plum-4);color:var(--text-dim);border:2px dashed var(--grey);text-align:center;word-break:break-all;place-items:center;padding:2px;font:11px/1.1 monospace;display:grid;overflow:hidden}@keyframes sprite-strip{to{background-position:var(--end) 0}}.photo{margin:0}.photo img{object-fit:cover;width:100%;height:100%;display:block}.photo-missing{text-align:center;background:var(--plum-2);width:100%;height:100%;min-height:120px;color:var(--text-dim);place-items:center;padding:8px;font:12px monospace;display:grid}.polaroid{background:var(--cream);box-shadow:0 6px 0 var(--cream-d), 0 10px 0 #0f0a1a80;transform:rotate(var(--r,-2deg));width:180px;color:var(--plum-2);border-radius:6px;padding:10px 10px 36px}.polaroid img,.polaroid .photo-missing{aspect-ratio:1;border-radius:3px;height:auto}.polaroid figcaption{text-align:center;text-shadow:none;margin-top:10px;font-size:17px}.polaroid.big{width:min(440px,80vw)}.polaroid.deal{animation:.55s cubic-bezier(.3,1.6,.5,1) backwards deal;animation-delay:var(--d,0s)}@keyframes deal{0%{opacity:0;transform:translate(-60px,120px)rotate(-30deg)scale(.6)}}.paper{background:var(--cream);color:var(--plum-2);box-shadow:0 6px 0 var(--cream-d), 0 10px 0 #0f0a1a73;white-space:pre-wrap;text-shadow:none;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--cream-d) transparent;border-radius:10px;max-width:640px;max-height:calc(100dvh - 230px);margin:0 auto;padding:30px 34px;font-size:21px;line-height:1.55;overflow-y:auto}.paper-wrap{flex-direction:column;gap:10px;width:100%;max-width:640px;margin:0 auto;display:flex}.paper-wrap .paper{width:100%;max-height:calc(100dvh - 280px)}.paper-font{align-self:flex-end}.paper.plain{font-family:Comfortaa,system-ui,sans-serif;font-size:18px;font-weight:500;line-height:1.65}.paper::-webkit-scrollbar{width:8px}.paper::-webkit-scrollbar-thumb{background:var(--cream-d);border-radius:4px}.input{width:min(480px,100%);font:inherit;background:var(--plum-2);color:var(--text);resize:vertical;border:0;border-radius:12px;outline:none;padding:14px 16px;font-size:20px;box-shadow:inset 0 4px #0f0a1a80}.input:focus{box-shadow:inset 0 4px 0 #0f0a1a80, 0 0 0 3px var(--lav)}.input::placeholder{color:var(--text-dim);opacity:.6}.lead{text-align:center;max-width:560px;margin:0 auto;font-size:22px;line-height:1.5}.hint{color:var(--text-dim);text-align:center;margin:10px 0 0;font-size:18px}.sent{color:var(--gold);text-align:center;font-size:28px;animation:.4s cubic-bezier(.3,1.8,.5,1) pop-in}.center-col{flex-direction:column;align-items:center;gap:20px;display:flex}@keyframes pop-in{0%{opacity:0;transform:scale(.4)}}.mute{z-index:8000;position:fixed;top:14px;right:14px}.title{-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:center;align-items:center;gap:18px;height:100%;display:flex;position:relative;overflow:hidden}.title>:not(.swirl){z-index:1;position:relative}.title h1{color:var(--gold);text-shadow:0 8px 0 var(--gold-d), 0 14px 0 #0f0a1a99;margin:0;font-size:clamp(90px,16vw,180px);line-height:.9}.title-sub{color:var(--text-dim);font-size:18px}.title-ember{background:var(--gold);width:12px;height:12px;animation:2.2s ease-in-out infinite ember;box-shadow:0 0 0 4px #ffcf5c59,0 0 30px 10px #ffbe6e80}@keyframes ember{50%{transform:translateY(-8px)scale(1.2)}}.game{-webkit-user-select:none;user-select:none;background:radial-gradient(ellipse at center, var(--plum-2), var(--plum-0));position:fixed;inset:0;overflow:hidden}.game-canvas{z-index:1;position:absolute;inset:0}.game-canvas canvas{image-rendering:pixelated}.game>.b-panel,.game>.game-card,.game>.letter-wrap,.game>.hint-bar{z-index:2}.hud{align-items:center;gap:10px;padding:8px 12px;animation:.5s cubic-bezier(.3,1.6,.5,1) drop;display:flex;position:absolute;top:14px;left:14px}.hud-label{color:var(--text-dim);font-size:16px}.hud-slots{gap:5px;display:flex}.hud-slot{background:var(--plum-2);border-radius:8px;place-items:center;width:40px;height:40px;display:grid;box-shadow:inset 0 3px #0f0a1a80}.hud-slot .sprite{opacity:.18;filter:grayscale();transition:all .3s}.hud-slot.on{background:var(--plum-4);animation:.5s cubic-bezier(.3,2,.5,1) slot-pop}.hud-slot.on .sprite{opacity:1;filter:drop-shadow(0 0 4px #ffdc8ce6)}@keyframes slot-pop{0%{transform:scale(1.6)rotate(-12deg)}}@keyframes drop{0%{transform:translateY(-80px)}}.hint-bar{color:var(--text-dim);padding:8px 14px;font-size:17px;animation:.5s cubic-bezier(.3,1.6,.5,1) drop-up;position:absolute;bottom:16px;left:16px}@keyframes drop-up{0%{transform:translateY(80px)}}.game-card{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:14px;animation:ease-in-out forwards card-in;display:flex;position:absolute;inset:0}.game-card-title{color:var(--text);text-shadow:0 6px 0 var(--pink-d), 0 11px 0 #0f0a1aa6;font-size:clamp(56px,8vw,104px)}.game-card .chip{padding:8px 14px 10px;font-size:24px}@keyframes card-in{0%{opacity:0;transform:translateY(-60px)scale(.8)}14%{opacity:1;transform:translateY(6px)scale(1.04)}22%,82%{opacity:1;transform:none}to{opacity:0;transform:translateY(30px)scale(.96)}}.dlg{cursor:pointer;align-items:flex-start;gap:20px;width:min(900px,100% - 32px);min-height:150px;animation:.35s cubic-bezier(.3,1.6,.5,1) dlg-in;display:flex;position:absolute;bottom:26px;left:50%;translate:-50%}.dlg.narrator{min-height:0}@keyframes dlg-in{0%{opacity:0;transform:translateY(40px)scale(.94)}}.card-frame{--c:var(--pink);background:var(--c);border-radius:12px;flex:none;padding:7px;animation:.45s cubic-bezier(.3,1.8,.5,1) portrait-in,3.4s ease-in-out .45s infinite sway;box-shadow:0 5px #0f0a1a8c}.card-frame .sprite{background-color:var(--cream);border-radius:6px}.card-frame.lav{--c:var(--lav)}.card-frame.peach{--c:var(--peach)}@keyframes portrait-in{0%{transform:rotate(-14deg)scale(.5)}}@keyframes sway{50%{transform:rotate(-2.5deg)translateY(-3px)}}.dlg-main{flex-direction:column;flex:1;align-items:flex-start;gap:10px;display:flex}.dlg-text{font-size:24px;line-height:1.45}.dlg-next{color:var(--gold);opacity:0;font-size:16px;position:absolute;bottom:12px;right:18px}.dlg-next.on{opacity:1;animation:.6s ease-in-out infinite bounce}@keyframes bounce{50%{transform:translateY(4px)}}.pop-text .w{white-space:nowrap;display:inline-block}.pop-text .w span{opacity:0;display:inline-block}.pop-text .w span.on{opacity:1;animation:.28s cubic-bezier(.3,2,.5,1) letter}@keyframes letter{0%{color:var(--gold);transform:translateY(-7px)scale(1.5)}}.story{cursor:pointer;width:min(980px,100% - 32px);animation:.6s cubic-bezier(.3,1.4,.5,1) drop;position:absolute;top:22px;left:50%;translate:-50%}.story-head{align-items:center;gap:14px;margin-bottom:12px;display:flex}.story-title{color:var(--text);text-shadow:0 5px 0 var(--pink-d), 0 9px 0 #0f0a1a99;font-size:44px}.story-body{align-items:flex-start;gap:22px;display:flex}.story-photos{flex:none;gap:10px;display:flex}.story-photos .polaroid{width:150px}.story-text{min-height:80px;font-size:22px;line-height:1.5}.letter-wrap.top{background:0 0;place-items:start center;padding-top:3vh}.letter-wrap{background:#0f0a1a73;place-items:center;padding:24px 16px;animation:1.2s fade;display:grid;position:absolute;inset:0;overflow:auto}.letter{max-width:700px;padding:22px;animation:.9s cubic-bezier(.3,1.4,.5,1) rise}.letter-buttons{flex-wrap:wrap;justify-content:center;gap:16px;margin-top:22px;display:flex}@keyframes fade{0%{opacity:0}}@keyframes rise{0%{opacity:0;transform:translateY(60px)scale(.95)}}.board{min-height:100%;padding-bottom:140px;position:relative}.board>.board-head,.board>.garland{z-index:1;position:relative}.sky{width:100%;height:100%;image-rendering:pixelated;pointer-events:none;z-index:0;position:fixed;inset:0}.board-head{text-align:center;padding:16vh 16px 30px}.board-head h1{color:var(--text);text-shadow:0 6px 0 var(--pink-d), 0 12px 0 #0f0a1a99;margin:0 0 18px;font-size:clamp(54px,9vw,110px);line-height:1}.board-head .b-panel{max-width:560px;color:var(--text-dim);font-size:20px;line-height:1.4;display:inline-block}.stars-count{margin-top:14px}.garland{max-width:820px;margin:0 auto;padding:0 16px;position:relative}.garland-string{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.garland-string path{fill:none;stroke:#ffe6c880;stroke-width:3px;vector-effect:non-scaling-stroke;stroke-dasharray:3 7}.garland-far{text-align:center;color:var(--text-dim);letter-spacing:10px;opacity:.7;padding:60vh 0 40px;font-size:30px}.env{padding:40px 0;display:flex}.env-left{justify-content:flex-start;padding-left:6%}.env-right{justify-content:flex-end;padding-right:6%}.env-center{justify-content:center}.env .tilt{position:relative}.env .tilt:before{content:"";background:#ffe6c880;width:3px;height:44px;position:absolute;top:-42px;left:50%}.env-card{text-align:center;background:var(--cream);width:200px;color:var(--plum-2);text-shadow:none;box-shadow:0 6px 0 var(--cream-d), 0 11px 0 #0f0a1a80;border-radius:16px;flex-direction:column;align-items:center;gap:12px;padding:14px 14px 16px;display:flex}.env-art{background:var(--c,var(--pink));border-radius:10px;place-items:center;width:100%;padding:18px 0 14px;display:grid;position:relative;box-shadow:inset 0 -5px #0f0a1a33}.env-seal{position:absolute;top:50%;left:50%;translate:-50% -30%}.env-title{font-size:21px;line-height:1.15}.env-badge{z-index:2;position:absolute;top:-12px;right:-12px;rotate:12deg}.env.opened .env-art{filter:saturate(.75)}.env.flipping .tilt-inner{animation:.5s ease-in flip}@keyframes flip{50%{transform:rotateY(90deg)scale(1.1)}to{transform:rotateY(0)scale(1)}}.env-spark .env-card{width:260px;box-shadow:0 6px 0 var(--gold-d), 0 11px 0 #0f0a1a80, 0 0 40px #ffcf5c73;background:linear-gradient(135deg,#fff1c7,#ffd9ec 40%,#d9ccff 70%,#fff1c7) 0 0/300% 300%;animation:5s linear infinite foil}.env-spark .env-title{font-size:28px}@keyframes foil{to{background-position:300% 300%}}.roky-widget{z-index:50;cursor:pointer;filter:drop-shadow(0 4px #0f0a1a80);position:fixed;bottom:18px;right:22px}.roky-widget .bubble{position:absolute;bottom:100%;right:10px}.bubble{white-space:nowrap;background:var(--cream);color:var(--plum-2);text-shadow:none;box-shadow:0 4px 0 var(--cream-d);border-radius:10px;padding:6px 12px 8px;font-size:18px;animation:.3s cubic-bezier(.3,1.8,.5,1) pop-in}.modal{z-index:100;background:#0f0a1a9e;place-items:center;padding:24px 16px;animation:.2s fade;display:grid;position:fixed;inset:0;overflow:auto}.modal-panel{width:min(860px,100%);padding:24px 26px 26px;animation:.4s cubic-bezier(.3,1.6,.5,1) modal-in;position:relative}@keyframes modal-in{0%{opacity:0;transform:scale(.6)rotate(-4deg)}}.modal-title{text-align:center;color:var(--text);margin:0 0 20px;font-size:38px}.modal-back{justify-content:center;margin-top:22px;display:flex}.modal--full{padding:0}.modal--full .modal-panel{width:100%;height:100%;box-shadow:none;background:0 0;border-radius:0;padding:0;animation:none}.modal--full .modal-title,.modal--full .modal-back{display:none}.modal-x{z-index:10;position:absolute;top:14px;left:14px}.spark-game{position:absolute;inset:0}.modal--sleep .modal-panel{background:var(--plum-1)}.jar{background:0 0;border:0;width:180px;height:230px;padding:0;transition:transform .15s cubic-bezier(.3,1.8,.5,1);position:relative}.jar:hover{transform:scale(1.05)rotate(-2deg)}.jar.shake{animation:.45s shake}.jar-lid{background:var(--pink);width:116px;height:26px;box-shadow:0 4px 0 var(--pink-d);z-index:1;border-radius:8px;position:absolute;top:0;left:32px}.jar-glass{background:#b4dcff38;border-radius:24px 24px 34px 34px;position:absolute;inset:20px 10px 0;overflow:hidden;box-shadow:inset 0 0 0 4px #ffffff40,0 6px #0f0a1a80}.jar-note{left:var(--x);top:var(--y);background:var(--cream);width:28px;height:18px;box-shadow:0 2px 0 var(--cream-d);transform:rotate(var(--r));border-radius:3px;position:absolute}.note-paper{text-align:center;max-width:540px;animation:.5s cubic-bezier(.3,1.6,.5,1) deal}@keyframes shake{20%{transform:rotate(-9deg)}40%{transform:rotate(8deg)}60%{transform:rotate(-5deg)}80%{transform:rotate(3deg)}}.puzzle{background:var(--plum-2);border-radius:12px;gap:4px;width:min(700px,100%);padding:4px;display:grid;box-shadow:inset 0 4px #0f0a1a80}.puzzle-piece{background-repeat:no-repeat;border:0;border-radius:6px;padding:0;transition:transform .15s cubic-bezier(.3,1.8,.5,1),filter .15s;box-shadow:0 3px #0f0a1a80}.puzzle-piece:hover{filter:brightness(1.1);z-index:1;transform:translateY(-3px)scale(1.04)}.puzzle-piece.picked{outline:4px solid var(--gold);z-index:2;transform:translateY(-6px)scale(1.08)rotate(-3deg)}.puzzle.solved{gap:0;transition:gap .6s}.puzzle.solved .puzzle-piece{box-shadow:none;border-radius:0}.pillow-arena{cursor:crosshair;width:100%;height:340px;position:relative;overflow:hidden}.pillow-target{position:absolute;top:40px;left:50%;translate:-50%}.pillow-target.hurt{animation:.3s shake}.pillow-target .bubble{position:absolute;top:0;left:100%}.pillow-fly{pointer-events:none;animation:.45s ease-in forwards pillow;position:absolute;translate:-50% -50%}@keyframes pillow{0%{left:var(--sx);top:var(--sy);rotate:0deg}to{top:110px;left:50%;rotate:540deg}}.pillow-count{position:absolute;bottom:12px;right:14px}.scratch-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:22px;display:grid}.scratch-card{aspect-ratio:1;background:var(--cream);box-shadow:0 6px 0 var(--cream-d), 0 10px 0 #0f0a1a80;border-radius:14px;position:relative;overflow:hidden}.scratch-card .photo{position:absolute;inset:8px}.scratch-card .photo img{border-radius:8px}.scratch-card figcaption{background:var(--cream);color:var(--plum-2);text-align:center;text-shadow:none;padding:8px;font-size:16px;position:absolute;bottom:0;left:0;right:0}.scratch-card canvas{width:100%;height:100%;image-rendering:pixelated;cursor:grab;touch-action:none;transition:opacity .5s;position:absolute;inset:0}.scratch-card.revealed{animation:.5s cubic-bezier(.3,2,.5,1) slot-pop}.scratch-card.revealed canvas{opacity:0;pointer-events:none}.sleep{background:var(--plum-0);border-radius:12px;height:400px;position:relative;overflow:hidden}.sleep-rain{width:100%;height:100%;image-rendering:pixelated;position:absolute;inset:0}.sleep-inner{flex-direction:column;justify-content:center;align-items:center;gap:26px;height:100%;display:flex;position:relative}.sleep .lead{color:var(--text-dim)}.map{flex-direction:column;align-items:center;gap:12px;display:flex}.map-frame{width:100%;box-shadow:0 6px 0 var(--edge);border-radius:12px;position:relative;overflow:hidden}.map-canvas{width:100%;image-rendering:pixelated;display:block}.map-pin{color:var(--pink);text-shadow:0 3px 0 var(--edge);background:0 0;border:0;padding:0;font-size:26px;transition:scale .15s;animation:1.6s ease-in-out infinite bob;position:absolute;translate:-50% -100%}.map-pin:hover{scale:1.5}@keyframes bob{50%{transform:translateY(-6px)}}.cards{z-index:200;background:#0f0a1ac7;place-items:center;animation:.2s fade;display:grid;position:fixed;inset:0}.cards-inner{flex-direction:column;align-items:center;gap:18px;display:flex}.cards-inner h3{margin:0;font-size:44px}.cards-nav{align-items:center;gap:18px;display:flex}
