:root{--bg:#fbf5ee;--surface:#fffaf4;--text:#2a1d17;--muted:#6e5a4e;--accent:#b4432a;--accent-ink:#fffaf4;--gold:#c9952c;--spring:#1f8a7e;--rose:#e9b8a8;--rule:#ecdccd;--measure:38rem;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--night-1:#120f2e;--night-2:#2a1a4a;--night-3:#6b2d55;--dusk:#d8613f;--star:#fff4e0;--glow:#f5c451}@media (prefers-color-scheme:dark){:root{--bg:#17110f;--surface:#221915;--text:#f3e8de;--muted:#bba79a;--accent:#f08a6c;--accent-ink:#17110f;--gold:#e2b65a;--spring:#5ec4b6;--rose:#6b3a30;--rule:#3a2b25}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font:1.0625rem/1.6 var(--sans);margin:0;overflow-x:hidden}#confetti{pointer-events:none;z-index:50;width:100vw;height:100vh;position:fixed;inset:0}.hero{color:#fff4e6;text-align:center;background:radial-gradient(60% 40% at 50% 100%, color-mix(in srgb, var(--dusk) 70%, transparent), transparent 70%), linear-gradient(180deg, var(--night-1) 0%, var(--night-2) 45%, var(--night-3) 80%, var(--dusk) 115%);align-items:center;min-height:100svh;padding:4.5rem 1.25rem 7rem;display:flex;position:relative;overflow:hidden}.sky{pointer-events:none;position:absolute;inset:0}.stars{background-repeat:repeat;position:absolute;inset:0 0 30%}.stars-a{background-image:radial-gradient(1.5px 1.5px at 20px 30px, var(--star), transparent), radial-gradient(1px 1px at 90px 80px, var(--star), transparent), radial-gradient(1.5px 1.5px at 160px 20px, var(--star), transparent), radial-gradient(1px 1px at 220px 110px, var(--star), transparent), radial-gradient(2px 2px at 60px 150px, var(--star), transparent), radial-gradient(1px 1px at 190px 170px, var(--star), transparent);background-size:240px 200px;animation:4s ease-in-out infinite alternate twinkle}.stars-b{background-image:radial-gradient(1px 1px at 40px 60px, var(--star), transparent), radial-gradient(2px 2px at 130px 40px, var(--glow), transparent), radial-gradient(1px 1px at 250px 130px, var(--star), transparent), radial-gradient(1.5px 1.5px at 300px 60px, var(--star), transparent), radial-gradient(1px 1px at 100px 190px, var(--star), transparent);background-size:330px 230px;animation:6s ease-in-out -2s infinite alternate-reverse twinkle}@keyframes twinkle{0%{opacity:.35}to{opacity:1}}.moon{background:radial-gradient(circle at 35% 35%,#fffbea,#f7e2a8 60%,#e9c56f);border-radius:50%;width:54px;height:54px;position:absolute;top:9%;right:9%;box-shadow:0 0 40px 10px #f5c45140,0 0 120px 40px #f5c4511f}.shooting{background:linear-gradient(90deg, transparent, var(--star));opacity:0;border-radius:2px;width:120px;height:2px;animation:9s ease-in 2.5s infinite shoot;position:absolute;top:14%;left:-10%;transform:rotate(18deg)}@keyframes shoot{0%{opacity:0;transform:translate(0)rotate(18deg)}2%{opacity:1}9%{opacity:0;transform:translate(70vw,23vw)rotate(18deg)}to{opacity:0;transform:translate(70vw,23vw)rotate(18deg)}}.hero-inner{z-index:1;width:100%;max-width:var(--measure);margin:0 auto;position:relative}.eyebrow{color:var(--glow);letter-spacing:.18em;text-transform:uppercase;margin:0 0 1rem;font-size:.8125rem;font-weight:700;animation:.8s ease-out both rise}.headline{font:400 clamp(2.9rem, 13vw, 5.5rem)/1 var(--serif);letter-spacing:-.02em;color:#f5c451;margin:0;animation:.9s ease-out .1s both rise}.headline .hl{background:linear-gradient(100deg,#ffe7b0 0%,#f5c451 25%,#ffd9cc 45%,#f28b82 60%,#f5c451 80%,#ffe7b0 100%) 0 0/250% 100%;-webkit-box-decoration-break:clone;box-decoration-break:clone;color:#0000;-webkit-background-clip:text;background-clip:text;animation:6s linear 1s infinite shimmer}@keyframes shimmer{to{background-position:-250% 0}}@keyframes rise{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.dg-name{color:inherit;font:inherit;letter-spacing:inherit;cursor:pointer;transform-origin:50% 80%;background:0 0;border:0;padding:0 .05em;animation:3.5s ease-in-out 2.5s infinite wiggle;display:inline-block}.dg-name:focus-visible{outline:2px dashed var(--glow);outline-offset:4px;border-radius:6px}.dg-name.pop{animation:.5s cubic-bezier(.2,1.6,.4,1) pop}@keyframes wiggle{0%,88%,to{transform:rotate(0)}91%{transform:rotate(-6deg)scale(1.06)}94%{transform:rotate(5deg)scale(1.06)}97%{transform:rotate(-2deg)}}@keyframes pop{0%{transform:scale(1)}40%{transform:scale(1.35)rotate(-4deg)}to{transform:scale(1)}}.meta{color:#fff4e6c7;flex-direction:column;gap:.15rem;margin:1.5rem 0 0;animation:.9s ease-out .25s both rise;display:flex}.meta-date{color:#fff4e6;font-size:1.125rem;font-weight:600}.countdown{margin:2rem auto 0;animation:.9s ease-out .4s both rise}.cd-label{letter-spacing:.14em;text-transform:uppercase;color:#fff4e6b8;margin:0 0 .6rem;font-size:.8125rem}.countdown.live .cd-label{font:400 1.5rem/1.3 var(--serif);letter-spacing:0;text-transform:none;color:var(--glow)}.cd-units{justify-content:center;gap:.5rem;display:flex}.cd-unit{backdrop-filter:blur(6px);background:#ffffff14;border:1px solid #ffffff24;border-radius:.9rem;flex-direction:column;align-items:center;min-width:4.1rem;padding:.6rem .4rem .5rem;display:flex}.cd-unit b{font:600 1.85rem/1 var(--sans);font-variant-numeric:tabular-nums;color:#fff4e6}.cd-unit small{letter-spacing:.1em;text-transform:uppercase;color:#fff4e6a6;margin-top:.3rem;font-size:.6875rem}.cake-wrap{margin-top:1.75rem;animation:.9s ease-out .55s both rise}.cake{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0;animation:3s ease-in-out infinite bob}.cake:focus-visible{outline:2px dashed var(--glow);outline-offset:6px;border-radius:1rem}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.cake svg{filter:drop-shadow(0 10px 22px #00000059);display:block;overflow:visible}.cake .tier-top{fill:#f7d9cf}.cake .tier-bottom{fill:#e9a291}.cake .icing{fill:#fff4e6}.cake .icing-2{fill:#fbe6d9}.cake .plate{fill:#f5c451}.cake .candle{fill:#5ec4b6}.cake .candle.c2{fill:#b49ae8}.cake .flame{fill:#ffd27a;filter:drop-shadow(0 0 6px #f5c451);transform-box:fill-box;transform-origin:50% 100%;transition:opacity .25s,transform .25s;animation:.18s ease-in-out infinite alternate flicker}.cake .f2{animation-delay:-.07s}.cake .f3{animation-delay:-.12s}@keyframes flicker{0%{transform:scale(1)skew(0)}to{transform:scale(.92,1.1)skew(-4deg)}}.cake .smoke path{fill:none;stroke:#fff9;stroke-width:1.5px;stroke-linecap:round;opacity:0}.cake.out .flame{opacity:0;animation:none;transform:scale(.2)}.cake.out .smoke path{animation:1.6s ease-out forwards smoke}@keyframes smoke{0%{opacity:.9;transform:translateY(0)}to{opacity:0;transform:translateY(-14px)}}.cake-hint{min-height:1.6em;font:italic 400 1.0625rem/1.5 var(--serif);color:var(--glow);margin:.4rem 0 0}.cta{color:#2a1208;background:linear-gradient(135deg,#f5c451,#e8643b);border-radius:999px;margin-top:1.5rem;padding:.85rem 1.75rem;font-weight:700;text-decoration:none;transition:transform .2s,box-shadow .2s;animation:.9s ease-out .7s both rise;display:inline-block;box-shadow:0 8px 28px #e8643b59}.cta:hover,.cta:focus-visible{transform:translateY(-2px);box-shadow:0 12px 34px #e8643b80}.hills{width:100%;height:90px;position:absolute;bottom:-1px;left:0}.hill-back{fill:color-mix(in srgb, var(--bg) 35%, #3a1f33)}.hill-front{fill:var(--bg)}.body,.foot{max-width:var(--measure);margin:0 auto;padding:0 1.25rem}.body{padding-top:1.5rem;padding-bottom:3rem}.body>p:first-child{font:400 1.25rem/1.55 var(--serif)}h2{font:400 2rem/1.15 var(--serif);margin:3.5rem 0 .9rem;scroll-margin-top:1rem;position:relative}h2:after{content:"";background:linear-gradient(90deg, var(--gold), var(--accent));border-radius:3px;width:3rem;height:3px;margin-top:.6rem;display:block}h3{font:600 1.0625rem/1.3 var(--sans);margin:1.75rem 0 .25rem}a{color:var(--accent);text-underline-offset:.15em}ul{padding-left:1.25rem}li+li{margin-top:.3rem}strong{font-weight:600}.jump{flex-wrap:wrap;gap:.5rem;margin:1.5rem 0 0;display:flex}.jump a{border:1px solid var(--rule);background:var(--surface);color:var(--text);border-radius:999px;padding:.4rem .9rem;font-size:.9rem;text-decoration:none;transition:border-color .2s,color .2s,transform .2s}.jump a:hover,.jump a:focus-visible{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.schedule{border-left:2px dashed var(--rule);margin:1rem 0 0;padding:0;list-style:none}.schedule li{margin:0;padding:0 0 1.4rem 1.4rem;position:relative}.schedule li:before{content:"";background:var(--bg);border:2px solid var(--gold);border-radius:50%;width:14px;height:14px;position:absolute;top:.4rem;left:-8px}.schedule li.highlight:before{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 5px color-mix(in srgb, var(--accent) 20%, transparent);animation:2.4s ease-in-out infinite pulse}@keyframes pulse{50%{box-shadow:0 0 0 9px color-mix(in srgb, var(--accent) 0%, transparent)}}.schedule p{margin:0}.when{flex-wrap:wrap;gap:0 .6rem;font-size:.95rem;display:flex}.day{font-weight:700}.time{color:var(--muted)}.highlight .what{color:var(--accent);font-weight:600}.place{background:var(--surface);border:1px solid var(--rule);color:var(--text);border-radius:1rem;grid-template-columns:1fr auto;align-items:center;gap:.1rem .75rem;margin:1rem 0;padding:.85rem 1rem;text-decoration:none;transition:border-color .2s,transform .2s,box-shadow .2s;display:grid}.place:hover,.place:focus-visible{border-color:var(--spring);box-shadow:0 8px 24px color-mix(in srgb, var(--spring) 18%, transparent);transform:translateY(-2px)}.place-name{grid-column:1;font-weight:600}.place-addr{color:var(--muted);grid-column:1;font-size:.95rem}.place-go{background:color-mix(in srgb, var(--spring) 14%, transparent);color:var(--spring);white-space:nowrap;border-radius:999px;grid-area:1/2/span 2;align-items:center;gap:.35rem;padding:.4rem .75rem;font-size:.8125rem;font-weight:700;display:inline-flex}.place-go:before{content:"";background:currentColor;border-radius:50% 50% 50% 0;width:.7rem;height:.7rem;transform:rotate(-45deg)}.note{border-left:3px solid var(--gold);background:color-mix(in srgb, var(--gold) 10%, transparent);border-radius:0 .75rem .75rem 0;margin:1.25rem 0 0;padding:.85rem 1rem}.checklist{padding:0;list-style:none}.checklist li{cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:.5rem;padding:.35rem 0 .35rem 2rem;position:relative}.checklist li:focus-visible{outline:2px dashed var(--gold);outline-offset:2px}.checklist li:before{content:"";border:2px solid var(--gold);border-radius:.35rem;width:1.15rem;height:1.15rem;transition:background .2s;position:absolute;top:.62rem;left:0}.checklist li:after{content:"";border:solid var(--accent-ink);border-width:0 2px 2px 0;width:.35rem;height:.65rem;transition:transform .2s cubic-bezier(.2,1.6,.4,1);position:absolute;top:.78rem;left:.4rem;transform:rotate(45deg)scale(0)}.checklist li.done:before{background:var(--gold)}.checklist li.done:after{transform:rotate(45deg)scale(1)}.checklist li.done{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--gold)}.signoff{font:400 clamp(1.75rem, 7vw, 2.4rem)/1.2 var(--serif);text-align:center;background:linear-gradient(100deg, var(--accent), var(--gold), var(--accent));color:#0000;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;margin:3.5rem 0 0;animation:5s linear infinite shimmer}.foot{border-top:1px solid var(--rule);color:var(--muted);text-align:center;padding-top:1.5rem;padding-bottom:3rem;font-size:.875rem}.sec-head{align-items:center;gap:1rem;margin:3.5rem 0 1rem;display:flex}.sec-head h2,.sec-head h3{margin:0}.sec-head h3{font-size:1.125rem}.thumb{object-fit:cover;background:var(--rule);width:84px;height:84px;box-shadow:0 6px 18px #2a1d172e, 0 0 0 3px var(--surface);border-radius:1.25rem;flex:none;transition:transform .3s cubic-bezier(.2,1.6,.4,1);transform:rotate(-3deg)}.sec-head:nth-of-type(2n) .thumb{transform:rotate(3deg)}.sec-head h3+*{margin-top:0}.sec-head:has(h3){margin-top:2rem}.sec-head:has(h3) .thumb{border-radius:1rem;width:64px;height:64px}.sec-head:hover .thumb{transform:rotate(0)scale(1.06)}.schedule li{grid-template-columns:52px 1fr;align-items:center;column-gap:.85rem;display:grid}.sthumb{object-fit:cover;background:var(--rule);border-radius:.85rem;grid-row:1/span 2;width:52px;height:52px;box-shadow:0 3px 10px #2a1d1726}.schedule li.highlight .sthumb{box-shadow:0 0 0 2px var(--accent), 0 3px 10px #2a1d1726}.schedule .when,.schedule .what{grid-column:2}.schedule li:before{top:1.1rem}.note.share{border-left-color:var(--spring);background:color-mix(in srgb, var(--spring) 10%, transparent)}.reveal{opacity:0;transition:opacity .7s,transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s);transform:translateY(22px)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.shooting{display:none}}
