@font-face{font-family:Handwriting;src:url(../fonts/handwriting.woff2) format("woff2");font-display:swap}@font-face{font-family:Lora;src:url(../fonts/serif.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Lora;src:url(../fonts/serif-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;overflow:hidden;background:#1a0f2e;color:var(--lavender);font-family:Lora,Georgia,serif;-webkit-font-smoothing:antialiased;user-select:none}canvas{display:block}#game{position:fixed;inset:0;width:100vw;height:100vh;outline:none}#ui{position:fixed;inset:0;pointer-events:none;z-index:10}#ui>*{pointer-events:auto}#ui>.passive{pointer-events:none}#loading{position:fixed;inset:0;display:grid;place-items:center;align-content:center;gap:.6rem;z-index:100;background:var(--deepIndigo);color:var(--lavender);font-family:Lora,Georgia,serif;font-size:1.1rem;letter-spacing:.08em;animation:loading-pulse 1.2s ease-in-out infinite alternate;transition:opacity .4s ease}#loading.done{opacity:0;pointer-events:none;animation:none}@keyframes loading-pulse{0%{opacity:.4}to{opacity:1}}.fallback-page{position:fixed;inset:0;display:grid;place-items:center;padding:2rem;text-align:center;background:var(--deepIndigo);color:var(--lavender);font-family:Lora,Georgia,serif;font-size:1.2rem;line-height:1.6}.passcode{position:fixed;inset:0;display:grid;place-items:center;align-content:center;gap:1.4rem;text-align:center;color:var(--warmPurple)}.passcode h1{margin:0;font-weight:400;font-size:clamp(1.6rem,3.4vw,2.6rem);line-height:1.4;white-space:pre-line;min-height:2.8em;text-shadow:0 0 22px rgba(var(--moonlight-rgb),.95),0 0 6px rgba(var(--moonlight-rgb),.8)}.passcode .hint{margin:0;font-style:italic;opacity:.8;min-height:1.4em}.passcode .boxes{display:flex;gap:.8rem;justify-content:center}.passcode .boxes input{width:3.2rem;height:4rem;border:1px solid var(--wisteria);border-radius:10px;background:rgba(var(--moonlight-rgb),.7);color:var(--warmPurple);font:400 2rem Lora,Georgia,serif;text-align:center;caret-color:var(--gold);outline:none;transition:box-shadow .2s ease,border-color .2s ease}.passcode .boxes input:focus{box-shadow:0 0 18px var(--lavender);border-color:var(--gold)}.passcode .wrong{margin:0;min-height:1.4em;color:var(--vermillion)}.passcode.shake .boxes{animation:shake .4s ease}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-10px)}40%{transform:translate(9px)}60%{transform:translate(-6px)}80%{transform:translate(4px)}}.prompt{position:fixed;left:50%;transform:translate(-50%);padding:.35rem .9rem;border-radius:999px;background:rgba(var(--warmPurple-rgb),.55);color:var(--moonlight);font-family:Lora,Georgia,serif;font-size:.95rem;letter-spacing:.03em;opacity:0;transition:opacity .6s ease;pointer-events:none;white-space:nowrap}.prompt.show{opacity:.9}.prompt-look{bottom:18%}.prompt-controls{bottom:11%}.prompt-coach{bottom:22%;font-size:1.15rem;transition:opacity .4s ease,background-color .25s ease,color .25s ease}.prompt-coach.now{background:rgba(var(--gold-rgb),.92);color:var(--lacquer);animation:coach-pulse .9s ease-in-out infinite alternate}@keyframes coach-pulse{0%{transform:translate(-50%) scale(1)}to{transform:translate(-50%) scale(1.08)}}@media (prefers-reduced-motion: reduce){.prompt-coach.now{animation:none}}.prompt-touch{top:1.5rem;white-space:normal;max-width:min(92vw,34rem);text-align:center;border-radius:14px}.audio-icon{position:fixed;left:1rem;bottom:1rem;width:28px;height:28px;padding:0;border:none;background:transparent;color:var(--lavender);opacity:.55;cursor:pointer}.audio-icon.dim{opacity:.25}.audio-icon svg{width:100%;height:100%}.focus-ring:focus-visible{outline:2px solid var(--gold);outline-offset:3px}@media (prefers-reduced-motion: reduce){#loading{animation:none}}.fragments{position:fixed;top:1rem;left:1rem;display:flex;gap:.45rem;opacity:0;transition:opacity .6s ease;pointer-events:none;z-index:12}.fragments.show{opacity:1}.fragment-tile{width:2.1rem;height:2.1rem;display:grid;place-items:center;border-radius:.6rem;font:600 1.05rem/1 Lora,Georgia,serif;color:rgba(var(--warmPurple-rgb),.35);background:rgba(var(--moonlight-rgb),.35);border:1px dashed rgba(var(--warmPurple-rgb),.3);transition:color .5s ease,background .5s ease,box-shadow .5s ease,border-color .5s ease}.fragment-tile.have{color:var(--warmPurple);background:rgba(var(--moonlight-rgb),.85);border:1px solid rgba(var(--gold-rgb),.9);box-shadow:0 0 14px rgba(var(--gold-rgb),.55)}.fragment-tile.new{animation:fragment-pop 1.4s ease}@keyframes fragment-pop{0%{transform:scale(.4);box-shadow:0 0 rgba(var(--gold-rgb),0)}40%{transform:scale(1.35);box-shadow:0 0 34px rgba(var(--gold-rgb),.95)}to{transform:scale(1)}}@media (prefers-reduced-motion: reduce){.fragment-tile.new{animation:none}}.fragment-fly{position:fixed;margin:0;padding:.8rem 1.1rem;border-radius:.8rem;font:.95rem/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:var(--warmPurple);background:rgba(var(--moonlight-rgb),.9);border:1px solid rgba(var(--gold-rgb),.9);box-shadow:0 0 28px rgba(var(--gold-rgb),.6);white-space:pre;transform-origin:50% 50%;opacity:0;transform:scale(.85);transition:opacity .45s ease,transform .45s ease;z-index:13;pointer-events:none;will-change:transform,opacity}.fragment-fly.in{opacity:1;transform:scale(1)}.fragment-fly.go{transition:transform .9s cubic-bezier(.55,0,.3,1),opacity .9s ease-in;opacity:.35}.overlay{position:fixed;inset:0;display:grid;place-items:center;contain:strict;will-change:opacity}.overlay-note{background:rgba(var(--deepIndigo-rgb),.55)}.note-card{position:relative;width:min(86vw,520px);padding:2.4rem 2.6rem 2.8rem;background-color:var(--paper);background-size:cover;color:var(--ink);font-family:Handwriting,cursive;font-size:clamp(1.4rem,2.4vw,1.85rem);line-height:1.35;transform:rotate(-2deg);box-shadow:0 18px 50px rgba(var(--lacquer-rgb),.6);border-radius:3px}.note-card:before{content:"";position:absolute;top:-14px;left:50%;width:110px;height:28px;transform:translate(-50%) rotate(3deg);background:rgba(var(--paper-rgb),.55);box-shadow:0 2px 6px rgba(var(--lacquer-rgb),.25)}.note-text{white-space:pre-line;min-height:8em}.enter-hint{margin-top:1rem;text-align:right;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:.8rem;letter-spacing:.08em;opacity:.55;animation:hint-pulse 1.4s ease-in-out infinite alternate}.enter-hint.still{animation:none}@keyframes hint-pulse{0%{opacity:.25}to{opacity:.7}}.overlay-letter{background:rgba(var(--deepIndigo-rgb),.72)}.letter-stage{position:absolute;inset:0;display:grid;place-items:center}.letter-paper{position:relative;z-index:2;width:min(90vw,640px);max-height:88vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(var(--ink-rgb),.25) transparent;display:grid;padding:2.4rem 3rem;background-color:var(--paper);background-size:cover;color:var(--ink);font-family:Lora,Georgia,serif;font-size:clamp(.95rem,1.3vw,1.08rem);line-height:1.58;box-shadow:0 24px 70px rgba(var(--lacquer-rgb),.65);border-radius:4px}.letter-text{grid-area:1 / 1;white-space:pre-line}.letter-sizer{visibility:hidden}.letter-skip{position:absolute;right:1.4rem;bottom:1.2rem;z-index:3;padding:.3rem .7rem;border:none;border-radius:6px;background:transparent;color:var(--lavender);font:italic .85rem Lora,Georgia,serif;opacity:.6;cursor:pointer}.letter-skip:hover,.letter-skip:focus-visible{opacity:1}.polaroids{position:absolute;inset:0;z-index:1;pointer-events:none}.polaroid{position:absolute;margin:0;width:clamp(110px,12vw,170px);padding:8px 8px 26px;background:var(--paper);box-shadow:0 10px 28px rgba(var(--lacquer-rgb),.55);transform:rotate(var(--rot));animation:polaroid-float 6s ease-in-out infinite alternate;animation-delay:var(--delay);transition:opacity .7s ease}.polaroid.swap{opacity:0}.polaroid img{display:block;width:100%;aspect-ratio:1;object-fit:cover}@keyframes polaroid-float{0%{transform:translateY(-6px) rotate(var(--rot))}to{transform:translateY(8px) rotate(calc(var(--rot) * -.6))}}.overlay-endcard{background:linear-gradient(180deg,rgba(var(--deepIndigo-rgb),.78),rgba(var(--warmPurple-rgb),.72));color:var(--paper);text-align:center}.endcard-lines{display:grid;gap:1rem}.endcard-title{margin:0;font:400 clamp(2rem,4.6vw,3.4rem) "Lora",Georgia,serif;color:var(--paper);min-height:1.2em}.endcard-sub{margin:0;font:italic 400 clamp(1rem,1.8vw,1.3rem) "Lora",Georgia,serif;color:var(--lavender)}.overlay-line{position:fixed;left:50%;bottom:24%;transform:translate(-50%);max-width:min(90vw,760px);text-align:center;font:italic 400 clamp(1.1rem,2vw,1.5rem) "Lora",Georgia,serif;color:var(--lavender);text-shadow:0 0 18px rgba(var(--deepIndigo-rgb),.9);opacity:0;transition:opacity .6s ease;contain:layout paint;will-change:opacity}.overlay-line.show{opacity:1}.bubble{position:fixed;left:0;top:0;display:grid;max-width:320px;padding:.7rem .95rem;border-radius:14px;background:var(--lavender);color:var(--ink);font:400 .98rem/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;box-shadow:0 6px 24px rgba(var(--deepIndigo-rgb),.5),0 0 22px rgba(var(--lavender-rgb),.35);opacity:0;transition:opacity .28s ease;will-change:transform,opacity;pointer-events:auto;cursor:default}.bubble.show{opacity:.96}.bubble-sizer,.bubble-text{grid-area:1 / 1;white-space:pre-wrap}.bubble-sizer{visibility:hidden}.bubble-hint{justify-self:end;margin-top:.3rem;font-size:.72rem;letter-spacing:.08em;opacity:.6;animation:hint-pulse 1.4s ease-in-out infinite alternate}.bubble-hint.still{animation:none}.bubble-him{background:var(--paper);border:1px solid var(--lavender);font-size:1.05rem}.overlay-words{display:grid;align-items:end;justify-items:center;padding:0 1.5rem 7vh;background:linear-gradient(180deg,rgba(var(--deepIndigo-rgb),0) 35%,rgba(var(--deepIndigo-rgb),.72));cursor:default}.words-box{display:grid;max-width:min(92vw,820px)}.words-text{grid-area:1 / 1;white-space:pre-line;font:400 clamp(1.35rem,2.5vw,2rem)/1.45 "Handwriting","Lora",Georgia,serif;color:var(--paper);text-shadow:0 0 18px rgba(var(--deepIndigo-rgb),.95);text-align:center}.words-sizer{visibility:hidden}.overlay-words .enter-hint{justify-self:center;margin-top:1rem;color:var(--lavender)}@media (prefers-reduced-motion: reduce){.polaroid,.enter-hint,.bubble-hint{animation:none}}.editor{position:fixed;left:50%;bottom:5vh;width:min(540px,calc(100vw - 32px));padding:1rem 1.15rem 1.1rem;border-radius:16px;border:1px solid rgba(var(--lavender-rgb),.7);background:rgba(var(--moonlight-rgb),.9);color:var(--warmPurple);font:.95rem/1.6 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;box-shadow:0 14px 40px rgba(var(--warmPurple-rgb),.28),0 0 30px rgba(var(--lavender-rgb),.45);opacity:0;transform:translate(-50%,12px);transition:opacity .5s ease,transform .5s ease,border-color .6s ease;user-select:text;contain:layout paint}.editor.show{opacity:1;transform:translate(-50%)}.editor-head{display:flex;align-items:center;gap:.6rem;margin-bottom:.6rem}.editor-title{flex:1;font-weight:600;color:var(--warmPurple)}.editor-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.1rem .6rem;border-radius:999px;background:rgba(var(--vermillion-rgb),.85);color:var(--paper);font-size:.75rem;transition:background .6s ease}.editor-badge svg{width:12px;height:12px;display:none}.editor.resolved{border-color:rgba(var(--matcha-rgb),.9)}.editor.resolved .editor-badge{background:var(--matcha);color:var(--lacquer)}.editor.resolved .editor-badge svg{display:inline;animation:check-pop .5s ease}@keyframes check-pop{0%{transform:scale(0)}to{transform:scale(1)}}.editor-body{white-space:pre}.editor-row{min-height:1.6em}.editor-row.fixed{color:var(--warmPurple);animation:row-fixed .9s ease}@keyframes row-fixed{0%{background:rgba(var(--gold-rgb),.55)}to{background:transparent}}.editor-gap{display:inline-block;width:5.5em;border-bottom:2px dashed rgba(var(--lavender-rgb),.9);transform:translateY(-.2em)}.editor-field{font:inherit;color:var(--warmPurple);background:rgba(var(--gold-rgb),.22);border:none;border-bottom:2px solid var(--gold);border-radius:4px 4px 0 0;outline:none;padding:0 .3em;width:9em;caret-color:var(--vermillion)}.editor-field:focus{background:rgba(var(--gold-rgb),.34)}.editor-field.shake{animation:editor-shake .36s ease}@keyframes editor-shake{20%{transform:translate(-5px)}50%{transform:translate(4px)}80%{transform:translate(-2px)}}.editor-comment{margin:.7rem 0 0;font:italic .88rem/1.5 Lora,Georgia,serif;color:var(--wisteria);white-space:pre-line}.editor-comment:empty{display:none}.editor-term{display:none;margin-top:.8rem;padding:.6rem .8rem;border-radius:10px;background:rgba(var(--warmPurple-rgb),.92);color:var(--lilacHaze);font-size:.88rem}.editor-term.show{display:block;animation:term-in .5s ease}@keyframes term-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.editor-term .editor-field{color:var(--lilacHaze);background:transparent;border-bottom-color:rgba(var(--lavender-rgb),.8);width:12em;caret-color:var(--gold)}.term-out{white-space:pre;color:var(--matcha)}.editor-ask{margin:.8rem 0 0;font:italic 1rem/1.5 Lora,Georgia,serif;color:var(--warmPurple)}.editor-ask:empty{display:none}.editor-ask:before{content:"";display:inline-block;width:.6em;height:.6em;margin-right:.5em;border-radius:50%;background:var(--gold);box-shadow:0 0 10px var(--gold),0 0 4px var(--lavender)}.editor-note{margin:.35rem 0 0;min-height:1.3em;font:italic .9rem/1.4 Lora,Georgia,serif;color:var(--wisteria)}.editor-note.wrong{color:var(--vermillion)}@media (prefers-reduced-motion: reduce){.editor-field.shake,.editor-row.fixed,.editor-term.show{animation:none}}.laptop{position:fixed;left:50%;top:46%;width:min(560px,calc(100vw - 32px));min-height:330px;border-radius:14px;overflow:hidden;background:rgba(var(--warmPurple-rgb),.94);color:var(--lilacHaze);font:.98rem/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;box-shadow:0 18px 50px rgba(var(--warmPurple-rgb),.45),0 0 40px rgba(var(--lavender-rgb),.5);opacity:0;transform:translate(-50%,-46%) scale(.96);transition:opacity .5s ease,transform .5s ease,box-shadow .8s ease;pointer-events:none}.laptop.show{opacity:1;transform:translate(-50%,-46%) scale(1)}.laptop.running{box-shadow:0 0 80px rgba(var(--gold-rgb),.9),0 0 30px rgba(var(--moonlight-rgb),.9)}.laptop-bar{display:flex;align-items:center;gap:.4rem;padding:.55rem .8rem;background:rgba(var(--lacquer-rgb),.35);font-size:.8rem;color:var(--lavender)}.laptop-bar i{width:.6rem;height:.6rem;border-radius:50%;background:var(--softPink)}.laptop-bar i:nth-child(2){background:var(--gold)}.laptop-bar i:nth-child(3){background:var(--matcha)}.laptop-bar span{margin-left:.5rem}.laptop-code{padding:.9rem 1.1rem .4rem;min-height:210px}.laptop-block{white-space:pre;margin-bottom:.7rem;color:var(--lilacHaze)}.laptop-keys{display:flex;gap:.6rem;justify-content:center;padding:.4rem 0 1rem}.laptop-chip{width:2.4rem;height:2.4rem;display:grid;place-items:center;border-radius:.6rem;font:600 1.15rem/1 Lora,Georgia,serif;color:rgba(var(--lilacHaze-rgb),.5);border:1px solid rgba(var(--lavender-rgb),.4);transition:color .4s ease,background .4s ease,box-shadow .4s ease}.laptop-chip.next{color:var(--warmPurple);background:var(--lilacHaze);box-shadow:0 0 16px rgba(var(--gold-rgb),.8);animation:chip-breathe 1.6s ease-in-out infinite}.laptop-chip.done{color:var(--warmPurple);background:var(--gold);border-color:var(--gold)}.laptop-chip.nudge{animation:editor-shake .36s ease}@keyframes chip-breathe{50%{transform:scale(1.08)}}@media (prefers-reduced-motion: reduce){.laptop-chip.next,.laptop-chip.nudge{animation:none}}.pause-menu{z-index:50;background:rgba(var(--deepIndigo-rgb),.55);backdrop-filter:blur(6px);opacity:0;transition:opacity .25s ease}.pause-menu.show{opacity:1}.pause-card{width:min(88vw,400px);padding:1.8rem 2rem 2rem;display:grid;gap:1.1rem;background:rgba(var(--warmPurple-rgb),.82);border:1px solid rgba(var(--lavender-rgb),.35);border-radius:14px;box-shadow:0 18px 50px rgba(var(--lacquer-rgb),.5);color:var(--lilacHaze)}.pause-card h2{margin:0 0 .3rem;text-align:center;font-weight:400;font-style:italic;font-size:1.6rem;letter-spacing:.06em;color:var(--gold)}.pause-row{display:grid;grid-template-columns:1fr 3.4rem;grid-template-areas:"name value" "range range";gap:.35rem .6rem;font-size:1rem;cursor:pointer}.pause-row>span:first-child{grid-area:name}.pause-row input{grid-area:range;width:100%;margin:0;accent-color:var(--gold);cursor:pointer}.pause-value{grid-area:value;text-align:right;opacity:.75;font-variant-numeric:tabular-nums}.pause-card button{font:inherit;border-radius:999px;cursor:pointer;padding:.55rem 1rem}.pause-toggle{border:1px solid rgba(var(--lavender-rgb),.5);background:transparent;color:var(--lilacHaze)}.pause-toggle[aria-pressed=true]{background:rgba(var(--lavender-rgb),.25);border-color:var(--gold)}.pause-continue{margin-top:.4rem;border:none;background:var(--gold);color:var(--lacquer);font-size:1.1rem;letter-spacing:.04em}.pause-continue:hover,.pause-toggle:hover{filter:brightness(1.08)}.pause-icon{position:fixed;left:3.1rem;bottom:1rem;width:28px;height:28px;padding:0;border:none;background:transparent;color:var(--lavender);opacity:.55;cursor:pointer}.pause-icon:hover{opacity:.9}.pause-icon.hidden{display:none}.pause-icon svg{width:100%;height:100%}
