/* /css/base.css */
/* WeddingOS public experience */
:root{color-scheme:only light;--bg:#090b12;--bg2:#111522;--text:#f7f3ea;--muted:#a4acc0;--accent:#d7b46a;--accent2:#72e2ff;--surface:rgba(255,255,255,.055);--line:rgba(255,255,255,.12);--radius:24px;--shadow:0 30px 90px rgba(0,0,0,.35);--display:"Cormorant Garamond",Georgia,serif;--sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--bg)}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);min-height:100vh;overflow-x:hidden}body::before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 20% 10%,color-mix(in srgb,var(--accent2) 12%,transparent),transparent 32%),radial-gradient(circle at 80% 0,color-mix(in srgb,var(--accent) 13%,transparent),transparent 30%),linear-gradient(180deg,transparent,rgba(0,0,0,.12));z-index:-1}a{color:inherit}button,input,select,textarea{font:inherit}.hidden{display:none!important}.page-shell{min-height:100vh}.hero{position:relative;min-height:100svh;display:grid;place-items:center;padding:38px 20px 88px;isolation:isolate}.hero::after{content:"";position:absolute;inset:auto 0 0;height:180px;background:linear-gradient(transparent,var(--bg));z-index:-1}.hero-art{position:absolute;inset:0;z-index:-2;overflow:hidden}.orb{position:absolute;border-radius:50%;filter:blur(4px);opacity:.55}.orb.one{width:380px;height:380px;left:-130px;top:12%;background:radial-gradient(circle,color-mix(in srgb,var(--accent2) 30%,transparent),transparent 68%)}.orb.two{width:420px;height:420px;right:-120px;bottom:10%;background:radial-gradient(circle,color-mix(in srgb,var(--accent) 32%,transparent),transparent 68%)}.grid-lines{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px);background-size:42px 42px;mask-image:linear-gradient(to bottom,black,transparent 90%)}.hero-card{width:min(900px,100%);text-align:center;padding:56px clamp(22px,6vw,72px);border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.025));border-radius:36px;box-shadow:var(--shadow);backdrop-filter:blur(22px)}.eyebrow{text-transform:uppercase;letter-spacing:.22em;font-size:.78rem;color:var(--accent2);font-weight:700}.hero h1{font-family:var(--display);font-size:clamp(3.3rem,10vw,7.3rem);font-weight:500;line-height:.88;margin:18px 0}.hero h1 .amp{color:var(--accent);font-style:italic}.hero-subtitle{font-size:clamp(1rem,2vw,1.25rem);color:var(--muted);max-width:620px;margin:0 auto 26px;line-height:1.7}.hero-date{font-size:clamp(1.2rem,3vw,1.8rem);letter-spacing:.08em;margin-bottom:28px}.hero-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text);padding:13px 18px;border-radius:15px;display:inline-flex;justify-content:center;align-items:center;gap:8px;text-decoration:none;cursor:pointer;transition:.2s ease}.btn:hover{transform:translateY(-1px);background:rgba(255,255,255,.08)}.btn.primary{background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 74%,white));color:#101014;border-color:transparent;font-weight:800}.btn.secondary{background:linear-gradient(135deg,var(--accent2),color-mix(in srgb,var(--accent2) 70%,white));color:#071016;border-color:transparent;font-weight:800}.scroll-hint{position:absolute;bottom:28px;color:var(--muted);font-size:.76rem;text-transform:uppercase;letter-spacing:.18em}.container{width:min(1120px,calc(100% - 32px));margin:0 auto}.section{padding:92px 0}.section-header{max-width:720px;margin-bottom:34px}.section-kicker{color:var(--accent2);font-size:.78rem;text-transform:uppercase;letter-spacing:.2em;font-weight:700}.section-title{font-family:var(--display);font-weight:500;font-size:clamp(2.4rem,6vw,4.6rem);line-height:1;margin:12px 0}.section-copy{color:var(--muted);line-height:1.8;font-size:1.03rem}.panel{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);backdrop-filter:blur(16px)}.guest-banner{padding:20px;display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:-50px;position:relative;z-index:4}.guest-banner strong{font-size:1.1rem}.guest-banner span{display:block;color:var(--muted);font-size:.88rem;margin-top:3px}.countdown{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:30px}.countdown-item{padding:18px 12px;text-align:center;border:1px solid var(--line);background:rgba(255,255,255,.035);border-radius:18px}.countdown-item strong{display:block;font-size:clamp(1.5rem,4vw,2.4rem)}.countdown-item span{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em}.cards-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.info-card{padding:24px}.info-card h3{font-family:var(--display);font-size:2rem;margin:0 0 12px}.info-card p{color:var(--muted);line-height:1.75;margin:0}.info-card img{width:100%;height:260px;object-fit:cover;border-radius:18px;margin-bottom:18px}.event-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.8fr);gap:20px}.event-card{padding:28px}.event-meta{display:grid;gap:18px}.event-item{display:grid;grid-template-columns:42px 1fr;gap:13px}.event-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:rgba(255,255,255,.06);color:var(--accent)}.event-item strong{display:block}.event-item span{display:block;color:var(--muted);margin-top:4px}.map-frame{min-height:390px;overflow:hidden}.map-frame iframe{border:0;width:100%;height:100%;min-height:390px}.timeline{display:grid;gap:0}.timeline-item{display:grid;grid-template-columns:90px 24px 1fr;gap:14px;position:relative}.timeline-time{color:var(--accent);font-weight:800;padding-top:3px}.timeline-line{position:relative}.timeline-line::before{content:"";position:absolute;left:10px;top:10px;bottom:-26px;width:1px;background:var(--line)}.timeline-item:last-child .timeline-line::before{display:none}.timeline-dot{width:21px;height:21px;border:5px solid color-mix(in srgb,var(--accent2) 40%,var(--bg));background:var(--accent2);border-radius:50%}.timeline-content{padding-bottom:28px}.timeline-content strong{font-size:1.05rem}.timeline-content p{color:var(--muted);margin:5px 0 0;line-height:1.6}.faq-list{display:grid;gap:12px}.faq-item{padding:0 20px}.faq-item button{width:100%;border:0;background:transparent;color:var(--text);padding:20px 0;text-align:left;display:flex;justify-content:space-between;gap:16px;font-weight:700}.faq-answer{color:var(--muted);line-height:1.75;padding:0 0 20px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.gallery img{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:18px;border:1px solid var(--line)}.rsvp-shell{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:22px}.rsvp-summary{padding:28px}.rsvp-summary h3{font-family:var(--display);font-size:2.5rem;margin:0 0 10px}.rsvp-summary p{color:var(--muted);line-height:1.8}.rsvp-form{padding:28px}.field{display:grid;gap:7px;margin-bottom:15px}.field label{font-size:.83rem;color:var(--muted)}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:rgba(0,0,0,.22);color:var(--text);padding:12px 13px;border-radius:14px;outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:color-mix(in srgb,var(--accent2) 55%,transparent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent2) 10%,transparent)}.field textarea{min-height:100px;resize:vertical}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.choice{border:1px solid var(--line);background:rgba(255,255,255,.025);border-radius:16px;padding:14px;display:flex;gap:10px;align-items:center;cursor:pointer}.choice:has(input:checked){border-color:color-mix(in srgb,var(--accent2) 45%,transparent);background:color-mix(in srgb,var(--accent2) 8%,transparent)}.companion-list{display:grid;gap:10px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.save-date-card{padding:34px;text-align:center}.save-date-card h3{font-family:var(--display);font-size:clamp(2.2rem,5vw,4rem);margin:0 0 12px}.save-date-card p{color:var(--muted);line-height:1.8;max-width:650px;margin:0 auto 20px}.notice{padding:18px;border-radius:16px;background:rgba(255,255,255,.04);border:1px solid var(--line);color:var(--muted)}.notice.success{border-color:color-mix(in srgb,#6fe6ae 30%,transparent);color:#c7f8df}.notice.error{border-color:color-mix(in srgb,#ff7d8f 30%,transparent);color:#ffd7dd}.footer{padding:54px 0 36px;text-align:center;color:var(--muted)}.footer strong{color:var(--text);font-family:var(--display);font-size:1.8rem}.footer p{margin:8px 0}.toast-stack{position:fixed;right:18px;bottom:18px;z-index:80;display:grid;gap:10px}.toast{background:#131823;border:1px solid var(--line);padding:12px 14px;border-radius:14px;box-shadow:var(--shadow);max-width:350px}.loading::before{content:"";position:fixed;inset:0;background:var(--bg);z-index:1000}.loading::after{content:"";position:fixed;left:50%;top:50%;width:38px;height:38px;margin:-19px;border:3px solid rgba(255,255,255,.12);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite;z-index:1001}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:820px){.cards-grid,.event-grid,.rsvp-shell{grid-template-columns:1fr}.gallery{grid-template-columns:repeat(2,1fr)}.hero-card{padding:44px 22px}.guest-banner{align-items:flex-start;flex-direction:column}.section{padding:72px 0}.map-frame,.map-frame iframe{min-height:320px}}
@media(max-width:520px){.container{width:min(100% - 22px,1120px)}.hero{padding-inline:11px}.hero-card{border-radius:26px}.countdown{gap:7px}.countdown-item{padding:13px 6px;border-radius:14px}.countdown-item strong{font-size:1.45rem}.countdown-item span{font-size:.58rem}.choice-grid{grid-template-columns:1fr}.gallery{grid-template-columns:1fr 1fr}.timeline-item{grid-template-columns:68px 22px 1fr;gap:9px}.rsvp-form,.rsvp-summary,.event-card,.info-card{padding:20px}.hero-actions .btn{width:100%}}

/* /css/themes.css */
body[data-theme="neo-noir"]{--bg:#090b12;--bg2:#111522;--text:#f7f3ea;--muted:#a4acc0;--accent:#d7b46a;--accent2:#72e2ff;--surface:rgba(255,255,255,.055);--line:rgba(255,255,255,.12)}
body[data-theme="editorial-light"]{--bg:#f4efe6;--bg2:#ece4d7;--text:#1e1b18;--muted:#6d655b;--accent:#85683c;--accent2:#47757e;--surface:rgba(255,255,255,.58);--line:rgba(30,27,24,.14);--shadow:0 30px 90px rgba(76,61,43,.12)}
body[data-theme="editorial-light"]::before{background:radial-gradient(circle at 20% 10%,rgba(71,117,126,.1),transparent 32%),radial-gradient(circle at 80% 0,rgba(133,104,60,.12),transparent 30%)}
body[data-theme="editorial-light"] .hero-card,body[data-theme="editorial-light"] .panel{background:rgba(255,255,255,.48)}
body[data-theme="editorial-light"] .field input,body[data-theme="editorial-light"] .field select,body[data-theme="editorial-light"] .field textarea{background:rgba(255,255,255,.62)}
body[data-theme="aurora"]{--bg:#061016;--bg2:#0c1d25;--text:#effcff;--muted:#91b7bf;--accent:#7ef0c5;--accent2:#a984ff;--surface:rgba(255,255,255,.055);--line:rgba(157,236,235,.15)}
body[data-theme="aurora"]::before{background:radial-gradient(circle at 20% 12%,rgba(126,240,197,.18),transparent 33%),radial-gradient(circle at 80% 0,rgba(169,132,255,.2),transparent 30%),radial-gradient(circle at 60% 70%,rgba(85,179,255,.08),transparent 35%)}
body[data-theme="cinematic"]{--bg:#120709;--bg2:#1f0d11;--text:#fff5e9;--muted:#c9aaa8;--accent:#f0b35c;--accent2:#dd5b75;--surface:rgba(255,245,233,.05);--line:rgba(255,227,194,.14)}
body[data-theme="cinematic"]::before{background:radial-gradient(circle at 15% 5%,rgba(221,91,117,.17),transparent 30%),radial-gradient(circle at 80% 0,rgba(240,179,92,.16),transparent 32%),linear-gradient(180deg,transparent,rgba(0,0,0,.25))}

/* /css/premium.css */
/* WeddingOS Premium Experience — visual layer only */
:root{
  --display:"Cormorant Garamond",Georgia,serif;
  --sans:"Manrope",Inter,ui-sans-serif,system-ui,sans-serif;
  --ease-lux:cubic-bezier(.22,1,.36,1);
  --mx:50%;
  --my:30%;
}

body{
  background:
    radial-gradient(circle at var(--mx) var(--my),color-mix(in srgb,var(--accent2) 8%,transparent),transparent 28%),
    linear-gradient(180deg,var(--bg),color-mix(in srgb,var(--bg2) 82%,#000));
}

body::after{
  content:"";
  position:fixed;
  inset:0;
  z-index:100;
  pointer-events:none;
  opacity:.055;
  mix-blend-mode:soft-light;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.52'/%3E%3C/svg%3E");
}

.hero{
  min-height:100svh;
  padding:48px 20px 110px;
  overflow:hidden;
}

.hero::before{
  content:"";
  position:absolute;
  inset:24px;
  border:1px solid color-mix(in srgb,var(--accent) 24%,transparent);
  border-radius:36px;
  pointer-events:none;
  opacity:.75;
}

.hero-art{
  background:
    radial-gradient(ellipse at 50% 42%,transparent 0 30%,color-mix(in srgb,var(--bg) 35%,transparent) 74%),
    linear-gradient(180deg,color-mix(in srgb,var(--bg2) 35%,transparent),transparent 45%,color-mix(in srgb,var(--bg) 72%,transparent));
}

.hero-art::before,
.hero-art::after{
  content:"";
  position:absolute;
  width:56vmax;
  height:56vmax;
  border-radius:44% 56% 48% 52%;
  filter:blur(68px);
  opacity:.2;
  will-change:transform;
}

.hero-art::before{
  left:-24vmax;
  top:-25vmax;
  background:color-mix(in srgb,var(--accent2) 42%,transparent);
  animation:aurora-one 19s var(--ease-lux) infinite alternate;
}

.hero-art::after{
  right:-25vmax;
  bottom:-31vmax;
  background:color-mix(in srgb,var(--accent) 46%,transparent);
  animation:aurora-two 23s var(--ease-lux) infinite alternate;
}

.grid-lines{
  background-size:64px 64px;
  opacity:.48;
  mask-image:radial-gradient(ellipse at center,black 0 22%,transparent 73%);
  animation:grid-breathe 14s ease-in-out infinite alternate;
}

.orb{
  filter:blur(16px);
  opacity:.7;
  mix-blend-mode:screen;
  will-change:transform;
}
.orb.one{animation:orb-one 15s ease-in-out infinite alternate}
.orb.two{animation:orb-two 18s ease-in-out infinite alternate}

.premium-stars{
  position:absolute;
  inset:0;
  overflow:hidden;
  pointer-events:none;
}
.premium-stars span{
  position:absolute;
  width:2px;
  height:2px;
  border-radius:50%;
  background:var(--text);
  box-shadow:0 0 12px color-mix(in srgb,var(--accent2) 70%,white);
  opacity:.18;
  animation:star-pulse var(--duration,5s) ease-in-out infinite var(--delay,0s);
}

.hero-card{
  position:relative;
  width:min(1050px,100%);
  padding:72px clamp(24px,8vw,110px) 66px;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
  backdrop-filter:none;
}

.hero-card::before,
.hero-card::after{
  content:"";
  position:absolute;
  left:50%;
  transform:translateX(-50%);
  width:min(550px,72%);
  height:1px;
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--accent) 65%,white),transparent);
  opacity:.6;
}
.hero-card::before{top:28px}
.hero-card::after{bottom:22px}

.hero-card .eyebrow{
  color:color-mix(in srgb,var(--accent2) 75%,white);
  letter-spacing:.42em;
  font-size:.69rem;
  text-shadow:0 0 24px color-mix(in srgb,var(--accent2) 38%,transparent);
}

.hero h1{
  position:relative;
  margin:30px auto 28px;
  font-size:clamp(4.4rem,13vw,10.5rem);
  line-height:.76;
  letter-spacing:-.045em;
  font-weight:400;
  text-wrap:balance;
  text-shadow:0 14px 60px rgba(0,0,0,.32);
}

.hero h1 .amp{
  display:inline-block;
  margin:.05em .04em 0;
  font-size:.72em;
  color:transparent;
  background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 68%,white),var(--accent));
  background-clip:text;
  -webkit-background-clip:text;
  filter:drop-shadow(0 0 25px color-mix(in srgb,var(--accent) 24%,transparent));
  transform:rotate(-6deg);
}

.hero-subtitle{
  max-width:680px;
  margin-bottom:30px;
  color:color-mix(in srgb,var(--text) 68%,var(--muted));
  font-size:clamp(.98rem,1.7vw,1.18rem);
  letter-spacing:.015em;
}

.hero-date{
  display:inline-flex;
  align-items:center;
  gap:18px;
  margin:0 auto 34px;
  color:color-mix(in srgb,var(--text) 88%,var(--accent));
  font-family:var(--display);
  font-size:clamp(1.25rem,3vw,1.85rem);
  letter-spacing:.12em;
  text-transform:capitalize;
}
.hero-date::before,.hero-date::after{
  content:"✦";
  color:var(--accent);
  font-family:var(--sans);
  font-size:.54em;
  opacity:.8;
}

.hero-actions .btn{
  min-width:165px;
  padding:15px 23px;
  border-radius:999px;
  letter-spacing:.035em;
}

.btn{
  transition:transform .4s var(--ease-lux),box-shadow .4s var(--ease-lux),background .4s ease,border-color .4s ease;
}
.btn:hover{
  transform:translateY(-3px);
  box-shadow:0 14px 38px color-mix(in srgb,var(--accent) 12%,rgba(0,0,0,.2));
}
.btn.primary{
  background:linear-gradient(120deg,color-mix(in srgb,var(--accent) 90%,white),var(--accent),color-mix(in srgb,var(--accent) 70%,#fff));
  background-size:220% 100%;
  box-shadow:0 12px 35px color-mix(in srgb,var(--accent) 17%,transparent);
  animation:button-sheen 8s ease-in-out infinite;
}
.btn.secondary{
  background:linear-gradient(120deg,color-mix(in srgb,var(--accent2) 82%,white),var(--accent2));
  box-shadow:0 12px 35px color-mix(in srgb,var(--accent2) 14%,transparent);
}

.scroll-hint{
  bottom:37px;
  color:color-mix(in srgb,var(--muted) 78%,white);
  animation:scroll-hint 2.6s ease-in-out infinite;
}
.scroll-hint::after{
  content:"";
  display:block;
  width:1px;
  height:35px;
  margin:12px auto 0;
  background:linear-gradient(var(--accent),transparent);
}

.guest-banner{
  padding:20px 25px;
  border-radius:999px;
  background:color-mix(in srgb,var(--surface) 72%,transparent);
  box-shadow:0 24px 75px rgba(0,0,0,.22);
}
.guest-banner::before{
  content:"✦";
  color:var(--accent);
  flex:0 0 auto;
}

.section{
  position:relative;
  padding:115px 0;
}
.section::before{
  content:"";
  position:absolute;
  left:50%;
  top:0;
  width:min(920px,72vw);
  height:1px;
  transform:translateX(-50%);
  background:linear-gradient(90deg,transparent,var(--line),transparent);
  opacity:.45;
}
.section-header{margin-bottom:46px}
.section-kicker{
  letter-spacing:.34em;
  font-size:.69rem;
}
.section-title{
  font-size:clamp(3rem,7vw,5.8rem);
  letter-spacing:-.025em;
  text-wrap:balance;
}
.section-copy{max-width:680px}

.panel{
  position:relative;
  overflow:hidden;
  border-color:color-mix(in srgb,var(--line) 80%,var(--accent) 6%);
  background:
    linear-gradient(145deg,color-mix(in srgb,var(--surface) 110%,transparent),color-mix(in srgb,var(--surface) 45%,transparent));
  box-shadow:0 35px 100px rgba(0,0,0,.25);
  transition:transform .55s var(--ease-lux),border-color .55s ease,box-shadow .55s var(--ease-lux);
}
.panel::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(115deg,transparent 15%,rgba(255,255,255,.055) 44%,transparent 72%);
  transform:translateX(-130%);
  transition:transform 1.1s var(--ease-lux);
}
.panel:hover{
  transform:translateY(-5px);
  border-color:color-mix(in srgb,var(--accent) 28%,var(--line));
  box-shadow:0 42px 120px rgba(0,0,0,.32);
}
.panel:hover::after{transform:translateX(130%)}

.countdown{
  gap:16px;
  perspective:1000px;
}
.countdown-item{
  position:relative;
  padding:28px 12px 24px;
  border-radius:24px;
  background:linear-gradient(160deg,rgba(255,255,255,.065),rgba(255,255,255,.018));
  overflow:hidden;
}
.countdown-item::before{
  content:"";
  position:absolute;
  inset:0 0 auto;
  height:2px;
  background:linear-gradient(90deg,transparent,var(--accent),transparent);
  opacity:.55;
}
.countdown-item strong{
  font-family:var(--display);
  font-weight:400;
  font-size:clamp(2.4rem,6vw,4.1rem);
  line-height:1;
}

.info-card,.event-card,.rsvp-form,.rsvp-summary,.save-date-card{padding:clamp(26px,4vw,48px)}
.info-card h3,.rsvp-summary h3,.save-date-card h3{font-weight:400}

.event-icon{
  border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);
  background:color-mix(in srgb,var(--accent) 8%,transparent);
  box-shadow:inset 0 0 20px color-mix(in srgb,var(--accent) 5%,transparent);
}
.timeline-dot{box-shadow:0 0 0 7px color-mix(in srgb,var(--accent2) 8%,transparent),0 0 25px color-mix(in srgb,var(--accent2) 30%,transparent)}
.gallery img{transition:transform .7s var(--ease-lux),filter .7s ease;filter:saturate(.86) contrast(1.03)}
.gallery img:hover{transform:scale(1.025);filter:saturate(1.05) contrast(1.02)}

.choice:has(input:checked){box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent2) 25%,transparent),0 12px 30px color-mix(in srgb,var(--accent2) 7%,transparent)}

.footer{padding-top:82px}
.footer strong{font-size:clamp(2.2rem,5vw,3.8rem);font-weight:400}

/* Scroll reveal */
.motion-ready .reveal{
  opacity:0;
  transform:translateY(34px) scale(.985);
  filter:blur(5px);
  transition:opacity .95s var(--ease-lux),transform .95s var(--ease-lux),filter .95s ease;
  transition-delay:var(--reveal-delay,0ms);
}
.motion-ready .reveal.is-visible{
  opacity:1;
  transform:none;
  filter:none;
}

@keyframes aurora-one{to{transform:translate(19vmax,13vmax) rotate(25deg) scale(1.15)}}
@keyframes aurora-two{to{transform:translate(-17vmax,-11vmax) rotate(-22deg) scale(1.12)}}
@keyframes orb-one{to{transform:translate(90px,-42px) scale(1.18)}}
@keyframes orb-two{to{transform:translate(-80px,48px) scale(.9)}}
@keyframes grid-breathe{to{opacity:.7;transform:scale(1.035)}}
@keyframes star-pulse{0%,100%{opacity:.12;transform:scale(.7)}50%{opacity:.72;transform:scale(1.7)}}
@keyframes button-sheen{0%,72%,100%{background-position:100% 0}85%{background-position:0 0}}
@keyframes scroll-hint{0%,100%{transform:translateY(0);opacity:.65}50%{transform:translateY(8px);opacity:1}}

@media(max-width:820px){
  .hero::before{inset:12px;border-radius:26px}
  .hero-card{padding-top:58px}
  .hero h1{font-size:clamp(4rem,19vw,7rem);line-height:.8}
  .guest-banner{border-radius:26px}
  .section{padding:88px 0}
}

@media(max-width:520px){
  .hero{padding-top:38px}
  .hero-card{padding-inline:13px}
  .hero h1{font-size:clamp(3.7rem,20vw,5.7rem)}
  .hero-date{gap:9px;font-size:1.05rem;letter-spacing:.07em}
  .hero-card::before,.hero-card::after{width:82%}
  .countdown{gap:8px}
  .countdown-item{padding:20px 5px 17px;border-radius:18px}
  .section-title{font-size:clamp(2.7rem,13vw,4.2rem)}
  .panel:hover{transform:none}
}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}
  .motion-ready .reveal{opacity:1;transform:none;filter:none}
}

/* /css/cinematic-japandi.css */
/* WeddingOS — Cinematic Japandi */
:root{--cj-forest:#0d1811;--cj-forest-2:#17251b;--cj-moss:#66765d;--cj-olive:#879078;--cj-cream:#f3eee2;--cj-paper:#e8dfcf;--cj-ink:#20271f;--cj-champagne:#c8aa73;--cj-ease:cubic-bezier(.22,1,.36,1);--cj-parallax-x:0px;--cj-parallax-y:0px;--cj-scroll:0;--bg:var(--cj-forest);--bg2:var(--cj-forest-2);--text:#f7f1e7;--muted:#b8b9ad;--accent:var(--cj-champagne);--accent2:var(--cj-moss);--surface:rgba(247,241,231,.065);--line:rgba(239,229,209,.16);--shadow:0 36px 110px rgba(4,9,6,.34);--display:"Cormorant Garamond",Georgia,serif;--sans:"Manrope",Inter,system-ui,sans-serif}
html{background:var(--cj-forest);scrollbar-color:var(--cj-moss) var(--cj-forest)}body{background:var(--cj-forest);color:var(--text);font-family:var(--sans)}body::before{background:radial-gradient(ellipse at 16% 4%,rgba(128,151,105,.19),transparent 34%),radial-gradient(ellipse at 86% 12%,rgba(202,172,113,.13),transparent 28%),linear-gradient(180deg,#101b14,#0b130e)}body::after{opacity:.045}
.cj-intro{position:fixed;inset:0;z-index:9998;pointer-events:none;display:grid;place-items:center;background:var(--cj-forest);animation:cj-intro-away 1.7s var(--cj-ease) 1.15s forwards}.cj-intro::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(236,224,199,.12),transparent);transform:translateX(-110%);animation:cj-intro-light 1.4s ease .25s both}.cj-intro::after{content:"";position:absolute;inset:49.9% 12% auto;height:1px;background:linear-gradient(90deg,transparent,var(--cj-champagne),transparent);animation:cj-intro-line 1.2s var(--cj-ease) .15s both}.cj-intro-mark{font-family:var(--display);font-size:clamp(3.2rem,10vw,7rem);letter-spacing:.16em;color:var(--cj-cream);opacity:0;transform:translateY(16px);animation:cj-intro-mark 1s var(--cj-ease) .15s forwards}.cj-progress{position:fixed;z-index:90;left:0;top:0;width:100%;height:2px;transform-origin:left;transform:scaleX(var(--cj-scroll));background:linear-gradient(90deg,var(--cj-moss),var(--cj-champagne));box-shadow:0 0 18px rgba(200,170,115,.45);pointer-events:none}
.page-shell{background:var(--cj-cream);color:var(--cj-ink)}.hero{min-height:100svh;padding:72px 20px 108px;background:linear-gradient(90deg,rgba(4,11,7,.85),rgba(11,20,14,.27) 52%,rgba(4,11,7,.72)),radial-gradient(ellipse at 50% 28%,rgba(202,172,113,.11),transparent 36%),linear-gradient(145deg,#101c14,#0a120d 72%);color:#f8f1e5;perspective:1100px}.hero::before{inset:18px;border-radius:2px;border:1px solid rgba(202,172,113,.32);box-shadow:inset 0 0 90px rgba(0,0,0,.22)}.hero::after{height:230px;background:linear-gradient(transparent,rgba(13,24,17,.93))}.hero-art{transform:translate3d(calc(var(--cj-parallax-x)*-.28),calc(var(--cj-parallax-y)*-.28),0) scale(1.04);transition:transform .35s ease-out;background:linear-gradient(108deg,transparent 0 37%,rgba(245,226,180,.075) 42%,transparent 49%),radial-gradient(circle at 62% 26%,rgba(238,207,147,.22),transparent 20%)}.hero-art::before{left:-9vw;top:-12vh;width:62vw;height:115vh;border-radius:0;filter:none;opacity:.62;mix-blend-mode:screen;background:repeating-linear-gradient(104deg,transparent 0 44px,rgba(234,216,172,.06) 46px,transparent 83px);transform:rotate(-8deg);transform-origin:top;animation:cj-rays 12s ease-in-out infinite alternate}.hero-art::after{right:-8vw;bottom:-20vh;width:55vw;height:70vh;border-radius:50%;filter:blur(42px);opacity:.14;background:var(--cj-moss);animation:cj-forest-breathe 15s ease-in-out infinite alternate}.grid-lines{opacity:.09;background-size:92px 92px;background-image:linear-gradient(rgba(215,202,174,.2) 1px,transparent 1px),linear-gradient(90deg,rgba(215,202,174,.16) 1px,transparent 1px);mask-image:linear-gradient(to bottom,black,transparent 82%)}.grid-lines::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 108%,transparent 0 38%,rgba(220,207,178,.13) 38.4%,transparent 39.2%),radial-gradient(ellipse at 50% 108%,transparent 0 52%,rgba(220,207,178,.09) 52.3%,transparent 53%)}.orb{display:none}
.cj-branch{position:absolute;z-index:-1;pointer-events:none;width:min(48vw,650px);height:min(65vh,720px);opacity:.42;filter:drop-shadow(0 20px 30px rgba(0,0,0,.35));transform-origin:top left}.cj-branch.left{left:-7%;top:-5%;animation:cj-branch-sway 12s ease-in-out infinite alternate}.cj-branch.right{right:-14%;bottom:-14%;transform:scaleX(-1) rotate(-18deg);opacity:.24;animation:cj-branch-sway-right 15s ease-in-out infinite alternate}.cj-branch svg{width:100%;height:100%;overflow:visible}.cj-branch path{fill:none;stroke:#91a07e;stroke-width:1.2;stroke-linecap:round}.cj-branch ellipse{fill:#718064;opacity:.65}.cj-leaves{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:-1}.cj-leaf{position:absolute;width:11px;height:6px;border-radius:100% 0 100% 0;background:linear-gradient(135deg,#9caa8b,#5c6d52);opacity:0;animation:cj-leaf-fall var(--duration) linear var(--delay) infinite}
.hero-card{width:min(930px,100%);padding:82px clamp(22px,8vw,105px) 70px;background:rgba(8,15,10,.27);border:1px solid rgba(229,217,193,.15);border-radius:2px;backdrop-filter:blur(5px);box-shadow:0 50px 160px rgba(0,0,0,.28);transform:translate3d(calc(var(--cj-parallax-x)*.16),calc(var(--cj-parallax-y)*.16),28px);transition:transform .4s ease-out}.hero-card::before,.hero-card::after{width:min(470px,72%);background:linear-gradient(90deg,transparent,rgba(202,172,113,.8),transparent)}.hero-card .eyebrow{color:#d7c394;letter-spacing:.44em;font-size:.64rem}.hero h1{margin:30px auto 22px;font-size:clamp(4.4rem,13vw,10rem);line-height:.78;letter-spacing:-.045em;color:#f6efe4;text-shadow:0 18px 65px rgba(0,0,0,.44)}.hero h1 .amp{color:var(--cj-champagne);background:none;-webkit-text-fill-color:initial;filter:none;font-style:italic;font-size:.63em}.hero-subtitle{color:rgba(239,232,218,.72);font-size:clamp(.95rem,1.7vw,1.12rem);max-width:620px}.hero-date{color:#efe3ce;font-size:clamp(1.16rem,2.5vw,1.65rem);letter-spacing:.17em}.hero-date::before,.hero-date::after{content:"";width:36px;height:1px;background:var(--cj-champagne)}.hero-actions .btn{min-width:190px;border-radius:2px;padding:15px 23px;text-transform:uppercase;letter-spacing:.13em;font-size:.69rem}.btn.primary{background:var(--cj-cream);color:var(--cj-ink);box-shadow:0 16px 45px rgba(0,0,0,.22)}.btn.secondary{background:transparent;color:var(--cj-cream);border:1px solid rgba(231,217,190,.42);box-shadow:none}.btn:hover{transform:translateY(-4px);box-shadow:0 18px 45px rgba(8,17,11,.18)}.scroll-hint{color:rgba(240,232,216,.62);letter-spacing:.25em}.scroll-hint::after{background:linear-gradient(var(--cj-champagne),transparent)}.guest-banner{margin-top:-48px;padding:18px 28px;border-radius:2px;color:var(--cj-cream);background:rgba(20,34,24,.94);border-color:rgba(202,172,113,.24);box-shadow:0 24px 70px rgba(8,17,11,.24)}.guest-banner span{color:rgba(239,232,218,.65)}
main>section{position:relative;overflow:hidden;padding:clamp(88px,10vw,140px) 0}main>section::before{display:none}main>section:not(:has(.countdown)):not(:has(.event-grid)){color:var(--cj-ink);background:radial-gradient(circle at 9% 6%,rgba(103,119,91,.08),transparent 28%),linear-gradient(180deg,#f5f0e6,#eee5d7)}main>section:has(.countdown){color:var(--cj-cream);background:radial-gradient(circle at 82% 8%,rgba(203,175,119,.12),transparent 31%),radial-gradient(circle at 8% 100%,rgba(117,139,100,.19),transparent 31%),linear-gradient(135deg,#1a2b1e,#0d1811)}main>section:has(.event-grid){color:var(--cj-cream);background:radial-gradient(circle at 15% 30%,rgba(118,139,102,.20),transparent 31%),linear-gradient(90deg,rgba(8,15,10,.94),rgba(19,33,23,.92)),#102016}
main>section:has(.countdown)::after,main>section:has(.event-grid)::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.32;background-image:url("data:image/svg+xml,%3Csvg width='700' height='420' viewBox='0 0 700 420' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%238a9a79' stroke-width='1'%3E%3Cpath d='M-10 390 C140 335 165 225 305 180 C455 132 535 77 710 35'/%3E%3Cpath d='M65 352 C92 330 113 304 129 273 M116 312 C85 299 65 283 45 260 M158 255 C190 242 214 220 239 190 M225 205 C194 193 171 174 153 150 M290 185 C316 160 338 132 348 99 M360 116 C394 109 421 92 450 65 M448 70 C430 45 418 24 415 0 M520 74 C555 71 593 54 624 27'/%3E%3C/g%3E%3Cg fill='%23788869' opacity='.5'%3E%3Cellipse cx='107' cy='302' rx='15' ry='6' transform='rotate(-28 107 302)'/%3E%3Cellipse cx='76' cy='281' rx='15' ry='6' transform='rotate(30 76 281)'/%3E%3Cellipse cx='194' cy='229' rx='17' ry='7' transform='rotate(-18 194 229)'/%3E%3Cellipse cx='184' cy='183' rx='16' ry='7' transform='rotate(38 184 183)'/%3E%3Cellipse cx='337' cy='121' rx='18' ry='7' transform='rotate(-55 337 121)'/%3E%3Cellipse cx='397' cy='99' rx='17' ry='7' transform='rotate(-18 397 99)'/%3E%3Cellipse cx='434' cy='45' rx='16' ry='7' transform='rotate(52 434 45)'/%3E%3Cellipse cx='576' cy='55' rx='18' ry='7' transform='rotate(-18 576 55)'/%3E%3C/g%3E%3C/svg%3E");background-position:right bottom;background-repeat:no-repeat;background-size:min(720px,70vw) auto}main>section:not(:has(.countdown)):not(:has(.event-grid))::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.18;background-image:url("data:image/svg+xml,%3Csvg width='540' height='420' viewBox='0 0 540 420' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%236b7a60' stroke-width='1'%3E%3Cpath d='M-20 390 C95 320 109 206 245 162 C375 120 406 32 550 -5'/%3E%3Cpath d='M66 330 C92 305 107 279 119 247 M112 266 C85 255 60 237 42 213 M187 188 C211 166 226 139 235 109 M238 119 C270 112 293 96 313 73 M358 67 C385 61 412 44 433 20'/%3E%3C/g%3E%3Cg fill='%23818e75' opacity='.5'%3E%3Cellipse cx='102' cy='286' rx='15' ry='6' transform='rotate(-35 102 286)'/%3E%3Cellipse cx='79' cy='247' rx='15' ry='6' transform='rotate(32 79 247)'/%3E%3Cellipse cx='222' cy='138' rx='16' ry='7' transform='rotate(-57 222 138)'/%3E%3Cellipse cx='277' cy='101' rx='17' ry='7' transform='rotate(-22 277 101)'/%3E%3Cellipse cx='410' cy='43' rx='17' ry='7' transform='rotate(-20 410 43)'/%3E%3C/g%3E%3C/svg%3E");background-position:left bottom;background-repeat:no-repeat;background-size:min(560px,55vw) auto}
.section-header{position:relative;z-index:2;margin-bottom:50px}.section-kicker{color:var(--cj-moss);letter-spacing:.36em;font-size:.64rem}main>section:has(.countdown) .section-kicker,main>section:has(.event-grid) .section-kicker{color:#cdb983}.section-title{font-size:clamp(3rem,7vw,5.7rem);color:inherit;font-weight:400;letter-spacing:-.035em}.section-copy{color:#6d7168;max-width:660px}main>section:has(.event-grid) .section-copy,main>section:has(.countdown) .section-copy{color:rgba(240,232,215,.66)}
.panel{border-radius:2px;border-color:rgba(69,81,64,.16);background:rgba(249,245,237,.72);box-shadow:0 32px 90px rgba(53,56,46,.12);backdrop-filter:blur(12px)}.panel::after{background:linear-gradient(110deg,transparent 18%,rgba(255,255,255,.25) 45%,transparent 72%)}main>section:has(.event-grid) .panel,main>section:has(.countdown) .panel{color:var(--cj-cream);background:rgba(7,15,10,.34);border-color:rgba(224,209,180,.16);box-shadow:0 38px 100px rgba(0,0,0,.25)}.panel:hover{border-color:rgba(103,119,91,.38);box-shadow:0 42px 110px rgba(35,43,34,.16)}
.countdown{max-width:880px;gap:0;margin-top:42px;border-top:1px solid rgba(221,207,179,.22);border-bottom:1px solid rgba(221,207,179,.22)}.countdown-item{border:0;border-radius:0;background:transparent;padding:34px 12px;overflow:visible}.countdown-item+.countdown-item{border-left:1px solid rgba(221,207,179,.22)}.countdown-item::before{display:none}.countdown-item strong{font-size:clamp(2.7rem,7vw,5rem);color:#f0e6d3;font-variant-numeric:tabular-nums}.countdown-item strong.cj-tick{animation:cj-digit .55s var(--cj-ease)}.countdown-item span{color:rgba(235,226,208,.6);letter-spacing:.24em}.cards-grid{gap:26px}.info-card{padding:clamp(26px,4vw,50px)}.info-card h3{font-size:clamp(2rem,4vw,3.1rem);color:var(--cj-ink)}.info-card p{color:#6d7168}.info-card img{height:360px;border-radius:1px;filter:saturate(.72) sepia(.08) contrast(.97);transition:filter .8s ease,transform 1.1s var(--cj-ease)}.info-card:hover img{filter:saturate(.9) sepia(0);transform:scale(1.018)}
.event-grid{gap:1px;background:rgba(220,204,173,.16);border:1px solid rgba(220,204,173,.16)}.event-grid>.panel{border:0;box-shadow:none}.event-card{padding:clamp(30px,5vw,60px)}.event-icon{border-radius:50%;background:transparent;border-color:rgba(202,172,113,.5);color:#d7be86}.map-frame{border-radius:0}.timeline-item{transition:transform .6s var(--cj-ease)}.timeline-item:hover{transform:translateX(8px)}.timeline-time{color:var(--cj-moss)}.timeline-dot{background:var(--cj-moss);border-color:#dfe3d8;box-shadow:0 0 0 7px rgba(103,119,91,.10)}.timeline-line::before{background:rgba(103,119,91,.28)}.faq-item{border-radius:0;background:rgba(249,245,237,.62)}.faq-item button{color:var(--cj-ink)}.faq-answer{color:#6d7168}.gallery{gap:18px}.gallery img{border-radius:1px;border-color:rgba(69,81,64,.15);filter:saturate(.72) sepia(.06)}
.rsvp-shell{gap:1px;background:rgba(96,105,87,.16);border:1px solid rgba(96,105,87,.16)}.rsvp-summary,.rsvp-form{border:0;border-radius:0;box-shadow:none;background:rgba(249,245,237,.78)}.rsvp-summary h3{color:var(--cj-ink)}.rsvp-summary p,.field label{color:#71756c}.field input,.field select,.field textarea{border-radius:1px;background:rgba(255,253,248,.78);color:var(--cj-ink);border-color:rgba(77,89,70,.18)}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--cj-moss);box-shadow:0 0 0 3px rgba(103,119,91,.11)}.choice{border-radius:1px;background:rgba(255,253,248,.5);color:var(--cj-ink)}.choice:has(input:checked){border-color:var(--cj-moss);background:rgba(103,119,91,.10);box-shadow:inset 0 0 0 1px rgba(103,119,91,.15)}.rsvp-form .btn.primary,.save-date-card .btn.primary{background:var(--cj-forest-2);color:var(--cj-cream)}.save-date-card{border-radius:1px;background:rgba(249,245,237,.78)}.save-date-card h3{color:var(--cj-ink)}.save-date-card p{color:#6d7168}.footer{position:relative;overflow:hidden;padding:90px 0 55px;color:rgba(239,232,218,.68);background:#101b14}.footer::before{content:"";position:absolute;inset:0;opacity:.22;background-image:url("data:image/svg+xml,%3Csvg width='700' height='280' viewBox='0 0 700 280' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%23798a6c' stroke-width='1'%3E%3Cpath d='M-20 250 C120 220 160 112 310 120 C465 127 530 45 730 18'/%3E%3Cpath d='M145 195 C112 176 90 152 75 122 M196 156 C224 135 244 108 254 78 M420 96 C449 80 472 58 488 31 M548 55 C574 57 603 48 629 34'/%3E%3C/g%3E%3C/svg%3E");background-position:center bottom;background-repeat:no-repeat;background-size:min(900px,95vw) auto}.footer>*{position:relative;z-index:1}.footer strong{color:var(--cj-cream);font-size:clamp(2.5rem,6vw,4.4rem)}
.cj-ready .hero-card>*{opacity:0;transform:translateY(24px);animation:cj-hero-enter 1.15s var(--cj-ease) forwards}.cj-ready .hero-card>*:nth-child(1){animation-delay:.18s}.cj-ready .hero-card>*:nth-child(2){animation-delay:.34s}.cj-ready .hero-card>*:nth-child(3){animation-delay:.50s}.cj-ready .hero-card>*:nth-child(4){animation-delay:.64s}.cj-ready .hero-card>*:nth-child(5){animation-delay:.78s}.motion-ready .reveal{opacity:0;transform:translateY(46px);filter:blur(8px);clip-path:inset(0 0 14% 0);transition:opacity 1.15s var(--cj-ease),transform 1.15s var(--cj-ease),filter 1.15s ease,clip-path 1.15s var(--cj-ease)}.motion-ready .reveal.is-visible{opacity:1;transform:none;filter:none;clip-path:inset(0)}.cj-parallax{will-change:transform;transform:translate3d(0,var(--cj-section-y,0px),0)}.cj-magnetic{will-change:transform}
@keyframes cj-intro-away{to{opacity:0;visibility:hidden}}@keyframes cj-intro-light{to{transform:translateX(110%)}}@keyframes cj-intro-line{from{transform:scaleX(0);opacity:0}to{transform:scaleX(1);opacity:1}}@keyframes cj-intro-mark{to{opacity:1;transform:none}}@keyframes cj-rays{to{transform:translateX(8vw) rotate(-3deg);opacity:.82}}@keyframes cj-forest-breathe{to{transform:scale(1.18) translate(-4vw,-3vh);opacity:.22}}@keyframes cj-branch-sway{to{transform:rotate(2.8deg) translate(7px,4px)}}@keyframes cj-branch-sway-right{to{transform:scaleX(-1) rotate(-14deg) translate(7px,-5px)}}@keyframes cj-leaf-fall{0%{opacity:0;transform:translate3d(0,-10vh,0) rotate(0)}12%{opacity:.48}75%{opacity:.38}100%{opacity:0;transform:translate3d(var(--drift),110vh,0) rotate(var(--spin))}}@keyframes cj-hero-enter{to{opacity:1;transform:none}}@keyframes cj-digit{0%{opacity:.25;transform:translateY(-10px);filter:blur(4px)}to{opacity:1;transform:none;filter:none}}
@media(max-width:820px){.hero{padding:50px 13px 95px}.hero::before{inset:9px;border-radius:1px}.hero-card{padding:70px 20px 58px;background:rgba(8,15,10,.34)}.hero h1{font-size:clamp(4rem,20vw,7rem)}.cj-branch{width:90vw;opacity:.25}.cj-branch.right{display:none}main>section{padding:84px 0}.event-grid,.rsvp-shell{gap:14px;background:transparent;border:0}.event-grid>.panel,.rsvp-summary,.rsvp-form{border:1px solid rgba(80,91,73,.15)}}@media(max-width:520px){.hero-card{padding-inline:14px}.hero h1{font-size:clamp(3.8rem,21vw,5.8rem)}.hero-actions .btn{width:100%}.countdown-item{padding:27px 4px}.countdown-item strong{font-size:2.2rem}.countdown-item span{font-size:.54rem;letter-spacing:.12em}.section-title{font-size:clamp(2.7rem,13vw,4.1rem)}main>section::after{background-size:92vw auto!important;opacity:.11!important}}@media(prefers-reduced-motion:reduce){.cj-intro{display:none}.cj-leaves{display:none}.hero-art,.hero-card{transform:none!important}.cj-ready .hero-card>*{opacity:1;transform:none;animation:none}.motion-ready .reveal{opacity:1;transform:none;filter:none;clip-path:none}}

/* /css/organic-motion.css */
/* WeddingOS — Organic section motion refinement */
body.motion-ready.cj-ready .section.reveal{
  opacity:0;
  filter:none;
  transform:translate3d(0,52px,0);
  transition:
    opacity 1.2s cubic-bezier(.22,1,.36,1),
    transform 1.45s cubic-bezier(.22,1,.36,1);
  transition-delay:0ms;
}
body.motion-ready.cj-ready .section.cj-flow-left.reveal{transform:translate3d(-18px,52px,0)}
body.motion-ready.cj-ready .section.cj-flow-right.reveal{transform:translate3d(18px,52px,0)}
body.motion-ready.cj-ready .section.reveal.is-visible{
  opacity:1;
  transform:translate3d(0,0,0);
}

/* The content inside a section arrives as one composition, with a soft natural cadence. */
body.motion-ready.cj-ready .section.reveal .section-header,
body.motion-ready.cj-ready .section.reveal .panel,
body.motion-ready.cj-ready .section.reveal .countdown,
body.motion-ready.cj-ready .section.reveal .gallery,
body.motion-ready.cj-ready .section.reveal .event-grid,
body.motion-ready.cj-ready .section.reveal .rsvp-shell{
  opacity:.18;
  transform:translate3d(0,18px,0);
  transition:opacity 1.05s ease .14s,transform 1.25s cubic-bezier(.22,1,.36,1) .14s;
}
body.motion-ready.cj-ready .section.reveal.is-visible .section-header,
body.motion-ready.cj-ready .section.reveal.is-visible .panel,
body.motion-ready.cj-ready .section.reveal.is-visible .countdown,
body.motion-ready.cj-ready .section.reveal.is-visible .gallery,
body.motion-ready.cj-ready .section.reveal.is-visible .event-grid,
body.motion-ready.cj-ready .section.reveal.is-visible .rsvp-shell{
  opacity:1;
  transform:none;
}

.section.cj-organic-section{overflow:hidden;isolation:isolate}
.section.cj-organic-section::before{
  width:min(980px,78vw);
  background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--cj-moss) 25%,var(--line)),color-mix(in srgb,var(--cj-champagne) 35%,var(--line)),transparent);
  opacity:.42;
}
.cj-organic-veil{
  position:absolute;
  z-index:-1;
  pointer-events:none;
  width:min(620px,58vw);
  height:min(520px,48vw);
  top:-9%;
  opacity:.1;
  background:
    radial-gradient(ellipse at 35% 42%,color-mix(in srgb,var(--cj-moss) 35%,transparent),transparent 58%),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 620 500' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%235f7058' stroke-width='2' stroke-linecap='round' opacity='.85'%3E%3Cpath d='M30 480 C160 390 155 255 300 185 C400 138 438 64 590 18'/%3E%3Cpath d='M145 382 C92 357 62 322 43 275 M230 245 C180 225 145 190 124 143 M350 153 C405 132 445 98 472 55'/%3E%3C/g%3E%3Cg fill='%235f7058' opacity='.55'%3E%3Cellipse cx='104' cy='345' rx='31' ry='12' transform='rotate(34 104 345)'/%3E%3Cellipse cx='67' cy='295' rx='29' ry='11' transform='rotate(-50 67 295)'/%3E%3Cellipse cx='184' cy='219' rx='31' ry='12' transform='rotate(31 184 219)'/%3E%3Cellipse cx='416' cy='119' rx='34' ry='13' transform='rotate(-29 416 119)'/%3E%3Cellipse cx='512' cy='48' rx='30' ry='11' transform='rotate(38 512 48)'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;
  animation:cj-organic-breathe 18s ease-in-out infinite alternate;
}
.cj-flow-left .cj-organic-veil{left:-12%;transform-origin:left center}
.cj-flow-right .cj-organic-veil{right:-12%;transform:scaleX(-1);transform-origin:right center}

/* Countdown changes should feel like breathing, not flipping or flashing. */
.countdown-item strong.cj-tick{animation:cj-soft-tick .48s cubic-bezier(.22,1,.36,1)}

@keyframes cj-soft-tick{
  0%{opacity:.55;transform:translateY(5px)}
  100%{opacity:1;transform:translateY(0)}
}
@keyframes cj-organic-breathe{
  0%{opacity:.065;translate:0 0;rotate:-1deg;scale:.98}
  100%{opacity:.13;translate:18px 10px;rotate:1.2deg;scale:1.035}
}

@media(max-width:820px){
  body.motion-ready.cj-ready .section.reveal,
  body.motion-ready.cj-ready .section.cj-flow-left.reveal,
  body.motion-ready.cj-ready .section.cj-flow-right.reveal{transform:translate3d(0,34px,0)}
  .cj-organic-veil{width:82vw;height:68vw;top:-3%;opacity:.075}
}

@media(prefers-reduced-motion:reduce){
  body.motion-ready.cj-ready .section.reveal,
  body.motion-ready.cj-ready .section.reveal *{opacity:1!important;transform:none!important;transition:none!important}
  .cj-organic-veil{animation:none}
  .countdown-item strong.cj-tick{animation:none}
}

/* /css/access-gate.css */
/* WeddingOS private invitation access — sage botanical edition */
.access-shell{position:relative;min-height:100svh;display:grid;place-items:center;overflow:hidden;padding:36px 20px;background:radial-gradient(circle at 18% 12%,rgba(255,255,255,.88),transparent 30%),radial-gradient(circle at 86% 18%,rgba(174,185,168,.28),transparent 34%),linear-gradient(145deg,#f7f3eb,#edf0e8 72%);color:#414536;font-family:var(--sans,"Manrope",system-ui,sans-serif)}
.access-shell::before{content:"";position:absolute;inset:18px;border:1px solid rgba(104,113,83,.16);border-radius:30px;pointer-events:none}.access-light{position:absolute;width:64vw;height:64vw;max-width:760px;max-height:760px;left:-18vw;top:-22vw;border-radius:50%;background:radial-gradient(circle,rgba(255,250,241,.96),rgba(183,190,168,.16) 54%,transparent 72%);pointer-events:none}.access-card{position:relative;z-index:2;width:min(620px,100%);padding:clamp(34px,7vw,64px);text-align:center;border:1px solid rgba(104,113,83,.16);border-radius:30px;background:rgba(255,250,241,.94);box-shadow:0 28px 80px rgba(65,69,54,.11);animation:access-arrive .7s cubic-bezier(.22,1,.36,1) both}.access-card::before,.access-card::after{content:"";position:absolute;width:56px;height:56px;pointer-events:none;opacity:.7}.access-card::before{left:18px;top:18px;border-left:1px solid rgba(165,138,87,.46);border-top:1px solid rgba(165,138,87,.46);border-radius:16px 0 0 0}.access-card::after{right:18px;bottom:18px;border-right:1px solid rgba(165,138,87,.46);border-bottom:1px solid rgba(165,138,87,.46);border-radius:0 0 16px 0}.access-neutral{max-width:560px}.access-monogram{width:68px;height:68px;margin:0 auto 24px;display:grid;place-items:center;border:1px solid rgba(104,113,83,.28);border-radius:50%;font-family:var(--display,"Cormorant Garamond",serif);font-size:1.25rem;color:#687153;background:rgba(231,235,226,.72)}.access-kicker{margin:0 0 15px;color:#7d8870;font-size:.69rem;font-weight:700;letter-spacing:.28em}.access-card h1{margin:0;color:#414536;font-family:var(--display,"Cormorant Garamond",serif);font-size:clamp(2.8rem,8vw,5rem);font-weight:500;line-height:.96;letter-spacing:-.03em}.access-card>p:not(.access-kicker){max-width:490px;margin:22px auto 0;color:#687064;line-height:1.75}.access-form{display:grid;gap:12px;margin:30px auto 0;text-align:left}.access-form label{font-size:.75rem;font-weight:700;letter-spacing:.07em;color:#58624f}.access-form input{width:100%;min-height:54px;padding:0 17px;border:1px solid rgba(104,113,83,.22);border-radius:14px;background:#fff;color:#414536;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.access-form input::placeholder{color:#929889}.access-form input:focus{border-color:#8f9981;box-shadow:0 0 0 4px rgba(143,153,129,.12)}.access-button{min-height:52px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:999px;padding:0 24px;background:#687153;color:#fffaf1;font-weight:800;text-decoration:none;box-shadow:0 12px 28px rgba(104,113,83,.16);transition:transform .2s ease,box-shadow .2s ease}.access-button:hover{transform:translateY(-1px);box-shadow:0 16px 34px rgba(104,113,83,.2)}.access-button.secondary{margin-top:28px;border:1px solid rgba(104,113,83,.24);background:#fffaf1;color:#58624f}.access-button:disabled{opacity:.6;cursor:wait}.access-message{min-height:22px;margin:2px 0 0!important;color:#8b5750!important;font-size:.84rem;line-height:1.4!important}.access-hint{display:block;margin-top:12px;color:#7b8475}.access-line{width:min(260px,70%);height:1px;margin:28px auto 18px;background:linear-gradient(90deg,transparent,#ad905f,transparent);opacity:.55}.access-card small{color:#7f8878;line-height:1.5}.access-branch{position:absolute;width:330px;height:560px;opacity:.2;background:url("data:image/svg+xml,%3Csvg viewBox='0 0 330 560' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' stroke='%238f9981' stroke-width='2'%3E%3Cpath d='M15 550 C80 460 58 330 145 254 C222 187 218 92 312 12'/%3E%3Cpath d='M78 438 C40 420 22 391 12 350 M117 352 C154 338 181 309 199 276 M149 252 C117 228 96 199 82 164 M222 166 C258 151 283 127 299 94'/%3E%3C/g%3E%3Cg fill='%23aeb7a0'%3E%3Cellipse cx='51' cy='405' rx='24' ry='9' transform='rotate(38 51 405)'/%3E%3Cellipse cx='171' cy='323' rx='25' ry='10' transform='rotate(-28 171 323)'/%3E%3Cellipse cx='111' cy='210' rx='24' ry='9' transform='rotate(38 111 210)'/%3E%3Cellipse cx='273' cy='129' rx='26' ry='10' transform='rotate(-30 273 129)'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat;pointer-events:none}.access-branch.left{left:-70px;bottom:-80px}.access-branch.right{right:-70px;top:-70px;transform:scaleX(-1)}
@keyframes access-arrive{from{opacity:0;transform:translateY(18px) scale(.99)}to{opacity:1;transform:none}}
@media(max-width:620px){.access-shell{padding:22px 14px}.access-shell::before{inset:9px;border-radius:22px}.access-card{padding:38px 24px;border-radius:24px}.access-card h1{font-size:clamp(2.55rem,14vw,4.1rem)}.access-branch{width:240px;height:420px;opacity:.13}}
@media(prefers-reduced-motion:reduce){.access-card{animation:none!important}.access-button{transition:none}}

/* /css/invitation-experience.css */
/* Personalized invitation, vintage cinema ticket and opening veil */
.personal-welcome{margin:24px auto 4px;max-width:720px;text-align:center;animation:personalWelcomeIn 1.15s cubic-bezier(.2,.8,.2,1) both}.personal-welcome .personal-kicker{display:block;margin-bottom:8px;color:#cdb786;font:600 .7rem/1.3 Manrope,sans-serif;letter-spacing:.28em;text-transform:uppercase}.personal-welcome strong{display:block;color:#f5f0e6;font:400 clamp(1.7rem,4vw,3.25rem)/1.05 "Cormorant Garamond",serif}.personal-welcome p{max-width:620px;margin:10px auto 0;color:rgba(245,240,230,.78);font-size:.95rem;line-height:1.7}
@keyframes personalWelcomeIn{from{opacity:0;transform:translateY(22px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
.personal-access-section{position:relative;overflow:hidden;padding:64px 0;background:linear-gradient(145deg,#eee7da 0%,#f8f3e9 52%,#e6ddcf 100%);color:#1f281f}.personal-access-section:before{content:"";position:absolute;inset:0;opacity:.22;background:radial-gradient(circle at 18% 24%,rgba(78,100,69,.18),transparent 28%),radial-gradient(circle at 82% 70%,rgba(176,145,93,.15),transparent 30%),repeating-linear-gradient(102deg,rgba(73,58,38,.03) 0 1px,transparent 1px 9px);pointer-events:none}.personal-access-card{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:34px;align-items:center;max-width:1040px;margin:auto;padding:38px;border:1px solid rgba(72,78,58,.18);border-radius:28px;background:rgba(255,252,246,.72);box-shadow:0 28px 70px rgba(44,39,28,.14);backdrop-filter:blur(12px)}.personal-access-copy h2{margin:0 0 8px;color:#1c281d;font:500 clamp(2.15rem,5vw,3.7rem)/1 "Cormorant Garamond",serif}.personal-access-copy p{max-width:600px;margin:0;color:#5d6257;line-height:1.75}.personal-access-copy .ticket-name{display:block;margin-bottom:10px;color:#8c744b;font:600 .72rem/1.2 Manrope,sans-serif;letter-spacing:.22em;text-transform:uppercase}.personal-access-tools{display:grid;grid-template-columns:220px minmax(210px,1fr);gap:20px;align-items:center}.personal-qr-shell{padding:13px;border:1px solid rgba(53,72,52,.2);border-radius:20px;background:#fffaf0;box-shadow:0 14px 34px rgba(31,43,31,.12)}.personal-qr-shell canvas{display:block;width:100%;height:auto;border-radius:9px}.personal-access-actions{display:grid;gap:10px}.personal-access-actions .btn{justify-content:center;min-height:48px}.personal-access-actions .btn.primary{background:#233423;color:#f7f1e5;border-color:#233423}.personal-access-actions .btn.secondary{color:#253126;border-color:rgba(37,49,38,.28);background:rgba(255,255,255,.35)}.personal-access-note{grid-column:1/-1;margin:0;color:#7b7568;font-size:.74rem;text-align:center}
.opening-veil{position:fixed;inset:0;z-index:2147483000;overflow:hidden;pointer-events:auto;background:#f8f5ed;isolation:isolate}.opening-veil:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,rgba(255,255,255,.9),transparent 38%),linear-gradient(90deg,rgba(218,207,187,.15),transparent 48% 52%,rgba(218,207,187,.15));opacity:.68;transition:opacity 1.1s ease}.veil-panel{position:absolute;top:-4%;bottom:-4%;width:52.5%;will-change:transform;transition:transform 1.75s cubic-bezier(.72,.02,.17,1),filter 1.75s ease;filter:drop-shadow(0 0 25px rgba(70,57,39,.18));background:radial-gradient(ellipse at 18% 35%,rgba(255,255,255,.96),transparent 34%),radial-gradient(ellipse at 77% 58%,rgba(209,198,177,.32),transparent 35%),repeating-linear-gradient(92deg,#faf7ef 0 7%,#e9e1d4 10%,#fffdf7 16%,#eee7dc 22%,#faf7ef 29%);background-size:100% 100%;box-shadow:inset -18px 0 36px rgba(102,86,63,.09)}.veil-panel:before{content:"";position:absolute;inset:0;background:repeating-radial-gradient(ellipse at 50% -20%,transparent 0 8%,rgba(118,97,68,.055) 9%,transparent 12%);mix-blend-mode:multiply;opacity:.78}.veil-left{left:-2%;transform-origin:left center;border-radius:0 52% 46% 0/0 9% 11% 0}.veil-right{right:-2%;transform-origin:right center;border-radius:52% 0 0 46%/9% 0 0 11%;transform:scaleX(-1)}.veil-seam{position:absolute;left:50%;top:0;bottom:0;width:3px;transform:translateX(-50%);background:linear-gradient(180deg,transparent,#c9b793 15% 85%,transparent);box-shadow:0 0 24px rgba(164,137,88,.36);transition:opacity .55s ease}.veil-monogram{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:grid;place-items:center;width:86px;height:86px;border:1px solid rgba(145,116,68,.38);border-radius:50%;background:rgba(255,252,245,.58);color:#7c6946;font:500 1rem/1 Manrope,sans-serif;letter-spacing:.23em;box-shadow:0 18px 55px rgba(68,55,38,.12);transition:opacity .45s ease,transform .8s ease}.opening-veil.is-opening .veil-left{transform:translate3d(-104%,0,0) skewY(-2.5deg) scaleX(.94);filter:drop-shadow(28px 0 45px rgba(58,47,31,.22))}.opening-veil.is-opening .veil-right{transform:translate3d(104%,0,0) skewY(2.5deg) scaleX(-.94);filter:drop-shadow(-28px 0 45px rgba(58,47,31,.22))}.opening-veil.is-opening .veil-seam,.opening-veil.is-opening .veil-monogram{opacity:0}.opening-veil.is-opening .veil-monogram{transform:translate(-50%,-50%) scale(.84)}.opening-veil.is-opening:after{opacity:0}.opening-veil.is-finished{pointer-events:none}
.admin-personal-modal{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:20px;background:rgba(4,8,6,.76);backdrop-filter:blur(12px)}.admin-personal-dialog{width:min(620px,100%);max-height:90vh;overflow:auto;padding:28px;border:1px solid var(--line);border-radius:22px;background:#111822;box-shadow:0 30px 100px rgba(0,0,0,.55)}.admin-personal-dialog h2{margin:4px 0 18px;font-family:var(--serif);font-size:2.2rem;font-weight:400}.admin-personal-dialog .dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.coordinate-help{grid-column:1/-1;color:var(--muted);font-size:.75rem;line-height:1.5}.admin-qr-preview{display:grid;place-items:center;padding:20px;border-radius:18px;background:#fffaf0}.admin-qr-preview canvas{max-width:260px;width:100%;height:auto}
@media(max-width:820px){.personal-access-card{grid-template-columns:1fr;padding:27px}.personal-access-tools{grid-template-columns:190px 1fr}.personal-access-copy{text-align:center}.personal-access-copy p{margin-inline:auto}}
@media(max-width:600px){.personal-access-section{padding:28px 0}.personal-access-card{margin-inline:12px;padding:20px 16px 16px;gap:18px;border-radius:20px}.personal-access-copy h2{font-size:clamp(1.8rem,9vw,2.35rem);margin-bottom:5px}.personal-access-copy .ticket-name{margin-bottom:6px;font-size:.62rem;letter-spacing:.17em}.personal-access-copy p{font-size:.84rem;line-height:1.48}.personal-access-tools{grid-template-columns:1fr;gap:12px}.personal-qr-shell{width:148px;padding:8px;margin:auto;border-radius:15px;box-shadow:0 10px 24px rgba(31,43,31,.11)}.personal-qr-shell canvas{border-radius:7px}.personal-access-actions{grid-template-columns:1fr 1fr;gap:8px}.personal-access-actions .btn{min-height:42px;padding:9px 10px;font-size:.76rem;line-height:1.15}.personal-access-actions .btn:last-child:nth-child(odd){grid-column:1/-1}.personal-access-note{font-size:.66rem;line-height:1.4}.veil-panel{width:54%}.veil-monogram{width:72px;height:72px}.admin-personal-dialog .dialog-actions{flex-direction:column}.admin-personal-dialog .dialog-actions .btn{width:100%}}
@media(max-width:390px){.personal-access-card{margin-inline:10px;padding-inline:14px}.personal-qr-shell{width:136px}.personal-access-actions{grid-template-columns:1fr}.personal-access-actions .btn,.personal-access-actions .btn:last-child:nth-child(odd){grid-column:auto}}
@media(prefers-reduced-motion:reduce){.opening-veil{transition:opacity .55s ease}.opening-veil.is-opening{opacity:0}.opening-veil.is-opening .veil-panel{transform:none!important}.personal-welcome{animation:none}}

/* /css/qr-responsive-fix.css */
/* Hard mobile containment for invitation QR across Samsung Internet, Chrome and Safari */
.personal-access-tools,.personal-qr-shell,.personal-access-actions{min-width:0}
.personal-qr-shell{overflow:hidden;justify-self:center}
.personal-qr-shell canvas{display:block;max-width:100%!important;aspect-ratio:1/1;object-fit:contain}

@media(max-width:600px){
  .personal-access-section{padding:22px 0!important}
  .personal-access-card{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:14px!important;margin-inline:10px!important;padding:18px 14px 14px!important;overflow:hidden!important}
  .personal-access-copy{text-align:center!important}
  .personal-access-copy h2{font-size:2rem!important;line-height:.95!important;margin-bottom:6px!important}
  .personal-access-copy p{font-size:.82rem!important;line-height:1.42!important;max-width:33rem!important;margin-inline:auto!important}
  .personal-access-copy .ticket-name{font-size:.58rem!important;letter-spacing:.14em!important;margin-bottom:6px!important}
  .personal-access-tools{display:flex!important;flex-direction:column!important;align-items:stretch!important;width:100%!important;max-width:100%!important;gap:12px!important;overflow:hidden!important}
  .personal-qr-shell{box-sizing:border-box!important;width:140px!important;min-width:140px!important;max-width:140px!important;height:140px!important;min-height:140px!important;max-height:140px!important;padding:7px!important;margin:0 auto!important;border-radius:14px!important;overflow:hidden!important}
  .personal-qr-shell canvas{box-sizing:border-box!important;width:126px!important;min-width:126px!important;max-width:126px!important;height:126px!important;min-height:126px!important;max-height:126px!important;margin:0!important;padding:0!important}
  .personal-access-actions{display:grid!important;grid-template-columns:1fr 1fr!important;width:100%!important;max-width:100%!important;gap:8px!important;position:static!important;transform:none!important}
  .personal-access-actions .btn{position:static!important;transform:none!important;width:100%!important;min-width:0!important;min-height:40px!important;padding:8px 7px!important;font-size:.72rem!important;line-height:1.15!important;white-space:normal!important}
  .personal-access-actions .btn:last-child{grid-column:1/-1!important}
  .personal-access-note{font-size:.63rem!important;line-height:1.35!important;margin-top:0!important}
}

@media(max-width:380px){
  .personal-qr-shell{width:128px!important;min-width:128px!important;max-width:128px!important;height:128px!important;min-height:128px!important;max-height:128px!important}
  .personal-qr-shell canvas{width:114px!important;min-width:114px!important;max-width:114px!important;height:114px!important;min-height:114px!important;max-height:114px!important}
  .personal-access-actions{grid-template-columns:1fr!important}
  .personal-access-actions .btn:last-child{grid-column:auto!important}
}

/* /css/invitation-polish-v2.css */
/* Final invitation polish: simplified actions and near-white opening veil */
[data-qr-download]{display:none!important}

.opening-veil{
  background:#fffefb!important;
}
.opening-veil:after{
  background:
    radial-gradient(circle at 50% 44%,rgba(255,255,255,1),rgba(255,255,255,.48) 38%,transparent 68%),
    linear-gradient(90deg,rgba(241,238,231,.08),transparent 47% 53%,rgba(241,238,231,.08))!important;
  opacity:.46!important;
}
.veil-panel{
  filter:drop-shadow(0 0 18px rgba(93,84,70,.07))!important;
  background:
    radial-gradient(ellipse at 18% 35%,rgba(255,255,255,1),transparent 38%),
    radial-gradient(ellipse at 76% 58%,rgba(246,243,237,.2),transparent 38%),
    repeating-linear-gradient(92deg,#fff 0 7%,#faf9f6 10%,#fff 16%,#f7f5f0 22%,#fff 29%)!important;
  box-shadow:inset -15px 0 30px rgba(119,108,90,.035)!important;
}
.veil-panel:before{
  background:repeating-radial-gradient(ellipse at 50% -20%,transparent 0 8%,rgba(140,130,115,.018) 9%,transparent 12%)!important;
  opacity:.48!important;
}
.veil-seam{
  background:linear-gradient(180deg,transparent,#e8dfcf 18% 82%,transparent)!important;
  box-shadow:0 0 18px rgba(187,169,137,.14)!important;
}
.veil-monogram{
  border-color:rgba(172,151,115,.24)!important;
  background:rgba(255,255,255,.84)!important;
  color:#9a855f!important;
  box-shadow:0 14px 42px rgba(87,76,59,.07)!important;
}
.opening-veil.is-opening .veil-left{
  filter:drop-shadow(24px 0 36px rgba(75,67,55,.09))!important;
}
.opening-veil.is-opening .veil-right{
  filter:drop-shadow(-24px 0 36px rgba(75,67,55,.09))!important;
}

@media(max-width:600px){
  .personal-access-actions{grid-template-columns:1fr 1fr!important}
  .personal-access-actions .btn{grid-column:auto!important}
}
@media(max-width:390px){
  .personal-access-actions{grid-template-columns:1fr!important}
}

/* /css/sage-botanical-theme.css */
/* WeddingOS — Sage Botanical theme approved from the visual reference */
:root{
  --sage-950:#41493d;
  --sage-850:#515c4b;
  --sage-700:#6f7c68;
  --sage-550:#91a08a;
  --sage-400:#aeb9a8;
  --sage-300:#c2cbbd;
  --sage-200:#d5dccf;
  --sage-100:#e7ebe2;
  --ivory:#fffaf1;
  --cream:#f6efe4;
  --paper:#eee5d7;
  --sand:#d5c19f;
  --gold:#a8874d;
  --ink:#3f463b;
  --ink-soft:#687064;
  --sage-line:rgba(79,91,73,.22);
  --sage-shadow:0 26px 72px rgba(70,76,62,.14);
  --bg:var(--cream);
  --bg2:var(--sage-100);
  --text:var(--ink);
  --muted:var(--ink-soft);
  --accent:var(--gold);
  --accent2:var(--sage-700);
  --surface:rgba(255,250,241,.84);
  --line:var(--sage-line);
  --shadow:var(--sage-shadow);
}

html{background:var(--cream)!important;scrollbar-color:var(--sage-550) var(--cream)!important}
body{background:var(--cream)!important;color:var(--ink)!important}
body::before{
  background:
    radial-gradient(circle at 8% 4%,rgba(174,185,168,.28),transparent 29%),
    radial-gradient(circle at 92% 9%,rgba(213,193,159,.22),transparent 27%),
    linear-gradient(180deg,var(--ivory),var(--cream))!important;
}
body::after{opacity:.02!important}
.page-shell{background:var(--cream)!important;color:var(--ink)!important}

/* The curtain is the only opening experience. */
.cj-intro{display:none!important}
.loading::before{background:var(--cream)!important}
.loading::after{border-color:rgba(111,124,104,.16)!important;border-top-color:var(--sage-700)!important}

/* Pale-sage translucent fabric, closed in the middle and pulled toward each side. */
.opening-veil{
  inset:-3px!important;
  background:rgba(232,237,226,.34)!important;
  backdrop-filter:blur(2px) saturate(.82)!important;
  -webkit-backdrop-filter:blur(2px) saturate(.82)!important;
}
.opening-veil::after{
  background:
    radial-gradient(ellipse at 50% 23%,rgba(255,255,255,.46),transparent 43%),
    linear-gradient(90deg,rgba(109,124,102,.12),transparent 47% 53%,rgba(109,124,102,.12))!important;
  opacity:.62!important;
}
.veil-panel{
  top:-7%!important;
  bottom:-7%!important;
  width:53.5%!important;
  opacity:.82!important;
  background-color:rgba(194,203,189,.92)!important;
  background-image:
    radial-gradient(ellipse at 21% 18%,rgba(255,255,255,.7) 0 17%,transparent 47%),
    radial-gradient(ellipse at 78% 62%,rgba(255,250,241,.32) 0 16%,transparent 48%),
    repeating-linear-gradient(94deg,
      rgba(230,235,225,.96) 0 7%,
      rgba(174,186,169,.82) 11%,
      rgba(217,225,213,.95) 17%,
      rgba(153,168,149,.72) 23%,
      rgba(224,231,220,.94) 30%)!important;
  box-shadow:inset -15px 0 30px rgba(65,73,61,.08)!important;
  filter:drop-shadow(0 0 17px rgba(64,73,60,.13))!important;
  transition:transform 1.75s cubic-bezier(.72,.02,.17,1),filter 1.75s ease,opacity .9s ease!important;
}
.veil-panel::before{
  background:repeating-radial-gradient(ellipse at 50% -18%,transparent 0 8%,rgba(70,82,66,.045) 9%,transparent 12%)!important;
  opacity:.5!important;
  mix-blend-mode:multiply!important;
}
.veil-left{
  left:-3%!important;
  border-radius:0 58% 24% 0/0 15% 8% 0!important;
}
.veil-right{
  right:-3%!important;
  border-radius:58% 0 0 24%/15% 0 0 8%!important;
}
.veil-seam{
  width:2px!important;
  background:linear-gradient(180deg,transparent,rgba(126,139,119,.42) 13% 87%,transparent)!important;
  box-shadow:0 0 18px rgba(89,102,83,.14)!important;
}
.veil-monogram{
  width:82px!important;
  height:82px!important;
  border-color:rgba(83,96,77,.32)!important;
  background:rgba(238,242,233,.72)!important;
  color:var(--sage-850)!important;
  box-shadow:0 15px 42px rgba(67,75,62,.1)!important;
}
.opening-veil.is-opening .veil-left{transform:translate3d(-105%,0,0) skewY(-2.4deg) scaleX(.95)!important}
.opening-veil.is-opening .veil-right{transform:translate3d(105%,0,0) skewY(2.4deg) scaleX(-.95)!important}

/* Light botanical hero framed like an arched doorway. */
.hero{
  min-height:100svh!important;
  padding:74px 18px 112px!important;
  color:var(--ink)!important;
  background:
    radial-gradient(ellipse at 50% 12%,rgba(255,255,255,.9),transparent 45%),
    radial-gradient(circle at 7% 18%,rgba(174,185,168,.22),transparent 28%),
    radial-gradient(circle at 94% 74%,rgba(145,160,138,.18),transparent 30%),
    linear-gradient(180deg,#fffaf1 0%,#f5eee3 72%,#e8ecE3 100%)!important;
}
.hero::before{
  inset:18px 16px 30px!important;
  border:1px solid rgba(168,135,77,.28)!important;
  border-radius:46% 46% 20px 20px/15% 15% 20px 20px!important;
  box-shadow:inset 0 0 90px rgba(142,153,133,.07)!important;
}
.hero::after{height:150px!important;background:linear-gradient(transparent,var(--cream))!important}
.hero-art{
  background:
    radial-gradient(ellipse at 50% 30%,rgba(214,222,209,.42),transparent 45%),
    linear-gradient(110deg,transparent 0 38%,rgba(255,255,255,.48) 44%,transparent 51%)!important;
}
.hero-art::before{opacity:.16!important;background:repeating-linear-gradient(104deg,transparent 0 45px,rgba(116,132,109,.13) 48px,transparent 86px)!important}
.hero-art::after{background:var(--sage-300)!important;opacity:.16!important}
.grid-lines{opacity:.025!important}
.cj-branch{opacity:.54!important;filter:drop-shadow(0 18px 28px rgba(76,86,70,.12))!important}
.cj-branch path{stroke:#77856f!important}
.cj-branch ellipse{fill:#91a08a!important;opacity:.68!important}
.cj-leaf{background:linear-gradient(135deg,#b8c3b2,#73816b)!important;opacity:.5}

.hero-card{
  width:min(900px,100%)!important;
  padding:72px clamp(23px,8vw,96px) 64px!important;
  color:var(--ink)!important;
  background:rgba(255,250,241,.74)!important;
  border:1px solid rgba(113,126,106,.22)!important;
  border-radius:46% 46% 24px 24px/13% 13% 24px 24px!important;
  box-shadow:0 30px 100px rgba(80,87,72,.14)!important;
  backdrop-filter:blur(10px)!important;
}
.hero-card::before,.hero-card::after{background:linear-gradient(90deg,transparent,rgba(168,135,77,.6),transparent)!important}
.hero-card .eyebrow{color:var(--gold)!important;letter-spacing:.38em!important}
.hero h1{color:var(--sage-950)!important;text-shadow:none!important;font-size:clamp(4rem,12vw,8.8rem)!important;line-height:.82!important}
.hero h1 .amp{color:var(--gold)!important}
.hero-subtitle{color:var(--ink-soft)!important}
.hero-date{color:var(--sage-850)!important}
.hero-date::before,.hero-date::after{background:var(--gold)!important}
.scroll-hint{color:var(--sage-700)!important}
.scroll-hint::after{background:linear-gradient(var(--sage-700),transparent)!important}

.btn{
  min-height:46px!important;
  border-radius:9px!important;
  border-color:rgba(78,91,72,.28)!important;
  text-transform:uppercase!important;
  letter-spacing:.1em!important;
  font-size:.7rem!important;
  box-shadow:none!important;
}
.btn.primary{
  background:linear-gradient(135deg,var(--sage-700),var(--sage-550))!important;
  color:var(--ivory)!important;
  border-color:transparent!important;
}
.btn.secondary{
  background:rgba(255,250,241,.7)!important;
  color:var(--sage-850)!important;
  border-color:rgba(82,96,76,.32)!important;
}
.btn:hover{transform:translateY(-2px)!important;box-shadow:0 13px 30px rgba(75,84,68,.13)!important}

.guest-banner{
  margin-top:-48px!important;
  border-radius:16px!important;
  color:var(--sage-950)!important;
  background:rgba(199,208,194,.94)!important;
  border-color:rgba(89,102,83,.24)!important;
  box-shadow:0 20px 56px rgba(75,83,68,.13)!important;
}
.guest-banner span{color:#687164!important}
.badge{color:var(--ivory)!important;background:var(--sage-700)!important;border-color:transparent!important}

main>section,
main>section:not(:has(.countdown)):not(:has(.event-grid)),
main>section:has(.countdown),
main>section:has(.event-grid){
  color:var(--ink)!important;
  background:
    radial-gradient(circle at 8% 8%,rgba(180,192,175,.18),transparent 27%),
    radial-gradient(circle at 92% 82%,rgba(213,193,159,.15),transparent 30%),
    linear-gradient(180deg,var(--ivory),var(--cream))!important;
}
main>section:nth-of-type(even){background:linear-gradient(180deg,#e5e9df,#d9e1d5)!important}
main>section::after{opacity:.16!important}
.section-kicker,
main>section:has(.countdown) .section-kicker,
main>section:has(.event-grid) .section-kicker{color:var(--gold)!important}
.section-title{color:var(--sage-950)!important}
.section-copy,
main>section:has(.countdown) .section-copy,
main>section:has(.event-grid) .section-copy{color:var(--ink-soft)!important}

.panel,
main>section:has(.event-grid) .panel,
main>section:has(.countdown) .panel{
  color:var(--ink)!important;
  background:rgba(255,250,241,.82)!important;
  border:1px solid rgba(91,104,85,.21)!important;
  border-radius:18px!important;
  box-shadow:var(--sage-shadow)!important;
  backdrop-filter:blur(10px)!important;
}
.info-card p,.event-item span,.timeline-content p,.faq-answer,.rsvp-summary p,.save-date-card p{color:var(--ink-soft)!important}

.countdown{
  width:min(760px,100%);
  margin-inline:auto;
  padding:20px!important;
  border:1px solid rgba(84,97,79,.2)!important;
  border-radius:28px!important;
  background:rgba(202,211,198,.58)!important;
  box-shadow:0 20px 55px rgba(76,84,69,.11)!important;
}
.countdown-item{
  border:0!important;
  border-right:1px solid rgba(84,97,79,.17)!important;
  border-radius:0!important;
  background:transparent!important;
}
.countdown-item:last-child{border-right:0!important}
.countdown-item strong{color:var(--sage-950)!important;font-family:var(--display)!important;font-weight:500!important}
.countdown-item span{color:var(--sage-700)!important}

.event-card{background:rgba(255,250,241,.9)!important}
.event-icon{background:var(--sage-200)!important;color:var(--sage-850)!important}
.map-frame{border-color:rgba(85,98,79,.22)!important;background:var(--sage-100)!important}
.timeline-time{color:var(--gold)!important}
.timeline-dot{border-color:var(--sage-200)!important;background:var(--sage-700)!important}

/* Editorial, integrated photographs rather than a conventional gallery. */
.gallery{
  grid-template-columns:1.25fr .75fr!important;
  grid-auto-rows:minmax(190px,31vw)!important;
  gap:12px!important;
  padding:12px!important;
  border:1px solid rgba(91,104,85,.18)!important;
  border-radius:26px!important;
  background:rgba(255,250,241,.7)!important;
  box-shadow:var(--sage-shadow)!important;
}
.gallery img{
  width:100%!important;
  height:100%!important;
  aspect-ratio:auto!important;
  border:0!important;
  border-radius:18px!important;
  box-shadow:none!important;
}
.gallery img:first-child{grid-row:span 2;border-radius:150px 150px 18px 18px!important}
.gallery img:nth-child(3){border-radius:18px 18px 150px 150px!important}

/* Personal QR/ticket card in pale sage. */
.personal-access-section{
  color:var(--ink)!important;
  background:
    radial-gradient(circle at 10% 15%,rgba(255,255,255,.55),transparent 25%),
    linear-gradient(145deg,#e3e8de,#cbd5c7)!important;
}
.personal-access-card{
  background:rgba(255,250,241,.84)!important;
  border-color:rgba(82,96,76,.24)!important;
  box-shadow:var(--sage-shadow)!important;
}
.personal-access-copy h2{color:var(--sage-950)!important}
.personal-access-copy p{color:var(--ink-soft)!important}
.personal-access-copy .ticket-name{color:var(--gold)!important}
.personal-qr-shell{background:var(--ivory)!important;border-color:rgba(77,91,71,.24)!important}
.personal-access-actions .btn.primary{background:var(--sage-700)!important;color:var(--ivory)!important}
.personal-access-actions .btn.secondary{background:rgba(255,250,241,.75)!important;color:var(--sage-850)!important}
.personal-access-note{color:#70786c!important}

.rsvp-shell{align-items:start}
.rsvp-summary,.rsvp-form{background:rgba(255,250,241,.88)!important}
.field label{color:var(--sage-700)!important}
.field input,.field select,.field textarea{
  color:var(--ink)!important;
  background:rgba(255,255,255,.72)!important;
  border-color:rgba(86,99,80,.24)!important;
}
.field input:focus,.field select:focus,.field textarea:focus{
  border-color:var(--sage-550)!important;
  box-shadow:0 0 0 3px rgba(145,160,138,.16)!important;
}
.choice{color:var(--ink)!important;background:rgba(229,235,225,.58)!important;border-color:rgba(86,99,80,.2)!important}
.choice:has(input:checked){background:var(--sage-300)!important;border-color:var(--sage-700)!important}
.notice{background:var(--sage-100)!important;color:var(--ink-soft)!important}
.notice.success{border-color:var(--sage-550)!important;color:var(--sage-850)!important}

.faq-item button{color:var(--sage-950)!important}
.footer{color:var(--ink-soft)!important;background:var(--cream)!important}
.footer strong{color:var(--sage-950)!important}
.toast{color:var(--ink)!important;background:var(--ivory)!important;border-color:var(--sage-line)!important}
.cj-progress{background:linear-gradient(90deg,var(--sage-550),var(--gold))!important;box-shadow:none!important}
.cj-organic-veil{opacity:.1!important}

@media(max-width:820px){
  .hero{padding:54px 10px 92px!important}
  .hero::before{inset:10px 8px 22px!important}
  .hero-card{padding:58px 20px 50px!important;border-radius:44% 44% 22px 22px/10% 10% 22px 22px!important}
  .gallery{grid-auto-rows:minmax(175px,48vw)!important}
}
@media(max-width:600px){
  .opening-veil{inset:-5px!important}
  .veil-panel{width:55%!important}
  .veil-left{left:-5%!important}
  .veil-right{right:-5%!important}
  .veil-monogram{width:68px!important;height:68px!important}
  .hero h1{font-size:clamp(3.7rem,18vw,6rem)!important}
  .hero-card{background:rgba(255,250,241,.8)!important}
  .guest-banner{margin-inline:8px!important}
  .countdown{padding:12px 7px!important;border-radius:20px!important}
  .countdown-item{padding:12px 5px!important}
  .gallery{grid-template-columns:1fr 1fr!important;grid-auto-rows:180px!important;padding:8px!important}
  .gallery img:first-child{grid-column:1/-1;grid-row:auto;border-radius:100px 100px 16px 16px!important}
  .gallery img:nth-child(3){border-radius:16px 16px 90px 90px!important}
}
@media(max-width:390px){
  .hero-card{padding-inline:16px!important}
  .countdown-item strong{font-size:1.35rem!important}
  .countdown-item span{font-size:.52rem!important}
}
@media(prefers-reduced-motion:reduce){
  .opening-veil.is-opening{opacity:0!important}
  .opening-veil.is-opening .veil-panel{transform:none!important}
}

/* /css/desktop-sage-parity.css */
/* WeddingOS — desktop parity for the approved sage/cream theme. */
@media (min-width:821px){
  html,body,.page-shell{background:#f5f0e6!important;color:#414536!important}

  .hero{
    background:
      radial-gradient(circle at 10% 18%,rgba(174,185,168,.52),transparent 32%),
      radial-gradient(circle at 90% 72%,rgba(145,160,138,.38),transparent 34%),
      radial-gradient(ellipse at 50% 8%,rgba(255,255,255,.88),transparent 42%),
      linear-gradient(180deg,#f8f3ea 0%,#e7ebe2 66%,#d8e0d4 100%)!important;
  }
  .hero-art{
    background:
      radial-gradient(ellipse at 50% 28%,rgba(194,203,189,.58),transparent 46%),
      linear-gradient(110deg,transparent 0 34%,rgba(255,255,255,.52) 43%,transparent 53%)!important;
  }
  .hero-card{
    background:rgba(255,250,241,.82)!important;
    border-color:rgba(104,113,83,.28)!important;
    box-shadow:0 30px 100px rgba(80,87,72,.15)!important;
  }
  .hero-card .eyebrow,.scroll-hint{color:#687153!important}

  .guest-banner{
    background:#c7d0c2!important;
    border-color:rgba(89,102,83,.28)!important;
    color:#414536!important;
  }
  .guest-banner span{color:#5f6959!important}

  main>section{
    background:
      radial-gradient(circle at 8% 10%,rgba(183,190,168,.22),transparent 28%),
      radial-gradient(circle at 92% 82%,rgba(213,193,159,.14),transparent 30%),
      linear-gradient(180deg,#fffaf1,#f5f0e6)!important;
  }
  main>section:nth-of-type(even){
    background:
      radial-gradient(circle at 88% 18%,rgba(255,255,255,.36),transparent 30%),
      linear-gradient(180deg,#e4e9df,#d5ddd1)!important;
  }

  .countdown{
    background:#d7dfd3!important;
    border-color:rgba(84,97,79,.24)!important;
  }
  .panel,.event-card,.rsvp-summary,.rsvp-form{
    background:rgba(255,250,241,.88)!important;
    border-color:rgba(91,104,85,.22)!important;
  }
  .event-icon{background:#d5dccf!important;color:#515c4b!important}
  .choice{background:rgba(215,223,211,.72)!important}
  .choice:has(input:checked){background:#c2cbbd!important;border-color:#6f7c68!important}

  .btn.primary{background:linear-gradient(135deg,#687153,#91a08a)!important;color:#fffaf1!important}
  .btn.secondary{background:rgba(255,250,241,.82)!important;color:#515c4b!important;border-color:rgba(82,96,76,.32)!important}

  .rsvp-access-qr .rsvp-qr-card,
  .personal-access-section{
    background:linear-gradient(145deg,#e3e8de,#cbd5c7)!important;
  }
}

/* /css/sage-contrast-v2.css */
/* WeddingOS — stronger sage contrast while preserving the cream editorial palette. */
body.wos-sage-enhanced{
  --sage-strong:#74866d;
  --sage-mid:#9eae99;
  --sage-soft:#c3d0bf;
  --sage-wash:#d5dfd2;
}

body.wos-sage-enhanced .hero{
  background:
    radial-gradient(circle at 8% 18%,rgba(116,134,109,.46),transparent 31%),
    radial-gradient(circle at 92% 72%,rgba(142,160,135,.38),transparent 32%),
    radial-gradient(ellipse at 50% 8%,rgba(255,255,255,.82),transparent 40%),
    linear-gradient(180deg,#f8f2e8 0%,#d8e2d5 62%,#bdcdb9 100%)!important;
}
body.wos-sage-enhanced .hero-art{
  background:
    radial-gradient(ellipse at 50% 28%,rgba(158,174,153,.5),transparent 46%),
    linear-gradient(110deg,transparent 0 35%,rgba(255,255,255,.48) 43%,transparent 53%)!important;
}
body.wos-sage-enhanced .hero::before{border-color:rgba(91,112,84,.34)!important}
body.wos-sage-enhanced .hero-card{
  background:rgba(255,250,241,.84)!important;
  border-color:rgba(100,122,93,.34)!important;
}
body.wos-sage-enhanced .hero-card .eyebrow,
body.wos-sage-enhanced .scroll-hint{color:#66785f!important}

body.wos-sage-enhanced .guest-banner{
  background:linear-gradient(135deg,#bfd0bb,#aebfa9)!important;
  border-color:rgba(83,105,77,.36)!important;
}
body.wos-sage-enhanced .guest-banner span{color:#53634e!important}
body.wos-sage-enhanced .badge{background:#6d8066!important}

body.wos-sage-enhanced main>section{
  background:
    radial-gradient(circle at 8% 10%,rgba(158,174,153,.28),transparent 28%),
    radial-gradient(circle at 92% 82%,rgba(213,193,159,.14),transparent 30%),
    linear-gradient(180deg,#fffaf1,#f3eee4)!important;
}
body.wos-sage-enhanced main>section:nth-of-type(even){
  background:
    radial-gradient(circle at 88% 18%,rgba(255,255,255,.32),transparent 30%),
    radial-gradient(circle at 10% 86%,rgba(105,128,98,.17),transparent 27%),
    linear-gradient(180deg,#d4dfd1,#becdbb)!important;
}
body.wos-sage-enhanced .section-kicker{color:#748260!important}
body.wos-sage-enhanced .section-title{color:#3f4d3b!important}

body.wos-sage-enhanced .countdown{
  background:linear-gradient(145deg,#cad7c7,#b8c8b4)!important;
  border-color:rgba(75,99,69,.31)!important;
}
body.wos-sage-enhanced .countdown-item{border-color:rgba(76,98,71,.22)!important}
body.wos-sage-enhanced .countdown-item strong{color:#3e5039!important}
body.wos-sage-enhanced .countdown-item span{color:#596b53!important}

body.wos-sage-enhanced .panel,
body.wos-sage-enhanced .event-card,
body.wos-sage-enhanced .rsvp-summary,
body.wos-sage-enhanced .rsvp-form{
  border-color:rgba(88,110,81,.29)!important;
}
body.wos-sage-enhanced .event-icon{background:#c0cfbc!important;color:#506149!important}
body.wos-sage-enhanced .choice{background:rgba(198,211,194,.74)!important}
body.wos-sage-enhanced .choice:has(input:checked){background:#aebfa9!important;border-color:#667c60!important}

body.wos-sage-enhanced .btn.primary{
  background:linear-gradient(135deg,#607458,#82967a)!important;
}
body.wos-sage-enhanced .btn.secondary{
  border-color:rgba(82,105,76,.38)!important;
  color:#4e6148!important;
}

body.wos-sage-enhanced .rsvp-access-qr .rsvp-qr-card,
body.wos-sage-enhanced .personal-access-section{
  background:linear-gradient(145deg,#d3dfd0,#b7c9b3)!important;
}

/* Decorative falling leaves: fixed, passive and intentionally subtle. */
.wos-leaf-layer{
  position:fixed;
  inset:0;
  z-index:3;
  overflow:hidden;
  pointer-events:none;
  contain:strict;
}
.wos-falling-leaf{
  position:absolute;
  top:-12vh;
  left:var(--leaf-left);
  width:calc(11px * var(--leaf-scale));
  height:calc(7px * var(--leaf-scale));
  border-radius:100% 0 100% 0;
  background:linear-gradient(135deg,#809478,#546a50);
  opacity:var(--leaf-opacity);
  transform-origin:center;
  will-change:transform;
  animation:wos-leaf-fall var(--leaf-duration) linear var(--leaf-delay) infinite;
}
.wos-falling-leaf:nth-child(3n){background:linear-gradient(135deg,#a1b29b,#708568);border-radius:0 100% 0 100%}
.wos-falling-leaf:nth-child(4n){background:linear-gradient(135deg,#b0a27a,#78836b)}
@keyframes wos-leaf-fall{
  0%{transform:translate3d(0,-12vh,0) rotate(0deg)}
  28%{transform:translate3d(var(--leaf-drift-a),24vh,0) rotate(115deg)}
  58%{transform:translate3d(var(--leaf-drift-b),58vh,0) rotate(230deg)}
  100%{transform:translate3d(var(--leaf-drift-c),116vh,0) rotate(390deg)}
}

@media(min-width:821px){
  body.wos-sage-enhanced .hero{
    background:
      radial-gradient(circle at 8% 18%,rgba(84,112,78,.55),transparent 30%),
      radial-gradient(circle at 92% 72%,rgba(111,143,103,.46),transparent 31%),
      radial-gradient(ellipse at 50% 8%,rgba(255,255,255,.78),transparent 39%),
      linear-gradient(180deg,#f7f1e7 0%,#ceddca 58%,#adc1a8 100%)!important;
  }
  body.wos-sage-enhanced .guest-banner{
    background:linear-gradient(135deg,#aec3a8,#94ad8d)!important;
    border-color:rgba(66,92,61,.44)!important;
  }
  body.wos-sage-enhanced main>section:nth-of-type(even){
    background:
      radial-gradient(circle at 88% 18%,rgba(255,255,255,.24),transparent 28%),
      radial-gradient(circle at 10% 86%,rgba(72,103,68,.2),transparent 27%),
      linear-gradient(180deg,#c8d7c4,#afc3aa)!important;
  }
  body.wos-sage-enhanced .countdown{
    background:linear-gradient(145deg,#bfd0bb,#a9bea4)!important;
    border-color:rgba(63,91,58,.38)!important;
  }
  body.wos-sage-enhanced .event-icon{background:#aec2a8!important;color:#40573c!important}
  body.wos-sage-enhanced .choice{background:rgba(181,199,176,.82)!important}
  body.wos-sage-enhanced .choice:has(input:checked){background:#95ad8f!important;border-color:#4f6c4a!important}
}

@media(max-width:820px){
  body.wos-sage-enhanced .hero{
    background:
      radial-gradient(circle at 8% 18%,rgba(116,134,109,.38),transparent 34%),
      radial-gradient(circle at 92% 70%,rgba(142,160,135,.32),transparent 34%),
      linear-gradient(180deg,#f8f2e8 0%,#dbe4d8 66%,#c3d1bf 100%)!important;
  }
  body.wos-sage-enhanced main>section:nth-of-type(even){background:linear-gradient(180deg,#d7e1d4,#c4d1c0)!important}
  .wos-falling-leaf{opacity:calc(var(--leaf-opacity) * .82)}
  .wos-falling-leaf:nth-child(n+7){display:none}
}
@media(prefers-reduced-motion:reduce){.wos-leaf-layer{display:none!important}}

/* /css/hero-rsvp-ux.css */
/* WeddingOS — hero RSVP status + stable in-card scroll hint. */
.hero-card .wos-rsvp-status{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  max-width:100%;
  margin:0 auto 18px;
  padding:10px 15px;
  border:1px solid transparent;
  border-radius:999px;
  font:700 .72rem/1.25 Manrope,Arial,sans-serif;
  letter-spacing:.055em;
  text-transform:uppercase;
  box-shadow:0 10px 28px rgba(65,73,61,.12);
}
.wos-rsvp-status__dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto;background:currentColor;box-shadow:0 0 0 4px color-mix(in srgb,currentColor 13%,transparent)}
.wos-rsvp-status.is-confirmed{color:#fffaf1;background:#526b4d;border-color:#465e42;box-shadow:0 10px 28px rgba(82,107,77,.2)}
.wos-rsvp-status.is-pending{color:#fffaf1;background:#9a682d;border-color:#875a26;box-shadow:0 10px 30px rgba(154,104,45,.24)}
.wos-rsvp-status.is-declined{color:#fffaf1;background:#7d6259;border-color:#6c544c}
.wos-rsvp-status.is-closed{color:#455340;background:#d7ddd2;border-color:#a7b2a2}
.wos-rsvp-status.is-upcoming{color:#455340;background:#d7e1d3;border-color:#9fad99}

/* Keep the discovery cue fully inside the hero card at every viewport height. */
.hero-card.wos-hint-inside .scroll-hint{
  position:relative!important;
  inset:auto!important;
  left:auto!important;
  right:auto!important;
  top:auto!important;
  bottom:auto!important;
  transform:none!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:center!important;
  justify-content:center!important;
  gap:5px!important;
  width:max-content!important;
  max-width:100%!important;
  margin:26px auto 0!important;
  padding:8px 14px 9px!important;
  border-radius:999px!important;
  color:#66785f!important;
  background:rgba(235,240,231,.82)!important;
  border:1px solid rgba(103,124,96,.22)!important;
  font-size:.68rem!important;
  letter-spacing:.16em!important;
  line-height:1.25!important;
  white-space:nowrap!important;
  text-align:center!important;
  z-index:2!important;
  animation:none!important;
  pointer-events:none!important;
}
.hero-card.wos-hint-inside .scroll-hint::after{
  content:'↓'!important;
  position:static!important;
  inset:auto!important;
  display:block!important;
  width:auto!important;
  height:auto!important;
  margin:0!important;
  background:none!important;
  color:#718469!important;
  font:600 .95rem/1 Manrope,Arial,sans-serif!important;
  animation:wos-scroll-cue 1.8s ease-in-out infinite!important;
}
@keyframes wos-scroll-cue{0%,100%{transform:translateY(0);opacity:.55}50%{transform:translateY(3px);opacity:1}}

body.wos-sage-enhanced .hero .hero-actions .wos-ticket-jump.btn.secondary{
  background:linear-gradient(135deg,#365c39,#52784e)!important;
  color:#fffdf5!important;
  border:2px solid #b89555!important;
  box-shadow:0 13px 34px rgba(48,82,51,.26),0 0 0 3px rgba(184,149,85,.08)!important;
  font-weight:800!important;
}
body.wos-sage-enhanced .hero .hero-actions .wos-ticket-jump.btn.secondary:hover,
body.wos-sage-enhanced .hero .hero-actions .wos-ticket-jump.btn.secondary:focus-visible{
  background:linear-gradient(135deg,#294d2d,#446b42)!important;
  color:#fffdf5!important;
  border-color:#c6a568!important;
  box-shadow:0 16px 38px rgba(42,74,45,.34),0 0 0 4px rgba(184,149,85,.12)!important;
}
.hero-actions .wos-ticket-jump::before{content:'▣';font-size:.85em}
#rsvp-access-qr,#rsvp{scroll-margin-top:22px}

@media(min-width:821px){
  body.wos-sage-enhanced .hero .hero-actions .wos-ticket-jump.btn.secondary{
    min-width:210px;
    padding:14px 22px!important;
    letter-spacing:.11em!important;
  }
}
@media(max-width:600px){
  .hero-card .wos-rsvp-status{font-size:.66rem;padding:9px 12px;margin-bottom:15px;letter-spacing:.04em}
  .hero-card.wos-hint-inside .scroll-hint{font-size:.61rem!important;letter-spacing:.13em!important;margin-top:22px!important;padding:7px 11px 8px!important;white-space:normal!important}
  .hero-actions .wos-ticket-jump{width:100%}
}
@media(prefers-reduced-motion:reduce){.hero-card.wos-hint-inside .scroll-hint::after{animation:none!important}}

/* /css/hidden-leaf-discovery.css */
/* WeddingOS — three discreet discoverable leaves + reward. */
.wos-secret-leaf{
  position:absolute;
  z-index:18;
  width:40px;
  height:40px;
  display:grid;
  place-items:center;
  padding:0;
  border:0;
  border-radius:50%;
  background:rgba(247,243,235,.5);
  color:#4d6448;
  font-size:23px;
  line-height:1;
  cursor:pointer;
  opacity:.66;
  filter:drop-shadow(0 5px 12px rgba(55,76,52,.18));
  transition:opacity .2s ease,transform .25s ease,background .2s ease;
  -webkit-tap-highlight-color:transparent;
}
.wos-secret-leaf:hover,.wos-secret-leaf:focus-visible{opacity:1;transform:scale(1.1) rotate(-7deg);background:rgba(232,239,229,.96);outline:2px solid rgba(91,119,84,.5);outline-offset:3px}
.wos-secret-leaf.is-found{pointer-events:none;animation:wos-secret-found .55s cubic-bezier(.2,.8,.2,1) forwards}
.wos-secret-leaf[data-slot="1"]{right:clamp(18px,5vw,70px);top:clamp(44px,7vw,78px);transform:rotate(13deg)}
.wos-secret-leaf[data-slot="2"]{left:clamp(16px,4vw,58px);top:clamp(54px,8vw,96px);transform:rotate(-18deg)}
.wos-secret-leaf[data-slot="3"]{right:16px;top:14px;bottom:auto;transform:rotate(28deg)}
.wos-secret-leaf.is-last{animation:wos-secret-last 3.2s ease-in-out infinite}
.wos-leaf-progress{
  position:fixed;
  left:50%;
  bottom:max(18px,env(safe-area-inset-bottom));
  z-index:120;
  transform:translateX(-50%) translateY(18px);
  padding:10px 15px;
  border-radius:999px;
  background:rgba(62,79,58,.94);
  color:#fffaf1;
  font:700 .76rem/1.2 Manrope,Arial,sans-serif;
  letter-spacing:.04em;
  box-shadow:0 12px 35px rgba(45,63,43,.2);
  opacity:0;
  pointer-events:none;
  transition:opacity .22s ease,transform .22s ease;
}
.wos-leaf-progress.is-visible{opacity:1;transform:translateX(-50%) translateY(0)}

.wos-reward-reopen{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  margin:0 0 28px;
  padding:16px 18px;
  border:1px solid rgba(97,120,89,.3);
  border-radius:18px;
  background:linear-gradient(135deg,rgba(224,234,220,.96),rgba(194,210,189,.94));
  box-shadow:0 12px 34px rgba(66,84,61,.1);
}
.wos-reward-reopen>div{display:grid;gap:2px;text-align:left}
.wos-reward-reopen span{font:700 .68rem/1.2 Manrope,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;color:#61735b}
.wos-reward-reopen strong{font:500 1.3rem/1.15 "Cormorant Garamond",Georgia,serif;color:#394a35}
.wos-reward-reopen button,
.wos-reward-done{
  border:1px solid #b69457;
  border-radius:14px;
  background:linear-gradient(135deg,#3f6240,#5e7d59);
  color:#fffaf1;
  padding:11px 16px;
  font:800 .75rem/1 Manrope,Arial,sans-serif;
  letter-spacing:.06em;
  cursor:pointer;
  white-space:nowrap;
  box-shadow:0 10px 24px rgba(55,87,55,.18);
}
.wos-reward-overlay{
  position:fixed;
  inset:0;
  z-index:2147483000;
  display:grid;
  place-items:center;
  padding:20px;
  background:rgba(40,51,38,.62);
  opacity:0;
  transition:opacity .28s ease;
}
.wos-reward-overlay.is-visible{opacity:1}
.wos-reward-card{
  position:relative;
  width:min(560px,100%);
  max-height:min(86vh,760px);
  overflow:auto;
  padding:22px 22px 24px;
  border:1px solid rgba(176,145,88,.42);
  border-radius:26px;
  background:linear-gradient(160deg,#fffaf1,#eef2e9);
  color:#3f4d3b;
  text-align:center;
  box-shadow:0 34px 90px rgba(27,39,26,.3);
  transform:translateY(18px) scale(.975);
  transition:transform .36s cubic-bezier(.22,.78,.18,1);
}
.wos-reward-overlay.is-visible .wos-reward-card{transform:none}
.wos-reward-close{
  position:absolute;
  right:12px;
  top:12px;
  z-index:3;
  width:36px;
  height:36px;
  border:1px solid rgba(78,99,72,.18);
  border-radius:50%;
  background:rgba(255,250,241,.9);
  color:#53634e;
  font:400 1.45rem/1 Arial,sans-serif;
  cursor:pointer;
}
.wos-reward-kicker{margin:4px 42px 13px;font:800 .69rem/1.2 Manrope,Arial,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#75846b}
.wos-reward-photo{overflow:hidden;border-radius:18px;border:1px solid rgba(105,123,96,.2);background:#dfe7dc;box-shadow:0 14px 34px rgba(71,88,66,.12)}
.wos-reward-photo img{display:block;width:100%;height:min(48vh,400px);object-fit:cover}
.wos-reward-card h2{margin:20px 0 7px;font:500 clamp(2.1rem,7vw,3.25rem)/.95 "Cormorant Garamond",Georgia,serif;color:#3e5039}
.wos-reward-card p{max-width:430px;margin:0 auto 20px;color:#667060;font:500 .94rem/1.65 Manrope,Arial,sans-serif}

@keyframes wos-secret-found{0%{opacity:.9;transform:scale(1)}55%{opacity:1;transform:scale(1.35) rotate(18deg)}100%{opacity:0;transform:scale(.45) translateY(-18px)}}
@keyframes wos-secret-last{0%,72%,100%{box-shadow:0 0 0 0 rgba(89,116,82,0);opacity:.66}82%{box-shadow:0 0 0 7px rgba(89,116,82,.1);opacity:.92}90%{box-shadow:0 0 0 12px rgba(89,116,82,0);opacity:.7}}
@media(max-width:600px){
  .wos-secret-leaf{width:42px;height:42px;font-size:24px;opacity:.62}
  .wos-secret-leaf[data-slot="1"]{right:9px;top:42px}
  .wos-secret-leaf[data-slot="2"]{left:8px;top:52px}
  .wos-secret-leaf[data-slot="3"]{right:10px;top:10px}
  .wos-reward-reopen{align-items:stretch;flex-direction:column;padding:15px;margin-bottom:22px}
  .wos-reward-reopen button{width:100%}
  .wos-reward-card{padding:18px 16px 20px;border-radius:22px}
  .wos-reward-photo img{height:min(46vh,360px)}
}
@media(prefers-reduced-motion:reduce){.wos-secret-leaf,.wos-leaf-progress,.wos-reward-overlay,.wos-reward-card{transition:none}.wos-secret-leaf.is-found{animation:none;opacity:0}.wos-secret-leaf.is-last{animation:none}}

/* /css/phase-dietary-experience.css */
/* WeddingOS — subtle phase status + compact dietary selector. */
.wos-phase-container{margin-top:10px!important;margin-bottom:2px!important}
.wos-phase-status{
  display:grid;
  gap:5px;
  padding:4px 2px 7px;
  color:#5d6958;
  background:transparent!important;
  border:0!important;
  box-shadow:none!important;
}
.wos-phase-line{display:flex;align-items:baseline;justify-content:space-between;gap:14px;min-width:0}
.wos-phase-line>span{font:700 .63rem/1.25 Manrope,Arial,sans-serif;letter-spacing:.14em;text-transform:uppercase;color:#778371}
.wos-phase-line>strong{flex:0 0 auto;font:600 .82rem/1.2 Manrope,Arial,sans-serif;color:#53674e}
.wos-phase-status>small{font:500 .68rem/1.4 Manrope,Arial,sans-serif;color:#8a9184}
.wos-phase-track{display:grid;grid-template-columns:6px 34px 6px 34px 6px;align-items:center;gap:4px;width:max-content;margin-top:1px}
.wos-phase-track i{display:block;width:6px;height:6px;border-radius:50%;background:#c6cec1;border:0}
.wos-phase-track i.active{background:#647b5d;box-shadow:0 0 0 3px rgba(100,123,93,.11)}
.wos-phase-track i.done{background:#94a38e}
.wos-phase-track b{display:block;height:1px;background:#cbd2c7}

.wos-save-date-preferences{margin-top:20px;padding-top:18px;border-top:1px solid rgba(91,110,84,.16);text-align:left}
.wos-save-date-pref-head{display:grid;gap:4px;margin-bottom:14px}
.wos-save-date-pref-head span{font:700 .65rem/1.2 Manrope,Arial,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#718168}
.wos-save-date-pref-head strong{font:500 1.25rem/1.18 "Cormorant Garamond",Georgia,serif;color:#3f4d3b}
.wos-dietary-block,.wos-dietary-block>.field{min-width:0!important;max-width:100%!important}
.wos-dietary-block .field{margin:0!important}
.wos-dietary-block label{display:block;margin-bottom:7px!important}
.wos-dietary-block select{
  width:100%!important;
  max-width:100%!important;
  box-sizing:border-box!important;
  min-height:46px!important;
  padding:10px 42px 10px 13px!important;
  border:1px solid rgba(85,108,79,.25)!important;
  border-radius:14px!important;
  background:#fffaf2!important;
  color:#465342!important;
  font:600 .84rem/1.25 Manrope,Arial,sans-serif!important;
}
.wos-save-date-preferences .form-actions{margin-top:14px!important}
.wos-save-pref-success{margin-top:15px!important;text-align:left}

@media(min-width:821px){
  .wos-phase-container{margin-top:13px!important}
  .wos-phase-status{padding-inline:5px}
  .wos-phase-line>span{font-size:.66rem}
  .wos-phase-line>strong{font-size:.86rem}
  .wos-save-date-preferences{margin-top:22px;padding-top:20px}
}
@media(max-width:600px){
  .wos-phase-container{margin-top:8px!important}
  .wos-phase-status{padding:3px 1px 6px}
  .wos-phase-line{gap:8px}
  .wos-phase-line>span{font-size:.58rem;letter-spacing:.1em}
  .wos-phase-line>strong{font-size:.74rem}
  .wos-phase-status>small{font-size:.63rem}
  .wos-phase-track{grid-template-columns:5px 26px 5px 26px 5px}
  .wos-phase-track i{width:5px;height:5px}
  .wos-save-date-pref-head strong{font-size:1.17rem}
  .wos-dietary-block select{min-height:44px!important;font-size:.82rem!important}
}

/* /css/phase-status-footer.css */
/* WeddingOS — stage indicator belongs at the end of each invitation phase. */
#wos-phase-status.wos-phase-footer{margin-top:30px!important;margin-bottom:18px!important;padding-top:10px!important;padding-bottom:0!important}
#wos-phase-status.wos-phase-footer .wos-phase-status{padding:8px 2px 0!important;border-top:1px solid rgba(96,116,89,.16)!important;background:transparent!important;box-shadow:none!important}
#wos-phase-status.wos-phase-footer .wos-phase-line>span{opacity:.88}
#wos-phase-status.wos-phase-footer .wos-phase-status>small{opacity:.8}
#wos-phase-status.wos-phase-footer .wos-phase-track{opacity:.78}
@media(max-width:600px){
  #wos-phase-status.wos-phase-footer{margin-top:24px!important;margin-bottom:12px!important;padding-top:7px!important}
  #wos-phase-status.wos-phase-footer .wos-phase-status{padding-top:7px!important}
}

/* /css/guest-personal-photo.css */
/* WeddingOS — optional personal image inside the guest identity card. */
.guest-banner.wos-has-personal-photo{
  display:grid!important;
  grid-template-columns:78px minmax(0,1fr) auto;
  align-items:center;
  column-gap:16px;
  row-gap:7px;
}
.wos-guest-personal-photo{
  width:78px;
  height:96px;
  grid-row:1 / span 2;
  object-fit:cover;
  border-radius:22px;
  border:1px solid rgba(185,157,104,.5);
  box-shadow:0 8px 22px rgba(63,70,51,.14),inset 0 0 0 1px rgba(255,255,255,.28);
  background:#f4efe3;
}
.guest-banner.wos-has-personal-photo > div{min-width:0}
.guest-banner.wos-has-personal-photo > .badge{justify-self:end;align-self:start}
@media(max-width:640px){
  .guest-banner.wos-has-personal-photo{
    grid-template-columns:64px minmax(0,1fr);
    column-gap:13px;
  }
  .wos-guest-personal-photo{width:64px;height:80px;border-radius:18px}
  .guest-banner.wos-has-personal-photo > .badge{grid-column:2;justify-self:start;margin-top:2px}
}

/* /css/mobile-rsvp-cta.css */
#wos-mobile-rsvp-cta{display:none}
@media(max-width:680px){
  #wos-mobile-rsvp-cta{position:fixed;left:16px;right:16px;bottom:max(14px,env(safe-area-inset-bottom));z-index:120;display:block;border:1px solid rgba(91,104,85,.22);border-radius:999px;padding:13px 18px;background:rgba(79,94,72,.95);color:#fffaf1;font:700 .86rem/1.2 Manrope,Arial,sans-serif;letter-spacing:.02em;box-shadow:0 14px 40px rgba(58,68,54,.24);backdrop-filter:blur(14px)}
  #wos-mobile-rsvp-cta.is-confirmed{background:rgba(255,250,241,.96);color:#52604d}
  body:has(#wos-mobile-rsvp-cta) .footer{padding-bottom:92px}
}

/* /css/cream-veil-editorial.css */
/* Cream-white opening fabric and editorial couple photo composition */
.opening-veil{
  background:#fff9ed!important;
}
.opening-veil:after{
  background:
    radial-gradient(circle at 50% 42%,rgba(255,255,255,.98) 0 18%,rgba(255,252,245,.96) 42%,rgba(255,248,235,.98) 100%),
    linear-gradient(90deg,rgba(222,207,181,.035),transparent 47% 53%,rgba(222,207,181,.035))!important;
  opacity:1!important;
  mix-blend-mode:normal!important;
}
.veil-panel{
  background-color:#fffaf0!important;
  background-image:
    radial-gradient(ellipse at 17% 32%,rgba(255,255,255,1) 0 19%,transparent 46%),
    radial-gradient(ellipse at 78% 60%,rgba(247,238,222,.34) 0 18%,transparent 46%),
    repeating-linear-gradient(92deg,#fffdf8 0 8%,#fbf4e8 11%,#fffefb 17%,#f8efe1 23%,#fffaf0 30%)!important;
  filter:drop-shadow(0 0 15px rgba(98,82,58,.055))!important;
  box-shadow:inset -14px 0 28px rgba(117,92,57,.028)!important;
  opacity:1!important;
}
.veil-panel:before{
  background:repeating-radial-gradient(ellipse at 50% -18%,transparent 0 8%,rgba(128,102,66,.016) 9%,transparent 12%)!important;
  mix-blend-mode:normal!important;
  opacity:.42!important;
}
.veil-seam{
  background:linear-gradient(180deg,transparent,#ead8b9 18% 82%,transparent)!important;
  box-shadow:0 0 14px rgba(174,140,88,.11)!important;
}
.veil-monogram{
  border-color:rgba(167,135,82,.24)!important;
  background:#fffaf0!important;
  color:#a08455!important;
  box-shadow:0 12px 36px rgba(96,75,43,.065)!important;
}
.opening-veil.is-opening .veil-left{filter:drop-shadow(22px 0 32px rgba(83,67,44,.075))!important}
.opening-veil.is-opening .veil-right{filter:drop-shadow(-22px 0 32px rgba(83,67,44,.075))!important}

.editorial-photo-section{
  position:relative;
  overflow:hidden;
  padding:clamp(72px,10vw,128px) 0;
  background:
    radial-gradient(circle at 12% 20%,rgba(93,112,79,.10),transparent 28%),
    radial-gradient(circle at 88% 74%,rgba(170,141,91,.12),transparent 30%),
    linear-gradient(145deg,#f4eee2 0%,#fffaf2 51%,#e9dfcf 100%);
  color:#263126;
}
.editorial-photo-section:before,
.editorial-photo-section:after{
  content:"";
  position:absolute;
  pointer-events:none;
  border:1px solid rgba(88,105,75,.14);
  border-radius:50%;
}
.editorial-photo-section:before{width:380px;height:380px;left:-230px;top:8%;transform:rotate(18deg)}
.editorial-photo-section:after{width:310px;height:520px;right:-210px;bottom:-170px;transform:rotate(-22deg)}
.editorial-photo-layout{
  position:relative;
  display:grid;
  grid-template-columns:minmax(250px,.8fr) minmax(360px,1.25fr);
  gap:clamp(38px,7vw,94px);
  align-items:center;
}
.editorial-photo-copy{position:relative;z-index:3;max-width:470px}
.editorial-photo-kicker{
  display:block;
  margin-bottom:14px;
  color:#947a4d;
  font:600 .7rem/1.2 Manrope,sans-serif;
  letter-spacing:.27em;
  text-transform:uppercase;
}
.editorial-photo-copy h2{
  margin:0;
  color:#243024;
  font:500 clamp(2.7rem,6vw,5rem)/.94 "Cormorant Garamond",serif;
  letter-spacing:-.035em;
}
.editorial-photo-copy p{
  max-width:430px;
  margin:24px 0 0;
  color:#62675e;
  font-size:clamp(.96rem,1.6vw,1.08rem);
  line-height:1.85;
}
.editorial-photo-signature{
  display:flex;
  align-items:center;
  gap:13px;
  margin-top:28px;
  color:#68715f;
  font:500 .68rem/1.2 Manrope,sans-serif;
  letter-spacing:.18em;
  text-transform:uppercase;
}
.editorial-photo-signature:before{content:"";width:48px;height:1px;background:#ae9363}
.editorial-photo-stage{
  position:relative;
  min-height:clamp(520px,63vw,760px);
  perspective:1200px;
}
.editorial-shot{
  --photo-zoom:1;
  --photo-x:0;
  --photo-y:0;
  --frame-size:10px;
  position:absolute;
  isolation:isolate;
  overflow:hidden;
  margin:0;
  background:#efe6d8;
  border:1px solid rgba(116,103,79,.12);
  box-shadow:0 24px 58px rgba(42,43,33,.16),0 4px 16px rgba(64,59,47,.08);
  transform:translate3d(0,44px,0) scale(.96);
  opacity:0;
  filter:blur(8px);
  transition:opacity 1.15s ease,transform 1.35s cubic-bezier(.18,.8,.18,1),filter 1.15s ease;
  will-change:transform;
}
.editorial-shot:before{
  content:"";
  position:absolute;
  z-index:0;
  inset:var(--frame-size);
  border:1px solid rgba(137,120,89,.12);
  border-radius:inherit;
  background:linear-gradient(145deg,#ede5d9,#f7f1e7);
  pointer-events:none;
}
.editorial-shot img{
  position:absolute;
  z-index:1;
  left:var(--frame-size);
  top:var(--frame-size);
  width:calc(100% - (var(--frame-size) * 2));
  height:calc(100% - (var(--frame-size) * 2));
  display:block;
  object-fit:contain;
  object-position:center;
  border-radius:inherit;
  background:#e8e0d4;
  transform:translate3d(calc(var(--photo-x) * 1%),calc(var(--photo-y) * 1%),0) scale(var(--photo-zoom));
  transform-origin:center;
  transition:transform .22s ease,filter .8s ease;
}
.editorial-shot:after{
  content:"";
  position:absolute;
  z-index:2;
  inset:0;
  border-radius:inherit;
  box-shadow:
    inset 0 0 0 var(--frame-size) #f7f0e4,
    inset 0 0 0 calc(var(--frame-size) + 1px) rgba(151,129,91,.18);
  pointer-events:none;
}
.editorial-shot.primary{z-index:2;left:9%;top:0;width:60%;height:76%;border-radius:180px 180px 28px 28px/118px 118px 28px 28px}
.editorial-shot.secondary{z-index:3;right:1%;bottom:1%;width:47%;height:49%;border-radius:26px;transition-delay:.16s}
.editorial-shot.detail{z-index:4;left:0;bottom:8%;width:37%;height:29%;border-radius:24px;transition-delay:.3s}
.editorial-photo-section.is-visible .editorial-shot{opacity:1;filter:none;transform:translate3d(0,0,0) scale(1)}
.editorial-photo-section.is-visible .editorial-shot.primary{transform:translate3d(0,var(--editorial-parallax-a,0px),0) rotate(-.7deg)}
.editorial-photo-section.is-visible .editorial-shot.secondary{transform:translate3d(0,var(--editorial-parallax-b,0px),0) rotate(.8deg)}
.editorial-photo-section.is-visible .editorial-shot.detail{transform:translate3d(0,var(--editorial-parallax-c,0px),0) rotate(-1.1deg)}
.editorial-shot:hover img{filter:saturate(1.02)}
.editorial-photo-leaf{
  position:absolute;
  z-index:5;
  width:120px;
  height:220px;
  right:42%;
  top:50%;
  opacity:.22;
  transform:rotate(24deg);
  background:
    radial-gradient(ellipse at 44% 18%,#657258 0 10%,transparent 11%),
    radial-gradient(ellipse at 66% 33%,#657258 0 11%,transparent 12%),
    radial-gradient(ellipse at 38% 49%,#657258 0 12%,transparent 13%),
    radial-gradient(ellipse at 65% 65%,#657258 0 11%,transparent 12%),
    linear-gradient(82deg,transparent 48%,#68745d 49% 51%,transparent 52%);
  pointer-events:none;
}

.editorial-photo-admin-card .editorial-photo-admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.editorial-photo-admin-slot{padding:14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.025)}
.editorial-photo-admin-preview{
  position:relative;
  display:grid;
  place-items:center;
  aspect-ratio:4/5;
  margin-bottom:10px;
  overflow:hidden;
  border-radius:18px;
  border:8px solid #f7f0e4;
  outline:1px solid rgba(151,129,91,.18);
  background:#e8e0d4;
  color:var(--muted);
  font-size:.75rem;
  text-align:center;
  box-shadow:0 10px 24px rgba(0,0,0,.08);
}
.editorial-photo-admin-preview:before{display:none}
.editorial-photo-admin-preview img{position:relative;z-index:1;width:100%;height:100%;object-fit:contain;object-position:center;transform:translate3d(calc(var(--preview-x,0) * 1%),calc(var(--preview-y,0) * 1%),0) scale(var(--preview-zoom,1));transform-origin:center}
.editorial-photo-admin-slot input[type=file]{width:100%;font-size:.72rem;color:var(--muted)}
.editorial-upload-status{display:block;margin-top:8px;color:var(--muted);font-size:.7rem;min-height:1em}
.editorial-photo-adjustments{display:grid;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.editorial-photo-adjustment{display:grid;grid-template-columns:78px 1fr 42px;gap:8px;align-items:center;font-size:.7rem;color:var(--muted)}
.editorial-photo-adjustment input[type=range]{width:100%;accent-color:var(--accent,#8ea181)}
.editorial-photo-adjustment output{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}
.editorial-photo-adjustment-actions{display:flex;justify-content:flex-end;margin-top:2px}

@media(max-width:820px){
  .editorial-photo-layout{grid-template-columns:1fr;gap:42px}
  .editorial-photo-copy{max-width:620px;text-align:center;margin:auto}
  .editorial-photo-copy p{margin-inline:auto}
  .editorial-photo-signature{justify-content:center}
  .editorial-photo-stage{min-height:650px;max-width:660px;width:100%;margin:auto}
  .editorial-photo-admin-card .editorial-photo-admin-grid{grid-template-columns:1fr}
}
@media(max-width:600px){
  .editorial-photo-section{padding:62px 0 72px}
  .editorial-photo-layout{gap:30px}
  .editorial-photo-copy h2{font-size:clamp(2.45rem,13vw,3.5rem)}
  .editorial-photo-copy p{font-size:.9rem;line-height:1.68}
  .editorial-photo-stage{min-height:548px;max-width:560px}
  .editorial-shot{--frame-size:8px}
  .editorial-shot.primary{left:10%;top:0;width:72%;height:67%;border-radius:116px 116px 22px 22px/82px 82px 22px 22px}
  .editorial-shot.secondary{right:1%;bottom:1%;width:48%;height:44%;border-radius:22px}
  .editorial-shot.detail{left:1%;bottom:8%;width:42%;height:27%;border-radius:20px}
  .editorial-photo-leaf{right:35%;top:48%;width:88px;height:170px}
}
@media(max-width:390px){
  .editorial-photo-stage{min-height:505px}
  .editorial-shot.primary{width:73%;height:65%}
  .editorial-shot.secondary{width:49%;height:42%}
  .editorial-shot.detail{width:43%;height:26%}
}
@media(prefers-reduced-motion:reduce){
  .editorial-shot{opacity:1;filter:none;transform:none!important;transition:none}
  .editorial-shot img{transition:none}
}

/* /css/guest-invitation-plaque.css */
/* WeddingOS — refined personalized guest plaque. */
.guest-banner.wos-invitation-plaque{
  width:min(560px,calc(100% - 28px))!important;
  min-height:0!important;
  margin:-42px auto 0!important;
  padding:23px 32px 21px!important;
  display:grid!important;
  grid-template-columns:1fr!important;
  place-items:center!important;
  gap:0!important;
  text-align:center!important;
  border:1px solid rgba(112,128,100,.30)!important;
  border-radius:24px!important;
  background:
    radial-gradient(circle at 50% 0,rgba(255,255,255,.84),transparent 52%),
    linear-gradient(145deg,rgba(255,252,244,.97),rgba(239,243,233,.95))!important;
  box-shadow:0 18px 46px rgba(65,76,57,.12),inset 0 0 0 1px rgba(255,255,255,.56)!important;
  backdrop-filter:blur(14px)!important;
  color:#334031!important;
  overflow:visible!important;
}
.guest-banner.wos-invitation-plaque::before{
  content:"";
  width:42px;
  height:1px;
  margin:0 auto 12px;
  background:linear-gradient(90deg,transparent,#b69a64,transparent);
}
.guest-banner.wos-invitation-plaque > div{
  display:grid;
  justify-items:center;
  gap:7px;
  min-width:0;
}
.guest-banner.wos-invitation-plaque .wos-invite-label{
  display:block!important;
  margin:0!important;
  color:#74816d!important;
  font:600 .64rem/1.2 Manrope,Inter,sans-serif!important;
  letter-spacing:.24em!important;
  text-transform:uppercase!important;
}
.guest-banner.wos-invitation-plaque strong{
  display:block;
  max-width:100%;
  color:#2f3b2e!important;
  font:500 clamp(1.75rem,4.2vw,2.45rem)/1.04 "Cormorant Garamond",Georgia,serif!important;
  letter-spacing:-.02em;
  overflow-wrap:anywhere;
}
.guest-banner.wos-invitation-plaque strong::after{
  content:"";
  display:block;
  width:72px;
  height:1px;
  margin:12px auto 0;
  background:linear-gradient(90deg,transparent,rgba(102,119,91,.48),transparent);
}
.guest-banner.wos-invitation-plaque > .badge{
  margin-top:9px!important;
  justify-self:center!important;
  color:#74816d!important;
  border-color:rgba(116,129,109,.25)!important;
  background:rgba(255,255,255,.34)!important;
}
.guest-banner.wos-invitation-plaque.wos-has-personal-photo{
  grid-template-columns:74px minmax(0,1fr)!important;
  column-gap:20px!important;
  row-gap:4px!important;
  text-align:left!important;
  place-items:center stretch!important;
  padding:18px 28px!important;
}
.guest-banner.wos-invitation-plaque.wos-has-personal-photo::before{display:none}
.guest-banner.wos-invitation-plaque.wos-has-personal-photo .wos-guest-personal-photo{
  width:74px!important;
  height:88px!important;
  grid-row:auto!important;
  border-radius:18px!important;
  object-fit:cover;
  justify-self:start;
}
.guest-banner.wos-invitation-plaque.wos-has-personal-photo > div{
  justify-items:start;
  text-align:left;
}
.guest-banner.wos-invitation-plaque.wos-has-personal-photo strong::after{margin-left:0}
.guest-banner.wos-invitation-plaque.wos-has-personal-photo > .badge{
  grid-column:2!important;
  justify-self:start!important;
}
@media(max-width:640px){
  .guest-banner.wos-invitation-plaque{
    width:min(430px,calc(100% - 28px))!important;
    margin-top:-34px!important;
    padding:20px 22px 18px!important;
    border-radius:21px!important;
  }
  .guest-banner.wos-invitation-plaque strong{
    font-size:clamp(1.65rem,8.8vw,2.15rem)!important;
  }
  .guest-banner.wos-invitation-plaque.wos-has-personal-photo{
    grid-template-columns:62px minmax(0,1fr)!important;
    column-gap:14px!important;
    padding:16px 18px!important;
  }
  .guest-banner.wos-invitation-plaque.wos-has-personal-photo .wos-guest-personal-photo{
    width:62px!important;
    height:74px!important;
    border-radius:16px!important;
  }
}

/* /css/rsvp-context-note.css */
/* WeddingOS — RSVP destination and invitation-capacity note. */
.wos-rsvp-context{
  margin:22px 0 0;
  padding:16px 18px;
  border:1px solid rgba(116,137,105,.22);
  border-radius:18px;
  background:linear-gradient(145deg,rgba(246,240,226,.78),rgba(227,237,222,.72));
  box-shadow:0 14px 34px rgba(62,76,55,.08);
}
.wos-rsvp-context-badges{
  display:flex;
  gap:8px;
  flex-wrap:wrap;
  margin-bottom:9px;
}
.wos-rsvp-context-chip{
  display:inline-flex;
  align-items:center;
  min-height:28px;
  padding:5px 10px;
  border:1px solid rgba(116,137,105,.26);
  border-radius:999px;
  color:#56634f;
  background:rgba(255,252,244,.68);
  font:600 .68rem/1 Manrope,sans-serif;
  letter-spacing:.11em;
  text-transform:uppercase;
}
.wos-rsvp-context-chip:before{
  content:'•';
  margin-right:7px;
  color:#a68b59;
}
.wos-rsvp-context .wos-rsvp-plus-one{
  border-color:rgba(166,139,89,.28);
}
.wos-rsvp-context p{
  margin:0!important;
  color:#596257!important;
  font-size:.92rem!important;
  line-height:1.65!important;
}
.wos-rsvp-context strong{color:#33402f}
@media(max-width:600px){
  .wos-rsvp-context{padding:14px 15px;margin-top:18px}
  .wos-rsvp-context p{font-size:.87rem!important}
}

/* /css/color-scheme-control.css */
/* WeddingOS is intentionally designed with a fixed cream/sage/gold palette. */
:root{color-scheme:only light}
html,body,input,textarea,select,button{color-scheme:only light}

/* This protects standards-compliant browsers from automatic theme substitution.
   Samsung Internet Force Dark can still override author styles at browser level. */
@media (prefers-color-scheme: dark){
  :root,html,body,input,textarea,select,button{color-scheme:only light}
}

/* /css/natural-paper-texture.css */
/* WeddingOS — visible natural handmade-paper texture.
   Texture only: preserves the approved cream/sage/gold colors and removes the corrugated look. */
:root{
  /* Balanced paper relief: less dark pulp, slightly stronger light fibres. */
  --wos-paper-shadow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='420' height='420' viewBox='0 0 420 420'%3E%3Cfilter id='n' x='-20%25' y='-20%25' width='140%25' height='140%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.014 .052' numOctaves='5' seed='23' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .028 .028 .028 0 0'/%3E%3C/filter%3E%3Crect width='420' height='420' filter='url(%23n)'/%3E%3C/svg%3E");
  --wos-paper-light:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260' viewBox='0 0 260 260'%3E%3Cfilter id='n' x='-20%25' y='-20%25' width='140%25' height='140%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.055 .16' numOctaves='4' seed='11' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 .032 .032 .032 0 0'/%3E%3C/filter%3E%3Crect width='260' height='260' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Hero: retain the exact approved palette and add only surface relief. */
body #app .hero{
  background:
    var(--wos-paper-shadow),
    var(--wos-paper-light),
    radial-gradient(ellipse at 50% 12%,rgba(255,255,255,.9),transparent 45%),
    radial-gradient(circle at 7% 18%,rgba(174,185,168,.22),transparent 28%),
    radial-gradient(circle at 94% 74%,rgba(145,160,138,.18),transparent 30%),
    linear-gradient(180deg,#fffaf1 0%,#f5eee3 72%,#e8ece3 100%)!important;
  background-size:420px 420px,260px 260px,auto,auto,auto,auto!important;
  background-repeat:repeat,repeat,no-repeat,no-repeat,no-repeat,no-repeat!important;
}

/* Cream invitation sections. */
body #app main>section:not(.hero):not(.personal-access-section):not(.editorial-photo-section){
  background:
    var(--wos-paper-shadow),
    var(--wos-paper-light),
    radial-gradient(circle at 8% 8%,rgba(180,192,175,.18),transparent 27%),
    radial-gradient(circle at 92% 82%,rgba(213,193,159,.15),transparent 30%),
    linear-gradient(180deg,var(--ivory),var(--cream))!important;
  background-size:420px 420px,260px 260px,auto,auto,auto!important;
  background-repeat:repeat,repeat,no-repeat,no-repeat,no-repeat!important;
}

/* Sage sections keep the same sage shades, with the same paper relief. */
body #app main>section:nth-of-type(even):not(.hero):not(.personal-access-section):not(.editorial-photo-section){
  background:
    var(--wos-paper-shadow),
    var(--wos-paper-light),
    linear-gradient(180deg,#e5e9df,#d9e1d5)!important;
  background-size:420px 420px,260px 260px,auto!important;
  background-repeat:repeat,repeat,no-repeat!important;
}

body #app .personal-access-section{
  background:
    var(--wos-paper-shadow),
    var(--wos-paper-light),
    radial-gradient(circle at 10% 15%,rgba(255,255,255,.55),transparent 25%),
    linear-gradient(145deg,#e3e8de,#cbd5c7)!important;
  background-size:420px 420px,260px 260px,auto,auto!important;
  background-repeat:repeat,repeat,no-repeat,no-repeat!important;
}

body #app .editorial-photo-section{
  background:
    var(--wos-paper-shadow),
    var(--wos-paper-light),
    radial-gradient(circle at 12% 20%,rgba(93,112,79,.10),transparent 28%),
    radial-gradient(circle at 88% 74%,rgba(170,141,91,.12),transparent 30%),
    linear-gradient(145deg,#f4eee2 0%,#fffaf2 51%,#e9dfcf 100%)!important;
  background-size:420px 420px,260px 260px,auto,auto,auto!important;
  background-repeat:repeat,repeat,no-repeat,no-repeat,no-repeat!important;
}

/* Individual paper pieces. Do not replace their background color; add only texture layers. */
body #app .hero-card,
body #app .panel,
body #app .event-card,
body #app .save-date-card,
body #app .personal-access-card,
body #app .gallery,
body #app .guest-banner,
body #app .countdown,
body #app .rsvp-summary,
body #app .rsvp-form{
  background-image:var(--wos-paper-shadow),var(--wos-paper-light)!important;
  background-size:360px 360px,220px 220px!important;
  background-repeat:repeat,repeat!important;
}

/* Slight tactile read on cards, without changing hue or making them look aged. */
body #app .hero-card,
body #app .panel,
body #app .event-card,
body #app .personal-access-card,
body #app .rsvp-summary,
body #app .rsvp-form{
  box-shadow:var(--sage-shadow),inset 0 1px rgba(255,255,255,.24),inset 0 -1px rgba(71,75,64,.022)!important;
}

/* Opening envelope/veil: replace the digital ribbed fabric with the same natural paper surface. */
body .opening-veil{
  background-color:#fffefb!important;
  background-image:var(--wos-paper-shadow),var(--wos-paper-light)!important;
  background-size:420px 420px,260px 260px!important;
  background-repeat:repeat,repeat!important;
}
body .veil-panel{
  background-color:#fffaf0!important;
  background-image:var(--wos-paper-shadow),var(--wos-paper-light)!important;
  background-size:360px 360px,220px 220px!important;
  background-repeat:repeat,repeat!important;
  box-shadow:inset -12px 0 24px rgba(117,92,57,.018),inset 0 1px rgba(255,255,255,.28)!important;
}
body .veil-panel::before{
  background:none!important;
  opacity:0!important;
}
body .veil-monogram{
  background-color:rgba(255,255,255,.84)!important;
  background-image:var(--wos-paper-light)!important;
  background-size:180px 180px!important;
  background-repeat:repeat!important;
}

@media(max-width:600px){
  body #app .hero,
  body #app main>section,
  body #app .personal-access-section,
  body #app .editorial-photo-section{
    background-size:340px 340px,210px 210px,auto,auto,auto,auto!important;
  }
  body #app .hero-card,
  body #app .panel,
  body #app .event-card,
  body #app .save-date-card,
  body #app .personal-access-card,
  body #app .gallery,
  body #app .guest-banner,
  body #app .countdown,
  body #app .rsvp-summary,
  body #app .rsvp-form,
  body .veil-panel{
    background-size:300px 300px,190px 190px!important;
  }
  body .opening-veil{
    background-size:340px 340px,210px 210px!important;
  }
}

/* /css/envelope-paper-texture.css */
/* WeddingOS — natural paper envelope + fabric opening curtains.
   Paper is restricted to the envelope; curtains keep the approved sage color with a soft textile weave. */
:root{
  --wos-envelope-shadow:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='460' height='460' viewBox='0 0 460 460'%3E%3Cfilter id='n' x='-20%25' y='-20%25' width='140%25' height='140%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.012 .047' numOctaves='5' seed='31' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .034 .034 .034 0 0'/%3E%3C/filter%3E%3Crect width='460' height='460' filter='url(%23n)'/%3E%3C/svg%3E");
  --wos-envelope-light:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='280' height='280' viewBox='0 0 280 280'%3E%3Cfilter id='n' x='-20%25' y='-20%25' width='140%25' height='140%25'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.045 .135' numOctaves='4' seed='17' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 .052 .052 .052 0 0'/%3E%3C/filter%3E%3Crect width='280' height='280' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* Legacy opening component: fabric curtain, paper seal. */
body .opening-veil::after{
  background:
    radial-gradient(ellipse at 50% 34%,rgba(255,255,255,.20),transparent 58%),
    linear-gradient(90deg,rgba(217,206,187,.02),transparent 46% 54%,rgba(217,206,187,.02))!important;
  opacity:.22!important;
  mix-blend-mode:normal!important;
}
body .opening-veil{
  background:rgba(225,232,221,.30)!important;
}
body .veil-panel{
  background-color:#b9c5b4!important;
  background-image:
    radial-gradient(ellipse at 18% 30%,rgba(255,255,255,.20),transparent 34%),
    radial-gradient(ellipse at 76% 72%,rgba(76,94,73,.10),transparent 31%),
    linear-gradient(100deg,
      rgba(255,255,255,.11) 0 7%,
      rgba(78,95,75,.055) 13%,
      rgba(255,255,255,.075) 22%,
      rgba(73,91,70,.065) 33%,
      rgba(255,255,255,.08) 45%,
      rgba(73,91,70,.055) 58%,
      rgba(255,255,255,.09) 72%,
      rgba(73,91,70,.06) 84%,
      rgba(255,255,255,.075) 100%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.026) 0 1px,rgba(75,91,71,.016) 1px 2px,transparent 2px 4px),
    repeating-linear-gradient(90deg,rgba(255,255,255,.018) 0 1px,rgba(75,91,71,.014) 1px 2px,transparent 2px 4px)!important;
  background-size:auto,auto,100% 100%,4px 4px,4px 4px!important;
  background-repeat:no-repeat,no-repeat,no-repeat,repeat,repeat!important;
  filter:drop-shadow(0 0 18px rgba(64,73,60,.13))!important;
}
body .veil-panel::before{background:none!important;opacity:0!important}
body .veil-monogram{
  background-image:var(--wos-envelope-light)!important;
  background-size:150px 150px!important;
  background-repeat:repeat!important;
}

/* ACTIVE opening curtain generated by opening-curtain-sage-v2.js. */
body .wos-sage-curtain{
  background:rgba(225,232,221,.30)!important;
}

/* Sage side panels use fabric, not paper. Broad folds + fine cross-weave avoid the old digital/ribbed look. */
body .wos-sage-curtain__panel{
  background-color:#b9c5b4!important;
  background-image:
    radial-gradient(ellipse at 16% 28%,rgba(255,255,255,.20),transparent 35%),
    radial-gradient(ellipse at 82% 70%,rgba(75,92,72,.10),transparent 32%),
    linear-gradient(101deg,
      rgba(255,255,255,.12) 0 7%,
      rgba(76,93,73,.055) 12%,
      rgba(255,255,255,.075) 21%,
      rgba(72,89,69,.07) 31%,
      rgba(255,255,255,.085) 43%,
      rgba(72,89,69,.055) 56%,
      rgba(255,255,255,.095) 69%,
      rgba(72,89,69,.065) 82%,
      rgba(255,255,255,.08) 100%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.026) 0 1px,rgba(74,90,70,.016) 1px 2px,transparent 2px 4px),
    repeating-linear-gradient(90deg,rgba(255,255,255,.018) 0 1px,rgba(74,90,70,.014) 1px 2px,transparent 2px 4px)!important;
  background-size:auto,auto,100% 100%,4px 4px,4px 4px!important;
  background-repeat:no-repeat,no-repeat,no-repeat,repeat,repeat!important;
  background-blend-mode:soft-light,multiply,normal,normal,normal!important;
  filter:drop-shadow(0 0 22px rgba(64,73,60,.16))!important;
}

/* Center envelope paper keeps the natural handmade-paper finish. */
body .wos-sage-curtain__paper{
  background-color:#fffaf1!important;
  background-image:
    var(--wos-envelope-shadow),
    var(--wos-envelope-light),
    linear-gradient(145deg,#fffaf1,#eee8dc)!important;
  background-size:330px 330px,205px 205px,auto!important;
  background-repeat:repeat,repeat,no-repeat!important;
  background-blend-mode:normal,normal,normal!important;
  box-shadow:inset 0 1px rgba(255,255,255,.38),inset 0 -1px rgba(92,82,63,.035)!important;
}
body .wos-sage-curtain__paper::before{
  background-image:
    var(--wos-envelope-shadow),
    var(--wos-envelope-light),
    linear-gradient(145deg,#e7e1d5,#f7f1e7)!important;
  background-size:310px 310px,190px 190px,auto!important;
  background-repeat:repeat,repeat,no-repeat!important;
}
body .wos-sage-curtain__paper::after{
  background-image:
    var(--wos-envelope-shadow),
    var(--wos-envelope-light),
    linear-gradient(160deg,#f8f3ea,#e0ded3)!important;
  background-size:300px 300px,185px 185px,auto!important;
  background-repeat:repeat,repeat,no-repeat!important;
}

/* Seal stays crisp with only a restrained fine paper finish. */
body .wos-sage-curtain__seal{
  background-image:
    var(--wos-envelope-light),
    radial-gradient(circle at 35% 28%,#fffdf8 0,#f7f0e4 64%,#e9dcc4 100%)!important;
  background-size:150px 150px,auto!important;
  background-repeat:repeat,no-repeat!important;
}

@media(max-width:600px){
  body .veil-panel,
  body .wos-sage-curtain__panel{background-size:auto,auto,100% 100%,4px 4px,4px 4px!important}
  body .wos-sage-curtain__paper{background-size:270px 270px,170px 170px,auto!important}
  body .wos-sage-curtain__paper::before,
  body .wos-sage-curtain__paper::after{background-size:255px 255px,160px 160px,auto!important}
}

/* /css/reference-fidelity-20260821.css */
/* WeddingOS — fidelity pass against the six approved visual references. */
:root{--rf-paper:#f5f1e8;--rf-paper-hi:#fbf8f1;--rf-sage:#8a9b7e;--rf-olive:#3e4a3a;--rf-gold:#b8965a;--rf-blush:#e8c5c0;--rf-taupe:#a39e93;--rf-body:#5a5a50;--rf-display:"Bodoni Moda","Cormorant Garamond",Georgia,serif;--rf-serif:"Lora",Georgia,serif;--rf-label:Manrope,Arial,sans-serif}
html,body,.page-shell{background:var(--rf-paper)!important;color:var(--rf-olive)!important}
body{background-image:radial-gradient(circle at 13% 4%,rgba(255,255,255,.72),transparent 34%),repeating-linear-gradient(0deg,rgba(90,78,58,.014) 0 1px,transparent 1px 4px)!important}

/* P1 — Save the Date cover: open-envelope watermark + two botanical corners. */
.hero{min-height:100svh!important;padding:74px 22px 112px!important;background:transparent!important;overflow:hidden!important}
.hero::before{content:""!important;position:absolute!important;inset:2% 0 0!important;border:0!important;border-radius:0!important;clip-path:none!important;background:url('/assets/wos-open-envelope-watermark.svg') center 45%/min(920px,96vw) auto no-repeat!important;opacity:.42!important;box-shadow:none!important;pointer-events:none!important}
.hero::after{display:none!important}
.hero-card{position:relative!important;width:min(800px,100%)!important;padding:52px 42px 54px!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;overflow:visible!important}
.hero-card::before,.hero-card::after{content:""!important;position:absolute!important;width:min(280px,38vw)!important;height:150px!important;background:url('/assets/wos-botanical-sprig.svg') center/contain no-repeat!important;opacity:.54!important;pointer-events:none!important}
.hero-card::before{left:-24%;top:-12%;transform:rotate(8deg)!important}.hero-card::after{right:-24%;bottom:-15%;transform:scaleX(-1) rotate(5deg)!important}
.hero-card .eyebrow{color:var(--rf-olive)!important;font:600 .72rem/1.2 var(--rf-label)!important;letter-spacing:.31em!important;text-transform:uppercase!important}
.hero h1{font-family:var(--rf-display)!important;color:var(--rf-olive)!important;font-weight:400!important;font-size:clamp(5.6rem,14vw,9.7rem)!important;line-height:.74!important;letter-spacing:-.055em!important;margin:34px 0 38px!important}
.hero h1 .amp{color:var(--rf-gold)!important;font-style:italic!important;font-weight:400!important;display:inline-block!important;margin:.02em 0!important;transform:scale(1.12)!important}
.hero-subtitle{max-width:590px!important;margin:0 auto 34px!important;font:400 clamp(1.04rem,2vw,1.26rem)/1.68 var(--rf-serif)!important;color:var(--rf-body)!important}
.hero-date{display:flex!important;align-items:center!important;justify-content:center!important;gap:19px!important;margin:0 auto 38px!important;font:600 .72rem/1.2 var(--rf-label)!important;text-transform:uppercase!important;letter-spacing:.29em!important;color:#706d61!important}
.hero-date::before,.hero-date::after{content:""!important;width:76px!important;height:1px!important;background:rgba(184,150,90,.72)!important}
.hero-actions .btn.primary{min-width:280px!important;min-height:56px!important;background:#7f8f73!important;border-radius:15px!important;color:#fffdf8!important;box-shadow:0 12px 22px rgba(62,74,58,.14)!important;font:700 .71rem/1 var(--rf-label)!important;letter-spacing:.21em!important}
.scroll-hint{bottom:26px!important;left:50%!important;transform:translateX(-50%)!important;min-width:330px!important;padding:17px 26px 13px!important;border:1px solid rgba(62,74,58,.28)!important;border-radius:999px!important;background:rgba(245,241,232,.78)!important;color:#66705f!important;font:600 .61rem/1.2 var(--rf-label)!important;letter-spacing:.23em!important;text-transform:uppercase!important;text-align:center!important}
.scroll-hint::after{content:"⌄"!important;display:block!important;position:static!important;width:auto!important;height:auto!important;margin:5px 0 0!important;background:none!important;color:#66705f!important;font-size:1.25rem!important;line-height:.55!important}

/* P2 — saved date card. */
body.wos-phase-save #details{padding-top:54px!important;padding-bottom:54px!important}
#details .save-date-card.wos-save-date-system{position:relative!important;width:min(790px,100%)!important;margin:0 auto!important;padding:88px 82px 60px!important;text-align:center!important;border:0!important;border-radius:42px!important;background:rgba(251,248,241,.96)!important;box-shadow:0 20px 45px rgba(62,74,58,.11)!important;overflow:visible!important}
#details .save-date-card.wos-save-date-system::before,#details .save-date-card.wos-save-date-system::after{content:"";position:absolute;width:280px;height:180px;background:url('/assets/wos-botanical-sprig.svg') center/contain no-repeat;pointer-events:none;opacity:.72}
#details .save-date-card.wos-save-date-system::before{right:-48px;top:-55px;transform:rotate(34deg)}
#details .save-date-card.wos-save-date-system::after{left:-62px;bottom:-70px;transform:scaleX(-1) rotate(22deg)}
#details .save-date-card.wos-save-date-system>.section-kicker{margin-bottom:34px!important;color:var(--rf-olive)!important;font:600 .71rem/1.2 var(--rf-label)!important;letter-spacing:.30em!important;text-transform:uppercase!important}
#details .save-date-card.wos-save-date-system>h3{margin:0 0 38px!important;color:var(--rf-olive)!important;font:italic 400 clamp(3.4rem,8vw,5.9rem)/.96 var(--rf-display)!important;letter-spacing:-.035em!important}
#details .save-date-card.wos-save-date-system>p{max-width:570px!important;margin:0 auto 30px!important;font:400 1.08rem/1.75 var(--rf-serif)!important;color:var(--rf-body)!important}
#details .wos-rsvp-context{margin:22px auto 30px!important;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important}
#details .wos-rsvp-context-badges{display:flex!important;justify-content:center!important;gap:18px!important;margin-bottom:25px!important}
#details .wos-rsvp-context-chip{min-width:150px!important;padding:12px 20px!important;border:1px solid rgba(184,150,90,.68)!important;border-radius:999px!important;background:transparent!important;color:#5f6858!important;font:600 .69rem/1 var(--rf-label)!important;letter-spacing:.20em!important;text-transform:uppercase!important}
#details .wos-rsvp-context p{font:400 1rem/1.7 var(--rf-serif)!important;color:var(--rf-body)!important}
#details .notice.success{max-width:560px!important;margin:28px auto 20px!important;padding:18px 24px!important;border:1px solid rgba(184,150,90,.34)!important;border-radius:20px!important;background:rgba(255,255,255,.25)!important;color:#68675f!important;font:400 .92rem/1.5 var(--rf-serif)!important}
#wos-save-date-preferences{margin:24px 0 0!important;padding:0!important;border:0!important}
#wos-save-date-preferences .form-actions{justify-content:flex-end!important;margin-top:22px!important}
#wos-save-date-preferences .form-actions .btn.primary{min-width:190px!important;background:#77866d!important}

/* P3 — Nuestra historia. */
.wos-story-section{position:relative!important;padding-top:110px!important;padding-bottom:112px!important}
.wos-story-section>.container{position:relative!important}
.wos-story-section>.container::before{content:"";position:absolute;left:-105px;top:-100px;width:190px;height:calc(100% + 200px);background:url('/assets/wos-botanical-sprig.svg') top center/180px auto repeat-y;opacity:.55;pointer-events:none}
.wos-story-section .section-header{max-width:760px!important;margin:0 auto 38px!important;text-align:left!important}
.wos-story-section .section-kicker{color:#65705f!important;font:600 .78rem/1.2 var(--rf-label)!important;letter-spacing:.31em!important;text-transform:uppercase!important}
.wos-story-section .section-title{font:400 clamp(5.1rem,12vw,9.2rem)/.78 var(--rf-display)!important;letter-spacing:-.06em!important;color:var(--rf-olive)!important;margin:22px 0 18px!important}
.wos-story-section .section-copy{display:none!important}
.wos-story-section .info-card{position:relative!important;max-width:780px!important;margin:0 auto!important;padding:64px 72px!important;border:0!important;border-radius:38px!important;background:rgba(251,248,241,.96)!important;box-shadow:0 18px 42px rgba(62,74,58,.10)!important;overflow:visible!important}
.wos-story-section .info-card::before,.wos-story-section .info-card::after{content:"";position:absolute;width:230px;height:150px;background:url('/assets/wos-botanical-sprig.svg') center/contain no-repeat;opacity:.63;pointer-events:none}
.wos-story-section .info-card::before{right:-65px;top:-60px;transform:rotate(27deg)}.wos-story-section .info-card::after{right:-76px;bottom:-58px;transform:scaleX(-1) rotate(-24deg)}
.wos-story-section .info-card p{font:400 clamp(1.02rem,2vw,1.22rem)/1.95 var(--rf-serif)!important;color:#5f6258!important;white-space:normal!important}
.wos-story-section .wos-story-paragraph{display:block;margin:0 0 30px!important}
.wos-story-section .wos-story-divider{display:block;width:160px;height:18px;margin:21px auto 26px;background:linear-gradient(90deg,transparent,rgba(184,150,90,.76),transparent);mask:url('/assets/wos-divider-diamond.svg') center/contain no-repeat;-webkit-mask:url('/assets/wos-divider-diamond.svg') center/contain no-repeat}
.wos-story-section .wos-story-closing{display:block;margin-top:6px;text-align:center;font:italic 400 clamp(1.35rem,3vw,1.75rem)/1.5 var(--rf-display)!important;color:#53604d!important}

/* P4 — RSVP open as one unified card. */
#wos-phase-status{font-family:var(--rf-label)!important}
.wos-rsvp-open{position:relative!important;padding-top:92px!important}
.wos-rsvp-open .section-header{max-width:780px!important;margin:0 auto 48px!important;text-align:center!important}
.wos-rsvp-open .section-kicker{color:#65705f!important;font:600 .78rem/1.2 var(--rf-label)!important;letter-spacing:.32em!important}
.wos-rsvp-open .section-title{display:none!important}
.wos-rsvp-open .section-copy{display:none!important}
.wos-rsvp-open .rsvp-shell{position:relative!important;display:block!important;width:min(800px,100%)!important;margin:0 auto!important;padding:62px 66px 60px!important;border:0!important;border-radius:42px!important;background:rgba(251,248,241,.97)!important;box-shadow:0 20px 48px rgba(62,74,58,.12)!important;overflow:visible!important}
.wos-rsvp-open .rsvp-shell::before,.wos-rsvp-open .rsvp-shell::after{content:"";position:absolute;width:300px;height:190px;background:url('/assets/wos-botanical-sprig.svg') center/contain no-repeat;opacity:.70;pointer-events:none}
.wos-rsvp-open .rsvp-shell::before{right:-64px;top:-74px;transform:rotate(29deg)}.wos-rsvp-open .rsvp-shell::after{left:-78px;bottom:-66px;transform:scaleX(-1) rotate(20deg)}
.wos-rsvp-open .rsvp-summary,.wos-rsvp-open .rsvp-form{padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important}
.wos-rsvp-open .rsvp-summary{margin-bottom:42px!important;text-align:left!important}
.wos-rsvp-open .rsvp-summary h3{margin:0 0 18px!important;font:italic 400 clamp(3.2rem,8vw,5.4rem)/.96 var(--rf-display)!important;color:var(--rf-olive)!important}
.wos-rsvp-open .rsvp-summary>p{margin:0 0 24px!important;font:400 1.08rem/1.55 var(--rf-serif)!important;color:#65675e!important}
.wos-rsvp-open .wos-rsvp-context{padding:0!important;margin:0!important;border:0!important;background:transparent!important;box-shadow:none!important}
.wos-rsvp-open .wos-rsvp-context-badges{display:flex!important;justify-content:flex-start!important;gap:16px!important;margin-bottom:0!important}
.wos-rsvp-open .wos-rsvp-context p{display:none!important}
.wos-rsvp-open .wos-rsvp-context-chip{min-width:150px!important;padding:12px 20px!important;border:1px solid rgba(184,150,90,.64)!important;border-radius:999px!important;background:transparent!important;color:#626a5b!important;font:600 .68rem/1 var(--rf-label)!important;letter-spacing:.20em!important}
.wos-rsvp-open .rsvp-form>.field:first-child>label{font:400 1.25rem/1.3 var(--rf-serif)!important;color:#596054!important;margin-bottom:16px!important}
.wos-rsvp-open .choice-grid{display:grid!important;grid-template-columns:1fr 1fr!important;gap:22px!important;margin-bottom:24px!important}
.wos-rsvp-open .choice{position:relative!important;min-height:136px!important;padding:26px 28px!important;border:1px solid rgba(62,74,58,.50)!important;border-radius:28px!important;background:transparent!important;color:#596054!important;font:400 clamp(1.45rem,3vw,2rem)/1.25 var(--rf-serif)!important;justify-content:center!important;text-align:center!important;transition:background .25s ease,color .25s ease,border-color .25s ease,transform .2s ease!important}
.wos-rsvp-open .choice input{position:absolute!important;opacity:0!important;pointer-events:none!important}
.wos-rsvp-open .choice:has(input:checked){background:#77866d!important;color:#fffaf1!important;border-color:#77866d!important;box-shadow:0 10px 24px rgba(62,74,58,.13)!important}
.wos-rsvp-open .choice:has(input:checked)::before{content:"✓";display:grid;place-items:center;width:42px;height:42px;margin-right:13px;border:2px solid rgba(184,150,90,.90);border-radius:50%;color:#d4b470;font:500 1.35rem/1 var(--rf-serif);animation:wosReferenceCheck .36s cubic-bezier(.34,1.56,.64,1) both}
@keyframes wosReferenceCheck{from{transform:scale(0)}to{transform:scale(1)}}
.wos-rsvp-open #attending-fields{margin-top:16px!important;padding:22px 0 4px!important;border-top:1px solid rgba(62,74,58,.10)!important}
.wos-rsvp-open .field>label{font:400 .98rem/1.4 var(--rf-serif)!important;color:#66685f!important}
.wos-rsvp-open .field input,.wos-rsvp-open .field select,.wos-rsvp-open .field textarea{background:rgba(251,248,241,.55)!important;border:1px solid rgba(184,150,90,.34)!important;border-radius:22px!important;font:400 1rem/1.5 var(--rf-serif)!important;color:#555d50!important}
.wos-rsvp-open .field textarea{min-height:145px!important}
.wos-rsvp-open .form-actions{justify-content:stretch!important;margin-top:28px!important}
.wos-rsvp-open .form-actions .btn.primary{width:100%!important;min-height:68px!important;border-radius:20px!important;background:#77866d!important;color:#fffaf1!important;font:700 .78rem/1 var(--rf-label)!important;letter-spacing:.25em!important}

/* P5 — closed state. */
body.wos-phase-closed .section:not(.editorial-photo-section){background:transparent!important}
.wos-closed-countdown{padding-top:72px!important;padding-bottom:32px!important;text-align:center!important}
.wos-closed-countdown .section-header{margin:0 auto 10px!important;text-align:center!important;max-width:820px!important}
.wos-closed-countdown .section-kicker{color:var(--rf-taupe)!important;font:600 .73rem/1.2 var(--rf-label)!important;letter-spacing:.32em!important}
.wos-closed-countdown .section-title{font:400 clamp(4.8rem,12vw,8.6rem)/.84 var(--rf-display)!important;letter-spacing:-.055em!important;margin:28px auto 48px!important}
.wos-closed-countdown .countdown{display:block!important;width:auto!important;margin:0 auto!important;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important}
.wos-closed-countdown .countdown-item{display:none!important}
.wos-closed-countdown .countdown-item:first-child{display:block!important;border:0!important}
.wos-closed-countdown .countdown-item:first-child::before{content:"FALTAN";display:block;margin-bottom:8px;color:#686d64;font:600 .78rem/1.2 var(--rf-label);letter-spacing:.36em;text-transform:uppercase}
.wos-closed-countdown .countdown-item:first-child strong{font:400 clamp(8rem,23vw,15rem)/.78 var(--rf-display)!important;color:var(--rf-gold)!important;letter-spacing:-.05em!important}
.wos-closed-countdown .countdown-item:first-child span{font:italic 400 clamp(2.4rem,6vw,4.2rem)/1 var(--rf-display)!important;color:var(--rf-gold)!important;text-transform:lowercase!important;letter-spacing:0!important}
.editorial-photo-section.wos-polaroid-section{padding:40px 0 86px!important;background:transparent!important}
.editorial-photo-section.wos-polaroid-section .editorial-photo-copy{display:none!important}
.editorial-photo-section.wos-polaroid-section .editorial-photo-layout{display:block!important}
.editorial-photo-section.wos-polaroid-section .editorial-photo-stage{width:min(850px,100%)!important;margin:0 auto!important;min-height:500px!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:0!important;overflow:visible!important}
.editorial-photo-section.wos-polaroid-section .editorial-shot{position:relative!important;inset:auto!important;width:34%!important;height:auto!important;aspect-ratio:.78/1!important;padding:10px 10px 54px!important;border:1px solid rgba(137,126,107,.17)!important;border-radius:0!important;background:#fffdf8!important;box-shadow:0 15px 30px rgba(62,74,58,.16)!important;overflow:hidden!important;transform-origin:center!important;cursor:zoom-in!important}
.editorial-photo-section.wos-polaroid-section .editorial-shot.primary{transform:rotate(-6deg)!important;margin-right:-26px!important}.editorial-photo-section.wos-polaroid-section .editorial-shot.secondary{z-index:3!important;transform:rotate(3deg)!important}.editorial-photo-section.wos-polaroid-section .editorial-shot.detail{transform:rotate(7deg)!important;margin-left:-26px!important}
.editorial-photo-section.wos-polaroid-section .editorial-shot img{width:100%!important;height:100%!important;object-fit:cover!important;transform:none!important;border-radius:0!important}
.editorial-photo-section.wos-polaroid-section .editorial-photo-stage::after{content:"NUESTROS MOMENTOS";position:absolute;left:50%;bottom:-50px;transform:translateX(-50%);font:600 .72rem/1.2 var(--rf-label);letter-spacing:.28em;color:#727467;white-space:nowrap}
.wos-rsvp-closed-note{padding-top:20px!important;padding-bottom:95px!important}
.wos-rsvp-closed-note .save-date-card{max-width:760px!important;margin:0 auto!important;padding:38px 45px!important;border:0!important;background:transparent!important;box-shadow:none!important}
.wos-rsvp-closed-note .save-date-card h3{display:none!important}.wos-rsvp-closed-note .save-date-card p{color:var(--rf-taupe)!important}
.wos-closed-response-preview{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:660px;margin:28px auto 0;opacity:1;pointer-events:none}
.wos-closed-response-preview span{position:relative;min-height:96px;display:flex;align-items:center;justify-content:center;gap:12px;padding:20px;border:1px solid rgba(62,74,58,.32);border-radius:24px;font:400 1.35rem/1.25 var(--rf-serif);color:#676b63;opacity:.46;transition:none}
.wos-closed-response-preview span.is-selected{background:#77866d;color:#fffaf1;border-color:#77866d;opacity:1;box-shadow:0 10px 24px rgba(62,74,58,.13)}
.wos-closed-response-preview span.is-selected::before{content:"✓";display:grid;place-items:center;width:38px;height:38px;flex:0 0 38px;border:2px solid rgba(212,180,112,.95);border-radius:50%;color:#d4b470;font:500 1.2rem/1 var(--rf-serif)}
body.wos-phase-closed .footer{padding-top:24px!important}.footer strong{font:400 clamp(3.2rem,8vw,5rem)/1 var(--rf-display)!important;color:var(--rf-olive)!important}.footer strong::first-letter{color:var(--rf-olive)!important}.footer p{font:italic 400 1.3rem/1.4 var(--rf-display)!important;color:#62665d!important}

/* A3 continuous vine layer. Old card-by-card vines are hidden once A3 is active. */
body.wos-a3-ready .wos-card-vine,body.wos-a3-ready .wos-vine-bridges{display:none!important}
#wos-a3-vine-layer{position:absolute;left:0;top:0;width:100%;height:100%;z-index:5;pointer-events:none;overflow:visible}
#wos-a3-vine-layer svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.wos-a3-stem{fill:none;stroke:#75836e;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:1;filter:drop-shadow(0 1px 1px rgba(62,74,58,.08))}
.wos-a3-leaf,.wos-a3-flower{position:absolute;opacity:0;transform:scale(0);transform-origin:center;transition:opacity .28s ease,transform .52s cubic-bezier(.34,1.56,.64,1);pointer-events:none}
.wos-a3-leaf.is-bloomed,.wos-a3-flower.is-bloomed{opacity:1;transform:scale(1)}
.wos-a3-leaf{width:12px;height:25px;border-radius:95% 8% 95% 8%;background:linear-gradient(145deg,#b6c0aa,#7c8c73);box-shadow:inset 0 0 0 1px rgba(62,74,58,.12)}
.wos-a3-flower{width:34px;height:34px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#b8965a 0 8%,transparent 9%),radial-gradient(ellipse at 50% 8%,#f5ddda 0 25%,transparent 26%),radial-gradient(ellipse at 92% 48%,#e8c5c0 0 25%,transparent 26%),radial-gradient(ellipse at 52% 92%,#f5ddda 0 25%,transparent 26%),radial-gradient(ellipse at 8% 52%,#e8c5c0 0 25%,transparent 26%)}

/* Five tappable leaves from A3. */
.wos-secret-leaf{width:34px!important;height:48px!important;border:0!important;border-radius:95% 12% 95% 12%!important;background:linear-gradient(145deg,#aebba4,#74866b)!important;color:transparent!important;opacity:.58!important;box-shadow:inset 0 0 0 1px rgba(62,74,58,.16),0 5px 12px rgba(62,74,58,.10)!important;filter:none!important}
.wos-secret-leaf::before{content:"";position:absolute;left:49%;top:5px;bottom:5px;width:1px;background:rgba(62,74,58,.35);transform:rotate(28deg)}
.wos-secret-leaf.is-shimmering{animation:wosLeafShimmer 1.05s ease!important}
@keyframes wosLeafShimmer{0%,100%{filter:brightness(1)}45%{filter:brightness(1.24) drop-shadow(0 0 6px rgba(184,150,90,.32))}}
.wos-pollen{position:fixed;z-index:2147482500;width:5px;height:5px;border-radius:50%;background:#b8965a;pointer-events:none;animation:wosPollen .8s ease-out forwards}
@keyframes wosPollen{from{opacity:.9;transform:translate(0,0) scale(1)}to{opacity:0;transform:translate(var(--px),var(--py)) scale(.35)}}
.wos-leaf-progress{background:#707e66!important;color:#fffaf1!important;font:600 .68rem/1.2 var(--rf-label)!important;letter-spacing:.15em!important;text-transform:uppercase!important}

/* Photo entrance + fullscreen lift. */
.editorial-shot.wos-photo-enter{opacity:0!important;transform:translateY(24px) rotate(var(--wos-photo-rotate,0deg))!important;transition:opacity .65s ease var(--wos-photo-delay),transform .75s cubic-bezier(.22,1,.36,1) var(--wos-photo-delay)!important}
.editorial-shot.wos-photo-enter.is-in{opacity:1!important}
.editorial-photo-section:not(.wos-polaroid-section) .editorial-shot.wos-photo-enter.is-in{transform:translateY(var(--editorial-parallax-a,0px))!important}
#wos-photo-lightbox{position:fixed;inset:0;z-index:2147483000;display:grid;place-items:center;padding:24px;background:rgba(32,37,30,.82);opacity:0;transition:opacity .28s ease;cursor:zoom-out}
#wos-photo-lightbox.is-open{opacity:1}
#wos-photo-lightbox figure{margin:0;max-width:min(860px,92vw);max-height:88vh;padding:12px 12px 58px;background:#fffdf8;box-shadow:0 30px 80px rgba(0,0,0,.38);transform:translateY(24px) scale(.94) rotate(var(--from-rotate,3deg));transition:transform .48s cubic-bezier(.22,1,.36,1);overflow:hidden}
#wos-photo-lightbox.is-open figure{transform:translateY(0) scale(1) rotate(0deg)}
#wos-photo-lightbox img{display:block;max-width:100%;max-height:calc(88vh - 70px);object-fit:contain}

@media(max-width:720px){
  .hero-card{padding:42px 16px 48px!important}.hero-card::before{left:-8%;top:-6%}.hero-card::after{right:-8%;bottom:-9%}.hero h1{font-size:clamp(4.7rem,22vw,7rem)!important}.hero-subtitle{font-size:1rem!important}.hero-date{gap:10px!important;font-size:.61rem!important;letter-spacing:.18em!important}.hero-date::before,.hero-date::after{width:36px!important}.scroll-hint{min-width:min(310px,86vw)!important}
  #details .save-date-card.wos-save-date-system{padding:65px 25px 44px!important;border-radius:30px!important}.wos-story-section{padding-top:84px!important}.wos-story-section .section-title{font-size:clamp(4.5rem,23vw,6.7rem)!important}.wos-story-section .info-card{padding:46px 28px!important;border-radius:30px!important}.wos-story-section>.container::before{left:-70px;opacity:.38}
  .wos-rsvp-open .rsvp-shell{padding:48px 24px 45px!important;border-radius:30px!important}.wos-rsvp-open .choice-grid{grid-template-columns:1fr!important;gap:14px!important}.wos-rsvp-open .choice{min-height:105px!important}.wos-rsvp-open .wos-rsvp-context-badges{justify-content:flex-start!important;flex-wrap:wrap!important}.wos-rsvp-open .wos-rsvp-context-chip{min-width:132px!important}
  .editorial-photo-section.wos-polaroid-section .editorial-photo-stage{min-height:390px!important}.editorial-photo-section.wos-polaroid-section .editorial-shot{width:39%!important;padding:7px 7px 39px!important}.editorial-photo-section.wos-polaroid-section .editorial-shot.primary{margin-right:-22px!important}.editorial-photo-section.wos-polaroid-section .editorial-shot.detail{margin-left:-22px!important}
  .wos-closed-response-preview{grid-template-columns:1fr!important}.wos-closed-countdown .section-title{font-size:clamp(4.2rem,20vw,6.5rem)!important}
}
@media(prefers-reduced-motion:reduce){.wos-a3-leaf,.wos-a3-flower,.editorial-shot.wos-photo-enter,#wos-photo-lightbox,#wos-photo-lightbox figure{transition:none!important;animation:none!important}.editorial-shot.wos-photo-enter{opacity:1!important;transform:none!important}}

/* /css/phase-footer-reference-20260821.css */
/* WeddingOS — final fidelity fixes + phase footer composition. */
#wos-a1-stage{background:transparent!important}
#wos-mobile-rsvp-cta{display:none!important}
#wos-phase-status.wos-phase-footer{
  width:min(840px,calc(100% - 34px))!important;
  margin:74px auto 28px!important;
  padding:24px 0 0!important;
  border-top:1px solid rgba(184,150,90,.32)!important;
}
#wos-phase-status.wos-phase-footer .wos-phase-status{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  grid-template-areas:"line line" "track copy"!important;
  gap:10px 24px!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
#wos-phase-status.wos-phase-footer .wos-phase-line{
  grid-area:line!important;
  display:grid!important;
  grid-template-columns:minmax(0,1fr) auto!important;
  align-items:end!important;
  gap:20px!important;
}
#wos-phase-status.wos-phase-footer .wos-phase-line>span{
  color:#636b5d!important;
  font:600 .66rem/1.25 Manrope,Arial,sans-serif!important;
  letter-spacing:.25em!important;
  text-transform:uppercase!important;
  opacity:1!important;
}
#wos-phase-status.wos-phase-footer .wos-phase-line>strong{
  color:#555e50!important;
  font:400 1.5rem/1 "Bodoni Moda","Cormorant Garamond",Georgia,serif!important;
  white-space:nowrap!important;
}
#wos-phase-status.wos-phase-footer .wos-phase-status>small{
  grid-area:copy!important;
  justify-self:end!important;
  align-self:start!important;
  max-width:210px!important;
  text-align:right!important;
  color:#686a61!important;
  font:400 .91rem/1.35 "Lora",Georgia,serif!important;
  opacity:1!important;
}
#wos-phase-status.wos-phase-footer .wos-phase-track{
  grid-area:track!important;
  align-self:start!important;
  display:grid!important;
  grid-template-columns:9px 58px 9px 58px 9px!important;
  gap:0!important;
  width:max-content!important;
  margin:2px 0 0!important;
  opacity:1!important;
}
#wos-phase-status.wos-phase-footer .wos-phase-track i{
  width:9px!important;
  height:9px!important;
  border-radius:50%!important;
  background:#d8cfbd!important;
  box-shadow:none!important;
}
#wos-phase-status.wos-phase-footer .wos-phase-track i.active,
#wos-phase-status.wos-phase-footer .wos-phase-track i.done{background:#65745e!important}
#wos-phase-status.wos-phase-footer .wos-phase-track b{
  height:1px!important;
  align-self:center!important;
  background:#d8cfbd!important;
}
body.wos-phase-invitation #wos-phase-status.wos-phase-footer,
body.wos-phase-closed #wos-phase-status.wos-phase-footer{margin-top:60px!important}
@media(max-width:600px){
  #wos-phase-status.wos-phase-footer{width:calc(100% - 30px)!important;margin-top:58px!important;padding-top:20px!important}
  #wos-phase-status.wos-phase-footer .wos-phase-status{gap:10px 14px!important}
  #wos-phase-status.wos-phase-footer .wos-phase-line>span{font-size:.58rem!important;letter-spacing:.17em!important}
  #wos-phase-status.wos-phase-footer .wos-phase-line>strong{font-size:1.3rem!important}
  #wos-phase-status.wos-phase-footer .wos-phase-status>small{font-size:.81rem!important;max-width:160px!important}
  #wos-phase-status.wos-phase-footer .wos-phase-track{grid-template-columns:8px 34px 8px 34px 8px!important}
  #wos-phase-status.wos-phase-footer .wos-phase-track i{width:8px!important;height:8px!important}
}

/* /css/botanical-vines-safe-20260821.css */
/* WeddingOS — botanical vines that live in gutters/corners and never cross copy or controls. */
/* Disable earlier overlapping decorative pseudo-elements and bridge system. */
.wos-vine-bridges,#wos-vine-bridges,.wos-card-vine{display:none!important}
.wos-rsvp-open .rsvp-shell::before,.wos-rsvp-open .rsvp-shell::after,
.wos-story-section .info-card::before,.wos-story-section .info-card::after,
.wos-story-section>.container::before{content:none!important;display:none!important}

.wos-safe-vine-card{position:relative!important;overflow:visible!important;isolation:isolate}
.wos-safe-vine{position:absolute;inset:-14px;z-index:1;display:block;pointer-events:none;overflow:visible;opacity:.76}
.wos-safe-vine-card>*:not(.wos-safe-vine):not(.wos-secret-leaf){z-index:2}
.wos-safe-vine svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;shape-rendering:geometricPrecision}
.wos-safe-vine-stem,.wos-safe-vine-tendril{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:1}
.wos-safe-vine-stem{stroke:#75836e;stroke-width:1.35;filter:drop-shadow(0 1px 1px rgba(62,74,58,.05))}
.wos-safe-vine-tendril{stroke:#8b9884;stroke-width:1.0;opacity:.83}
.wos-safe-leaf,.wos-safe-flower{position:absolute;display:block;opacity:0;transform:translate3d(0,0,0) scale(.30) rotate(-16deg);transform-origin:center;transition:opacity .25s ease,transform .56s cubic-bezier(.34,1.56,.64,1);will-change:transform,opacity}
.wos-safe-leaf.is-visible,.wos-safe-flower.is-visible{opacity:1;transform:translate3d(0,0,0) scale(1) rotate(0deg)}
.wos-safe-leaf{width:10px;height:20px;border-radius:95% 10% 95% 10%;background:linear-gradient(145deg,#bcc6b3,#8e9f84 48%,#697b62);box-shadow:inset 0 0 0 1px rgba(69,91,64,.14),0 1px 3px rgba(52,70,49,.06)}
.wos-safe-leaf::after{content:"";position:absolute;left:49%;top:2px;bottom:2px;width:1px;background:rgba(70,94,65,.35);transform:rotate(28deg)}
.wos-safe-leaf.leaf-1{left:19%;top:-7px;rotate:-26deg}.wos-safe-leaf.leaf-2{right:-6px;top:20%;rotate:52deg}.wos-safe-leaf.leaf-3{right:-7px;bottom:23%;rotate:118deg}.wos-safe-leaf.leaf-4{right:21%;bottom:-7px;rotate:142deg}.wos-safe-leaf.leaf-5{left:-7px;bottom:21%;rotate:-61deg}.wos-safe-leaf.leaf-6{left:-6px;top:24%;rotate:-42deg}
.wos-safe-flower{width:28px;height:28px;border-radius:50%;background:radial-gradient(circle at 50% 50%,#b8965a 0 8%,transparent 9%),radial-gradient(ellipse at 50% 8%,#fff7f3 0 25%,transparent 26%),radial-gradient(ellipse at 92% 48%,#e8c5c0 0 25%,transparent 26%),radial-gradient(ellipse at 52% 92%,#f6ddd8 0 25%,transparent 26%),radial-gradient(ellipse at 8% 52%,#e8c5c0 0 25%,transparent 26%);filter:drop-shadow(0 3px 6px rgba(102,77,69,.11))}
.wos-safe-flower span{position:absolute;inset:9px;border-radius:50%;border:1px solid rgba(141,94,83,.30);border-left-color:transparent;transform:rotate(34deg)}
.wos-safe-flower.flower-1{right:5%;top:-11px}.wos-safe-flower.flower-2{left:8%;bottom:-11px}

/* Keep actual copy/controls inside a clean safe zone. */
#details .save-date-card.wos-safe-vine-card{padding-left:max(28px,7vw)!important;padding-right:max(28px,7vw)!important}
.wos-story-section .info-card.wos-safe-vine-card{padding-left:max(30px,7vw)!important;padding-right:max(30px,7vw)!important}
.wos-rsvp-open .rsvp-shell.wos-safe-vine-card{padding-left:max(30px,7vw)!important;padding-right:max(30px,7vw)!important}
.wos-rsvp-open .rsvp-summary,.wos-rsvp-open .rsvp-form{position:relative!important;z-index:3!important}
.wos-rsvp-open .rsvp-summary h3,.wos-rsvp-open .rsvp-summary>p,.wos-rsvp-open .wos-rsvp-context,.wos-rsvp-open .rsvp-form>.field,.wos-rsvp-open .choice-grid,.wos-rsvp-open .form-actions{position:relative!important;z-index:4!important}
.wos-rsvp-open .rsvp-summary h3{font-size:clamp(2.45rem,6.6vw,4.2rem)!important;line-height:.98!important;max-width:100%!important}
.wos-rsvp-open .choice-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:16px!important}
.wos-rsvp-open .choice{min-height:118px!important;padding:20px 16px!important;font-size:clamp(1.15rem,2.5vw,1.55rem)!important}

/* Preserve the photo engine's absolute/role positioning. */
.editorial-photo-section .editorial-photo-stage.wos-safe-vine-card>.editorial-shot{z-index:2}
.editorial-photo-section .editorial-photo-stage.wos-safe-vine-card>.editorial-photo-leaf{z-index:3}

/* Interactive game leaves stay visible but outside text gutters. */
.wos-leaf-host{position:relative!important;overflow:visible!important}
.wos-secret-leaf{z-index:12!important;width:25px!important;height:37px!important;opacity:.84!important;box-shadow:inset 0 0 0 1px rgba(62,74,58,.14),0 4px 10px rgba(62,74,58,.09)!important}
.wos-secret-leaf[data-side="outer-right"]{right:-12px!important;left:auto!important}
.wos-secret-leaf[data-side="outer-left"]{left:-12px!important;right:auto!important}

@media(max-width:600px){
  .wos-safe-vine{inset:-9px;opacity:.70}
  .wos-safe-vine-stem{stroke-width:1.15}
  .wos-safe-vine-tendril{stroke-width:.9}
  .wos-safe-leaf{width:9px;height:17px}
  .wos-safe-flower{width:24px;height:24px}
  .wos-safe-flower span{inset:8px}
  #details .save-date-card.wos-safe-vine-card,.wos-story-section .info-card.wos-safe-vine-card,.wos-rsvp-open .rsvp-shell.wos-safe-vine-card{padding-left:30px!important;padding-right:30px!important}
  .wos-rsvp-open .rsvp-summary h3{font-size:clamp(2.15rem,10vw,3rem)!important;line-height:1!important;margin-bottom:14px!important}
  .wos-rsvp-open .choice-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:12px!important}
  .wos-rsvp-open .choice{min-height:104px!important;padding:16px 9px!important;font-size:clamp(1.02rem,5vw,1.28rem)!important;border-radius:22px!important}
  .wos-rsvp-open .choice:has(input:checked)::before{width:30px!important;height:30px!important;margin-right:7px!important;font-size:1rem!important}
  .wos-secret-leaf{width:23px!important;height:34px!important}
  .wos-secret-leaf[data-side="outer-right"]{right:-8px!important}.wos-secret-leaf[data-side="outer-left"]{left:-8px!important}
}
@media(prefers-reduced-motion:reduce){.wos-safe-leaf,.wos-safe-flower{transition:none!important;animation:none!important}}

/* /css/liquid-vines-20260821.css */
/* WeddingOS — Liquid Vines v2.1. Mineral ribbons, zero botanical decoration. */
.wos-safe-vine,.wos-card-vine,.wos-vine-bridges,#wos-vine-bridges,#wos-a3-vine-layer,.wos-liquid-vines-stage,.wos-liquid-vines-frame{display:none!important}
/* Decorative botanical assets remain disabled. The interactive RSVP game leaf is intentionally NOT hidden here. */
.wos-safe-leaf,.wos-safe-flower,.wos-a3-leaf,.wos-a3-flower,.editorial-photo-leaf{display:none!important}

/* Remove all legacy botanical flourishes from screens using the v2.1 system. */
.hero-card::before,.hero-card::after,
#details .save-date-card.wos-save-date-system::before,#details .save-date-card.wos-save-date-system::after,
.wos-story-section>.container::before,
.wos-story-section .info-card::before,.wos-story-section .info-card::after,
.wos-rsvp-open .rsvp-shell::before,.wos-rsvp-open .rsvp-shell::after{content:none!important;display:none!important;background:none!important}

.hero,#details,#details>.container,.wos-story-section,.wos-story-section>.container,#rsvp,#rsvp>.container{overflow:visible!important}

.wos-liquid-v21-home-host{position:relative!important;isolation:isolate!important;overflow:visible!important}
.wos-liquid-v21-home{position:absolute;left:50%;top:0;width:min(100%,460px);height:min(720px,100svh);min-height:620px;transform:translateX(-50%);pointer-events:none;z-index:3;overflow:visible}
.wlv21-layer{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.wlv21-layer-back{z-index:1;opacity:1}
.wlv21-layer-front{z-index:4}

/* Text/buttons always win the stacking order. */
.wos-liquid-v21-home-host .hero-card,.wos-liquid-v21-home-host .hero-card>*{position:relative!important;z-index:8!important}
.wos-liquid-v21-home-host .hero-actions,.wos-liquid-v21-home-host .scroll-hint{position:relative!important;z-index:10!important}

.wlv21-vine{transform-box:fill-box;transform-origin:center;will-change:transform;filter:drop-shadow(0 6px 18px rgba(30,107,94,.14))}
.wlv21-vine-a-back,.wlv21-vine-a-front{animation:wlv21SwayA 6s cubic-bezier(.22,1,.36,1) infinite}
.wlv21-vine-b{animation:wlv21SwayB 6s cubic-bezier(.22,1,.36,1) 1.4s infinite}
.wlv21-vine-c{animation:wlv21SwayC 6s cubic-bezier(.22,1,.36,1) 2.8s infinite;opacity:.45}
@keyframes wlv21SwayA{0%,100%{transform:translateX(0)}50%{transform:translateX(3.5px)}}
@keyframes wlv21SwayB{0%,100%{transform:translateX(0)}50%{transform:translateX(-3px)}}
@keyframes wlv21SwayC{0%,100%{transform:translate(0,0)}50%{transform:translate(-2px,2px)}}

/* Five mandatory material layers. */
.wlv21-body{shape-rendering:geometricPrecision}
.wlv21-silver{fill:none;stroke:#D9D4C7;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;opacity:.40;vector-effect:non-scaling-stroke}
.wlv21-pearl-streak{fill:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;opacity:.60;filter:blur(1px);vector-effect:non-scaling-stroke}
.wlv21-swelling{fill:#22403B;opacity:.94}
.wlv21-swelling.a{fill:#203C37}.wlv21-swelling.b{fill:#23453F}.wlv21-swelling.c{fill:#233B37;opacity:.48}
.wlv21-swelling-glint{fill:#F4EFE7;opacity:.60}
.wlv21-teardrop{fill:#22262B;opacity:.78;stroke:#D9D4C7;stroke-width:1;vector-effect:non-scaling-stroke}
.wlv21-teardrop.c{opacity:.34}
.wlv21-teardrop-glint{fill:#F4EFE7;opacity:.58}

/* Beads live INSIDE a moving local bulge, never as disconnected drops. */
.wlv21-bead-bulge{opacity:.96;filter:drop-shadow(0 3px 8px rgba(30,107,94,.10))}
.wlv21-bead{filter:drop-shadow(1px 2px 2px rgba(30,107,94,.20));will-change:opacity}
.wlv21-fusion{fill:#F4EFE7;opacity:.50}
.wlv21-ripple{fill:none;stroke:#F4EFE7;stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center}
.wlv21-fusion.is-active{animation:wlv21Fusion .4s cubic-bezier(.22,1,.36,1) both}
.wlv21-ripple.is-active{animation:wlv21Ripple .9s cubic-bezier(.22,1,.36,1) both}
@keyframes wlv21Fusion{0%{opacity:.50;transform:scale(.72)}35%{opacity:.72;transform:scale(1.25)}100%{opacity:.50;transform:scale(1)}}
@keyframes wlv21Ripple{0%{opacity:.25;transform:scale(1)}100%{opacity:0;transform:scale(1.15)}}

.wlv21-particle-c{fill:#F4EFE7;opacity:0;filter:drop-shadow(0 1px 2px rgba(30,107,94,.12))}

/* CONTENT MATRIX: one short accent only, upper-left, disappears before reading zone. */
.wos-liquid-v21-content-host{position:relative!important;isolation:isolate!important;overflow:visible!important}
.wos-liquid-v21-content{position:absolute;left:-8px;top:-8px;width:min(48%,220px);height:190px;pointer-events:none;z-index:5;overflow:visible}
.wlv21-content-svg{display:block;width:100%;height:100%;overflow:visible}
.wlv21-vine-content-b{filter:drop-shadow(0 6px 18px rgba(30,107,94,.12));opacity:.72;animation:wlv21SwayB 6s cubic-bezier(.22,1,.36,1) 1.4s infinite}
.wos-liquid-v21-content-host>*:not(.wos-liquid-v21){position:relative!important;z-index:8!important}
.wos-liquid-v21-content-host h1,.wos-liquid-v21-content-host h2,.wos-liquid-v21-content-host h3,.wos-liquid-v21-content-host p,.wos-liquid-v21-content-host button,.wos-liquid-v21-content-host a,.wos-liquid-v21-content-host input,.wos-liquid-v21-content-host label{position:relative!important;z-index:10!important}

/* FORM MATRIX: no vines at all. */
.wos-liquid-v21-form-host>.wos-liquid-v21{display:none!important}
.wos-rsvp-open .wos-liquid-v21{display:none!important}

/* No vines may continue into navigation / lower interaction areas. */
.wos-liquid-v21-home{max-height:720px!important}

/* Small mobile: B disappears on Home; content accent stays because it is the content variant. */
@media(max-width:359px){
  .wos-liquid-v21-home .wlv21-vine-b,
  .wos-liquid-v21-home .wlv21-bead-b,
  .wos-liquid-v21-home .wlv21-bead-bulge-b,
  .wos-liquid-v21-home .wlv21-fusion.b,
  .wos-liquid-v21-home .wlv21-ripple.b{display:none!important}
}

@media(max-width:600px){
  .wos-liquid-v21-home{width:100%;height:min(720px,100svh);min-height:620px}
  .wos-liquid-v21-content{left:-4px;top:-4px;width:min(52%,190px);height:170px}
}

@media(min-width:601px){
  .wos-liquid-v21-home{width:min(460px,100%);height:720px}
}

@media(prefers-reduced-motion:reduce){
  .wlv21-vine-a-back,.wlv21-vine-a-front,.wlv21-vine-b,.wlv21-vine-c,.wlv21-vine-content-b{animation:wlv21Reduced 8s ease-in-out infinite!important}
  .wlv21-bead-b,.wlv21-bead-bulge-b,.wlv21-particle-c,.wlv21-ripple{display:none!important}
  @keyframes wlv21Reduced{0%,100%{opacity:.95}50%{opacity:1}}
}

/* /css/mobile-horizontal-overflow-fix-20260821.css */
/* WeddingOS — prevent decorative SVG/filter ink from creating horizontal viewport scroll. */
html,body{
  width:100%;
  max-width:100%;
  overflow-x:hidden!important;
}
#app,.page-shell,main{
  width:100%;
  max-width:100%;
  min-width:0;
}
.wos-liquid-v21-home-host,
.wos-liquid-v21-content-host,
.hero-card,
#details .save-date-card,
.wos-story-section .info-card,
#rsvp .rsvp-shell,
#rsvp .save-date-card{
  max-width:100%!important;
  min-width:0!important;
}
/* Keep the liquid artwork visible inside its section, but never let its filter/shadow expand the document width. */
.wos-liquid-v21-home,
.wos-liquid-v21-content{
  max-width:100vw!important;
}
@supports (overflow:clip){
  html,body{overflow-x:clip!important}
}

/* /css/mobile-hero-details-fix-20260821.css */
/* WeddingOS — mobile visual corrections: equal hero actions + event-details vine host. */
@media(max-width:520px){
  /* The three hero options must share one exact geometry. */
  .hero-card .hero-actions,
  .hero-card .hero-actions.wos-three-equal-actions{
    width:100%!important;
    display:grid!important;
    grid-template-columns:1fr!important;
    gap:12px!important;
    align-items:stretch!important;
  }

  .hero-card .hero-actions .btn,
  .hero-card .hero-actions .scroll-hint,
  .hero-card.wos-hint-inside .scroll-hint{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    height:56px!important;
    min-height:56px!important;
    max-height:56px!important;
    box-sizing:border-box!important;
    margin:0!important;
    padding:0 18px!important;
    border-radius:15px!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    text-align:center!important;
  }

  /* Discovery is the third action in the same grid, not a separate floating pill. */
  .hero-card .hero-actions .scroll-hint,
  .hero-card.wos-hint-inside .scroll-hint{
    position:relative!important;
    inset:auto!important;
    left:auto!important;
    right:auto!important;
    top:auto!important;
    bottom:auto!important;
    transform:none!important;
    flex-direction:column!important;
    gap:2px!important;
    background:rgba(245,241,232,.82)!important;
    border:1px solid rgba(62,74,58,.28)!important;
    color:#66705f!important;
    font-size:.58rem!important;
    letter-spacing:.19em!important;
    line-height:1.05!important;
    white-space:nowrap!important;
  }
  .hero-card .hero-actions .scroll-hint::after,
  .hero-card.wos-hint-inside .scroll-hint::after{
    margin:1px 0 0!important;
    font-size:.86rem!important;
    line-height:.55!important;
  }

  /* Fallback only until the equalizer places the hint in .hero-actions. */
  .hero>.scroll-hint{
    left:38px!important;
    right:38px!important;
    width:auto!important;
    min-width:0!important;
    max-width:none!important;
    height:56px!important;
    min-height:56px!important;
    max-height:56px!important;
    transform:none!important;
    padding:0 18px!important;
    border-radius:15px!important;
    display:flex!important;
    flex-direction:column!important;
    align-items:center!important;
    justify-content:center!important;
    gap:2px!important;
    font-size:.58rem!important;
    letter-spacing:.19em!important;
    line-height:1.05!important;
  }
  .hero>.scroll-hint::after{
    margin:1px 0 0!important;
    font-size:.86rem!important;
    line-height:.55!important;
  }
}

/* Terminal drops should read as a refined liquid finish, not as a large ornament. */
.wlv21-teardrop,
.wlv21-teardrop-glint{
  transform-box:fill-box;
  transform-origin:center;
  transform:scale(.5)!important;
}

#details .event-card.wos-liquid-v21-content-host{
  position:relative!important;
  isolation:isolate!important;
  overflow:visible!important;
}
#details .event-card.wos-liquid-v21-content-host>.wos-liquid-v21-event-details{
  left:-4px!important;
  top:-4px!important;
}

/* /css/hidden-leaf-rsvp-fix-20260822.css */
/* WeddingOS — hidden-leaf game visibility is controlled by JS; CSS must never suppress mounted leaves. */
.wos-secret-leaf{
  display:block!important;
  visibility:visible!important;
  z-index:2147482000!important;
  width:27px!important;
  height:39px!important;
  min-width:27px!important;
  min-height:39px!important;
  padding:0!important;
  margin:0!important;
  border:0!important;
  border-radius:95% 12% 95% 12%!important;
  background:linear-gradient(145deg,#ced8c7 0%,#91a287 48%,#5f7559 100%)!important;
  opacity:.97!important;
  box-shadow:inset 0 0 0 1px rgba(62,74,58,.22),0 5px 13px rgba(62,74,58,.20)!important;
  filter:none!important;
  pointer-events:auto!important;
}

/* Event Details is reserved for the Liquid Vine. */
#details .wos-secret-leaf{display:none!important}

@media(max-width:600px){
  .wos-secret-leaf{
    width:25px!important;
    height:36px!important;
    min-width:25px!important;
    min-height:36px!important;
  }
}

/* /css/opening-reference-final.css */
/* WeddingOS opening — envelope visual matched to approved reference. */
:root{
  --wos-ref-olive:#3e4a3a;
  --wos-ref-gold:#b8965a;
  --wos-ref-sage:#c8d1c2;
  --wos-ref-paper:#f5f1e8;
  --wos-ref-paper-hi:#fbf8f1;
  --wos-ref-paper-lo:#e9e2d5;
  --wos-ref-grain:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.075 .19' numOctaves='3' seed='17' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.085'/%3E%3C/svg%3E");
}
#wos-ref-opening,#wos-ref-opening *{box-sizing:border-box}
body.wos-a1-locked{overflow:hidden}
#wos-ref-opening{position:fixed;inset:0;z-index:2147483647;overflow:hidden;isolation:isolate;background:var(--wos-ref-sage);color:var(--wos-ref-olive);font-family:Manrope,Arial,sans-serif}
#wos-ref-opening.is-awaiting-guest .wos-ref-composition{opacity:0}

#wos-ref-opening .wos-ref-curtain{position:absolute;top:0;bottom:0;width:50.06%;z-index:1;will-change:transform;background:
  radial-gradient(ellipse at 20% 11%,rgba(255,255,255,.34),transparent 30%),
  radial-gradient(ellipse at 79% 77%,rgba(74,88,68,.075),transparent 34%),
  linear-gradient(100deg,rgba(255,255,255,.14) 0 8%,rgba(100,116,94,.045) 14%,rgba(255,255,255,.10) 24%,rgba(96,112,90,.055) 36%,rgba(255,255,255,.11) 50%,rgba(96,112,90,.05) 64%,rgba(255,255,255,.095) 78%,rgba(95,111,89,.05) 89%,rgba(255,255,255,.08) 100%),
  repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 1px,rgba(78,94,74,.012) 1px 2px,transparent 2px 5px),
  linear-gradient(180deg,#d7dfd1 0%,#ccd6c6 58%,#c5cfbe 100%);
  box-shadow:inset 0 0 85px rgba(62,74,58,.05)}
#wos-ref-opening .wos-ref-curtain-left{left:0;border-right:1px solid rgba(71,83,66,.22)}
#wos-ref-opening .wos-ref-curtain-right{right:0;border-left:1px solid rgba(71,83,66,.22)}
#wos-ref-opening .wos-ref-light{position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(ellipse at 50% 7%,rgba(255,255,255,.24),transparent 42%),linear-gradient(180deg,rgba(255,255,255,.04),transparent 32%,rgba(55,70,52,.025))}

#wos-ref-opening .wos-ref-composition{position:absolute;left:50%;top:48.2%;z-index:5;width:min(80.3vw,694px);aspect-ratio:694/515;transform:translate(-50%,-50%);transition:opacity .22s ease;filter:drop-shadow(0 24px 30px rgba(62,74,58,.11));overflow:visible}
#wos-ref-opening .wos-ref-botanical{position:absolute;z-index:0;width:30%;height:31%;bottom:-15.5%;background:url('/assets/wos-botanical-sprig.svg') center/contain no-repeat;opacity:.62;pointer-events:none;filter:drop-shadow(0 4px 5px rgba(62,74,58,.05))}
#wos-ref-opening .wos-ref-botanical-left{left:-8.5%;transform:rotate(-7deg)}
#wos-ref-opening .wos-ref-botanical-right{right:-8.5%;transform:scaleX(-1) rotate(-7deg)}
#wos-ref-opening .wos-ref-envelope{position:absolute;inset:0;overflow:visible}

#wos-ref-opening .wos-ref-back{position:absolute;inset:0;z-index:1;border-radius:3px;background:
  linear-gradient(145deg,rgba(255,255,255,.38),transparent 30%),
  radial-gradient(ellipse at 50% 9%,rgba(255,255,255,.32),transparent 45%),
  var(--wos-ref-grain),
  linear-gradient(165deg,var(--wos-ref-paper-hi) 0%,#f5f0e6 50%,var(--wos-ref-paper-lo) 100%);
  border:1px solid rgba(111,98,79,.13);
  box-shadow:0 22px 34px rgba(45,56,42,.16),0 6px 10px rgba(45,56,42,.08),inset 0 1px 0 rgba(255,255,255,.86),inset 0 -1px 0 rgba(116,103,82,.08);will-change:transform,opacity}
#wos-ref-opening .wos-ref-back::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,.28),transparent 8%,transparent 92%,rgba(122,108,86,.035)),linear-gradient(180deg,rgba(255,255,255,.30),transparent 12%,transparent 88%,rgba(112,99,78,.055));mix-blend-mode:soft-light}

#wos-ref-opening .wos-ref-open-flap{position:absolute;left:0;right:0;top:0;height:59.8%;z-index:2;clip-path:polygon(0 0,100% 0,50% 100%);transform:scaleY(-.78);transform-origin:50% 0;opacity:0;background:
  linear-gradient(180deg,rgba(255,255,255,.26),transparent 35%),
  var(--wos-ref-grain),
  linear-gradient(165deg,#f2ebdf,#e2d8c8);filter:drop-shadow(0 -8px 7px rgba(62,74,58,.08));will-change:transform,opacity}

/* Card starts aligned with the envelope's top edge. It no longer slides up from below. */
#wos-ref-opening .wos-ref-card{position:absolute;left:6.8%;right:6.8%;top:0;height:82%;z-index:3;display:grid;place-items:center;text-align:center;padding:9% 7% 11%;overflow:hidden;border-radius:4px 4px 18px 18px;border:1px solid rgba(184,150,90,.16);background:radial-gradient(circle at 18% 8%,rgba(255,255,255,.68),transparent 34%),var(--wos-ref-grain),#fbf7ef;box-shadow:0 12px 22px rgba(62,74,58,.11);transform:translateY(0) scale(.975);opacity:0;will-change:transform,opacity}
#wos-ref-opening .wos-ref-card-inner{display:grid;grid-template-rows:auto auto auto;align-content:center;justify-items:center;gap:clamp(7px,1.5vw,12px);width:100%;max-width:100%;min-width:0;padding-inline:1.5%;overflow:hidden}
#wos-ref-opening .wos-ref-card-kicker{display:block;max-width:100%;font:600 clamp(.48rem,1.05vw,.66rem)/1.2 Manrope,Arial,sans-serif;letter-spacing:.28em;text-transform:uppercase;color:#778371;white-space:nowrap}
#wos-ref-opening .wos-ref-card-names{display:flex;align-items:baseline;justify-content:center;gap:.14em;width:100%;max-width:100%;min-width:0;overflow:hidden;white-space:nowrap;font:600 clamp(1.75rem,4.9vw,3.55rem)/.94 "Bodoni Moda","Cormorant Garamond",Georgia,serif;letter-spacing:-.035em;color:var(--wos-ref-olive)}
#wos-ref-opening .wos-ref-card-names>span{flex:0 1 auto;min-width:0}
#wos-ref-opening .wos-ref-card-names b{flex:0 0 auto;font-weight:600;color:var(--wos-ref-gold);font-style:italic}
#wos-ref-opening .wos-ref-card-date{display:block;max-width:100%;font:500 clamp(.68rem,1.65vw,1rem)/1.2 "Cormorant Garamond",Georgia,serif;letter-spacing:.14em;color:#66705f;white-space:nowrap}

#wos-ref-opening .wos-ref-pocket{position:absolute;inset:0;z-index:4;clip-path:polygon(0 43.5%,50% 66.5%,100% 43.5%,100% 100%,0 100%);border-radius:0 0 3px 3px;background:
  radial-gradient(circle at 18% 7%,rgba(255,255,255,.28),transparent 34%),
  var(--wos-ref-grain),
  linear-gradient(170deg,#f8f4eb 0%,#f1eadf 62%,#eae2d6 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),inset 0 -1px 0 rgba(112,99,79,.045);will-change:transform,opacity}
#wos-ref-opening .wos-ref-pocket-seam{position:absolute;top:55.6%;z-index:5;width:60%;height:1px;background:linear-gradient(90deg,transparent 2%,rgba(127,113,91,.08) 34%,rgba(127,113,91,.17) 74%,rgba(255,255,255,.42) 100%);opacity:.78;transform-origin:center;will-change:transform,opacity;filter:drop-shadow(0 1px 0 rgba(255,255,255,.52))}
#wos-ref-opening .wos-ref-pocket-seam-left{left:-5.8%;transform:rotate(31.3deg)}
#wos-ref-opening .wos-ref-pocket-seam-right{right:-5.8%;transform:scaleX(-1) rotate(31.3deg)}

#wos-ref-opening .wos-ref-closed-flap{position:absolute;left:0;right:0;top:0;height:59.8%;z-index:6;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:50% 0;background:
  linear-gradient(180deg,rgba(255,255,255,.42),transparent 28%),
  radial-gradient(ellipse at 50% 5%,rgba(255,255,255,.24),transparent 52%),
  var(--wos-ref-grain),
  linear-gradient(162deg,#fbf7ef 0%,#f4eee3 60%,#e8dfd1 100%);
  filter:drop-shadow(0 5px 3px rgba(67,73,61,.11));will-change:opacity,transform}
#wos-ref-opening .wos-ref-closed-flap::after{content:"";position:absolute;inset:0;clip-path:inherit;pointer-events:none;background:linear-gradient(140deg,rgba(255,255,255,.30),transparent 28%),linear-gradient(220deg,rgba(120,105,82,.045),transparent 36%);opacity:.8}

#wos-ref-opening .wos-ref-flap-copy{position:absolute;left:50%;top:15.2%;width:72%;transform:translateX(-50%);text-align:center;z-index:2;pointer-events:none}
#wos-ref-opening .wos-ref-recipient-kicker{display:block;font:500 clamp(.54rem,1.18vw,.76rem)/1.2 Manrope,Arial,sans-serif;letter-spacing:.33em;text-transform:uppercase;color:#677160}
#wos-ref-opening .wos-ref-recipient-name{display:block;margin-top:4.4%;height:1.43em;overflow:hidden;font:italic 400 clamp(1.8rem,5.5vw,3.55rem)/1.01 "Bodoni Moda","Cormorant Garamond",Georgia,serif;color:#4d5848;letter-spacing:-.018em;text-wrap:balance;overflow-wrap:anywhere;text-shadow:0 .3px rgba(255,255,255,.28)}
#wos-ref-opening .wos-ref-recipient-name:empty{visibility:hidden}

#wos-ref-opening .wos-ref-seal{position:absolute;left:50%;top:59.2%;z-index:8;width:min(22.5%,156px);aspect-ratio:1;transform:translate(-50%,-50%);padding:0;border:0;cursor:pointer;border-radius:49% 51% 47% 53% / 52% 47% 53% 48%;background:
  radial-gradient(circle at 31% 24%,rgba(255,255,255,.98) 0 7%,rgba(255,255,255,.46) 18%,transparent 32%),
  radial-gradient(circle at 52% 48%,#faf7ef 0%,#f1e8da 52%,#dfd0b9 73%,#f6efe3 89%,#d8c7ad 100%);
  box-shadow:0 13px 22px rgba(61,68,56,.18),0 4px 7px rgba(61,68,56,.10),inset 0 0 0 2px rgba(255,255,255,.85),inset 0 0 0 7px rgba(218,204,183,.58),inset 0 -7px 11px rgba(132,109,75,.08);-webkit-tap-highlight-color:transparent;will-change:transform,opacity}
#wos-ref-opening .wos-ref-seal::before{content:"";position:absolute;inset:12%;z-index:1;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(184,150,90,.52),0 0 0 1px rgba(255,255,255,.58);background:radial-gradient(circle at 38% 32%,rgba(255,255,255,.62),transparent 54%)}
#wos-ref-opening .wos-ref-seal-mark{position:absolute;inset:17%;z-index:2;background:url('/assets/wos-monogram-seal.svg') center/contain no-repeat;filter:drop-shadow(0 .4px .2px rgba(62,74,58,.12))}
#wos-ref-opening .wos-ref-seal::after{content:"";position:absolute;inset:-7px;z-index:0;border-radius:inherit;background:radial-gradient(circle,rgba(184,150,90,.11),transparent 68%);animation:wosRefPulse 2.5s ease-in-out infinite}
#wos-ref-opening .wos-ref-crack{position:absolute;inset:14%;z-index:3;width:72%;height:72%;pointer-events:none}
#wos-ref-opening .wos-ref-crack path{fill:none;stroke:var(--wos-ref-gold);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:46;stroke-dashoffset:46;opacity:0}
#wos-ref-opening .wos-ref-instruction{position:absolute;left:50%;bottom:8.5%;z-index:8;transform:translateX(-50%);width:84%;text-align:center;font:500 clamp(.54rem,1.15vw,.74rem)/1.2 Manrope,Arial,sans-serif;letter-spacing:.31em;text-transform:uppercase;color:#5c6757;pointer-events:none;will-change:transform,opacity}

#wos-ref-opening.is-seal-breaking .wos-ref-seal{animation:wosRefSealBreak .36s cubic-bezier(.22,1,.36,1) both}
#wos-ref-opening.is-seal-breaking .wos-ref-seal:after{display:none}
#wos-ref-opening.is-seal-breaking .wos-ref-crack path{animation:wosRefCrack .22s ease-out both}
#wos-ref-opening.is-seal-breaking .wos-ref-crack path:nth-child(2){animation-delay:.03s}
#wos-ref-opening.is-seal-breaking .wos-ref-crack path:nth-child(3){animation-delay:.06s}
#wos-ref-opening.is-flap-opening .wos-ref-closed-flap{opacity:0;transform:scaleY(.94);transition:opacity .22s ease,transform .34s ease}
#wos-ref-opening.is-flap-opening .wos-ref-open-flap{opacity:1;transition:opacity .22s ease .04s}
#wos-ref-opening.is-flap-opening .wos-ref-card{opacity:1;transition:opacity .12s ease .05s}
#wos-ref-opening.is-flap-opening .wos-ref-instruction{opacity:0;transition:opacity .16s ease}
#wos-ref-opening.is-card-emerging .wos-ref-card{transform:translateY(-42%) scale(1);opacity:1;transition:transform .92s cubic-bezier(.18,.88,.25,1),opacity .12s ease}
#wos-ref-opening.is-envelope-departing .wos-ref-back,
#wos-ref-opening.is-envelope-departing .wos-ref-pocket,
#wos-ref-opening.is-envelope-departing .wos-ref-pocket-seam{transform:translateY(34%) scale(.99);opacity:0;transition:transform .52s cubic-bezier(.22,1,.36,1),opacity .36s ease}
#wos-ref-opening.is-envelope-departing .wos-ref-open-flap{transform:translateY(34%) scaleY(-.78) scaleX(.99);opacity:0;transition:transform .52s cubic-bezier(.22,1,.36,1),opacity .34s ease}
#wos-ref-opening.is-envelope-departing .wos-ref-seal,
#wos-ref-opening.is-envelope-departing .wos-ref-instruction,
#wos-ref-opening.is-envelope-departing .wos-ref-closed-flap{opacity:0!important;transition:opacity .18s ease!important}
#wos-ref-opening.is-envelope-departing .wos-ref-botanical{opacity:0;transition:opacity .28s ease}
#wos-ref-opening.is-curtain-opening .wos-ref-curtain-left{transform:translateX(-105%);transition:transform .92s cubic-bezier(.65,0,.35,1)}
#wos-ref-opening.is-curtain-opening .wos-ref-curtain-right{transform:translateX(105%);transition:transform .92s cubic-bezier(.65,0,.35,1)}
#wos-ref-opening.is-curtain-opening .wos-ref-light{opacity:0;transition:opacity .25s ease}
#wos-ref-opening.is-card-clearing .wos-ref-card{transform:translateY(-48%) scale(1.01);opacity:0;transition:transform .34s ease,opacity .3s ease}

@keyframes wosRefPulse{0%,100%{transform:scale(.98);opacity:.18}50%{transform:scale(1.045);opacity:.44}}
@keyframes wosRefSealBreak{0%{transform:translate(-50%,-50%) rotate(0);opacity:1}45%{transform:translate(-50%,-50%) rotate(-8deg);opacity:1}100%{transform:translate(-50%,calc(-50% - 12px)) rotate(-8deg);opacity:0}}
@keyframes wosRefCrack{0%{stroke-dashoffset:46;opacity:0}10%{opacity:1}100%{stroke-dashoffset:0;opacity:1}}

.hero::before,.hero::after{content:none!important;display:none!important;background:none!important;border:0!important;box-shadow:none!important;opacity:0!important}
.hero-card{background:transparent!important;border:0!important;box-shadow:none!important;outline:0!important}
body.wos-a1-complete .hero [class*="envelope"],body.wos-a1-complete .hero [class*="fold"]{display:none!important}
body.wos-a1-locked .hero-card h1,body.wos-a1-locked .hero-card .eyebrow,body.wos-a1-locked .hero-card .hero-subtitle,body.wos-a1-locked .hero-card .hero-date,body.wos-a1-locked .hero-card .hero-actions,body.wos-a1-locked .scroll-hint{opacity:0!important}
.hero-card h1.wos-a2-trace-ready{position:relative!important;opacity:1!important}
.hero-card h1.wos-a2-trace-ready>.wos-name-one,.hero-card h1.wos-a2-trace-ready>.wos-name-two,.hero-card h1.wos-a2-trace-ready>.amp{color:transparent!important;text-shadow:none!important;-webkit-text-stroke:0 transparent!important}
.hero-card h1.wos-a2-final>.wos-name-one,.hero-card h1.wos-a2-final>.wos-name-two{color:var(--wos-ref-olive)!important;font-weight:600!important;-webkit-text-stroke:.82px var(--wos-ref-olive)!important;text-shadow:.32px 0 var(--wos-ref-olive),-.22px 0 var(--wos-ref-olive)!important}
.hero-card h1.wos-a2-final>.amp{color:var(--wos-ref-gold)!important;font-weight:600!important;-webkit-text-stroke:.35px var(--wos-ref-gold)!important}
.wos-a2-trace{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.wos-a2-char{fill:transparent;stroke:var(--wos-ref-olive);stroke-width:1.55;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:550;stroke-dashoffset:550;animation:wosA2Trace .72s cubic-bezier(.45,0,.25,1) var(--d) forwards,wosA2Fill .58s ease calc(var(--d) + .52s) forwards,wosA2Out .36s ease calc(var(--d) + .94s) forwards}
.wos-a2-char.is-amp{stroke:var(--wos-ref-gold);animation:wosA2Trace .4s cubic-bezier(.45,0,.25,1) var(--d) forwards,wosA2Gold .42s ease calc(var(--d) + .28s) forwards,wosA2Out .34s ease calc(var(--d) + .58s) forwards}
.wos-a2-amp-shimmer{position:absolute;pointer-events:none;color:transparent;background:linear-gradient(105deg,transparent 20%,rgba(255,255,255,.94) 45%,#d9bd7a 52%,rgba(255,255,255,.92) 59%,transparent 82%);-webkit-background-clip:text;background-clip:text;background-size:260% 100%;animation:wosA2Shimmer .7s ease var(--amp-delay) both}
@keyframes wosA2Trace{0%{stroke-dashoffset:550;stroke-opacity:.18}12%{stroke-opacity:1}100%{stroke-dashoffset:0;stroke-opacity:1}}
@keyframes wosA2Fill{from{fill:rgba(62,74,58,0)}to{fill:#3e4a3a}}
@keyframes wosA2Gold{from{fill:rgba(184,150,90,0)}to{fill:#b8965a}}
@keyframes wosA2Out{to{stroke-opacity:0}}
@keyframes wosA2Shimmer{0%{opacity:0;background-position:140% 0}10%{opacity:1}100%{opacity:0;background-position:-80% 0}}

@media(max-width:600px){
  #wos-ref-opening .wos-ref-composition{width:80.5vw;top:48.3%}
  #wos-ref-opening .wos-ref-botanical{width:34%;height:32%;bottom:-16.5%;opacity:.60}
  #wos-ref-opening .wos-ref-seal{width:22.5%}
  #wos-ref-opening .wos-ref-recipient-name{font-size:clamp(1.65rem,5.7vw,2.55rem)}
  #wos-ref-opening .wos-ref-instruction{font-size:.5rem;letter-spacing:.27em}
  #wos-ref-opening .wos-ref-card{padding:8% 6.5% 10%}
  #wos-ref-opening .wos-ref-card-kicker{font-size:clamp(.47rem,1.8vw,.62rem);letter-spacing:.25em}
  #wos-ref-opening .wos-ref-card-names{font-size:clamp(1.65rem,6.6vw,2.8rem);gap:.11em;letter-spacing:-.04em}
  #wos-ref-opening .wos-ref-card-date{font-size:clamp(.64rem,2.5vw,.88rem);letter-spacing:.12em}
  .hero-card h1.wos-a2-final>.wos-name-one,.hero-card h1.wos-a2-final>.wos-name-two{-webkit-text-stroke:1px var(--wos-ref-olive)!important}
}
@media(max-width:390px){
  #wos-ref-opening .wos-ref-composition{width:82vw}
  #wos-ref-opening .wos-ref-flap-copy{top:14.5%;width:78%}
  #wos-ref-opening .wos-ref-instruction{letter-spacing:.23em}
  #wos-ref-opening .wos-ref-card-names{font-size:clamp(1.55rem,6.2vw,2.45rem)}
}
@media(prefers-reduced-motion:reduce){#wos-ref-opening *{animation-duration:.01ms!important;transition-duration:.01ms!important}.wos-a2-trace,.wos-a2-amp-shimmer{display:none!important}}

/* /css/hero-vine-typography-fix-20260822.css */
/* WeddingOS — targeted hero vine removal and display-font clipping fixes. */

/* Remove decorative vines only from the couple-name hero card. Other vine placements remain untouched. */
.hero .wos-liquid-v21-home,
.hero-card::before,
.hero-card::after{
  display:none!important;
}

/* Envelope insert: avoid glyph loss (notably y / v) while keeping the approved size and animation geometry. */
#wos-ref-opening .wos-ref-card-inner{
  overflow:visible!important;
  padding-inline:3%!important;
}
#wos-ref-opening .wos-ref-card-names{
  overflow:visible!important;
  font-family:"Cormorant Garamond",Georgia,serif!important;
  line-height:1.06!important;
  letter-spacing:-.02em!important;
  padding:.10em .06em .16em!important;
}
#wos-ref-opening .wos-ref-card-names>span{
  flex:0 0 auto!important;
  min-width:max-content!important;
  overflow:visible!important;
}
#wos-ref-opening .wos-ref-card-names b{
  line-height:1.06!important;
}

/* Envelope recipient: use the reliable display face and never clip italic glyph overhangs.
   The fitting script keeps long invitation names on one line by reducing only this font size. */
#wos-ref-opening .wos-ref-flap-copy{
  overflow:visible!important;
}
#wos-ref-opening .wos-ref-composition{
  transition:opacity .06s linear!important;
}
#wos-ref-opening .wos-ref-recipient-name{
  height:auto!important;
  min-height:1.38em!important;
  overflow:visible!important;
  font-family:"Cormorant Garamond",Georgia,serif!important;
  font-style:italic!important;
  font-weight:500!important;
  line-height:1.10!important;
  letter-spacing:-.012em!important;
  white-space:nowrap!important;
  text-wrap:nowrap!important;
  overflow-wrap:normal!important;
  word-break:normal!important;
  padding:.06em .18em .18em!important;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  animation:none!important;
  transition:none!important;
}
#wos-ref-opening.is-recipient-ready .wos-ref-recipient-name{
  opacity:1!important;
  visibility:visible!important;
}

/* Story heading: use the reliable display face and give glyphs breathing room so the initial N is never clipped. */
.wos-story-section .section-header{
  overflow:visible!important;
}
.wos-story-section .section-title{
  font-family:"Cormorant Garamond",Georgia,serif!important;
  line-height:.90!important;
  letter-spacing:-.035em!important;
  overflow:visible!important;
  padding:.08em .08em .14em!important;
  margin-left:-.08em!important;
}

/* Samsung/Android renders the high-contrast display face too thin in these large labels.
   Use the sturdier weight already proven in the story/envelope fixes. */
#rsvp .rsvp-summary h3,
.footer .container>strong{
  font-family:"Cormorant Garamond",Georgia,serif!important;
  font-weight:600!important;
  letter-spacing:-.025em!important;
  line-height:.94!important;
  overflow:visible!important;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  -webkit-text-stroke:.08px currentColor;
}
#rsvp .rsvp-summary h3{
  font-style:italic!important;
  padding:.06em .06em .12em!important;
}
.footer .container>strong{
  font-style:normal!important;
  padding:.04em .04em .10em!important;
}

/* Save the Date date: retain the editorial italic look without disappearing hairlines. */
.wos-phase-save .wos-save-date-system>h3{
  font-family:"Cormorant Garamond",Georgia,serif!important;
  font-style:italic!important;
  font-weight:600!important;
  letter-spacing:-.035em!important;
  line-height:.92!important;
  overflow:visible!important;
  padding:.06em .04em .12em!important;
  text-rendering:optimizeLegibility;
  -webkit-font-smoothing:antialiased;
  -webkit-text-stroke:.08px currentColor;
}

/* Itinerary times must stay as a single visual unit on mobile. */
.timeline-time{
  white-space:nowrap!important;
  word-break:keep-all!important;
  overflow-wrap:normal!important;
  hyphens:none!important;
}
@media (max-width:720px){
  .timeline-item{
    grid-template-columns:minmax(6.9rem,max-content) 2rem minmax(0,1fr)!important;
  }
}

/* Save-the-Date copy of the important event details. */
.wos-save-important-details .event-meta .wos-event-church strong,
.wos-save-important-details .event-meta .wos-event-hotel strong{
  font-weight:600;
}
.wos-save-important-details .wos-map-link-card{
  display:grid;
  place-items:center;
  min-height:180px;
}
