.app{position:fixed;inset:0;overflow:hidden}.stage{transition:background var(--theme-fade);position:absolute;inset:0;overflow:hidden}.app-mobile .stage{touch-action:none;-webkit-user-select:none;user-select:none}.world{transform-origin:0 0;will-change:transform;transition:transform .35s ease-out;position:absolute;top:0;left:0}.house-img{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;display:block;position:absolute;inset:0}.house-night{transition:opacity var(--theme-fade) ease}.fx-layer{pointer-events:none;position:absolute;inset:0}.fx{pointer-events:none;position:absolute}@keyframes fx-fadein{0%{opacity:0}to{opacity:1}}.fx-fadein{animation:fx-fadein var(--theme-fade) ease both}@keyframes fx-steam{0%{opacity:0;transform:translateY(0)}30%{opacity:.8}to{opacity:0;transform:translateY(-46px)}}.fx-steam{background:#f3f1e2;animation:2.2s steps(6,end) infinite fx-steam}@keyframes fx-blink{0%,to{opacity:1}50%{opacity:.15}}.fx-blink{animation:1.4s steps(2,end) infinite fx-blink}.fx-sun{background:#ffd27a;border:6px solid #e8a33a}@keyframes fx-drift{0%{transform:translate(-105px)}to{transform:translate(105px)}}.fx-cloud{background:#f6f2e2;animation:18s ease-in-out infinite alternate fx-drift;box-shadow:21px -21px #f6f2e2}@keyframes fx-flicker{0%,to{filter:brightness()}30%{filter:brightness(.75)}55%{filter:brightness()}80%{filter:brightness(.8)}}.fx-glow{mix-blend-mode:screen;border-radius:50%;animation:2.2s steps(4,end) infinite fx-flicker}.fx-moon{border-radius:50%}@keyframes fx-twinkle{0%,to{opacity:1}50%{opacity:.25}}.fx-star{background:#f3e9d2;animation:2s steps(3,end) infinite fx-twinkle}@keyframes fx-fly{0%,to{transform:translate(0)}50%{transform:translate(21px,-25px)}}.fx-firefly{background:#f4f7b0;animation:4s ease-in-out infinite fx-fly;box-shadow:0 0 0 6px #e8f07a4d}.hotspots{pointer-events:none;position:absolute;inset:0;overflow:visible}.hotspots[data-interactive] polygon{fill:#0000;pointer-events:all;cursor:pointer}.hotspots polygon{fill:#0000}.hover-label{background:var(--panel);color:var(--text);border:4px solid var(--border);font-family:var(--font-pixel);white-space:nowrap;pointer-events:none;padding:4px 20px;font-size:28px;line-height:1.25;position:absolute;transform:translate(-50%,-50%)}.ogoh{cursor:pointer;background:0 0;border:0;padding:0;display:block;position:absolute;transform:translateY(-100%)}.ogoh:focus-visible{outline:6px solid var(--accent);outline-offset:6px}@keyframes ogoh-breathe{0%,to{transform:scaleY(1)}50%{transform:scaleY(.95)}}.ogoh-idle{transform-origin:50% 100%;animation:2.6s steps(2,end) infinite ogoh-breathe}@keyframes ogoh-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.ogoh-walk{animation:.28s steps(2,end) infinite ogoh-bob}@keyframes ogoh-run-l{0%,to{transform:translateY(0)skew(7deg)}50%{transform:translateY(-10px)skew(7deg)}}@keyframes ogoh-run-r{0%,to{transform:translateY(0)skew(-7deg)}50%{transform:translateY(-10px)skew(-7deg)}}.ogoh-run-l{transform-origin:50% 100%;animation:.16s steps(2,end) infinite ogoh-run-l}.ogoh-run-r{transform-origin:50% 100%;animation:.16s steps(2,end) infinite ogoh-run-r}@keyframes ogoh-dust{0%{opacity:.9;transform:translate(0)scale(1)}to{opacity:0;transform:translateY(-12px)scale(.4)}}.ogoh-dust{background:#e6d7b8;border:4px solid #8c7a62;animation:.45s steps(3,end) infinite ogoh-dust;position:absolute}.ogoh-dust-right .ogoh-dust{right:var(--off)}.ogoh-dust-left .ogoh-dust{left:var(--off)}@keyframes ogoh-z{0%{opacity:0;transform:translate(0)}20%{opacity:1}to{opacity:0;transform:translate(25px,-55px)}}.ogoh-z{font-family:var(--font-pixel);color:#f3e9d2;text-shadow:3px 3px #4a3426;font-weight:700;animation:2.4s linear infinite ogoh-z;position:absolute}.ogoh-hearts{pointer-events:none;position:absolute}@keyframes ogoh-heart{0%{opacity:0;transform:translateY(0)scale(.6)}20%{opacity:1}to{opacity:0;transform:translateY(-84px)scale(1.1)}}.ogoh-heart{animation:1.3s ease-out both ogoh-heart;position:absolute}@keyframes tap-mark{0%{opacity:0;transform:scale(.3)}40%{opacity:1;transform:scale(1.2)}to{opacity:.9;transform:scale(1)}}.tap-mark{pointer-events:none;animation:.35s both tap-mark;position:absolute}.room-panel{z-index:5;background:var(--panel);color:var(--text);border:var(--bw) solid var(--border);transition:background var(--theme-fade), color var(--theme-fade);flex-direction:column;display:flex;position:absolute;overflow:hidden}@keyframes panel-slidein{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.room-panel-side{border-radius:var(--radius);box-shadow:4px 4px 0 var(--shadow);animation:.45s .25s both panel-slidein}@keyframes sheet-up{0%{opacity:0;transform:translateY(60px)}to{opacity:1;transform:translateY(0)}}.room-panel-sheet{border-width:var(--bw) 0 0;border-radius:12px 12px 0 0;animation:.4s .2s both sheet-up;bottom:0;left:0;right:0}.sheet-grip{background:var(--accent);justify-content:center;padding-top:6px;display:flex}.sheet-grip:before{content:"";opacity:.5;background:#4a3426;border-radius:2px;width:40px;height:4px}.room-panel-head{background:var(--accent);border-bottom:var(--bw) solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px 10px 18px;display:flex}.room-panel-head h2{font-family:var(--font-pixel);color:var(--on-accent);margin:0;font-size:21px;font-weight:700}.room-panel-sheet .room-panel-head{padding:4px 10px 8px 14px}.room-panel-sheet .room-panel-head h2{font-size:17px}.close-btn{color:#2b1d16;border:var(--bw) solid #4a3426;border-radius:var(--radius);cursor:pointer;background:#f3e9d2;flex:none;justify-content:center;align-items:center;width:44px;height:44px;display:inline-flex}.room-panel-ogoh{background:var(--chip);border-bottom:2px solid var(--line);align-items:center;gap:10px;padding:10px 18px;display:flex}.room-panel-ogoh p{margin:0;font-size:14px;font-weight:700;line-height:1.45}.room-panel-ogoh b{font-family:var(--font-pixel);color:var(--accent-text)}.room-panel-sheet .room-panel-ogoh{padding:8px 14px}.room-panel-sheet .room-panel-ogoh p{font-size:13px}.room-panel-body{flex-direction:column;flex:1;gap:12px;padding:16px 18px;display:flex;overflow-y:auto}.room-panel-sheet .room-panel-body{padding:12px 14px}.room-panel-foot{border-top:2px solid var(--line);justify-content:flex-end;padding:10px 18px;display:flex}.room-panel-foot a{color:var(--accent-text);font-size:14px;font-weight:800}.panel-hint{color:var(--muted);margin:0;font-size:14px;font-weight:700}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip-tag{background:var(--chip);border:2px solid var(--border);border-radius:var(--radius);padding:4px 10px;font-size:14px;font-weight:700;display:inline-block}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.vignette{pointer-events:none;animation:.5s both fade-in;position:absolute;inset:0}.shelf{--spine-k:1;height:calc(186px * var(--spine-k));border-bottom:8px solid #6b4a32;align-items:flex-end;gap:6px;padding:0 10px;display:flex}.spine{width:52px;height:calc(var(--h) * var(--spine-k) * 1px);border:var(--bw) solid #2b1d16;cursor:pointer;border-radius:3px 3px 0 0;justify-content:center;align-items:center;padding:0;transition:transform .2s;display:flex}.spine span{writing-mode:vertical-rl;font-family:var(--font-pixel);color:#f3e9d2;font-size:15px;font-weight:600;transform:rotate(180deg)}.spine:hover{transform:translateY(-10px)}.spine[aria-pressed=true]{transform:translateY(-14px)}.shelf-plant{border:var(--bw) solid #2b1d16;background:#86a35a;border-radius:50% 50% 0 0;width:30px;height:40px;margin-left:auto}@keyframes page-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.spread{color:#2b1d16;border:var(--bw) solid #4a3426;border-radius:var(--radius);background:#fbf6ea;grid-template-columns:repeat(2,minmax(0,1fr));min-height:300px;display:grid;box-shadow:4px 4px #4a3426}.spread-page{flex-direction:column;gap:6px;padding:18px;animation:.3s both page-in;display:flex}.spread-left{border-right:var(--bw) dashed #c9b38e}.spread-bar{width:40px;height:6px}.spread h3{font-family:var(--font-pixel);margin:0;font-size:24px;font-weight:700;line-height:1.1}.spread-role{color:#7a3a0c;font-size:15px;font-weight:800}.spread-date{color:#6b5444;font-size:14px;font-weight:700}.spread-tag{background:#f4a63a;border-radius:2px;align-self:flex-start;padding:1px 6px;font-size:12px;font-weight:800}.spread-ogoh{color:#6b5444;align-items:flex-start;gap:8px;margin-top:auto;padding-top:12px;font-size:13px;font-style:italic;font-weight:700;line-height:1.45;display:flex}.spread-right ul{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.spread-right li{gap:8px;font-size:14px;font-weight:600;line-height:1.5;display:flex}.spread-right li:before{content:"";background:var(--accent);flex:none;width:8px;height:8px;margin-top:7px}.spread-num{font-family:var(--font-pixel);color:#6b5444;text-align:right;margin-top:auto;font-size:13px}.room-panel-sheet .spread{grid-template-columns:1fr;min-height:0}.room-panel-sheet .spread-left{border-right:0;border-bottom:var(--bw) dashed #c9b38e}.room-panel-sheet .shelf{--spine-k:.78;gap:4px;padding:0 4px}.room-panel-sheet .spine{width:44px}.terminal{border:var(--bw) solid var(--border);border-radius:var(--radius);box-shadow:4px 4px 0 var(--shadow);background:#0f1411;overflow:hidden}.terminal-bar{background:#1f2a22;border-bottom:2px solid #2e3d31;align-items:center;gap:6px;padding:8px 12px;display:flex}.terminal-bar>span:not(.terminal-title){width:10px;height:10px}.terminal-title{font-family:var(--font-term);color:#9fb8a5;margin-left:8px;font-size:18px}.terminal-body{min-height:470px;font-family:var(--font-term);white-space:pre-wrap;flex-direction:column;gap:2px;padding:14px 16px;font-size:20px;line-height:1.25;display:flex}.term-cmd{color:#9dffb8}.term-out{color:#d8f5dc}.term-ok{color:#f4d27a}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.term-cursor{background:#9dffb8;width:10px;height:18px;margin-top:2px;animation:1s step-end infinite cursor-blink}.room-panel-sheet .terminal-body{min-height:0;font-size:15px}.laptop{flex-direction:column;align-items:center;padding:0 12px;display:flex}.laptop-lid{border:var(--bw) solid #120e1c;background:#2b1d16;border-radius:10px 10px 0 0;width:100%;padding:18px 14px 16px;position:relative}.laptop-cam{background:#5a4c6e;width:6px;height:6px;margin-left:-3px;position:absolute;top:6px;left:50%}.laptop-screen{background:linear-gradient(#2e3d5c,#23304a);border:2px solid #120e1c;padding:14px}.win{color:#2b1d16;border:var(--bw) solid #120e1c;background:#fbf6ea;border-radius:3px;box-shadow:4px 4px #120e1c99}.win-bar{background:#e6d7b8;border-bottom:2px solid #4a3426;align-items:center;gap:5px;padding:5px 8px;display:flex}.win-bar span{background:#c2412d;width:9px;height:9px}.win-bar span:nth-child(2){background:#f4a63a}.win-bar span:nth-child(3){background:#5a8f6e}.win-bar b{font-family:var(--font-term);color:#4a3426;margin-left:6px;font-size:17px;font-weight:400}.win-body{flex-direction:column;gap:10px;padding:14px;display:flex}.win-head{align-items:center;gap:10px;display:flex}.win-head h3{font-family:var(--font-pixel);margin:0;font-size:20px;font-weight:700}.win-sub{color:#7a3a0c;font-size:14px;font-weight:800}.win-body p{margin:0;font-size:15px;font-weight:600;line-height:1.6}.win .chip-tag{color:#2b1d16;background:#e6d7b8;border-color:#4a3426;font-size:13px}.laptop-base{border:var(--bw) solid #120e1c;background:#4a3426;border-top-width:0;border-radius:0 0 10px 10px;justify-content:center;width:calc(100% + 24px);height:16px;display:flex}.laptop-base span{background:#2b1d16;border-radius:0 0 4px 4px;width:70px;height:5px}.room-panel-sheet .laptop-screen{padding:8px}.room-panel-sheet .laptop-lid{padding:14px 8px 10px}.cert-wall{border:var(--bw) solid var(--border);border-radius:var(--radius);background-color:#a0412d;background-image:linear-gradient(#7e3222 2px,#0000 2px),linear-gradient(90deg,#7e3222 2px,#0000 2px);background-size:48px 20px,48px 40px;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:22px 16px;display:grid}.frame{border:var(--bw) solid #2b1d16;cursor:pointer;background:#6b4a32;padding:8px;transition:transform .15s;box-shadow:4px 4px #2b1d1699}.frame:hover{transform:translateY(-3px)rotate(-1deg)}.frame-mat{color:#2b1d16;text-align:center;background:#fbf6ea;border:2px solid #c9b38e;flex-direction:column;justify-content:center;align-items:center;gap:6px;min-height:130px;padding:12px 8px;display:flex}.frame-school{font-family:var(--font-pixel);font-size:14px;font-weight:600;line-height:1.15}.frame-degree{color:#6b5444;font-size:11px;font-weight:700}@keyframes cert-zoom{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.cert-zoom{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.certificate{border:var(--bw) solid #2b1d16;width:100%;box-shadow:4px 4px 0 var(--shadow);background:#6b4a32;padding:10px;animation:.35s both cert-zoom}.certificate-inner{color:#2b1d16;outline-offset:-10px;text-align:center;background:#fbf6ea;outline:3px double #c8701c;flex-direction:column;align-items:center;gap:8px;padding:24px 20px;display:flex}.certificate h3{font-family:var(--font-pixel);margin:6px 0 0;font-size:22px;font-weight:700;line-height:1.15}.certificate-rule{background:#c8701c;width:60%;height:3px}.certificate-degree{color:#7a3a0c;font-size:16px;font-weight:800}.certificate-period{color:#6b5444;font-size:14px;font-weight:700}.certificate-foot{justify-content:space-between;align-items:flex-end;width:100%;margin-top:10px;display:flex}.certificate-sign{font-family:var(--font-pixel);color:#6b5444;border-top:2px solid #6b5444;padding-top:4px;font-size:13px}.easter-egg{background:var(--chip);border-radius:var(--radius);align-items:center;gap:10px;padding:12px;display:flex}.easter-egg svg{flex:none}.easter-egg p{margin:0;font-size:14px;font-weight:700;line-height:1.5}.room-panel-sheet .cert-wall{gap:10px;padding:14px 10px}.recipes{flex-direction:column;gap:18px;padding:4px 6px 8px;display:flex}.recipe{color:#2b1d16;border:var(--bw) solid #4a3426;box-shadow:4px 4px 0 var(--shadow);background:linear-gradient(90deg,#0000 14px,#e8607a 14px 16px,#0000 16px),repeating-linear-gradient(#fbf6ea 0 23px,#d7e3ec 23px 24px);border-radius:3px;flex-direction:column;gap:8px;padding:16px 18px 14px 26px;display:flex;position:relative}.recipe-kicker{color:#7a3a0c;font-size:13px;font-weight:800}.recipe h3{font-family:var(--font-pixel);margin:0;font-size:20px;font-weight:600;line-height:1.15}.recipe-desc{margin:0;font-size:15px;font-weight:600;line-height:1.55}.recipe-cols{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:14px;display:grid}.recipe h4{font-family:var(--font-pixel);color:#a0412d;margin:0 0 4px;font-size:15px;font-weight:600}.recipe ul,.recipe ol{margin:0;padding:0;font-size:14px;font-weight:700;line-height:1.6}.recipe-ingredients{list-style:none}.recipe-ingredients li{align-items:center;gap:6px;display:flex}.recipe-ingredients li:before{content:"";background:#f4a63a;border:2px solid #4a3426;flex:none;width:10px;height:10px}.recipe-steps{padding-left:20px!important}.recipe-link{color:#7a3a0c;align-self:flex-start;font-size:14px;font-weight:800}.recipe-link-soon{color:#6b5444;font-style:italic;font-weight:700}.room-panel-sheet .recipe-cols{grid-template-columns:1fr;gap:8px}.envelope-scene{flex-direction:column;align-items:center;padding-top:8px;display:flex;position:relative}.envelope-wrap{width:100%;position:relative}.envelope{z-index:2;border:var(--bw) solid #4a3426;width:100%;height:170px;box-shadow:4px 4px 0 var(--shadow);background-color:#e6d7b8;background-image:linear-gradient(to top right,#0000 calc(50% - 2px),#c9b38e calc(50% - 2px) calc(50% + 1px),#0000 calc(50% + 1px)),linear-gradient(to top left,#0000 calc(50% - 2px),#c9b38e calc(50% - 2px) calc(50% + 1px),#0000 calc(50% + 1px));background-position:0 100%,100% 100%;background-repeat:no-repeat;background-size:50% 100%;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;border-radius:3px;position:relative}.envelope-flap{clip-path:polygon(0 0,100% 0,50% 100%);z-index:3;transform-origin:50% 0;filter:drop-shadow(0 3px #4a3426);background:#d9c59f;height:100px;transition:transform .5s,z-index 0s linear .25s;position:absolute;top:-3px;left:-3px;right:-3px}.is-open .envelope-flap{z-index:0}.envelope-stamp{background:#fbf6ea;border:2px dashed #a0412d;padding:6px;position:absolute;bottom:14px;right:14px}.envelope-to{font-family:var(--font-pixel);color:#4a3426;font-size:16px;position:absolute;bottom:18px;left:18px}.is-open .envelope-flap{transform:scaleY(-1)}.letter{z-index:1;color:#2b1d16;border:var(--bw) solid #4a3426;opacity:0;background:#fbf6ea;border-radius:3px;flex-direction:column;gap:10px;width:92%;margin-bottom:-60px;padding:18px 16px 76px;transition:transform .6s .35s,opacity .2s .35s;display:flex;position:relative;transform:translateY(150px)}.is-open .letter{opacity:1;transform:translateY(0)}.letter-from{font-family:var(--font-pixel);color:#7a3a0c;font-size:13px}.letter p{margin:0;font-size:16px;font-weight:600;line-height:1.6}.letter-actions{flex-wrap:wrap;gap:10px;display:flex}.letter .pbtn{color:#2b1d16;background:#f3e9d2;border-color:#4a3426;font-size:15px;box-shadow:3px 3px #4a3426}.letter .pbtn-accent{background:var(--accent)}.envelope-btn{margin-top:14px}
