:root{--bg: #100b14;--bg-deep: #0a070d;--panel: #1b1220;--panel-2: #24182b;--paper: #fff7e9;--ink: #2a1720;--line: rgba(255, 243, 228, .12);--line-strong: rgba(255, 243, 228, .24);--text: #fbf2e7;--muted: #b6a3b5;--gold: #e8c48b;--gold-bright: #f6dca8;--pink: #f09aa6;--accent: #f09aa6;--accent-2: #c9a7ff;--accent-ink: #24101a;--glow: rgba(240, 154, 166, .3);--glow-2: rgba(201, 167, 255, .14);--btn-bg: #e8c48b;--btn-ink: #24180d;--shadow: 0 24px 70px rgba(0, 0, 0, .35);--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--ease: cubic-bezier(.2, .7, .2, 1)}.theme-sunset{--accent: #f09aa6;--accent-2: #f6c48b;--glow: rgba(240, 154, 166, .3)}.theme-midnight{--bg: #0a1220;--bg-deep: #060b14;--panel: #111c2f;--panel-2: #16243b;--text: #f3f7ff;--muted: #9fb1c9;--line: rgba(226, 239, 255, .12);--line-strong: rgba(226, 239, 255, .24);--gold: #e8c48b;--accent: #83c7ff;--accent-2: #b6a4ff;--accent-ink: #0d1a2b;--glow: rgba(131, 199, 255, .28);--glow-2: rgba(182, 164, 255, .16);--btn-bg: #e8c48b;--btn-ink: #101827}.theme-blush{--bg: #fff5f1;--bg-deep: #ffe9e2;--panel: #fffaf7;--panel-2: #ffffff;--text: #2b1720;--muted: #7e6069;--line: rgba(43, 23, 32, .12);--line-strong: rgba(43, 23, 32, .22);--gold: #b97742;--pink: #b84b5e;--accent: #b84b5e;--accent-2: #b98b4e;--accent-ink: #ffffff;--glow: rgba(217, 107, 124, .2);--glow-2: rgba(185, 139, 78, .12);--btn-bg: #2b1720;--btn-ink: #ffffff;--shadow: 0 24px 70px rgba(89, 45, 54, .16)}.theme-mint{--bg: #f2fbf7;--bg-deep: #e2f6ec;--panel: #fafffc;--panel-2: #ffffff;--text: #14251f;--muted: #5c756d;--line: rgba(20, 37, 31, .12);--line-strong: rgba(20, 37, 31, .22);--gold: #9b7a35;--pink: #2f8a68;--accent: #2f8a68;--accent-2: #9b7a35;--accent-ink: #ffffff;--glow: rgba(47, 138, 104, .18);--glow-2: rgba(155, 122, 53, .12);--btn-bg: #17332a;--btn-ink: #f4fff9;--shadow: 0 24px 70px rgba(40, 87, 69, .14)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:16px;line-height:1.5;overflow-x:hidden;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:radial-gradient(55% 45% at 88% -8%,var(--glow),transparent 68%),radial-gradient(42% 38% at -8% 32%,var(--glow-2),transparent 70%),linear-gradient(180deg,transparent 0%,rgba(0,0,0,.12) 100%)}body.lightbox-open{overflow:hidden}button{cursor:pointer;font:inherit;border:none;background:transparent;color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.hidden,[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.app-shell{width:min(100% - 32px,860px);margin:0 auto}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;color:var(--text);text-decoration:none;font-weight:700;letter-spacing:.16em;font-size:13px}.brand b{color:var(--gold);font-weight:800}.brand-mark{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;font-size:20px;background:linear-gradient(145deg,var(--panel-2),var(--panel));border:1px solid var(--line-strong);box-shadow:inset 0 1px #ffffff1f}.top-actions{display:flex;gap:10px}.icon-button{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:18px;background:var(--panel);border:1px solid var(--line);color:var(--text);transition:border-color .2s var(--ease),transform .2s var(--ease)}.icon-button:hover{border-color:var(--line-strong);transform:translateY(-1px)}.layout{padding:34px 0 56px}.experience-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:22px}.experience-head>div:first-child{max-width:580px}.eyebrow{display:flex;align-items:center;gap:10px;margin:0 0 10px;color:var(--muted);font-size:10px;letter-spacing:.22em;text-transform:uppercase}.eyebrow:before{content:"";width:26px;height:1px;background:var(--gold);opacity:.8}h1{margin:0 0 8px;font-family:var(--serif);font-size:clamp(34px,5vw,48px);font-weight:600;line-height:1.02;letter-spacing:-.03em}h1 em{color:var(--gold);font-style:italic}.intro{max-width:46ch;margin:0;color:var(--muted);font-size:14.5px;line-height:1.65}.chapter-badge{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:82px;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--panel)}.chapter-badge span,.chapter-badge small{color:var(--muted);font-size:8px;letter-spacing:.16em}.chapter-badge b{color:var(--gold);font-family:var(--serif);font-size:24px;line-height:1}.game-frame{position:relative;display:flex;min-height:600px;margin-bottom:22px;overflow:hidden;border:1px solid var(--line);border-radius:28px;background:linear-gradient(160deg,var(--panel-2),var(--panel) 55%,var(--panel-2));box-shadow:var(--shadow),inset 0 1px #ffffff12;color:var(--text)}.game-frame:before{content:"";position:absolute;top:-20%;right:-20%;bottom:-20%;left:-20%;z-index:0;pointer-events:none;background:radial-gradient(circle at 18% 18%,var(--glow),transparent 42%),radial-gradient(circle at 82% 82%,var(--glow-2),transparent 42%)}.game-frame:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 0 1px #ffffff0a}#particleCanvas{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}.scene{position:relative;z-index:2;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center;width:100%;min-width:0;min-height:600px;padding:56px 34px;text-align:center;animation:sceneIn .55s var(--ease) both}.scene-kicker{margin:0 0 12px;color:var(--gold);font-size:10px;font-weight:700;letter-spacing:.2em;text-transform:uppercase}h2{max-width:22ch;margin:0 0 16px;font-family:var(--serif);font-size:clamp(30px,4.2vw,42px);font-weight:600;line-height:1.08;letter-spacing:-.02em}.mascot{position:relative;display:grid;place-items:center;width:126px;height:126px;margin-bottom:26px;border:1px solid var(--line-strong);border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.18),transparent 55%),linear-gradient(145deg,var(--panel-2),var(--panel));box-shadow:0 20px 50px #00000040,0 0 0 10px #ffffff05;font-size:64px;animation:floaty 5s ease-in-out infinite}.mascot:after{content:"✦";position:absolute;top:10px;right:4px;color:var(--gold);font-size:18px;animation:twinkle 2.8s ease-in-out infinite}.invitation-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:160px;padding:14px 26px;border-radius:999px;background:var(--btn-bg);color:var(--btn-ink);font-size:14px;font-weight:700;box-shadow:0 10px 28px #0003;transition:transform .2s var(--ease),box-shadow .2s var(--ease)}.primary-button:hover{transform:translateY(-2px);box-shadow:0 16px 34px #00000047}.primary-button:active{transform:translateY(0) scale(.99)}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 22px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:14px;transition:color .2s,border-color .2s}.text-button:hover{color:var(--text);border-color:var(--accent)}.invitation-nudge{max-width:44ch;margin:18px auto 0;color:var(--accent);font-size:13px;font-style:italic;line-height:1.6;animation:cardIn .35s var(--ease) both}.question-progress{width:min(100%,430px);height:4px;margin:0 auto 22px;overflow:hidden;border-radius:999px;background:var(--line)}.question-progress span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--gold),var(--pink));transition:width .45s var(--ease)}.response-list{display:flex;flex-direction:column;gap:11px;width:100%;max-width:430px}.response-button{display:flex;align-items:center;gap:14px;width:100%;padding:15px 18px;border:1px solid var(--line);border-radius:14px;background:var(--panel);color:var(--text);font-size:15px;text-align:left;transition:transform .2s var(--ease),border-color .2s,background .2s}.response-letter{display:grid;flex:0 0 26px;place-items:center;width:26px;height:26px;border:1px solid var(--line-strong);border-radius:50%;color:var(--gold);font-size:11px;font-weight:700}.response-button:hover:not(:disabled){border-color:var(--accent);transform:translateY(-1px)}.response-button.selected{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.response-button.selected .response-letter{border-color:#0000003d;color:inherit}.response-button:disabled{opacity:.55;cursor:default}.response-button.selected:disabled{opacity:1}.gift-track{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:28px}.gift-step{padding:7px 12px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.gift-step.done{border-color:var(--gold);background:var(--gold);color:var(--btn-ink)}.gift-step.active{border-color:var(--accent);background:var(--accent);color:var(--accent-ink);box-shadow:0 0 0 4px var(--glow)}.gift-step.pending{opacity:.55}.gift-orb{position:relative;width:112px;height:104px;margin:0 auto 18px;border:1px solid rgba(255,255,255,.35);border-radius:18px;background:linear-gradient(145deg,var(--gold-bright),#d9a963);box-shadow:0 18px 40px #00000047,0 0 0 10px var(--glow);cursor:pointer;animation:giftGlow 3.2s ease-in-out infinite;transition:transform .2s var(--ease),box-shadow .3s var(--ease)}.gift-orb:before{content:"";position:absolute;top:0;bottom:0;left:50%;width:18px;transform:translate(-50%);background:linear-gradient(180deg,#fff9,#ffffff1f);border-right:1px solid rgba(70,40,10,.08);border-left:1px solid rgba(70,40,10,.08)}.gift-orb:after{content:"";position:absolute;top:44%;left:0;right:0;height:14px;background:linear-gradient(180deg,#fff9,#ffffff1f);border-top:1px solid rgba(70,40,10,.08);border-bottom:1px solid rgba(70,40,10,.08)}.orb-core{font-size:0}.gift-orb:hover{transform:translateY(-3px) rotate(-1deg)}.gift-orb:active{transform:scale(.96)}.gift-orb.complete{background:linear-gradient(145deg,#b9efcf,#5abf92);box-shadow:0 18px 40px #00000040,0 0 0 10px #5abf922e;animation:none}.gift-orb[aria-disabled=true]{cursor:default}.orb-hint{margin-top:10px;color:var(--muted);font-size:11px;letter-spacing:.12em;text-transform:uppercase}.gift-content{width:100%;max-width:440px;margin:20px auto 0;padding:22px;border:1px solid var(--line);border-radius:18px;background:var(--panel-2);box-shadow:0 18px 40px #0000002e;text-align:center;animation:cardIn .4s var(--ease) both}.gift-title{margin:0 0 8px;font-family:var(--serif);font-size:24px;line-height:1.1}.gift-body{margin:0;color:var(--muted);font-size:14.5px;line-height:1.65}.gift-image{display:block;width:min(100%,280px);max-height:260px;margin:0 auto 14px;border:1px solid var(--line-strong);border-radius:14px;object-fit:cover}.gift-fallback{padding:12px;font-size:54px}.gift-audio{padding:14px;border:1px dashed var(--line-strong);border-radius:12px;color:var(--muted);font-size:13px}.gift-content audio,.gift-content video{width:100%;margin-top:8px;border-radius:12px}.memories-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:18px;width:100%;min-width:0;max-width:600px;margin:0 auto 24px}.memory-card{display:flex;flex-direction:column;gap:8px;padding:8px 8px 12px;border:0;border-radius:4px;background:var(--paper);color:var(--ink);box-shadow:0 14px 30px #00000040;font:inherit;text-align:center;transform:rotate(var(--tilt, 0deg));transition:transform .25s var(--ease),box-shadow .25s var(--ease)}.memory-card:hover{transform:rotate(0) translateY(-3px);box-shadow:0 20px 38px #0000004d}.memory-card:disabled{cursor:default}.memory-card:disabled:hover{transform:rotate(var(--tilt, 0deg));box-shadow:0 14px 30px #00000040}.memory-image{width:100%;aspect-ratio:1;border-radius:2px;background:#e8dccd;object-fit:cover}.memory-fallback{display:grid;place-items:center;width:100%;aspect-ratio:1;border-radius:2px;background:linear-gradient(145deg,#f2e4d3,#e2cfb9);font-size:38px}.memory-caption{min-height:2.2em;padding:0 4px;color:#5b3a43;font-size:12px;line-height:1.4}.empty-state{display:grid;justify-items:center;gap:12px;max-width:420px;margin:0 auto 24px;padding:36px 24px;border:1px dashed var(--line-strong);border-radius:18px;color:var(--muted);font-size:14px}.empty-state:before{content:"📷";font-size:44px}.letter-card{position:relative;width:min(100%,540px);margin:0 auto 24px;padding:40px 34px 32px;border-radius:6px;background:var(--paper);color:var(--ink);box-shadow:0 24px 60px #0000004d;text-align:left;transform:rotate(-.4deg)}.letter-card:before{content:"A LETTER FOR YOU";display:block;margin-bottom:18px;color:#a47845;font-family:var(--sans);font-size:9px;font-weight:700;letter-spacing:.22em}.letter-card:after{content:"♥";position:absolute;top:18px;right:20px;display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:linear-gradient(145deg,#d8a15c,#b87b3e);color:#fff8ee;font-size:15px;box-shadow:0 4px 12px #0000002e}.letter-body{margin:0 0 24px;color:#3a2229;font-family:var(--serif);font-size:19px;line-height:1.8;white-space:pre-wrap}.letter-signoff{margin:0 0 4px;color:#8a5a36;font-family:var(--serif);font-size:18px;font-style:italic;text-align:right}.letter-sender{margin:0;color:#6a4b50;font-size:14px;text-align:right}.finale-illustration{position:relative;display:grid;place-items:center;width:150px;height:150px;margin:0 auto 18px;border-radius:50%;background:radial-gradient(circle,var(--glow),transparent 65%);font-size:76px}.finale-illustration:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:1px solid var(--line-strong);border-radius:50%;animation:halo 4s ease-in-out infinite}.wish-text{margin:0 0 8px;color:var(--gold);font-family:var(--serif);font-size:clamp(20px,3vw,26px);font-weight:600;letter-spacing:.16em;text-transform:uppercase}.celebration-zone{position:relative;width:100%;height:120px;overflow:hidden}.confetti{position:absolute;width:10px;height:16px;border-radius:2px;opacity:.9;animation:confettiFall 2s infinite}.finale-message{max-width:22ch;margin:0 auto 24px;font-family:var(--serif);font-size:clamp(22px,3.4vw,30px);font-weight:600;line-height:1.25}.game-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center}.step-track{display:flex;align-items:center;min-width:0}.step{display:flex;flex-direction:column;align-items:center;gap:1px;color:var(--muted);font-size:10px;font-weight:600;letter-spacing:.08em;white-space:nowrap}.step small{color:inherit;font-size:8px;letter-spacing:.14em;opacity:.75}.step.active{color:var(--gold);font-weight:800}.step.active small{opacity:1}.step.done{color:var(--accent)}.track-line{flex:1;min-width:8px;height:1px;margin:0 6px;background:var(--line)}.restart-button{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--muted);font-size:12px;transition:color .2s,border-color .2s}.restart-button:hover{color:var(--text);border-color:var(--line-strong)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:24px;background:#08050ad1;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.lightbox-figure{display:flex;flex-direction:column;align-items:center;gap:12px;max-width:min(92vw,900px);max-height:88vh;margin:0}.lightbox-figure img{max-width:100%;max-height:78vh;border-radius:12px;box-shadow:0 30px 80px #00000073}.lightbox-figure figcaption{max-width:60ch;color:#fff8ef;font-size:14px;text-align:center}.lightbox-close{position:absolute;top:18px;right:18px;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:#ffffff1a;color:#fff8ef;font-size:24px}.lightbox-close:hover{background:#ffffff2e}@keyframes sceneIn{0%{opacity:0;transform:translateY(12px) scale(.995)}to{opacity:1;transform:none}}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes twinkle{0%,to{opacity:.45;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}@keyframes giftGlow{0%,to{box-shadow:0 18px 40px #00000047,0 0 0 10px var(--glow)}50%{box-shadow:0 24px 48px #00000052,0 0 0 16px var(--glow)}}@keyframes cardIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}@keyframes halo{0%,to{transform:scale(1);opacity:.45}50%{transform:scale(1.08);opacity:.9}}@keyframes confettiFall{0%{transform:translateY(-40px) rotate(0);opacity:1}to{transform:translateY(120px) rotate(180deg);opacity:0}}.reduced-motion .scene,.reduced-motion .mascot,.reduced-motion .mascot:after,.reduced-motion .gift-orb,.reduced-motion .finale-illustration:before{animation:none!important}.reduced-motion .confetti,.reduced-motion #particleCanvas{display:none!important}@media (prefers-reduced-motion: reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.confetti,#particleCanvas{display:none!important}}@media (max-width: 680px){.app-shell{width:min(100% - 28px,860px)}.topbar{height:66px}.brand{gap:9px;font-size:11px;letter-spacing:.12em}.brand-mark{width:32px;height:32px;border-radius:10px;font-size:17px}.icon-button{width:36px;height:36px}.layout{padding:24px 0 40px}.experience-head{gap:12px;margin-bottom:16px}.eyebrow{font-size:8px;letter-spacing:.14em}h1{font-size:clamp(28px,9vw,36px)}.chapter-badge{min-width:68px;padding:8px 10px}.chapter-badge b{font-size:20px}.game-frame{min-height:520px;border-radius:22px;margin-bottom:16px}.scene{min-height:520px;padding:40px 20px}.mascot{width:104px;height:104px;margin-bottom:20px;font-size:54px}h2{font-size:clamp(26px,8vw,34px)}.invitation-actions,.primary-button,.text-button{width:100%}.gift-orb{width:96px;height:90px}.gift-image{max-height:220px}.memories-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.letter-card{padding:30px 22px 24px}.letter-body{font-size:17px}.game-controls{grid-template-columns:1fr;gap:12px}.step{flex:1;font-size:9px}.step small{display:none}.track-line{min-width:4px;margin:0 3px}.restart-button{justify-self:end;padding:8px 14px}.lightbox-close{top:10px;right:10px}}.gift-loading #app{visibility:hidden}.gift-gate{min-height:100dvh;display:grid;place-items:center;padding:24px}.gift-gate-card{max-width:34rem;text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:40px 28px;box-shadow:var(--shadow)}.gift-gate-mark{margin:0 0 8px;font-size:2.5rem}.gift-gate-card h1{margin:0 0 12px;font-family:var(--serif);font-size:clamp(1.6rem,5vw,2.2rem)}.gift-gate-card p{margin:0 0 24px;color:var(--muted);line-height:1.6}.gift-gate-card .primary-button{margin:0 auto}
