:root{--night:#10102b;--twilight:#232055;--dusk:#3b3480;--star:#aeb4ff;--ice:#e8edff;--blue:#4da3ff;--deepblue:#2f7bff;--glow:#8fd0ff}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:radial-gradient(ellipse at 50% 0%,var(--dusk) 0%,var(--night) 70%);color:var(--ice);font-family:VT323,monospace;font-size:22px;display:flex;flex-direction:column;align-items:center;min-height:100vh;overflow-x:hidden}.px{image-rendering:pixelated}#stars{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none}#app{position:relative;z-index:1;width:100%;max-width:560px;padding:16px;display:flex;flex-direction:column;align-items:center;gap:14px}h1,h2,.pxfont{font-family:"Press Start 2P",monospace}h1{font-size:20px;line-height:1.7;text-align:center;color:var(--glow);text-shadow:0 0 12px rgba(77,163,255,.55),3px 3px 0 #0a0a1f}h2{font-size:13px;color:var(--star);text-align:center;line-height:1.8}.frame{width:100%;background:#171538;border:4px solid var(--blue);box-shadow:0 0 0 4px #0a0a1f,0 0 24px #4da3ff59;padding:16px;border-radius:2px}button{font-family:"Press Start 2P",monospace;font-size:11px;color:#0a0a1f;background:var(--blue);border:none;border-bottom:4px solid var(--deepblue);padding:12px 16px;cursor:pointer;border-radius:2px;transition:transform .06s ease}button:hover{background:var(--glow)}button:active{transform:translateY(3px);border-bottom-width:1px}button:focus-visible{outline:3px dashed var(--ice);outline-offset:3px}button.ghost{background:#26235c;color:var(--ice);border-bottom-color:#171538}button:disabled{opacity:.45;cursor:not-allowed}.screen{display:none;width:100%;flex-direction:column;align-items:center;gap:14px}.screen.active{display:flex}canvas{display:block}#titleHeart{margin:6px auto}.blink{animation:blink 1.2s steps(2,end) infinite}@keyframes blink{50%{opacity:0}}.sub{color:var(--star);text-align:center;font-size:22px;line-height:1.3}.datelist{display:flex;flex-direction:column;gap:12px;width:100%}.datecard{display:flex;align-items:center;gap:14px;background:#1d1a48;border:3px solid #34307a;border-radius:2px;padding:12px 14px;width:100%;text-align:left;cursor:pointer}.datecard.open{border-color:var(--blue);box-shadow:0 0 14px #4da3ff59}.datecard.done{border-color:#5ee0a0}.datecard .icon{font-size:30px;width:44px;text-align:center;filter:saturate(1.2)}.datecard .name{font-family:"Press Start 2P",monospace;font-size:11px;line-height:1.7;color:var(--ice)}.datecard .status{font-size:19px;color:var(--star)}.datecard.locked{opacity:.75;cursor:pointer}.datecard.locked .name{color:#7d82c9}.hud{display:flex;justify-content:space-between;width:100%;align-items:center}.hud .hearts{font-family:"Press Start 2P",monospace;font-size:12px;color:var(--glow)}#sceneCanvas{width:100%;height:auto;border:4px solid #0a0a1f;border-radius:2px}.dialog{width:100%;background:#12103a;border:3px solid var(--blue);border-radius:2px;padding:14px;min-height:110px;position:relative}.dialog .who{font-family:"Press Start 2P",monospace;font-size:10px;color:var(--glow);margin-bottom:8px}.dialog .text{font-size:23px;line-height:1.35;white-space:pre-wrap}.choices{display:flex;flex-direction:column;gap:10px;width:100%}.nextHint{position:absolute;right:12px;bottom:8px;color:var(--blue);font-size:18px}.modal{position:fixed;top:0;right:0;bottom:0;left:0;background:#060614d1;display:none;align-items:center;justify-content:center;z-index:10;padding:16px}.modal.active{display:flex}.modal .frame{max-width:480px}input[type=text]{width:100%;font-family:VT323,monospace;font-size:24px;background:#0d0c26;color:var(--ice);border:3px solid var(--dusk);padding:10px;border-radius:2px;margin:10px 0}input[type=text]:focus{outline:none;border-color:var(--blue)}.hint{color:#8f95dd;font-size:19px}.shake{animation:shake .35s}@keyframes shake{25%{transform:translate(-6px)}50%{transform:translate(6px)}75%{transform:translate(-4px)}}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%);background:var(--blue);color:#0a0a1f;font-family:"Press Start 2P",monospace;font-size:10px;padding:12px 16px;border-radius:2px;display:none;z-index:20;box-shadow:0 0 18px #4da3ff99;line-height:1.7;text-align:center}.heartburst{position:fixed;font-size:26px;z-index:30;pointer-events:none;animation:rise 1.6s ease-out forwards}@keyframes rise{to{transform:translateY(-140px) scale(.6);opacity:0}}@media (prefers-reduced-motion: reduce){.blink,.heartburst{animation:none}}@media (max-width:420px){h1{font-size:15px}body{font-size:20px}}
