@charset "UTF-8";
:root{color-scheme:dark}.so-html{scroll-behavior:smooth;background:#090c18}.so-body{--so-bg:#090c18;--so-panel:#11162a;--so-panel2:#171b36;--so-ink:#f6f7ff;--so-muted:#aeb4cf;--so-violet:#9a86ff;--so-cyan:#75dce8;--so-line:rgba(210,215,255,.18);--so-pad:clamp(20px,4vw,72px);margin:0;background:var(--so-bg);color:var(--so-ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;overflow-x:clip;min-height:100vh}.so-body *{box-sizing:border-box}.so-body a{color:inherit}.so-body button,.so-body input,.so-body select,.so-body textarea{font:inherit}.so-body button{color:inherit}.so-is-locked{overflow:hidden}.so-field{position:fixed;inset:0;z-index:-10;pointer-events:none;overflow:hidden}.so-field>img{position:absolute;inset:-4%;width:108%;height:108%;object-fit:cover;opacity:.95}.so-field:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 0,rgba(111,88,255,.12),transparent 38%),linear-gradient(to bottom,transparent,rgba(7,9,18,.48) 65%,#080b16)}.so-field__particles{position:absolute;inset:0;background-image:radial-gradient(circle at 16% 22%,rgba(255,255,255,.65) 0 1px,transparent 1.5px),radial-gradient(circle at 77% 28%,rgba(118,220,232,.45) 0 1px,transparent 1.5px),radial-gradient(circle at 38% 73%,rgba(161,139,255,.5) 0 1px,transparent 1.5px);background-size:190px 210px,260px 230px,310px 290px;opacity:.35}.so-opening{position:fixed;z-index:1000;inset:0;min-height:100dvh;display:grid;place-items:center;overflow:hidden;background:#090c18;transition:opacity .8s ease,visibility .8s ease}.so-opening.so-opening--hide{opacity:0;visibility:hidden}.so-opening__cover{position:absolute;inset:0;background-image:linear-gradient(180deg,rgba(7,9,18,.2),rgba(7,9,18,.76)),var(--so-cover,radial-gradient(circle at 50% 35%,#392e69,#090c18 65%));background-position:center;background-size:cover;filter:saturate(.78) brightness(.62);transform:scale(1.08)}.so-opening__constellation{position:absolute;width:min(1000px,98vw);height:min(1000px,98vw);object-fit:contain;opacity:.95;animation:so-drift 18s linear infinite}.so-opening__scan{position:absolute;inset:-30% 0;background:linear-gradient(180deg,transparent 42%,rgba(130,220,255,.13) 50%,transparent 58%);animation:so-scan 5.5s ease-in-out infinite}.so-opening__meta{position:absolute;left:clamp(18px,4vw,60px);right:clamp(18px,4vw,60px);top:max(24px,env(safe-area-inset-top));display:flex;align-items:center;gap:14px;font-size:10px;letter-spacing:.24em;color:#d9dbef;text-transform:uppercase}.so-opening__meta i{height:1px;flex:1;background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(159,143,255,.5),rgba(255,255,255,.08))}.so-opening__meta b{font-weight:600;color:var(--so-cyan)}.so-opening__core{position:relative;width:min(620px,90vw);padding:52px 36px 42px;text-align:center;border:1px solid rgba(211,210,255,.18);border-radius:50%;background:radial-gradient(circle at 50% 40%,rgba(119,98,220,.2),rgba(16,18,38,.4) 60%,rgba(9,12,24,.12));backdrop-filter:blur(12px);box-shadow:0 0 90px rgba(113,86,255,.13)}.so-opening__core:before,.so-opening__core:after{content:"";position:absolute;inset:-22px;border:1px solid rgba(124,218,232,.14);border-radius:50%;transform:rotate(12deg)}.so-opening__core:after{inset:-48px;transform:rotate(-24deg);border-color:rgba(157,135,255,.13)}.so-opening__avatars{display:flex;justify-content:center;margin-bottom:18px}.so-opening__avatars figure{width:58px;height:58px;border-radius:50%;margin:0 -5px;overflow:hidden;border:2px solid #15192c;background:#272a44;display:grid;place-items:center;font-weight:700}.so-opening__avatars figure:nth-child(2){transform:translateY(8px)}.so-opening__avatars img{width:100%;height:100%;object-fit:cover}.so-opening__eyebrow{margin:0 0 8px;color:var(--so-cyan);font-size:11px;letter-spacing:.22em;text-transform:uppercase}.so-opening h1{font-family:Georgia,"Times New Roman",serif;font-size:clamp(44px,8vw,82px);font-weight:400;line-height:.95;margin:0;letter-spacing:-.045em}.so-opening__pair{display:flex;justify-content:center;align-items:center;gap:12px;margin:22px 0 12px;font-size:13px;text-transform:uppercase;letter-spacing:.16em}.so-opening__pair span{color:var(--so-violet)}.so-opening__copy{max-width:420px;margin:0 auto 22px;color:var(--so-muted);font-size:14px;line-height:1.7}.so-open{position:relative;z-index:2;display:inline-flex;align-items:center;gap:20px;min-height:52px;border:1px solid rgba(255,255,255,.18);border-radius:999px;background:linear-gradient(135deg,rgba(153,134,255,.28),rgba(89,205,222,.14));padding:0 14px 0 24px;cursor:pointer;box-shadow:0 12px 44px rgba(0,0,0,.25);transition:transform .25s ease,border-color .25s ease}.so-open:hover{transform:translateY(-2px);border-color:rgba(174,160,255,.65)}.so-open b{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#f1efff;color:#11152a}.so-opening__date{margin:18px 0 0;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#c6c9de}.so-opening__signal{position:absolute;right:7vw;bottom:8vh;width:90px;height:90px}.so-opening__signal span{position:absolute;inset:0;border:1px solid rgba(117,220,232,.24);border-radius:50%;animation:so-ping 2.8s ease-out infinite}.so-opening__signal span:nth-child(2){animation-delay:.7s}.so-opening__signal span:nth-child(3){animation-delay:1.4s}.so-music{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));z-index:80;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.16);background:rgba(14,17,32,.76);backdrop-filter:blur(14px);display:grid;place-items:center;cursor:pointer}.so-music img{width:20px;height:20px}.so-music span{position:absolute;inset:-5px;border:1px solid rgba(121,219,233,.2);border-radius:50%}.so-music.so-playing span{animation:so-ping 2.2s ease-out infinite}.so-radial-nav{position:fixed;z-index:70;left:24px;top:50%;width:150px;height:150px;transform:translateY(-50%);pointer-events:none}.so-radial-nav>img{position:absolute;inset:0;width:100%;height:100%;opacity:.7}.so-radial-nav__core{position:absolute;inset:50%;width:46px;height:46px;margin:-23px;border-radius:50%;display:grid;place-items:center;background:#12162b;border:1px solid rgba(255,255,255,.16);font-size:9px;line-height:1}.so-radial-nav__core b{font-size:12px}.so-radial-nav__core small{color:var(--so-muted);font-size:6px}.so-radial-nav nav{position:absolute;inset:0}.so-radial-nav nav button{--a:calc(var(--so-index) * 34deg - 80deg);position:absolute;left:50%;top:50%;width:26px;height:26px;margin:-13px;border:0;background:transparent;transform:rotate(var(--a)) translateX(61px) rotate(calc(-1 * var(--a)));pointer-events:auto;cursor:pointer;padding:0}.so-radial-nav nav button i{position:absolute;inset:7px;border-radius:50%;background:#777a94;transition:.25s}.so-radial-nav nav button span{position:absolute;left:30px;top:7px;font-size:7px;opacity:0;transition:.25s}.so-radial-nav nav button:hover i,.so-radial-nav nav button.so-active i{background:var(--so-cyan);box-shadow:0 0 14px rgba(117,220,232,.7)}.so-radial-nav nav button:hover span{opacity:1}.so-radial-nav__progress{position:absolute;inset:-7px;border-radius:50%;border:1px solid rgba(255,255,255,.08);overflow:hidden}.so-radial-nav__progress i{position:absolute;left:0;bottom:0;width:100%;height:var(--so-progress,0%);background:linear-gradient(0deg,rgba(120,220,233,.13),transparent)}.so-main{position:relative;width:min(1480px,100%);margin:0 auto;padding-left:190px}.so-scene{position:relative;min-height:100vh;min-height:100dvh;padding:clamp(74px,9vw,132px) var(--so-pad);display:flex;flex-direction:column;justify-content:center;border-bottom:1px solid rgba(255,255,255,.045);overflow:clip}.so-scene__label{position:absolute;left:var(--so-pad);top:34px;display:flex;align-items:center;gap:12px;color:#aeb2c8;font-size:9px;letter-spacing:.21em;text-transform:uppercase}.so-scene__label span{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;border:1px solid rgba(157,138,255,.35);color:#ddd7ff}.so-scene__label b{font-weight:500}.so-reveal{opacity:0;transform:translate3d(0,28px,0) scale(.985);transition:opacity .8s cubic-bezier(.2,.75,.22,1),transform .8s cubic-bezier(.2,.75,.22,1)}.so-reveal.so-in{opacity:1;transform:translate3d(0,0,0) scale(1)}.so-couple__graph{position:relative;min-height:720px;display:grid;place-items:center;isolation:isolate}.so-couple__rings{position:absolute;width:min(690px,62vw);opacity:.72;animation:so-orbit 28s linear infinite;pointer-events:none}.so-couple__connection{position:absolute;width:min(70vw,920px);height:1px;background:linear-gradient(90deg,transparent,var(--so-violet),var(--so-cyan),transparent);opacity:.28}.so-person{position:absolute;width:min(330px,28vw);z-index:3}.so-person figure{position:relative;width:170px;height:170px;margin:0 0 18px;border-radius:50%;background:#1c2036;display:grid;place-items:center;font:700 42px/1 Georgia;overflow:visible}.so-person__photo{position:absolute;inset:10px;width:calc(100% - 20px);height:calc(100% - 20px);border-radius:50%;object-fit:cover}.so-person__ring{position:absolute;inset:-13px;width:calc(100% + 26px);height:calc(100% + 26px);animation:so-orbit 16s linear infinite}.so-person small,.so-couple__hub small,.so-section-head small{color:var(--so-cyan);font-size:9px;letter-spacing:.2em;text-transform:uppercase}.so-person h2{font:400 clamp(25px,2.5vw,42px)/1.05 Georgia,serif;letter-spacing:-.03em;margin:8px 0}.so-person p{color:var(--so-muted);font-size:12px;line-height:1.6;margin:0}.so-person--bride{left:3%;top:18%}.so-person--groom{right:2%;bottom:14%;text-align:right}.so-person--groom figure{margin-left:auto}.so-couple__hub{z-index:2;width:min(500px,40vw);text-align:center;padding:44px 36px;border-radius:50%;background:radial-gradient(circle,rgba(123,102,230,.19),rgba(15,18,34,.76) 63%,transparent 65%);border:1px solid rgba(255,255,255,.1);box-shadow:0 0 90px rgba(115,90,255,.1)}.so-couple__hub h1{font:400 clamp(42px,6vw,80px)/.85 Georgia,serif;letter-spacing:-.055em;margin:12px 0 18px}.so-couple__hub h1 em{display:block;color:var(--so-violet);font-style:italic;font-size:.55em;margin:10px}.so-couple__hub p{color:#bec3d8;line-height:1.7;font-size:13px;max-width:340px;margin:0 auto 18px}.so-couple__hub>span{display:inline-flex;align-items:center;gap:8px;font-size:9px;letter-spacing:.15em;text-transform:uppercase;color:#b8c4d8}.so-couple__hub>span i{width:6px;height:6px;border-radius:50%;background:var(--so-cyan);box-shadow:0 0 10px var(--so-cyan);animation:so-pulse 1.8s ease-in-out infinite}.so-couple__satellites span{position:absolute;width:12px;height:12px;border:2px solid #ada0ff;border-radius:50%;box-shadow:0 0 20px rgba(155,137,255,.4)}.so-couple__satellites span:nth-child(1){left:22%;top:12%;animation:so-float 5s ease-in-out infinite}.so-couple__satellites span:nth-child(2){right:18%;top:26%;animation:so-float 6s ease-in-out -1s infinite}.so-couple__satellites span:nth-child(3){left:29%;bottom:10%;animation:so-float 4.5s ease-in-out -.8s infinite}.so-couple__satellites span:nth-child(4){right:31%;bottom:18%;animation:so-float 5.6s ease-in-out -2s infinite}.so-event__panel{position:relative;width:min(980px,90%);margin:auto;padding:56px 64px}.so-event__panel>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.so-event__panel header,.so-event__panel h2,.so-event__route{position:relative}.so-event__panel header{display:flex;justify-content:space-between;gap:20px;font-size:9px;letter-spacing:.17em;text-transform:uppercase;color:#cad0e6}.so-event__panel header span{display:flex;align-items:center;gap:8px}.so-event__panel header i{width:6px;height:6px;border-radius:50%;background:var(--so-cyan);box-shadow:0 0 12px var(--so-cyan)}.so-event__panel h2{font:400 clamp(42px,6vw,86px)/.95 Georgia,serif;letter-spacing:-.055em;margin:52px 0 58px;max-width:720px}.so-event__route{display:grid;grid-template-columns:1fr 140px 1fr;align-items:center}.so-event__route article small{color:var(--so-cyan);font-size:9px;letter-spacing:.16em}.so-event__route article strong{display:block;font:400 clamp(22px,2.4vw,34px)/1.1 Georgia,serif;margin:12px 0}.so-event__route article p,.so-event__route article span{color:var(--so-muted);font-size:12px}.so-event__route article:last-child{text-align:right}.so-event__beam{height:60px;display:flex;align-items:center;justify-content:center;gap:16px}.so-event__beam i{width:8px;height:8px;border-radius:50%;background:#777a93;animation:so-propagate 1.8s ease-in-out infinite}.so-event__beam i:nth-child(2){animation-delay:.3s}.so-event__beam i:nth-child(3){animation-delay:.6s}.so-countdown{background:radial-gradient(circle at 50% 52%,rgba(90,72,182,.11),transparent 40%)}.so-countdown__core{position:relative;width:min(980px,94%);margin:auto;text-align:center;padding:72px 30px}.so-countdown__core>img{position:absolute;left:10%;right:10%;top:50%;width:80%;opacity:.23;transform:translateY(-50%)}.so-countdown__pulse{position:absolute;inset:50% auto auto 50%;width:160px;height:160px;transform:translate(-50%,-50%)}.so-countdown__pulse i{position:absolute;inset:0;border:1px solid rgba(133,220,234,.22);border-radius:50%;animation:so-ping 3s ease-out infinite}.so-countdown__pulse i:nth-child(2){animation-delay:1s}.so-countdown__pulse i:nth-child(3){animation-delay:2s}.so-countdown__core>p{font-size:10px;letter-spacing:.26em;text-transform:uppercase;color:var(--so-cyan);margin:0 0 28px}.so-countdown__digits{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.so-countdown__digits b{font:400 clamp(48px,8vw,104px)/.9 Georgia,serif;letter-spacing:-.06em}.so-countdown__digits span{display:block;font:500 8px/1.3 Inter,sans-serif;letter-spacing:.18em;margin-top:12px;color:#afb5cb}.so-countdown__core>small{display:block;margin-top:28px;color:#c4c8db}.so-section-head{max-width:780px;margin-bottom:56px}.so-section-head h2{font:400 clamp(46px,6.2vw,88px)/.92 Georgia,serif;letter-spacing:-.055em;margin:12px 0 18px}.so-section-head p{max-width:520px;color:var(--so-muted);line-height:1.75;font-size:14px}.so-section-head--center{text-align:center;margin-left:auto;margin-right:auto}.so-section-head--center p{margin-left:auto;margin-right:auto}.so-story__network{position:relative;max-width:1100px;margin:0 auto;width:100%;padding:10px 0 80px}.so-story__spine{position:absolute;left:50%;top:0;bottom:0;width:1px;background:linear-gradient(transparent,rgba(155,136,255,.55),rgba(110,219,234,.45),transparent)}.so-memory{position:relative;width:44%;margin-bottom:54px;display:grid;grid-template-columns:50px 1fr;gap:18px}.so-memory:nth-child(even){margin-left:auto;grid-template-columns:1fr 50px;text-align:right}.so-memory:nth-child(even) .so-memory__node{grid-column:2}.so-memory:nth-child(even)>div{grid-row:1;grid-column:1}.so-memory__node{width:48px;height:48px;border-radius:50%;border:1px solid rgba(165,149,255,.4);background:#12172b;display:grid;place-items:center;font-size:9px;letter-spacing:.1em;position:relative}.so-memory__node i{position:absolute;inset:-8px;border:1px dashed rgba(114,217,232,.24);border-radius:50%}.so-memory>div{padding:22px 24px;border:1px solid rgba(255,255,255,.1);border-radius:22px;background:linear-gradient(145deg,rgba(25,29,54,.82),rgba(12,16,30,.68));box-shadow:0 24px 70px rgba(0,0,0,.16)}.so-memory small{font-size:9px;letter-spacing:.18em;color:var(--so-cyan)}.so-memory h3{font:400 30px/1.05 Georgia,serif;margin:10px 0 12px}.so-memory p{color:var(--so-muted);font-size:13px;line-height:1.7;margin:0}.so-memory>div>span{display:block;margin-top:16px;font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:#8f96ae}.so-gallery__orbit{position:relative;min-height:820px;max-width:1200px;margin:auto;isolation:isolate}.so-gallery__axis{position:absolute;inset:50% auto auto 50%;width:min(820px,70vw);height:min(520px,44vw);transform:translate(-50%,-50%);border:1px solid rgba(155,139,255,.14);border-radius:50%}.so-gallery__axis:before,.so-gallery__axis:after{content:"";position:absolute;inset:11%;border:1px solid rgba(117,220,232,.12);border-radius:50%;transform:rotate(28deg)}.so-gallery__axis:after{inset:24%;transform:rotate(-38deg)}.so-gallery__axis span{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--so-cyan);box-shadow:0 0 14px var(--so-cyan)}.so-gallery__axis span:nth-child(1){left:10%;top:24%}.so-gallery__axis span:nth-child(2){right:18%;top:10%}.so-gallery__axis span:nth-child(3){right:8%;bottom:24%}.so-media-node{position:absolute;width:220px;height:290px;padding:0;border:0;background:transparent;cursor:pointer;transform:translate3d(var(--mx,0),var(--my,0),0) rotate(var(--rot,0deg));transition:transform .35s ease,filter .35s ease,opacity .8s ease}.so-media-node:hover{filter:brightness(1.09);z-index:9;--mx:0px;--my:-8px}.so-media-node__photo{position:absolute;inset:14px;width:calc(100% - 28px);height:calc(100% - 28px);object-fit:cover;border-radius:26px}.so-media-node__frame{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.so-media-node>span{position:absolute;left:24px;right:24px;bottom:25px;display:flex;justify-content:space-between;font-size:7px;letter-spacing:.14em;text-transform:uppercase;text-shadow:0 2px 8px #000}.so-media-node--1{left:5%;top:9%;--rot:-7deg}.so-media-node--2{left:32%;top:1%;--rot:5deg}.so-media-node--3{right:12%;top:13%;--rot:-2deg}.so-media-node--4{left:15%;bottom:8%;--rot:5deg}.so-media-node--5{left:45%;bottom:1%;--rot:-6deg}.so-media-node--6{right:2%;bottom:12%;--rot:7deg}.so-video-link{display:flex;width:max-content;gap:16px;align-items:center;margin:10px auto 0;padding:12px 18px;border:1px solid rgba(255,255,255,.12);border-radius:999px;text-decoration:none;font-size:10px;letter-spacing:.12em;text-transform:uppercase}.so-empty{max-width:720px;margin:40px auto;padding:40px;border:1px dashed rgba(255,255,255,.18);border-radius:28px;text-align:center;color:var(--so-muted)}.so-location__card{position:relative;max-width:940px;min-height:520px;margin:auto;padding:92px 86px 72px;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}.so-location__frame,.so-location__grid{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.so-location__grid{opacity:.45}.so-location__signal{position:absolute;left:76px;top:62px;display:flex;align-items:center;gap:12px;color:var(--so-cyan);font-size:9px;letter-spacing:.18em}.so-location__signal img{width:28px;height:28px}.so-location__card>small{position:relative;color:#8f95ad;font-size:9px;letter-spacing:.18em}.so-location__card h2{position:relative;font:400 clamp(42px,6vw,76px)/.95 Georgia,serif;letter-spacing:-.05em;margin:10px 0 15px;max-width:650px}.so-location__card p{position:relative;color:var(--so-muted);line-height:1.7;max-width:620px}.so-location__card a{position:relative;display:flex;width:max-content;gap:14px;margin-top:22px;padding:12px 18px;border-radius:999px;border:1px solid rgba(255,255,255,.16);text-decoration:none;font-size:10px;letter-spacing:.12em;text-transform:uppercase;background:rgba(9,12,24,.36)}.so-rsvp__card{position:relative;max-width:900px;margin:auto;padding:64px 70px}.so-card-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.so-rsvp__card>*:not(.so-card-bg){position:relative}.so-rsvp__card header span{display:flex;align-items:center;gap:8px;font-size:9px;letter-spacing:.18em;color:var(--so-cyan)}.so-rsvp__card header span i{width:6px;height:6px;border-radius:50%;background:var(--so-cyan)}.so-rsvp__card header h2{font:400 clamp(42px,5vw,64px)/1 Georgia,serif;margin:12px 0}.so-rsvp__card header p{color:var(--so-muted);margin-bottom:34px}.so-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.so-rsvp__card label{display:grid;gap:8px;color:#afb4c9;font-size:10px;letter-spacing:.08em}.so-rsvp__card input,.so-rsvp__card select,.so-rsvp__card textarea,.so-wish-form textarea{width:100%;border:1px solid rgba(255,255,255,.12);background:rgba(7,10,20,.62);color:#f8f8ff;border-radius:14px;padding:14px 15px;outline:none;transition:border-color .2s}.so-rsvp__card input:focus,.so-rsvp__card select:focus,.so-rsvp__card textarea:focus,.so-wish-form textarea:focus{border-color:rgba(117,220,232,.7)}.so-rsvp__card fieldset{border:0;padding:0;margin:20px 0;display:flex;flex-wrap:wrap;gap:9px}.so-rsvp__card legend{font-size:10px;color:#adb2c8;margin-bottom:10px}.so-rsvp__card fieldset label{display:block}.so-rsvp__card fieldset input{position:absolute;opacity:0;pointer-events:none}.so-rsvp__card fieldset span{display:block;border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:11px 15px;cursor:pointer}.so-rsvp__card fieldset input:checked+span{border-color:rgba(117,220,232,.6);background:rgba(117,220,232,.1);color:#dcfbff}.so-rsvp__card>label{margin-top:12px}.so-rsvp__card>button{margin-top:20px;display:flex;align-items:center;justify-content:center;gap:12px;min-height:50px;border:0;border-radius:999px;background:linear-gradient(135deg,#8e78ff,#5ebfd1);color:#090b17;padding:0 24px;font-weight:700;cursor:pointer}.so-rsvp__card>button img{width:18px}.so-form-status{min-height:18px;color:#9edee8;font-size:11px;margin:12px 0 0}.so-gift__network{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;max-width:1000px;margin:0 auto}.so-gift-node{position:relative;min-height:300px;padding:54px 52px}.so-gift-node>*:not(.so-card-bg){position:relative}.so-gift-node small{font-size:9px;letter-spacing:.17em;color:var(--so-cyan)}.so-gift-node h3{font:400 38px/1 Georgia,serif;margin:18px 0 10px}.so-gift-node strong{display:block;font-size:20px;letter-spacing:.08em}.so-gift-node p{color:var(--so-muted);line-height:1.6}.so-gift-node button{display:flex;align-items:center;gap:10px;margin-top:26px;padding:10px 14px;border:1px solid rgba(255,255,255,.13);border-radius:999px;background:rgba(7,10,20,.5);cursor:pointer}.so-gift-node button img{width:16px}.so-gift-node button b{display:none;color:#99f0df}.so-gift-node button.so-copied span{display:none}.so-gift-node button.so-copied b{display:inline}.so-gift-node--address{border:1px solid rgba(255,255,255,.1);border-radius:42px;background:rgba(18,21,40,.68)}.so-wishes__field{position:relative;max-width:1100px;margin:0 auto 38px;display:grid;grid-template-columns:repeat(12,1fr);gap:18px}.so-wish{display:flex;gap:14px;padding:18px 20px;border:1px solid rgba(255,255,255,.1);border-radius:24px;background:linear-gradient(145deg,rgba(27,31,58,.84),rgba(11,14,27,.72));box-shadow:0 22px 60px rgba(0,0,0,.13)}.so-wish:nth-child(4n+1){grid-column:1/7}.so-wish:nth-child(4n+2){grid-column:7/13}.so-wish:nth-child(4n+3){grid-column:2/8}.so-wish:nth-child(4n+4){grid-column:6/12}.so-wish>span{flex:0 0 38px;height:38px;border-radius:50%;display:grid;place-items:center;border:1px solid rgba(156,140,255,.4);background:#171b31;font-weight:700}.so-wish b{font-size:12px}.so-wish p{margin:6px 0;color:#d1d4e4;font-size:13px;line-height:1.55}.so-wish small{font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:#80869e}.so-wish-form{position:relative;max-width:720px;margin:0 auto;display:grid;grid-template-columns:1fr 52px;gap:10px}.so-wish-form button{border:0;border-radius:16px;background:linear-gradient(145deg,#927cff,#61c9d9);color:#0b0e1a;display:grid;place-items:center;cursor:pointer}.so-wish-form button img{width:20px}.so-wish-form .so-form-status{grid-column:1/-1}.so-closing{min-height:92vh}.so-closing__constellation{position:relative;text-align:center;max-width:780px;margin:auto;padding:100px 40px}.so-closing__constellation>img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.82;pointer-events:none}.so-closing__constellation>*:not(img){position:relative}.so-closing__constellation small{color:var(--so-cyan);font-size:9px;letter-spacing:.22em}.so-closing__constellation h2{font:400 clamp(56px,8vw,108px)/.82 Georgia,serif;letter-spacing:-.065em;margin:28px 0}.so-closing__constellation h2 span{display:block;color:var(--so-violet);font-style:italic;font-size:.55em;margin:14px}.so-closing__constellation p{max-width:430px;margin:0 auto 22px;color:var(--so-muted);line-height:1.75}.so-closing__constellation>b{font-size:11px;letter-spacing:.14em}.so-socials{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:24px}.so-socials a{padding:9px 13px;border:1px solid rgba(255,255,255,.12);border-radius:999px;text-decoration:none;font-size:9px;letter-spacing:.12em;text-transform:uppercase}.so-lightbox{position:fixed;z-index:2000;inset:0;background:rgba(3,5,12,.92);backdrop-filter:blur(18px);display:grid;place-items:center;padding:5vw}.so-lightbox[hidden]{display:none}.so-lightbox>img{max-width:min(1100px,92vw);max-height:84vh;object-fit:contain;border-radius:24px;box-shadow:0 35px 120px rgba(0,0,0,.5)}.so-lightbox button{position:absolute;right:24px;top:24px;width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.15);background:#15192e;display:grid;place-items:center;cursor:pointer}.so-lightbox button img{width:20px}.so-body.so-opened .so-main{animation:so-main-in .9s ease both}
@keyframes so-drift{to{transform:rotate(360deg)}}@keyframes so-orbit{to{transform:rotate(360deg)}}@keyframes so-scan{0%,100%{transform:translateY(-35%);opacity:.1}50%{transform:translateY(35%);opacity:.55}}@keyframes so-ping{0%{transform:scale(.3);opacity:.7}100%{transform:scale(1.35);opacity:0}}@keyframes so-pulse{50%{transform:scale(1.4);opacity:.45}}@keyframes so-float{50%{transform:translate3d(0,-12px,0)}}@keyframes so-propagate{0%,100%{transform:scale(.65);background:#70748c}50%{transform:scale(1.25);background:#7ce2eb;box-shadow:0 0 16px #7ce2eb}}@keyframes so-main-in{from{opacity:0;transform:scale(.985)}to{opacity:1;transform:none}}
@media(max-width:1100px){.so-main{padding-left:0}.so-radial-nav{left:14px;width:112px;height:112px;opacity:.72}.so-radial-nav nav button{transform:rotate(var(--a)) translateX(45px) rotate(calc(-1 * var(--a)))}.so-radial-nav__core{width:38px;height:38px;margin:-19px}.so-couple__graph{min-height:660px}.so-couple__rings{width:620px}.so-person{width:280px}.so-person--bride{left:0}.so-person--groom{right:0}.so-couple__hub{width:410px}.so-gallery__orbit{min-height:760px}.so-media-node{width:190px;height:255px}}
@media(max-width:768px){.so-radial-nav{left:50%;top:auto;bottom:max(10px,env(safe-area-inset-bottom));width:min(86vw,420px);height:54px;transform:translateX(-50%);border:1px solid rgba(255,255,255,.12);border-radius:999px;background:rgba(9,12,24,.82);backdrop-filter:blur(15px);padding:0 14px}.so-radial-nav>img,.so-radial-nav__core,.so-radial-nav__progress{display:none}.so-radial-nav nav{position:relative;height:100%;display:flex;align-items:center;justify-content:space-between}.so-radial-nav nav button{position:relative;left:auto;top:auto;margin:0;width:30px;height:30px;transform:none}.so-radial-nav nav button i{inset:10px}.so-radial-nav nav button span{display:none}.so-music{bottom:76px}.so-scene{min-height:auto;padding-top:100px;padding-bottom:110px}.so-couple__graph{min-height:760px;display:block}.so-couple__rings{width:560px;max-width:none;left:50%;top:48%;transform:translate(-50%,-50%);animation:none}.so-couple__hub{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)!important;width:86%;padding:35px 26px}.so-person{width:230px}.so-person figure{width:126px;height:126px}.so-person--bride{left:2%;top:4%}.so-person--groom{right:2%;bottom:13%}.so-event__panel{width:100%;padding:44px 30px}.so-event__panel h2{margin:38px 0}.so-event__route{grid-template-columns:1fr;gap:28px}.so-event__route article:last-child{text-align:left}.so-event__beam{height:22px;justify-content:flex-start;padding-left:4px}.so-countdown__core{padding:50px 8px}.so-countdown__digits{grid-template-columns:repeat(2,1fr);gap:26px 10px}.so-story__spine{left:23px}.so-memory,.so-memory:nth-child(even){width:100%;margin-left:0;grid-template-columns:48px 1fr;text-align:left}.so-memory:nth-child(even) .so-memory__node{grid-column:1}.so-memory:nth-child(even)>div{grid-row:1;grid-column:2}.so-gallery__orbit{display:flex;min-height:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;gap:16px;margin-left:calc(-1 * var(--so-pad));margin-right:calc(-1 * var(--so-pad));padding:24px var(--so-pad) 36px;scrollbar-width:none}.so-gallery__orbit::-webkit-scrollbar{display:none}.so-gallery__axis{display:none}.so-media-node{position:relative!important;left:auto!important;right:auto!important;top:auto!important;bottom:auto!important;flex:0 0 72vw;max-width:320px;height:430px;transform:rotate(var(--rot,0deg))!important;scroll-snap-align:center}.so-location__card{padding:80px 34px 50px;min-height:500px}.so-location__signal{left:34px;top:50px}.so-rsvp__card{padding:48px 28px}.so-form-grid{grid-template-columns:1fr}.so-gift__network{grid-template-columns:1fr}.so-wishes__field{display:grid;grid-template-columns:1fr}.so-wish,.so-wish:nth-child(n){grid-column:auto}.so-closing__constellation{padding:90px 20px}}
@media(max-width:480px){.so-opening__core{width:92vw;padding:42px 20px 34px;border-radius:42%}.so-opening__core:before{inset:-12px}.so-opening__core:after{inset:-28px}.so-opening__meta{font-size:8px;gap:8px}.so-opening h1{font-size:46px}.so-opening__copy{font-size:12px}.so-open{font-size:12px;gap:12px}.so-scene{padding-left:20px;padding-right:20px}.so-scene__label{left:20px}.so-couple__graph{min-height:760px}.so-couple__rings{width:500px}.so-person{width:188px}.so-person figure{width:108px;height:108px}.so-person h2{font-size:24px}.so-person p{font-size:10px}.so-couple__hub{width:94%}.so-couple__hub h1{font-size:48px}.so-event__panel{padding:42px 22px}.so-event__panel h2{font-size:48px}.so-countdown__digits b{font-size:50px}.so-section-head h2{font-size:48px}.so-memory>div{padding:19px}.so-memory h3{font-size:25px}.so-media-node{flex-basis:78vw;height:390px}.so-location__card{padding:78px 26px 46px}.so-location__signal{left:26px}.so-location__card h2{font-size:45px}.so-rsvp__card{padding:42px 20px}.so-rsvp__card fieldset{display:grid;grid-template-columns:1fr}.so-gift-node{padding:44px 30px}.so-wish-form{grid-template-columns:1fr 48px}.so-closing__constellation h2{font-size:60px}}
@media(prefers-reduced-motion:reduce){.so-html{scroll-behavior:auto}.so-opening__constellation,.so-opening__scan,.so-opening__signal span,.so-music span,.so-couple__rings,.so-person__ring,.so-couple__satellites span,.so-couple__hub>span i,.so-event__beam i,.so-countdown__pulse i{animation:none!important}.so-reveal{transition:none!important;opacity:1!important;transform:none!important}}

/* Social Orbit layout stabilization patch v1.0.1
   Scope: presentation only. Keeps DreamDay bindings and interactions untouched. */
.so-event__panel,
.so-rsvp__card,
.so-location__card,
.so-gift-node{
  box-sizing:border-box;
  max-width:100%;
  overflow:hidden;
}
.so-event__panel{
  width:min(980px,100%);
  border:1px solid rgba(211,210,255,.18);
  border-radius:54px;
  background:linear-gradient(135deg,rgba(126,106,255,.15),rgba(64,181,201,.07));
}
.so-event__panel>img{opacity:.38}
.so-event__panel header,
.so-event__panel h2,
.so-event__route{min-width:0;max-width:100%}
.so-event__panel header b{flex:0 0 auto;white-space:nowrap}
.so-event__panel h2{
  width:100%;
  max-width:100%;
  font-size:clamp(40px,5.3vw,76px);
  line-height:.98;
  overflow-wrap:anywhere;
  text-wrap:balance;
}
.so-event__route{
  grid-template-columns:minmax(0,1fr) minmax(72px,140px) minmax(0,1fr);
  align-items:center;
}
.so-event__route article{min-width:0}
.so-event__route article strong{
  display:block;
  max-width:100%;
  font-size:clamp(25px,3vw,38px);
  line-height:1.05;
  overflow-wrap:anywhere;
}
.so-event__route article p,
.so-event__route article span{overflow-wrap:anywhere}

/* Gallery: keep the orbital language without card collisions. */
.so-gallery__orbit{
  position:relative;
  width:100%;
  max-width:1100px;
  min-height:0;
  margin:0 auto;
  padding:72px 34px 82px;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(24px,3vw,42px);
  align-items:start;
  isolation:isolate;
}
.so-gallery__axis{
  position:absolute;
  inset:2% 4%;
  z-index:-1;
  pointer-events:none;
}
.so-media-node,
.so-media-node--1,
.so-media-node--2,
.so-media-node--3,
.so-media-node--4,
.so-media-node--5,
.so-media-node--6{
  position:relative;
  left:auto;
  right:auto;
  top:auto;
  bottom:auto;
  width:100%;
  height:auto;
  aspect-ratio:3/4;
  min-width:0;
  transform:translate3d(var(--mx,0),var(--my,0),0) rotate(var(--rot,0deg));
  z-index:1;
}
.so-media-node:nth-of-type(3n+2){margin-top:46px}
.so-media-node:nth-of-type(3n){margin-top:18px}
.so-media-node:hover{z-index:3}
.so-media-node__photo{inset:14px;width:calc(100% - 28px);height:calc(100% - 28px)}

/* Make the visual card boundary match the real interactive container. */
.so-rsvp__card{
  width:min(900px,100%);
  border:1px solid rgba(156,146,255,.24);
  border-radius:46px;
  background:linear-gradient(145deg,rgba(19,24,46,.96),rgba(10,13,27,.92));
}
.so-rsvp__card>.so-card-bg{opacity:.22}
.so-rsvp__card header{min-width:0;max-width:100%}
.so-rsvp__card header h2{
  max-width:100%;
  font-size:clamp(38px,5vw,62px);
  line-height:1.02;
  overflow-wrap:anywhere;
  text-wrap:balance;
}
.so-rsvp__card header p{max-width:100%;overflow-wrap:anywhere}
.so-form-grid>*{min-width:0}

.so-gift__network{width:100%;max-width:1000px}
.so-gift-node{
  min-width:0;
  min-height:310px;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  border:1px solid rgba(211,208,255,.16);
  border-radius:38px;
  background:linear-gradient(145deg,rgba(24,27,53,.94),rgba(11,14,29,.9));
}
.so-gift-node>.so-card-bg{opacity:.24}
.so-gift-node h3,
.so-gift-node strong,
.so-gift-node p{max-width:100%;overflow-wrap:anywhere}
.so-gift-node button{
  position:relative;
  z-index:2;
  width:max-content;
  max-width:100%;
  margin-top:auto;
  flex:0 0 auto;
}

.so-location__card{
  width:min(940px,100%);
  border:1px solid rgba(143,131,238,.2);
  border-radius:48px;
  background:linear-gradient(145deg,rgba(15,22,40,.96),rgba(9,13,26,.92));
}
.so-location__frame{opacity:.28}
.so-location__card h2{
  width:100%;
  max-width:100%;
  font-size:clamp(40px,5.5vw,72px);
  line-height:1;
  overflow-wrap:anywhere;
  text-wrap:balance;
}
.so-location__card p{max-width:100%;overflow-wrap:anywhere}
.so-location__card a{max-width:100%;white-space:normal;text-align:center;justify-content:center}

@media (max-width:1100px){
  .so-event__panel{width:100%;padding:52px 46px}
  .so-event__panel h2{font-size:clamp(40px,6vw,64px);margin:42px 0 48px}
  .so-gallery__orbit{grid-template-columns:repeat(3,minmax(0,1fr));padding-inline:20px}
  .so-media-node{width:100%;height:auto}
  .so-rsvp__card{width:100%;padding:58px 54px}
  .so-location__card{width:100%;padding:86px 64px 60px}
  .so-gift-node{padding:48px 44px}
}

@media (max-width:900px){
  .so-event__route{grid-template-columns:1fr;gap:24px}
  .so-event__route article:last-child{text-align:left}
  .so-event__beam{height:24px;justify-content:flex-start;padding-left:4px}
  .so-gallery__orbit{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;padding:52px 18px 66px}
  .so-media-node:nth-of-type(n){margin-top:0}
  .so-media-node:nth-of-type(even){margin-top:34px}
  .so-rsvp__card{padding:52px 38px}
  .so-location__card{padding:82px 44px 54px}
}

@media (max-width:768px){
  .so-event__panel{padding:44px 30px;border-radius:36px}
  .so-event__panel header{align-items:flex-start;flex-wrap:wrap}
  .so-event__panel h2{font-size:clamp(38px,11vw,56px);margin:34px 0 38px}
  .so-gallery__orbit{
    display:flex;
    grid-template-columns:none;
    min-height:0;
    overflow-x:auto;
    overflow-y:hidden;
    scroll-snap-type:x mandatory;
    gap:16px;
    margin-left:calc(-1 * var(--so-pad));
    margin-right:calc(-1 * var(--so-pad));
    padding:28px var(--so-pad) 42px;
  }
  .so-media-node,
  .so-media-node:nth-of-type(n){
    flex:0 0 min(78vw,320px);
    width:min(78vw,320px);
    max-width:320px;
    height:auto;
    aspect-ratio:3/4;
    margin-top:0;
    scroll-snap-align:center;
    transform:rotate(var(--rot,0deg))!important;
  }
  .so-rsvp__card{padding:48px 30px;border-radius:34px}
  .so-rsvp__card header h2{font-size:clamp(36px,10vw,52px)}
  .so-gift-node{min-height:280px;padding:42px 34px;border-radius:32px}
  .so-location__card{padding:80px 34px 50px;border-radius:36px}
  .so-location__card h2{font-size:clamp(38px,10vw,54px)}
}

@media (max-width:480px){
  .so-event__panel{padding:40px 20px;border-radius:30px}
  .so-event__panel h2{font-size:clamp(36px,12vw,48px)}
  .so-rsvp__card{padding:40px 20px;border-radius:30px}
  .so-rsvp__card header h2{font-size:clamp(34px,11vw,46px)}
  .so-rsvp__card fieldset span{white-space:normal}
  .so-gift-node{padding:38px 26px}
  .so-gift-node h3{font-size:34px}
  .so-gift-node strong{font-size:18px;word-break:break-word}
  .so-location__card{padding:76px 26px 44px;border-radius:30px}
  .so-location__card h2{font-size:clamp(36px,12vw,48px)}
}
.so-media-node.so-reveal{
  --so-reveal-y:26px;
  opacity:0;
  transform:translate3d(var(--mx,0),calc(var(--my,0) + var(--so-reveal-y)),0) rotate(var(--rot,0deg));
}
.so-media-node.so-reveal.so-in{
  --so-reveal-y:0px;
  opacity:1;
  transform:translate3d(var(--mx,0),var(--my,0),0) rotate(var(--rot,0deg));
}
@media(max-width:768px){
  .so-media-node.so-reveal,
  .so-media-node.so-reveal.so-in{
    transform:rotate(var(--rot,0deg))!important;
  }
}


/* Social Orbit motion + presentation refinement v1.0.2
   Scope: visual/motion only. No DreamDay data or backend behavior changes. */

/* Event node: the SVG is the actual frame. The extra CSS frame from v1.0.1
   caused the visible double-panel effect, so only one frame remains. */
.so-event__panel{
  border:0;
  background:transparent;
  box-shadow:none;
}
.so-event__panel>img{
  opacity:.86;
  filter:drop-shadow(0 30px 70px rgba(0,0,0,.18));
  transform-origin:center;
}
.so-scene--active .so-event__panel>img{
  animation:so-event-frame-breathe 6s ease-in-out infinite;
}
.so-scene--active .so-event__panel header i{
  animation:so-node-beacon 1.8s ease-in-out infinite;
}
.so-scene--active .so-event__route article:first-child,
.so-scene--active .so-event__route article:last-child{
  animation:so-event-side-float 6.6s ease-in-out infinite;
}
.so-scene--active .so-event__route article:last-child{animation-delay:-3.3s}

/* More network life across sections without changing layout ownership. */
.so-media-node__photo{transform:scale(1.015);transition:transform .7s ease,filter .7s ease}
.so-scene--active .so-media-node__photo{animation:so-memory-breathe 7s ease-in-out infinite}
.so-media-node:nth-of-type(2n) .so-media-node__photo{animation-delay:-2.1s}
.so-media-node:nth-of-type(3n) .so-media-node__photo{animation-delay:-4.2s}

.so-location__grid{transform-origin:center}
.so-scene--active .so-location__grid{animation:so-grid-drift 12s linear infinite}
.so-scene--active .so-location__signal img{animation:so-map-ping 2.4s ease-in-out infinite}
.so-location__card:after{
  content:"";
  position:absolute;
  left:18%;right:18%;bottom:12%;height:1px;
  background:linear-gradient(90deg,transparent,rgba(117,220,232,.6),transparent);
  transform:scaleX(.2);
  opacity:0;
  transform-origin:center;
  pointer-events:none;
}
.so-scene--active .so-location__card:after{animation:so-signal-sweep 4.8s ease-in-out infinite}

.so-rsvp__card:after{
  content:"";
  position:absolute;
  inset:10px;
  border:1px solid transparent;
  border-radius:inherit;
  pointer-events:none;
}
.so-scene--active .so-rsvp__card:after{animation:so-card-signal 4.2s ease-in-out infinite}

.so-gift-node:after{
  content:"";
  position:absolute;
  width:7px;height:7px;border-radius:50%;
  right:22px;top:22px;
  background:var(--so-violet);
  box-shadow:0 0 0 0 rgba(154,134,255,.4);
  pointer-events:none;
}
.so-scene--active .so-gift-node:after{animation:so-gift-beacon 2.6s ease-out infinite}
.so-gift-node:nth-child(2):after{animation-delay:.7s}
.so-gift-node:nth-child(3):after{animation-delay:1.4s}

.so-wish>span{position:relative;overflow:visible}
.so-wish>span:after{
  content:"";position:absolute;inset:-5px;border-radius:50%;
  border:1px solid rgba(117,220,232,.26);opacity:0;transform:scale(.7)
}
.so-scene--active .so-wish>span:after{animation:so-wish-ring 3.2s ease-out infinite}
.so-wish:nth-child(2n)>span:after{animation-delay:1.1s}
.so-wish:nth-child(3n)>span:after{animation-delay:2s}

/* Closing constellation: turns the final screen into a live network convergence. */
.so-closing{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  background:
    radial-gradient(circle at 50% 52%,rgba(103,85,220,.16),transparent 32%),
    radial-gradient(circle at 50% 52%,rgba(91,205,222,.08),transparent 52%);
}
.so-closing:before,
.so-closing:after{
  content:"";
  position:absolute;
  left:50%;top:50%;
  width:min(78vw,880px);aspect-ratio:1;
  border:1px solid rgba(142,129,235,.12);
  border-radius:50%;
  pointer-events:none;
  z-index:-1;
  transform:translate(-50%,-50%) rotate(0deg) scale(.86);
}
.so-closing:after{
  width:min(58vw,650px);
  border-color:rgba(117,220,232,.12);
  transform:translate(-50%,-50%) rotate(35deg) scale(1.05);
}
.so-scene--active.so-closing:before{animation:so-closing-ring-a 22s linear infinite}
.so-scene--active.so-closing:after{animation:so-closing-ring-b 17s linear infinite reverse}

.so-closing__constellation{
  isolation:isolate;
  min-height:min(760px,78vh);
  display:grid;
  place-content:center;
  overflow:visible;
}
.so-closing__constellation>img{
  z-index:0;
  opacity:.58;
  transform-origin:50% 50%;
  filter:drop-shadow(0 0 32px rgba(111,93,255,.12));
}
.so-scene--active .so-closing__constellation>img{animation:so-closing-map 28s linear infinite}
.so-closing__constellation>*:not(img):not(.so-closing-signals){z-index:2}
.so-closing__constellation small{
  position:relative;
  display:inline-flex;
  justify-self:center;
  align-items:center;
  gap:10px;
}
.so-closing__constellation small:before,
.so-closing__constellation small:after{
  content:"";width:26px;height:1px;
  background:linear-gradient(90deg,transparent,var(--so-cyan));
}
.so-closing__constellation small:after{transform:scaleX(-1)}
.so-closing__constellation h2{
  position:relative;
  text-shadow:0 0 40px rgba(153,134,255,.07);
  transform-origin:center;
}
.so-scene--active .so-closing__constellation h2{animation:so-closing-title 5.8s ease-in-out infinite}
.so-scene--active .so-closing__constellation h2 span{animation:so-closing-amp 2.8s ease-in-out infinite}
.so-closing__constellation p{position:relative}
.so-closing__constellation p:after{
  content:"";
  display:block;
  width:84px;height:1px;margin:24px auto 0;
  background:linear-gradient(90deg,transparent,var(--so-cyan),var(--so-violet),transparent);
  transform:scaleX(.35);opacity:.4;
}
.so-scene--active .so-closing__constellation p:after{animation:so-closing-line 3.8s ease-in-out infinite}
.so-socials a{transition:transform .25s ease,border-color .25s ease,background .25s ease}
.so-socials a:hover{transform:translateY(-3px);border-color:rgba(117,220,232,.48);background:rgba(117,220,232,.07)}

.so-closing-signals{
  position:absolute;
  inset:-10%;
  z-index:1;
  pointer-events:none;
  overflow:hidden;
}
.so-closing-signal{
  --x:0px;--y:0px;--x14:0px;--y14:0px;--delay:0s;--dur:6s;
  position:absolute;
  left:50%;top:50%;
  width:5px;height:5px;
  margin:-2.5px;
  border-radius:50%;
  background:var(--so-cyan);
  box-shadow:0 0 15px currentColor;
  color:var(--so-cyan);
  opacity:0;
  transform:translate3d(var(--x),var(--y),0) scale(.4);
}
.so-closing-signal:nth-child(3n){color:var(--so-violet);background:var(--so-violet);width:4px;height:4px}
.so-closing-signal:nth-child(4n){width:2px;height:2px;background:#fff;color:#fff}
.so-scene--active .so-closing-signal{animation:so-signal-converge var(--dur) ease-in-out var(--delay) infinite}

.so-closing-beam{
  --angle:0deg;--delay:0s;
  position:absolute;
  left:50%;top:50%;
  width:min(40vw,360px);height:1px;
  transform-origin:left center;
  transform:rotate(var(--angle)) scaleX(.1);
  background:linear-gradient(90deg,rgba(117,220,232,.55),rgba(154,134,255,.12),transparent);
  opacity:0;
}
.so-scene--active .so-closing-beam{animation:so-beam-broadcast 5.5s ease-in-out var(--delay) infinite}

.so-page-hidden .so-event__panel>img,
.so-page-hidden .so-event__route article,
.so-page-hidden .so-media-node__photo,
.so-page-hidden .so-location__grid,
.so-page-hidden .so-location__signal img,
.so-page-hidden .so-location__card:after,
.so-page-hidden .so-rsvp__card:after,
.so-page-hidden .so-gift-node:after,
.so-page-hidden .so-wish>span:after,
.so-page-hidden .so-closing:before,
.so-page-hidden .so-closing:after,
.so-page-hidden .so-closing__constellation>img,
.so-page-hidden .so-closing__constellation h2,
.so-page-hidden .so-closing__constellation h2 span,
.so-page-hidden .so-closing__constellation p:after,
.so-page-hidden .so-closing-signal,
.so-page-hidden .so-closing-beam{animation-play-state:paused!important}

@keyframes so-event-frame-breathe{
  0%,100%{opacity:.72;transform:scale(1)}
  50%{opacity:.96;transform:scale(1.006)}
}
@keyframes so-node-beacon{
  0%,100%{box-shadow:0 0 8px var(--so-cyan);transform:scale(.9)}
  50%{box-shadow:0 0 24px var(--so-cyan);transform:scale(1.35)}
}
@keyframes so-event-side-float{0%,100%{translate:0 0}50%{translate:0 -4px}}
@keyframes so-memory-breathe{0%,100%{transform:scale(1.015);filter:saturate(.95)}50%{transform:scale(1.055);filter:saturate(1.08)}}
@keyframes so-grid-drift{0%{transform:translate3d(0,0,0)}50%{transform:translate3d(-10px,7px,0)}100%{transform:translate3d(0,0,0)}}
@keyframes so-map-ping{0%,100%{transform:scale(1);filter:drop-shadow(0 0 0 rgba(117,220,232,0))}50%{transform:scale(1.12);filter:drop-shadow(0 0 10px rgba(117,220,232,.6))}}
@keyframes so-signal-sweep{0%,100%{transform:scaleX(.15);opacity:0}42%,58%{transform:scaleX(1);opacity:.72}}
@keyframes so-card-signal{0%,100%{border-color:transparent;box-shadow:inset 0 0 0 rgba(117,220,232,0)}50%{border-color:rgba(117,220,232,.18);box-shadow:inset 0 0 26px rgba(117,220,232,.035)}}
@keyframes so-gift-beacon{0%{box-shadow:0 0 0 0 rgba(154,134,255,.45);opacity:1}75%,100%{box-shadow:0 0 0 16px rgba(154,134,255,0);opacity:.2}}
@keyframes so-wish-ring{0%{opacity:.65;transform:scale(.65)}70%,100%{opacity:0;transform:scale(1.35)}}
@keyframes so-closing-ring-a{to{transform:translate(-50%,-50%) rotate(360deg) scale(.86)}}
@keyframes so-closing-ring-b{to{transform:translate(-50%,-50%) rotate(395deg) scale(1.05)}}
@keyframes so-closing-map{0%{transform:rotate(0deg) scale(.96);opacity:.46}50%{transform:rotate(180deg) scale(1.035);opacity:.68}100%{transform:rotate(360deg) scale(.96);opacity:.46}}
@keyframes so-closing-title{0%,100%{transform:scale(1);text-shadow:0 0 28px rgba(153,134,255,.05)}50%{transform:scale(1.018);text-shadow:0 0 55px rgba(153,134,255,.18)}}
@keyframes so-closing-amp{0%,100%{transform:scale(1);filter:drop-shadow(0 0 0 rgba(154,134,255,0))}50%{transform:scale(1.08);filter:drop-shadow(0 0 12px rgba(154,134,255,.5))}}
@keyframes so-closing-line{0%,100%{transform:scaleX(.25);opacity:.2}50%{transform:scaleX(1.2);opacity:.8}}
@keyframes so-signal-converge{
  0%{opacity:0;transform:translate3d(var(--x),var(--y),0) scale(.35)}
  18%{opacity:.8}
  62%{opacity:.7;transform:translate3d(var(--x14),var(--y14),0) scale(1)}
  74%{opacity:1;transform:translate3d(0,0,0) scale(1.6)}
  100%{opacity:0;transform:translate3d(0,0,0) scale(.1)}
}
@keyframes so-beam-broadcast{0%,100%{opacity:0;transform:rotate(var(--angle)) scaleX(.05)}35%{opacity:.42}65%{opacity:.16;transform:rotate(var(--angle)) scaleX(1)}}

@media(max-width:768px){
  .so-closing__constellation{min-height:620px;padding:100px 20px}
  .so-closing:before{width:150vw}.so-closing:after{width:112vw}
  .so-closing-beam{width:48vw}
  .so-scene--active .so-event__route article{animation:none}
}

@media(prefers-reduced-motion:reduce){
  .so-event__panel>img,.so-event__route article,.so-media-node__photo,.so-location__grid,.so-location__signal img,
  .so-location__card:after,.so-rsvp__card:after,.so-gift-node:after,.so-wish>span:after,
  .so-closing:before,.so-closing:after,.so-closing__constellation>img,.so-closing__constellation h2,
  .so-closing__constellation h2 span,.so-closing__constellation p:after,.so-closing-signal,.so-closing-beam{
    animation:none!important;transform:none!important
  }
  .so-closing-signal,.so-closing-beam{display:none}
}


/* Social Orbit event-node containment fix v1.0.3
   The event frame is now the actual layout container, not a stretched image layer.
   This keeps every label, title, date and venue physically inside the node. */
.so-event__panel{
  position:relative;
  width:min(980px,calc(100% - 32px));
  max-width:980px;
  margin-inline:auto;
  padding:68px 72px 62px;
  border:1px solid rgba(212,212,255,.24);
  border-radius:54px;
  background:
    radial-gradient(circle at 12% 12%,rgba(156,138,255,.12),transparent 30%),
    linear-gradient(135deg,rgba(141,122,255,.16),rgba(78,208,228,.065));
  box-shadow:0 28px 90px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.025);
  overflow:hidden;
  isolation:isolate;
}
.so-event__panel>img{
  display:none!important;
}
.so-event__panel::before{
  content:"";
  position:absolute;
  left:72px;
  right:122px;
  top:46px;
  height:1px;
  background:linear-gradient(90deg,rgba(255,255,255,.08),rgba(117,220,232,.12),rgba(255,255,255,.04));
  pointer-events:none;
}
.so-event__panel::after{
  content:"";
  position:absolute;
  top:28px;
  right:28px;
  width:68px;
  height:68px;
  border-top:1px solid rgba(128,220,232,.45);
  border-right:1px solid rgba(128,220,232,.45);
  pointer-events:none;
}
.so-event__panel header,
.so-event__panel h2,
.so-event__route{
  position:relative;
  z-index:1;
  width:100%;
  max-width:100%;
  min-width:0;
}
.so-event__panel header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding-right:10px;
}
.so-event__panel header span,
.so-event__panel header b{
  min-width:0;
  max-width:100%;
}
.so-event__panel header span{
  overflow-wrap:anywhere;
}
.so-event__panel header b{
  flex:0 0 auto;
  white-space:nowrap;
}
.so-event__panel h2{
  margin:52px 0 58px;
  font-size:clamp(42px,5.2vw,72px);
  line-height:.96;
  overflow-wrap:normal;
  word-break:normal;
  text-wrap:balance;
}
.so-event__route{
  display:grid;
  grid-template-columns:minmax(0,1fr) minmax(54px,90px) minmax(0,1fr);
  gap:18px;
  align-items:center;
}
.so-event__route article{
  min-width:0;
  max-width:100%;
}
.so-event__route article:last-child{
  text-align:right;
}
.so-event__route article small,
.so-event__route article strong,
.so-event__route article p,
.so-event__route article span{
  max-width:100%;
}
.so-event__route article strong{
  display:block;
  font-size:clamp(25px,2.9vw,36px);
  line-height:1.08;
  overflow-wrap:anywhere;
}
.so-event__route article p,
.so-event__route article span,
.so-event__route article small{
  overflow-wrap:anywhere;
}
.so-event__beam{
  min-width:0;
  gap:12px;
}

@media (max-width:1100px) and (min-width:901px){
  .so-event__panel{
    width:min(900px,calc(100% - 56px));
    padding:64px 64px 58px;
  }
  .so-event__panel::before{left:64px;right:112px}
  .so-event__panel h2{font-size:clamp(44px,6vw,64px);margin:48px 0 52px}
  .so-event__route{grid-template-columns:minmax(0,1fr) 66px minmax(0,1fr);gap:16px}
  .so-event__route article strong{font-size:clamp(24px,3.2vw,34px)}
}

@media (max-width:900px){
  .so-event__panel{
    width:min(720px,calc(100% - 24px));
    padding:58px 46px 50px;
    border-radius:42px;
  }
  .so-event__panel::before{left:46px;right:96px;top:42px}
  .so-event__panel::after{top:24px;right:24px;width:58px;height:58px}
  .so-event__panel header{align-items:flex-start;flex-wrap:wrap;padding-right:54px}
  .so-event__panel h2{font-size:clamp(40px,8vw,58px);margin:42px 0 44px}
  .so-event__route{grid-template-columns:1fr;gap:24px}
  .so-event__route article:last-child{text-align:left}
  .so-event__beam{height:22px;justify-content:flex-start;padding-left:4px}
}

@media (max-width:768px){
  .so-event__panel{
    width:100%;
    padding:54px 30px 46px;
    border-radius:34px;
  }
  .so-event__panel::before{left:30px;right:78px;top:38px}
  .so-event__panel::after{top:20px;right:20px;width:50px;height:50px}
  .so-event__panel header{padding-right:44px}
  .so-event__panel h2{font-size:clamp(38px,10vw,54px);margin:38px 0 40px}
}

@media (max-width:480px){
  .so-event__panel{
    padding:50px 22px 42px;
    border-radius:30px;
  }
  .so-event__panel::before{left:22px;right:68px;top:35px}
  .so-event__panel::after{top:18px;right:18px;width:44px;height:44px}
  .so-event__panel header{gap:12px;padding-right:38px}
  .so-event__panel header b{font-size:8px}
  .so-event__panel h2{font-size:clamp(34px,11vw,48px);margin:34px 0 36px}
  .so-event__route article strong{font-size:clamp(26px,8vw,34px)}
}
