:root{--ink:#14100d;--ink-2:#1d1713;--maple:#c8873f;--brass:#e3a94f;--cream:#f3e7d3;--oxblood:#7a2230;--teal:#2f7d73;--line:rgba(243,231,211,.14);--f-display:"Unbounded", system-ui, sans-serif;--f-text:"Golos Text", system-ui, -apple-system, sans-serif;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:env(safe-area-inset-top,0px);background:var(--ink)}body{margin:0;background:var(--ink);color:var(--cream);font-family:var(--f-text);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}img,svg{max-width:100%}a{color:inherit}.grain{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:60;opacity:.16;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='160' height='160' filter='url(%23n)' opacity='.55'/></svg>")}.wrap{width:min(1080px,92vw);margin-inline:auto}.hero{position:relative;overflow:hidden;padding:clamp(28px,6vw,64px) 0 0;background:radial-gradient(120% 70% at 50% 0%,rgba(227,169,79,.16),transparent 60%),linear-gradient(180deg,#1a1410 0%,var(--ink) 70%)}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:linear-gradient(180deg,transparent 60%,var(--ink) 100%)}.banner{display:flex;align-items:center;justify-content:space-between;gap:14px;font-family:var(--f-display);font-size:clamp(9px,2.4vw,12px);letter-spacing:.24em;color:#f3e7d38c;text-transform:uppercase}.banner span{white-space:nowrap}.banner .rule{height:1px;flex:1;background:var(--line)}.hero-copy{position:relative;z-index:2;text-align:center;padding-top:clamp(22px,5vw,44px)}.kicker{font-family:var(--f-text);font-weight:500;color:var(--brass);letter-spacing:.06em;font-size:clamp(13px,3.4vw,16px);margin:0 0 10px}.name{font-family:var(--f-display);font-weight:800;font-size:clamp(46px,13vw,140px);line-height:.86;letter-spacing:-.03em;margin:0;color:var(--cream);text-shadow:0 10px 40px rgba(0,0,0,.55)}.name .yr{display:block;font-size:.28em;letter-spacing:.32em;font-weight:400;color:var(--maple);margin-top:18px}.lede{max-width:34ch;margin:22px auto 0;color:#f3e7d3b8;font-size:clamp(15px,3.6vw,18px)}.reveal{opacity:0;transform:translateY(14px);animation:rise .9s cubic-bezier(.22,.9,.3,1) forwards}@keyframes rise{to{opacity:1;transform:none}}.scene{position:relative;z-index:1;margin-top:clamp(-6px,-1vw,0px)}.scene svg{display:block;width:100%;height:auto}.ball{animation:roll 2.1s cubic-bezier(.5,.02,.42,1) .35s forwards;transform-box:fill-box;transform-origin:center}@keyframes roll{0%{transform:translateY(300px) scale(1.25) rotate(0);opacity:0}12%{opacity:1}70%{transform:translate(6px,40px) scale(.62) rotate(520deg)}to{transform:translate(8px,-6px) scale(.5) rotate(700deg);opacity:0}}.pin{transform-box:fill-box;transform-origin:50% 92%;animation:strike .9s cubic-bezier(.3,.7,.3,1) 2.25s forwards}@keyframes strike{0%{transform:none}to{transform:translate(var(--tx),var(--ty)) rotate(var(--rot));opacity:0}}.spark{opacity:0;animation:spark .7s ease-out 2.3s forwards;transform-box:fill-box;transform-origin:center}@keyframes spark{0%{opacity:.9;transform:scale(.2)}to{opacity:0;transform:scale(2.4)}}.scroll-hint{position:relative;z-index:3;text-align:center;padding:6px 0 30px;font-size:12px;letter-spacing:.2em;color:#f3e7d36b;font-family:var(--f-display)}section{padding:clamp(52px,9vw,110px) 0}.eyebrow{font-family:var(--f-display);font-size:12px;letter-spacing:.26em;color:var(--maple);margin:0 0 14px}h2{font-family:var(--f-display);font-weight:600;letter-spacing:-.02em;font-size:clamp(26px,6vw,46px);line-height:1.08;margin:0 0 22px}p.body{max-width:58ch;color:#f3e7d3c7;margin:0 0 16px}.invite{border-top:1px solid var(--line);background:linear-gradient(180deg,#171310,var(--ink))}.invite-grid{display:grid;gap:clamp(24px,5vw,56px);grid-template-columns:1fr}@media (min-width:860px){.invite-grid{grid-template-columns:1.15fr .85fr;align-items:center}}.sign{font-family:var(--f-display);color:var(--brass);font-size:18px;margin-top:26px}.card-art{border:1px solid var(--line);border-radius:6px;padding:18px;background:repeating-linear-gradient(90deg,rgba(200,135,63,.07) 0 2px,transparent 2px 9px),linear-gradient(160deg,#241b15,#16110e)}.frames{display:grid;grid-template-columns:1fr;border:1px solid var(--line);border-radius:6px;overflow:hidden}@media (min-width:760px){.frames{grid-template-columns:repeat(3,1fr)}}.frame{padding:22px 20px 24px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,#1b1511,#161210);position:relative}@media (min-width:760px){.frame{border-right:1px solid var(--line)}.frame:nth-child(3n){border-right:0}.frame:nth-child(n+4){border-bottom:0}}.frame:last-child{border-bottom:0}.frame-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.frame-no{font-family:var(--f-display);font-size:11px;letter-spacing:.22em;color:#f3e7d366}.mark{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--line);border-radius:3px;font-family:var(--f-display);font-size:14px;color:var(--brass);opacity:0;transform:scale(.7)}.frame.in .mark{opacity:1;transform:none;transition:opacity .45s ease,transform .45s cubic-bezier(.2,1.2,.4,1)}.frame .time{font-family:var(--f-display);font-size:clamp(22px,5vw,28px);color:var(--cream);letter-spacing:-.02em}.frame .what{color:#f3e7d3b8;margin-top:6px;font-size:15px}.place{background:linear-gradient(180deg,#191410,#14100d);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.facts{display:grid;gap:2px;grid-template-columns:1fr;background:var(--line);border:1px solid var(--line);border-radius:6px;overflow:hidden}@media (min-width:700px){.facts{grid-template-columns:1fr 1fr}}.fact{background:#181310;padding:22px}.fact dt{font-size:12px;letter-spacing:.2em;color:var(--maple);font-family:var(--f-display);margin-bottom:8px}.fact dd{margin:0;font-size:17px;color:#f3e7d3e6}.fact dd small{display:block;color:#f3e7d38c;font-size:14px;margin-top:4px}.tiles{display:grid;gap:14px;grid-template-columns:repeat(2,1fr);margin-top:26px}@media (min-width:760px){.tiles{grid-template-columns:repeat(4,1fr)}}.tile{border:1px solid var(--line);border-radius:6px;padding:16px;background:linear-gradient(180deg,#1d1713,#161210);text-align:center}.tile svg{width:100%;height:auto;display:block}.tile b{display:block;font-weight:500;font-size:14px;margin-top:10px;color:#f3e7d3d9}.count{display:flex;flex-wrap:wrap;gap:10px;margin-top:8px}.cell{flex:1 1 70px;border:1px solid var(--line);border-radius:5px;padding:14px 8px;text-align:center;background:linear-gradient(180deg,#1c1612,#141110)}.cell b{display:block;font-family:var(--f-display);font-size:clamp(24px,7vw,38px);font-weight:600;letter-spacing:-.02em;color:var(--brass)}.cell span{font-size:11px;letter-spacing:.18em;color:#f3e7d373;font-family:var(--f-display)}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}.btn{display:inline-flex;align-items:center;gap:10px;text-decoration:none;padding:14px 22px;border-radius:4px;font-weight:500;font-size:16px;border:1px solid var(--brass);color:var(--ink);background:var(--brass);transition:transform .18s ease,background .18s ease,color .18s ease}.btn:hover{transform:translateY(-2px);background:#f0bc68}.btn.ghost{background:transparent;color:var(--cream);border-color:var(--line)}.btn.ghost:hover{background:#f3e7d30f;border-color:var(--brass)}.btn:focus-visible,a:focus-visible{outline:2px solid var(--teal);outline-offset:3px}.rsvp{text-align:center;background:radial-gradient(90% 100% at 50% 100%,rgba(122,34,48,.35),transparent 70%)}.rsvp .actions{justify-content:center}.note{color:#f3e7d380;font-size:14px;margin-top:18px}footer{border-top:1px solid var(--line);padding:30px 0 40px;text-align:center;color:#f3e7d366;font-size:13px}footer .x{font-family:var(--f-display);color:var(--maple);letter-spacing:.3em;font-size:12px}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}.reveal,.mark{opacity:1;transform:none}.ball,.spark{display:none}}
