/* /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/scroll-vines.css */
/* WeddingOS — fuller organic vines that wrap cards and connect them as the guest scrolls. */
.wos-vine-card{position:relative!important;isolation:isolate;overflow:visible!important}
.wos-card-vine{
  position:absolute;
  inset:-9px;
  z-index:4;
  display:block;
  pointer-events:none;
  overflow:visible;
  opacity:.78;
}
.wos-card-vine svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.wos-card-vine-shadow,.wos-card-vine-stem,.wos-card-vine-tendril,
.wos-vine-bridge-shadow,.wos-vine-bridge-stem,.wos-vine-bridge-tendril{
  fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;stroke-dasharray:1;stroke-dashoffset:1;
}
.wos-card-vine-shadow,.wos-vine-bridge-shadow{stroke:#42563e;stroke-width:4.4;opacity:.10}
.wos-card-vine-stem,.wos-vine-bridge-stem{stroke:#60745a;stroke-width:2.25}
.wos-card-vine-tendril,.wos-vine-bridge-tendril{stroke:#6e8367;stroke-width:1.45;opacity:.92}

.wos-card-leaf,.wos-bridge-leaf,.wos-card-rose,.wos-bridge-rose{
  position:absolute;display:block;opacity:0;transform:scale(.25) rotate(-20deg);
  transition:opacity .34s ease,transform .7s cubic-bezier(.17,.78,.22,1.12);
}
.wos-card-leaf.is-visible,.wos-bridge-leaf.is-visible,.wos-card-rose.is-visible,.wos-bridge-rose.is-visible{opacity:1;transform:scale(1) rotate(0deg)}
.wos-card-leaf,.wos-bridge-leaf{
  width:11px;height:21px;border-radius:95% 10% 95% 10%;
  background:linear-gradient(145deg,#b5c2aa 0%,#8fa083 42%,#657a5e 100%);
  box-shadow:inset 0 0 0 1px rgba(69,91,64,.24),0 1px 2px rgba(52,70,49,.10);
}
.wos-card-leaf::after,.wos-bridge-leaf::after{content:"";position:absolute;left:49%;top:2px;bottom:2px;width:1px;background:rgba(70,94,65,.48);transform:rotate(28deg);transform-origin:center}
.wos-card-leaf.leaf-a{top:-9px;left:20%;rotate:-31deg}.wos-card-leaf.leaf-b{right:-7px;top:24%;rotate:57deg}.wos-card-leaf.leaf-c{bottom:-9px;right:26%;rotate:122deg}.wos-card-leaf.leaf-d{left:-7px;bottom:21%;rotate:-63deg}
.wos-card-leaf.leaf-e{right:16%;top:-9px;rotate:26deg}.wos-card-leaf.leaf-f{bottom:-9px;left:42%;rotate:151deg}

/* Layered cream roses with irregular petals and a warm center. */
.wos-card-rose,.wos-bridge-rose{
  width:28px;height:28px;border-radius:50%;
  background:conic-gradient(from 7deg,#fbf5e9 0 11%,#eadcc5 11% 21%,#fff8ec 21% 33%,#ddccb0 33% 43%,#f8efdf 43% 56%,#e8dac1 56% 68%,#fff7e9 68% 81%,#ddc9aa 81% 91%,#f8edde 91% 100%);
  box-shadow:0 4px 10px rgba(79,77,59,.13),inset 0 0 0 1px rgba(179,151,105,.24);
}
.wos-card-rose::before,.wos-bridge-rose::before{content:"";position:absolute;inset:5px;border-radius:48% 52% 45% 55%;background:conic-gradient(from 38deg,#fffaf0 0 16%,#e5d2b2 16% 30%,#faefdd 30% 46%,#d9c09a 46% 61%,#fff6e7 61% 78%,#e4d0af 78% 100%);transform:rotate(15deg)}
.wos-card-rose::after,.wos-bridge-rose::after{content:"";position:absolute;inset:10px;border-radius:50%;background:radial-gradient(circle at 42% 36%,#f8e9c7 0 18%,#c8a66d 22% 54%,#9c7a48 58% 100%);box-shadow:0 0 0 1px rgba(144,111,64,.22)}
.wos-card-rose span,.wos-bridge-rose span{position:absolute;inset:7px;border-radius:46% 54% 50% 50%;border:1px solid rgba(166,136,87,.30);transform:rotate(39deg)}
.wos-card-rose.rose-a{top:-13px;right:10%}.wos-card-rose.rose-b{bottom:-13px;left:12%}
.wos-card-rose.is-visible,.wos-bridge-rose.is-visible{animation:wos-vine-rose-bloom .88s cubic-bezier(.18,.78,.2,1.12) both}
@keyframes wos-vine-rose-bloom{0%{opacity:0;transform:scale(.12) rotate(-24deg)}58%{opacity:1;transform:scale(1.09) rotate(3deg)}100%{opacity:1;transform:scale(1) rotate(0)}}

/* Document-level vine bridges: these visually continue the plant from one card to the next. */
.wos-vine-bridges{position:absolute;left:0;top:0;width:100%;z-index:3;pointer-events:none;overflow:visible}
.wos-vine-bridge{position:absolute;display:block;pointer-events:none;overflow:visible;opacity:.80}
.wos-vine-bridge svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.wos-bridge-leaf.leaf-1{left:11%;top:18%;rotate:-34deg}.wos-bridge-leaf.leaf-2{right:10%;top:49%;rotate:43deg}.wos-bridge-leaf.leaf-3{left:18%;bottom:12%;rotate:-26deg}
.wos-bridge-rose{right:3%;top:61%;width:25px;height:25px}
.wos-bridge-rose::before{inset:4px}.wos-bridge-rose::after{inset:9px}.wos-bridge-rose span{inset:6px}

@media(max-width:820px){
  .wos-card-vine{inset:-7px;opacity:.72}
  .wos-card-vine-shadow,.wos-vine-bridge-shadow{stroke-width:3.6}
  .wos-card-vine-stem,.wos-vine-bridge-stem{stroke-width:1.85}
  .wos-card-vine-tendril,.wos-vine-bridge-tendril{stroke-width:1.2}
  .wos-card-leaf,.wos-bridge-leaf{width:9px;height:17px}
  .wos-card-rose,.wos-bridge-rose{width:23px;height:23px}
  .wos-card-rose::before,.wos-bridge-rose::before{inset:4px}.wos-card-rose::after,.wos-bridge-rose::after{inset:8px}.wos-card-rose span,.wos-bridge-rose span{inset:6px}
  .wos-card-rose.rose-a{top:-11px}.wos-card-rose.rose-b{bottom:-11px}
  .wos-vine-bridge{opacity:.74}
}
@media(max-width:480px){
  .wos-card-vine{opacity:.68}
  .wos-vine-bridge{opacity:.70}
}
@media(prefers-reduced-motion:reduce){
  .wos-card-leaf,.wos-bridge-leaf,.wos-card-rose,.wos-bridge-rose{transition:none!important;animation:none!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{
  position:absolute;
  overflow:hidden;
  margin:0;
  background:#e9e0d2;
  box-shadow:0 28px 70px rgba(42,43,33,.18);
  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 img{display:block;width:100%;height:100%;object-fit:cover;transition:transform 1.5s cubic-bezier(.2,.7,.2,1),filter .8s ease}
.editorial-shot:after{content:"";position:absolute;inset:0;border:1px solid rgba(255,255,255,.46);box-shadow:inset 0 0 0 8px rgba(255,250,240,.06);pointer-events:none}
.editorial-shot.primary{z-index:2;left:8%;top:0;width:58%;height:78%;border-radius:190px 190px 24px 24px/120px 120px 24px 24px}
.editorial-shot.secondary{z-index:3;right:0;bottom:0;width:49%;height:52%;border-radius:22px;transition-delay:.16s}
.editorial-shot.detail{z-index:4;left:0;bottom:7%;width:32%;height:35%;border-radius:50% 50% 18px 18px/38% 38% 18px 18px;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(-1.1deg)}
.editorial-photo-section.is-visible .editorial-shot.secondary{transform:translate3d(0,var(--editorial-parallax-b,0px),0) rotate(1.2deg)}
.editorial-photo-section.is-visible .editorial-shot.detail{transform:translate3d(0,var(--editorial-parallax-c,0px),0) rotate(-2deg)}
.editorial-shot:hover img{transform:scale(1.035)}
.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{display:grid;place-items:center;aspect-ratio:4/5;margin-bottom:10px;overflow:hidden;border-radius:12px;background:rgba(255,255,255,.04);color:var(--muted);font-size:.75rem;text-align:center}
.editorial-photo-admin-preview img{width:100%;height:100%;object-fit:cover}
.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}

@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:32px}
  .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:520px}
  .editorial-shot.primary{left:12%;width:67%;height:72%;border-radius:120px 120px 20px 20px/86px 86px 20px 20px}
  .editorial-shot.secondary{right:2%;width:54%;height:45%}
  .editorial-shot.detail{left:1%;bottom:4%;width:38%;height:31%}
  .editorial-photo-leaf{right:35%;top:48%;width:88px;height:170px}
}
@media(max-width:390px){
  .editorial-photo-stage{min-height:455px}
  .editorial-shot.primary{height:69%}
  .editorial-shot.secondary{height:42%}
}
@media(prefers-reduced-motion:reduce){
  .editorial-shot{opacity:1;filter:none;transform:none!important;transition:none}
  .editorial-shot img{transition:none}
}

/* /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}
}
