:root{--text:#6b6375;--text-h:#08060d;--code-bg:#f4f3ec;--sans:system-ui, "Segoe UI", Roboto, sans-serif;--heading:system-ui, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/145% var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--rose:#7b1a35;--rose-light:#c4536a;--rose-pale:#f7d6dc;--gold:#c9943a;--gold-light:#e8c46a;--cream:#fdf6ec;--cream-dark:#f2e8d9;--deep:#2a1018}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width>=480px){:root{font-size:18px}}@media (prefers-color-scheme:dark){:root{--text:#9ca3af;--text-h:#f3f4f6;--code-bg:#1f2028}}body{width:100%;height:100%;margin:0;position:relative;overflow:hidden auto}@media (width>=769px){body{position:fixed;overflow:hidden}}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:500}h1{letter-spacing:-1.68px;margin:32px 0;font-size:56px}@media (width<=1024px){h1{margin:20px 0;font-size:36px}}h2{letter-spacing:-.24px;margin:0 0 8px;font-size:24px;line-height:118%}@media (width<=1024px){h2{font-size:20px}}p{margin:0}code{font-family:var(--mono);color:var(--text-h);background:var(--code-bg);border-radius:4px;padding:4px 8px;font-size:15px;line-height:135%}.birthday-container{box-sizing:border-box;justify-content:center;align-items:center;width:100%;min-height:100dvh;padding:1rem 0;display:flex;position:relative;overflow:hidden}@media (width>=769px){.birthday-container{height:100%;min-height:100vh;padding:0}}.bg-layer{background:radial-gradient(ellipse at 20% 20%, #c4536a1f 0%, transparent 55%), radial-gradient(ellipse at 80% 80%, #c9943a1a 0%, transparent 55%), radial-gradient(ellipse at 50% 50%, #f7d6dc40 0%, transparent 70%), var(--cream);z-index:0;position:fixed;inset:0}.corner{z-index:1;opacity:.35;width:80px;height:80px;position:fixed}.corner svg{width:100%;height:100%}.tl{top:12px;left:12px}.tr{top:12px;right:12px;transform:scaleX(-1)}.bl{bottom:12px;left:12px;transform:scaleY(-1)}.br{bottom:12px;right:12px;transform:scale(-1)}@media (width>=480px){.corner{width:100px;height:100px}.tl{top:18px;left:18px}.tr{top:18px;right:18px}.bl{bottom:18px;left:18px}.br{bottom:18px;right:18px}}@media (width>=769px){.corner{width:120px;height:120px}.tl{top:24px;left:24px}.tr{top:24px;right:24px}.bl{bottom:24px;left:24px}.br{bottom:24px;right:24px}}.card{z-index:10;text-align:center;-webkit-backdrop-filter:blur(12px);opacity:0;background:#fdf6ecb8;border:1px solid #c9943a4d;width:92vw;max-width:680px;margin:2rem auto;padding:2rem 1.5rem;animation:1.2s cubic-bezier(.22,1,.36,1) forwards cardReveal;position:relative;transform:translateY(30px)scale(.97);box-shadow:0 0 0 1px #c9943a1a,0 32px 80px #7b1a351f,0 8px 24px #7b1a3514}@media (width>=480px){.card{width:90vw;padding:3rem 2.5rem}}@media (width>=769px){.card{margin:0 auto;padding:3.5rem 4rem}}@keyframes cardReveal{to{opacity:1;transform:translateY(0)scale(1)}}.rule{align-items:center;gap:12px;margin-bottom:1.8rem;animation:1s .3s both fadeUp;display:flex}.rule-line{background:linear-gradient(90deg, transparent, var(--gold), transparent);flex:1;height:1px}.rule-diamond{background:var(--gold);flex-shrink:0;width:8px;height:8px;transform:rotate(45deg)}.happy{color:var(--gold);letter-spacing:.04em;margin-bottom:.5rem;font-family:Dancing Script,cursive;font-size:clamp(1.6rem,4vw,2.2rem);animation:1s .5s both fadeUp}.name{color:var(--rose);letter-spacing:-.01em;margin-bottom:.25rem;font-family:Playfair Display,serif;font-size:clamp(3rem,9vw,5.2rem);font-weight:900;line-height:1.05;animation:1s .65s both fadeUp}.floral{color:var(--rose-light);opacity:.7;margin:1rem 0;font-family:Dancing Script,cursive;font-size:1.5rem;animation:1s .8s both fadeUp}.message{color:var(--deep);opacity:.82;max-width:480px;margin-bottom:2rem;margin-left:auto;margin-right:auto;font-family:Cormorant Garamond,serif;font-size:clamp(1.1rem,2.5vw,1.4rem);font-style:italic;line-height:1.7;animation:1s .95s both fadeUp}.gallery-title{color:var(--rose);text-align:center;margin-bottom:1.5rem;font-family:Playfair Display,serif;font-size:1.2rem;font-style:italic;animation:1s 1s both fadeUp}.gallery{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;margin:1.5rem 0;animation:1s 1.1s both fadeUp;display:grid}.gallery img{border-radius:10px;width:100%;height:auto;transition:transform .3s,box-shadow .3s;box-shadow:0 4px 12px #00000026}.gallery img:hover{transform:translateY(-5px)scale(1.02);box-shadow:0 8px 20px #0003}@media (width>=480px){.gallery{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1rem;margin:2rem 0}.gallery img{border-radius:12px}}.date-badge{color:var(--gold);letter-spacing:.14em;text-transform:uppercase;background:#c9943a14;border:1px solid #c9943a66;align-items:center;gap:8px;margin-bottom:2rem;padding:.45rem 1.2rem;font-family:Playfair Display,serif;font-size:.85rem;animation:1s 1.1s both fadeUp;display:inline-flex}.bottom-rule{animation:1s 1.25s both fadeUp}.from-line{color:var(--rose-light);margin-top:1.4rem;font-family:Dancing Script,cursive;font-size:1.1rem;animation:1s 1.4s both fadeUp}@keyframes fadeUp{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.sparkles{z-index:3;pointer-events:none;position:fixed;inset:0;overflow:hidden}.sparkle{background:var(--gold-light);clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);width:6px;height:6px;animation:twinkle var(--dur) ease-in-out var(--delay) infinite;opacity:0;position:absolute}@keyframes twinkle{0%,to{opacity:0;transform:scale(.5)rotate(0)}50%{opacity:.7;transform:scale(1.2)rotate(180deg)}}
