:root{--bg0: #1c1814;--bg1: #2a221c;--ink: #f3ebe2;--muted: #b7a99a;--accent: #c9926c;--line: rgba(243, 235, 226, .14);--glow: rgba(201, 146, 108, .22);--font-display: "Cormorant Garamond", Georgia, serif;--font-body: "Manrope", system-ui, sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font-body);color:var(--ink);background:radial-gradient(1200px 700px at 10% -10%,rgba(201,146,108,.18),transparent 55%),radial-gradient(900px 600px at 100% 0%,rgba(90,120,110,.16),transparent 50%),linear-gradient(165deg,var(--bg0),var(--bg1) 55%,#181411);background-attachment:fixed}a{color:#e2c2a4}.shell{min-height:100dvh;max-width:720px;margin:0 auto;padding:20px 18px 48px}.shell.center{display:grid;place-items:center}.topbar{display:flex;flex-direction:column;gap:14px;margin-bottom:28px}.brand{margin:0;font-family:var(--font-display);font-size:1.15rem;letter-spacing:.04em;color:#e8d7c5}.nav{display:flex;gap:8px}.nav-btn{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:999px;padding:8px 14px;font:inherit;font-size:.9rem;cursor:pointer}.nav-btn.active{color:var(--ink);background:#f3ebe214;border-color:#f3ebe247}.main{animation:rise .7s ease both}.eyebrow{margin:0 0 8px;text-transform:lowercase;letter-spacing:.14em;font-size:.78rem;color:var(--muted)}.hello{margin:0;font-family:var(--font-display);font-weight:500;font-size:clamp(2.4rem,9vw,3.4rem);line-height:1.05}.lede{margin:12px 0 0;color:var(--muted);line-height:1.55;max-width:34ch}.home-lede{margin-bottom:28px}.countdown{margin:8px 0 18px;padding:28px 8px 22px;text-align:center;border-radius:28px;background:radial-gradient(circle at 50% 0%,var(--glow),transparent 60%),#ffffff08;border:1px solid var(--line)}.count-label{margin:0;letter-spacing:.18em;text-transform:uppercase;font-size:.75rem;color:var(--muted)}.count-number{margin:8px 0 4px;font-family:var(--font-display);font-size:clamp(4.5rem,18vw,6.5rem);line-height:.95;animation:countIn .9s cubic-bezier(.2,.8,.2,1) both}.count-sub{margin:0;color:var(--muted)}.together{margin:0 0 28px;text-align:center;color:var(--muted);font-size:.95rem}.together strong{color:var(--ink);font-weight:600}.today-card{padding:22px 20px;border-radius:22px;border:1px solid var(--line);background:#1c18148c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:rise .9s .12s ease both}.today-label{margin:0 0 10px;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:#d2b79a}.today-text{margin:0;font-family:var(--font-display);font-size:1.45rem;line-height:1.35;font-style:italic}.memories-title{margin-bottom:4px}.memory-stream{display:flex;flex-direction:column;gap:36px;margin-top:28px}.memory img{width:100%;aspect-ratio:4 / 5;object-fit:cover;display:block;border-radius:4px;filter:saturate(.92) contrast(1.02)}.memory-body{padding:14px 2px 0}.memory-date{margin:0 0 6px;color:var(--muted);font-size:.85rem}.memory h2{margin:0 0 10px;font-family:var(--font-display);font-weight:500;font-size:1.8rem}.memory p{margin:0;color:#d8cdc0;line-height:1.6}.gate-card{width:min(100%,420px);padding:28px 22px;border:1px solid var(--line);border-radius:24px;background:#ffffff08}.gate h1{margin:10px 0 0;font-family:var(--font-display);font-weight:500;font-size:2.2rem}.cta{display:inline-block;margin-top:22px;padding:12px 18px;border-radius:999px;text-decoration:none;color:#1c1814;background:#e7d3bc;font-weight:600;border:none;font:inherit;cursor:pointer}.nav{display:flex;flex-wrap:wrap;gap:8px}.compose-box{margin-top:22px;padding:18px;border:1px solid var(--line);border-radius:20px;background:#1c181473;display:flex;flex-direction:column;gap:10px}.field-label{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:#d2b79a}.field{width:100%;border:1px solid var(--line);background:#ffffff0a;color:var(--ink);border-radius:12px;padding:12px 14px;font:inherit}.textarea{resize:vertical;line-height:1.45}.file-btn{display:inline-flex;align-items:center;justify-content:center;width:fit-content;padding:10px 14px;border-radius:999px;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#ffffff0d}.kind-switch{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 8px}.preview-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.preview-row img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px}.submit-btn{margin-top:8px;text-align:center}.hint{margin:0;color:var(--muted);font-size:.85rem}.form-error{margin:0;color:#e8a090}.ok-msg{margin:0;color:#b7d2b4}.danger-btn{margin-top:12px;border:1px solid rgba(232,160,144,.35);background:transparent;color:#e8a090;border-radius:999px;padding:8px 12px;font:inherit;cursor:pointer}.upcoming{margin-top:28px;display:flex;flex-direction:column;gap:12px}.upcoming-item{padding:14px;border:1px solid var(--line);border-radius:14px}.upcoming-item span{display:block;color:var(--muted);font-size:.85rem;margin:4px 0 8px}.upcoming-item p{margin:0;color:#d8cdc0}.muted{color:var(--muted)}.fade-in{animation:rise .7s ease both}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes countIn{0%{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
