: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;overflow-x:clip;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{position:relative;min-height:100dvh;max-width:720px;margin:0 auto;padding:calc(20px + env(safe-area-inset-top,0px)) calc(18px + env(safe-area-inset-right,0px)) calc(48px + env(safe-area-inset-bottom,0px)) calc(18px + env(safe-area-inset-left,0px))}.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,.nav-tabs{display:flex;flex-wrap:wrap;gap:8px}.skip-link{position:absolute;left:12px;top:12px;z-index:2;padding:8px 12px;border-radius:999px;background:#e7d3bc;color:#1c1814;text-decoration:none;transform:translateY(-160%)}.skip-link:focus{transform:none}.nav-btn{border:1px solid var(--line);background:transparent;color:var(--muted);border-radius:999px;padding:8px 14px;min-height:44px;font:inherit;font-size:.9rem;cursor:pointer;touch-action:manipulation}.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;overflow-wrap:anywhere}.lede{margin:12px 0 0;color:var(--muted);line-height:1.55;max-width:34ch;overflow-wrap:anywhere}.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;overflow-wrap:anywhere}.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;overflow-wrap:anywhere}.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-flex;align-items:center;justify-content:center;margin-top:22px;padding:12px 18px;min-height:44px;border-radius:999px;text-decoration:none;color:#1c1814;background:#e7d3bc;font-weight:600;border:none;font:inherit;cursor:pointer;touch-action:manipulation}.nav-btn:focus-visible,.cta:focus-visible,.danger-btn:focus-visible,.field:focus-visible,.main:focus-visible{outline:2px solid #e7d3bc;outline-offset:2px}.plain-fieldset{border:0;margin:0;padding:0;min-inline-size:0}.plain-fieldset .kind-switch{margin-top: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{position:relative;display:inline-flex;align-items:center;justify-content:center;width:fit-content;padding:10px 14px;min-height:44px;border-radius:999px;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#ffffff0d}.file-btn input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.file-btn:focus-within{outline:2px solid #e7d3bc;outline-offset:2px}.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;min-height:44px;font:inherit;cursor:pointer;touch-action:manipulation}.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;overflow-wrap:anywhere}.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)}}@media(prefers-reduced-motion:reduce){.main,.fade-in,.today-card,.count-number{animation:none}}@keyframes countIn{0%{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
