
@font-face {
  font-family: "Balladeer";
  src: url("balladeer-light.otf") format("opentype");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}


:root{
  --cream:      #FAF8F3;
  --cream2:     #F0EAE0;
  --forest:     #111111;
  --sage:       #B8924A;
  --sage-light: #D4AE72;
  --moss:       #8B6C28;
  --mist:       #6B6258;
  --ink:        #1A1714;
  --gold:       #B8924A;
  --gold-light: #D4AE72;
  --gold-pale:  #E8D5A8;
  --ivory:      #F0EAE0;
  --white:      #FFFFFF;
  --black:      #0D0D0D;
  --ease-expo:   cubic-bezier(0.16, 1, 0.3, 1);
  --ease-circ:   cubic-bezier(0.85, 0, 0.15, 1);
  --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{background:var(--cream);color:var(--ink);overflow-x:hidden;overflow-y:hidden;-webkit-font-smoothing:antialiased;}
body.entered{overflow-y:auto;}

body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:9997;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23g)' opacity='0.04'/%3E%3C/svg%3E");
  background-repeat:repeat;mix-blend-mode:multiply;opacity:0.35;
}

.petal{position:fixed;pointer-events:none;z-index:50;animation:petalFall linear infinite;opacity:0;}
@keyframes petalFall{
  0%{transform:translateY(-10vh) rotate(0deg) translateX(0px);opacity:0;}
  5%{opacity:0.4;}95%{opacity:0.15;}
  100%{transform:translateY(110vh) rotate(720deg) translateX(40px);opacity:0;}
}

#intro { transition: opacity 1.6s var(--ease-circ), transform 1.6s var(--ease-circ); }
.cover {
  position:fixed;inset:0;width:100vw;
  height:100vh;height:100dvh;overflow:hidden;
  display:flex;align-items:center;justify-content:center;z-index:100;
  background:var(--black);
}
.cover-img {
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center 30%;
  animation:imgReveal 2s ease-out 0.4s both;
  filter:contrast(1.12) brightness(0.78) saturate(0.88);
}
@keyframes imgReveal{from{opacity:0;}to{opacity:1;}}
.veil-top{position:absolute;top:0;left:0;right:0;height:55%;background:linear-gradient(to bottom,rgba(5,5,5,0.88) 0%,rgba(5,5,5,0.55) 55%,transparent 100%);z-index:2;pointer-events:none;}
.veil-bottom{position:absolute;bottom:0;left:0;right:0;height:65%;background:linear-gradient(to top,rgba(5,5,5,0.95) 0%,rgba(5,5,5,0.65) 50%,transparent 100%);z-index:2;pointer-events:none;}
.veil-sides{position:absolute;inset:0;background:radial-gradient(ellipse 80% 70% at 50% 50%,transparent 20%,rgba(5,5,5,0.65) 100%);z-index:2;pointer-events:none;}
.veil-center{position:absolute;inset:0;background:rgba(5,5,5,0.38);z-index:2;pointer-events:none;}
.frame-outer{position:absolute;inset:clamp(16px,3.5vw,36px);border:1px solid rgba(184,146,74,0.30);z-index:5;pointer-events:none;opacity:0;animation:fadeIn 1.2s var(--ease-expo) 3.6s both;}
.frame-inner{position:absolute;inset:clamp(24px,5vw,52px);border:1px solid rgba(184,146,74,0.12);z-index:5;pointer-events:none;opacity:0;animation:fadeIn 1.2s var(--ease-expo) 3.9s both;}
@keyframes fadeIn{from{opacity:0;}to{opacity:1;}}
.corner{position:absolute;width:clamp(28px,5vw,48px);height:clamp(28px,5vw,48px);z-index:6;pointer-events:none;opacity:0;animation:cornerIn 1s var(--ease-expo) 4.2s both;}
.corner svg{width:100%;height:100%;}
.corner--tl{top:clamp(22px,4vw,44px);left:clamp(22px,4vw,44px);}
.corner--tr{top:clamp(22px,4vw,44px);right:clamp(22px,4vw,44px);animation:cornerInFlip 1s var(--ease-expo) 4.2s both;}
.corner--bl{bottom:clamp(22px,4vw,44px);left:clamp(22px,4vw,44px);animation:cornerInFlipV 1s var(--ease-expo) 4.2s both;}
.corner--br{bottom:clamp(22px,4vw,44px);right:clamp(22px,4vw,44px);animation:cornerInFlipBoth 1s var(--ease-expo) 4.2s both;}
@keyframes cornerIn{from{opacity:0;transform:scale(0.7);}to{opacity:1;transform:scale(1);}}
@keyframes cornerInFlip{from{opacity:0;transform:scaleX(-1) scale(0.7);}to{opacity:1;transform:scaleX(-1) scale(1);}}
@keyframes cornerInFlipV{from{opacity:0;transform:scaleY(-1) scale(0.7);}to{opacity:1;transform:scaleY(-1) scale(1);}}
@keyframes cornerInFlipBoth{from{opacity:0;transform:scale(-1,-1) scale(0.7);}to{opacity:1;transform:scale(-1,-1) scale(1);}}
.cover-content{position:relative;z-index:10;text-align:center;display:flex;flex-direction:column;align-items:center;gap:0;padding:0 clamp(24px,6vw,80px);width:100%;}
.cover-tagline-top{
  font-family:"Jost";font-weight:200;font-size:clamp(0.55rem,1.4vw,0.65rem);
  letter-spacing:0.65em;text-transform:uppercase;color:var(--gold-light);
  margin-bottom:clamp(18px,3.5vw,36px);opacity:0;animation:slideUp 1s var(--ease-expo) 2.2s both;
  display:flex;align-items:center;gap:16px;
  text-shadow:0 1px 12px rgba(0,0,0,0.9),0 2px 24px rgba(0,0,0,0.7);
}
.cover-tagline-top::before,.cover-tagline-top::after{content:"";width:clamp(30px,5vw,60px);height:1px;background:linear-gradient(90deg,transparent,rgba(184,146,74,0.6));}
.cover-tagline-top::after{background:linear-gradient(270deg,transparent,rgba(184,146,74,0.6));}
.cover-monogram{
  font-family:"Balladeer","Cormorant Garamond";font-size:clamp(5.5rem,18vw,14rem);
  font-weight:300;letter-spacing:0.08em;line-height:1.2;padding:0.1em 0.2em;
  color:transparent;
  background:linear-gradient(135deg,var(--gold-pale) 0%,var(--gold) 40%,var(--gold-light) 60%,var(--gold) 100%);
  -webkit-background-clip:text;background-clip:text;
  animation:slideDown 1.4s var(--ease-expo) 1.2s both;
  filter:drop-shadow(0 2px 14px rgba(0,0,0,0.55));
}
@keyframes slideDown{from{opacity:0;transform:translateY(clamp(-50px,-5vh,-30px));}to{opacity:1;transform:translateY(0);}}
@keyframes slideUp{from{opacity:0;transform:translateY(clamp(14px,2.5vh,26px));}to{opacity:1;transform:translateY(0);}}
.cover-divider{display:flex;align-items:center;gap:0;width:clamp(180px,45vw,380px);margin:clamp(14px,2.5vw,24px) 0;opacity:0;animation:dividerExpand 1.4s var(--ease-expo) 2.0s both;}
.cover-divider-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--gold),transparent);}
.cover-divider-gem{width:3px;height:3px;border-radius:50%;background:var(--gold);margin:0 16px;flex-shrink:0;}
@keyframes dividerExpand{from{opacity:0;width:0;}to{opacity:1;width:clamp(180px,45vw,380px);}}
.cover-names{
  font-family:"Cormorant Garamond";font-style:italic;font-weight:300;
  font-size:clamp(1.6rem,5.5vw,4.2rem);color:var(--ivory);letter-spacing:0.15em;line-height:1.3;
  opacity:0;animation:slideUp 1.1s var(--ease-expo) 2.5s both;
  text-shadow:0 2px 20px rgba(0,0,0,0.95),0 4px 40px rgba(0,0,0,0.8);
}
.cover-names .and{font-size:0.7em;color:var(--gold-light);display:inline-block;margin:0 0.4em;font-style:normal;text-shadow:0 2px 16px rgba(0,0,0,0.95);}
.cover-date{display:flex;align-items:center;gap:clamp(16px,3vw,32px);margin-top:clamp(20px,3.5vw,36px);opacity:0;animation:slideUp 1s var(--ease-expo) 3.0s both;}
.cover-date-unit{text-align:center;}
.cover-date-unit .n{font-family:"Cormorant Garamond";font-weight:400;font-size:clamp(2rem,6vw,4.5rem);color:var(--cream);display:block;line-height:1.15;text-shadow:0 2px 18px rgba(0,0,0,0.95),0 4px 36px rgba(0,0,0,0.8);}
.cover-date-unit .l{font-family:"Jost";font-weight:300;font-size:clamp(0.55rem,1.3vw,0.65rem);letter-spacing:0.4em;text-transform:uppercase;color:var(--gold-light);display:block;margin-top:5px;text-shadow:0 1px 10px rgba(0,0,0,0.95);}
.cover-date-sep{font-family:"Cormorant Garamond";font-size:clamp(1.5rem,4vw,3rem);color:rgba(184,146,74,0.9);line-height:1.15;text-shadow:0 2px 12px rgba(0,0,0,0.9);}
.cover-place{font-family:"Jost";font-weight:300;font-size:clamp(0.55rem,1.4vw,0.68rem);letter-spacing:0.5em;text-transform:uppercase;color:var(--gold-light);margin-top:clamp(16px,2.5vw,26px);opacity:0;animation:slideUp 1s var(--ease-expo) 3.4s both;text-shadow:0 1px 10px rgba(0,0,0,0.95);}
#enter{
  margin-top:clamp(28px,4vw,44px);padding:clamp(12px,2vw,16px) clamp(36px,6vw,64px);
  background:rgba(5,5,5,0.45);border:1px solid rgba(184,146,74,0.80);
  font-family:"Jost";font-weight:300;font-size:clamp(0.55rem,1.3vw,0.68rem);
  letter-spacing:0.55em;text-transform:uppercase;color:var(--cream);cursor:pointer;
  position:relative;overflow:hidden;opacity:0;animation:slideUp 1s var(--ease-expo) 3.8s both;
  transition:border-color 0.4s ease,color 0.4s ease,background 0.4s ease;z-index:10;
  text-shadow:0 1px 8px rgba(0,0,0,0.8);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
}
#enter::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 0%,rgba(184,146,74,0.15) 50%,transparent 100%);transform:translateX(-100%);transition:transform 0.7s var(--ease-expo);}
#enter:hover{border-color:rgba(184,146,74,0.9);}
#enter:hover::before{transform:translateX(100%);}
.cover .particles{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden;}
.cover .particle{position:absolute;border-radius:50%;background:var(--gold);animation:particleDrift linear infinite;opacity:0;}
@keyframes particleDrift{0%{transform:translateY(110vh) translateX(0px) scale(0);opacity:0;}10%{opacity:0.6;}90%{opacity:0.2;}100%{transform:translateY(-10vh) translateX(var(--drift)) scale(1);opacity:0;}}
.cover .grain{position:absolute;inset:0;z-index:3;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");background-repeat:repeat;mix-blend-mode:overlay;opacity:0.4;}
.scroll-cue{position:absolute;bottom:clamp(28px,4vw,44px);left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;z-index:10;opacity:0;animation:fadeIn 1s var(--ease-expo) 4.8s both;}
.scroll-cue-line{width:1px;height:clamp(30px,4vw,44px);background:linear-gradient(to bottom,rgba(184,146,74,0.8),transparent);animation:scrollLine 2s ease-in-out 5s infinite;}
@keyframes scrollLine{0%,100%{transform:scaleY(1);opacity:0.7;}50%{transform:scaleY(0.4);opacity:0.3;}}
.scroll-cue-text{font-family:"Jost";font-weight:200;font-size:clamp(0.45rem,1vw,0.55rem);letter-spacing:0.5em;text-transform:uppercase;color:rgba(184,146,74,0.7);}

#canvas{max-width:800px;margin:0 auto;background:var(--cream);opacity:0;transform:translateY(30px);transition:opacity 1.2s ease,transform 1.2s ease;min-height:100vh;}
#canvas.visible{opacity:1;transform:translateY(0);}

.section-divider{width:44px;height:1px;background:var(--gold);margin:20px auto 28px;}
.section-divider span{display:none;}

.elegant-ornament{display:flex;flex-direction:column;align-items:center;padding:28px 0;gap:0;}
.elegant-ornament .orn-top{width:1px;height:48px;background:linear-gradient(to bottom,transparent,var(--gold));}
.elegant-ornament .orn-gem{width:3px;height:3px;border-radius:50%;background:var(--gold);margin:10px 0;}
.elegant-ornament .orn-bottom{width:1px;height:48px;background:linear-gradient(to bottom,var(--gold),transparent);}

.photo-block{width:100%;background:var(--cream);overflow:hidden;position:relative;}
.photo-block img{width:100%;display:block;height:auto;filter:contrast(1.08) brightness(1.02) saturate(0.94);transform:scale(1.07);transition:transform 2.4s var(--ease-expo);}
.photo-block.visible img{transform:scale(1);}
.photo-block.bw img{filter:grayscale(100%) contrast(1.18) brightness(1.04);}
.photo-block::before{content:"";position:absolute;top:0;left:0;right:0;height:10%;background:linear-gradient(to top,transparent,var(--edge-top, var(--cream)));pointer-events:none;z-index:2;}
.photo-block::after{content:"";position:absolute;bottom:0;left:0;right:0;height:10%;background:linear-gradient(to bottom,transparent,var(--edge-bottom, var(--cream)));pointer-events:none;z-index:2;}

.photo-quote-wrap{width:100%;background:var(--cream);overflow:hidden;position:relative;}
.photo-quote-wrap img{width:100%;display:block;height:auto;filter:contrast(1.06) brightness(1.0) saturate(0.92);transform:scale(1.07);transition:transform 2.4s var(--ease-expo);}
.photo-quote-wrap.visible img{transform:scale(1);}
.photo-quote-wrap::before{content:"";position:absolute;top:0;left:0;right:0;height:10%;background:linear-gradient(to top,transparent,var(--edge-top, var(--cream)));pointer-events:none;z-index:2;}
.photo-quote-wrap::after{content:"";position:absolute;bottom:0;left:0;right:0;height:10%;background:linear-gradient(to bottom,transparent,var(--edge-bottom, var(--cream)));pointer-events:none;z-index:2;}
.photo-quote-caption{padding:40px 32px 52px;text-align:center;background:var(--cream);}
.photo-quote-caption .line-deco{display:block;width:1px;height:32px;background:linear-gradient(to bottom,var(--gold),transparent);margin:0 auto 24px;}
.photo-quote-caption p{font-family:"Cormorant Garamond";font-style:italic;font-weight:300;font-size:clamp(1.25rem,3.4vw,1.7rem);letter-spacing:0.02em;color:var(--forest);line-height:1.7;}
.photo-quote-caption .quote-author{display:block;margin-top:18px;font-family:"Jost";font-weight:200;font-size:0.62rem;letter-spacing:0.5em;text-transform:uppercase;color:var(--sage);}

.hero-section{width:100%;padding:100px 24px 76px;text-align:center;position:relative;}
.eyebrow{
  font-family:"Jost";font-weight:200;font-size:clamp(0.55rem,1.6vw,0.68rem);
  letter-spacing:0.6em;text-transform:uppercase;color:var(--mist);margin-bottom:28px;
  display:flex;align-items:center;justify-content:center;gap:18px;
}
.eyebrow::before,.eyebrow::after{content:"";width:clamp(24px,6vw,52px);height:1px;background:linear-gradient(90deg,transparent,rgba(107,98,88,0.5));}
.eyebrow::after{background:linear-gradient(270deg,transparent,rgba(107,98,88,0.5));}
.hero-names{
  font-family:"Balladeer","Cormorant Garamond";font-size:clamp(4.5rem,13vw,8.5rem);
  font-weight:300;letter-spacing:0.06em;line-height:1.15;padding:0.05em 0.1em;color:var(--forest);overflow:visible;
}
.hero-ampersand{font-family:"Cormorant Garamond";font-style:italic;color:var(--sage);display:block;font-size:clamp(2rem,6vw,4rem);line-height:1.3;margin:0.1em 0;}
.hero-tagline{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1rem,2.4vw,1.4rem);letter-spacing:0.22em;color:var(--mist);margin-top:24px;text-transform:lowercase;}
.hero-divider{display:flex;align-items:center;gap:0;width:min(280px,60%);margin:28px auto;}
.hero-divider::before,.hero-divider::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(184,146,74,0.4));}
.hero-divider::after{background:linear-gradient(270deg,transparent,rgba(184,146,74,0.4));}
.hero-divider-gem{width:3px;height:3px;border-radius:50%;margin:0 14px;flex-shrink:0;background:var(--gold);}

.narrative-block{padding:60px 40px;text-align:center;position:relative;overflow:hidden;background:var(--cream);}
.narrative-block::before{content:"❝";position:absolute;top:-10px;left:clamp(12px,4vw,32px);font-family:"Cormorant Garamond";font-size:clamp(5rem,14vw,8rem);color:var(--gold);opacity:0.06;line-height:1;pointer-events:none;font-style:normal;}
.narrative-quote{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.4rem,4vw,2rem);font-weight:300;color:var(--forest);line-height:1.65;letter-spacing:0.04em;max-width:520px;margin:0 auto 20px;}
.narrative-sub{font-family:"Jost";font-weight:200;font-size:clamp(0.55rem,1.5vw,0.65rem);letter-spacing:0.55em;text-transform:uppercase;color:var(--mist);display:block;}

.save-the-date{padding:72px 32px 64px;text-align:center;background:var(--cream);position:relative;overflow:hidden;}
.save-the-date::before{content:"";position:absolute;inset:20px;border:1px solid rgba(184,146,74,0.14);pointer-events:none;z-index:0;}
.save-the-date::after{content:"";position:absolute;inset:30px;border:1px solid rgba(184,146,74,0.06);pointer-events:none;z-index:0;}
.save-the-date .botanical-corner{position:absolute;opacity:0.08;pointer-events:none;z-index:0;}
.save-the-date > *{position:relative;z-index:1;}
.std-spread-header{display:flex;align-items:center;justify-content:space-between;width:min(480px,88%);margin:0 auto 38px;font-family:"Jost";font-weight:300;font-size:clamp(0.55rem,1.8vw,0.7rem);letter-spacing:0.65em;text-transform:uppercase;color:var(--forest);}
.std-spread-rule{flex:1;height:1px;background:linear-gradient(90deg,rgba(184,146,74,0.15),rgba(184,146,74,0.4),rgba(184,146,74,0.15));margin:0 12px;}
.std-rule-thin{width:min(480px,88%);height:1px;margin:0 auto 30px;background:linear-gradient(90deg,transparent,rgba(184,146,74,0.2),transparent);}
.std-monogram-script{font-family:"Balladeer","Cormorant Garamond";font-size:clamp(4.5rem,14vw,9rem);font-weight:300;letter-spacing:0.08em;color:var(--forest);line-height:1.2;padding:0.1em 0.15em;margin-bottom:10px;overflow:visible;}
.std-names-wrap{margin:16px 0 24px;}
.std-name-script{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.8rem,5.5vw,3.2rem);font-weight:300;color:var(--forest);letter-spacing:0.06em;line-height:1.2;}
.std-and{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.3rem,3.5vw,2rem);color:var(--sage);display:block;line-height:1.5;}
.std-invite-text{font-family:"Cormorant Garamond";font-size:clamp(1.05rem,2.6vw,1.28rem);color:var(--forest);line-height:1.95;letter-spacing:0.04em;max-width:460px;margin:0 auto 34px;}
.date-display{display:flex;justify-content:center;gap:clamp(16px,4vw,48px);margin:36px 0;}
.date-unit{text-align:center;}
.date-unit .num{font-family:"Cormorant Garamond";font-size:clamp(3.5rem,10vw,6rem);font-weight:400;color:var(--forest);line-height:1.15;display:block;}
.date-unit .lbl{font-family:"Jost";font-weight:300;font-size:0.72rem;letter-spacing:0.38em;text-transform:uppercase;color:var(--forest);display:block;margin-top:4px;opacity:0.65;}
.date-separator{font-family:"Cormorant Garamond";font-size:clamp(3rem,8vw,5rem);color:var(--sage-light);align-self:flex-start;padding-top:8px;line-height:1.15;}
.std-spread-footer{display:flex;align-items:center;justify-content:space-between;width:min(480px,88%);margin:4px auto 0;font-family:"Jost";font-weight:300;font-size:clamp(0.5rem,1.6vw,0.62rem);letter-spacing:0.6em;text-transform:uppercase;color:var(--moss);}

.countdown-section{background:var(--forest);padding:56px 24px;text-align:center;position:relative;overflow:hidden;}
.countdown-label{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1rem,2.5vw,1.2rem);font-weight:300;color:rgba(245,241,234,0.55);margin-bottom:24px;letter-spacing:0.35em;line-height:1.4;position:relative;z-index:1;text-transform:uppercase;}
.countdown-grid{display:flex;justify-content:center;gap:clamp(16px,4vw,48px);position:relative;z-index:1;}
.countdown-unit{text-align:center;}
.countdown-unit .cnum{font-family:"Cormorant Garamond";font-size:clamp(3rem,9vw,5.5rem);font-weight:400;color:var(--cream);line-height:1.15;display:block;}
.countdown-unit .clbl{font-family:"Jost";font-weight:200;font-size:0.66rem;letter-spacing:0.45em;text-transform:uppercase;color:var(--sage-light);display:block;margin-top:4px;}
.countdown-sep{font-family:"Cormorant Garamond";font-size:clamp(2.5rem,7vw,5rem);color:var(--sage);align-self:flex-start;padding-top:8px;}

.location-section{padding:72px 24px;text-align:center;background:var(--cream2);}
.section-title{font-family:"Jost";font-weight:200;font-size:clamp(0.7rem,2vw,0.9rem);letter-spacing:0.6em;text-transform:uppercase;color:var(--forest);margin-bottom:12px;position:relative;display:inline-block;}
.section-subtitle{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.1rem,2.8vw,1.4rem);color:var(--moss);letter-spacing:0.08em;margin-bottom:44px;}
.location-name{font-family:"Jost";font-weight:300;font-size:clamp(0.78rem,2.2vw,0.9rem);letter-spacing:0.32em;text-transform:uppercase;color:var(--moss);margin-top:20px;margin-bottom:8px;}
.location-address{font-family:"Cormorant Garamond";font-size:clamp(1.05rem,2.6vw,1.25rem);color:var(--forest);line-height:1.9;max-width:420px;margin:0 auto 28px;}
.btn-sage{display:inline-block;padding:14px 48px;background:var(--sage);font-family:"Jost";font-weight:300;letter-spacing:0.45em;font-size:0.7rem;text-transform:uppercase;color:var(--cream);text-decoration:none;border:none;cursor:pointer;transition:background 0.4s var(--ease-expo),transform 0.3s var(--ease-spring);border-radius:2px;margin:8px;position:relative;overflow:hidden;}
.btn-sage::after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,0.1) 50%,transparent 60%);transform:translateX(-120%);transition:transform 0.6s var(--ease-expo);pointer-events:none;}
.btn-sage:hover{background:var(--moss);}
.btn-sage:hover::after{transform:translateX(120%);}
.btn-sage:active{transform:scale(0.97);}
.btn-sage:disabled{background:var(--mist);opacity:0.45;cursor:not-allowed;transform:none;}

.itinerario-section{padding:100px 24px 88px;text-align:center;background:var(--cream);position:relative;}
.itinerario-list{max-width:500px;margin:48px auto 0;position:relative;text-align:left;}
.itinerario-item{display:flex;gap:0;align-items:flex-start;opacity:0;transform:translateX(-16px);transition:opacity 0.75s var(--ease-expo),transform 0.75s var(--ease-expo);}
.itinerario-item.visible{opacity:1;transform:translateX(0);}
.itinerario-item:nth-child(1){transition-delay:0.05s;}
.itinerario-item:nth-child(2){transition-delay:0.13s;}
.itinerario-item:nth-child(3){transition-delay:0.21s;}
.itinerario-item:nth-child(4){transition-delay:0.29s;}
.itinerario-item:nth-child(5){transition-delay:0.37s;}
.itinerario-item:nth-child(6){transition-delay:0.45s;}
.itinerario-item:nth-child(7){transition-delay:0.53s;}
.itinerario-item:nth-child(8){transition-delay:0.61s;}
.itin-left{width:88px;flex-shrink:0;padding:0 16px 0 0;text-align:right;padding-top:1px;}
.itin-time{font-family:"Cormorant Garamond";font-size:clamp(1.05rem,2.5vw,1.22rem);font-weight:400;color:var(--sage);letter-spacing:0.05em;white-space:nowrap;display:block;}
.itin-ampm{font-family:"Jost";font-weight:300;font-size:0.58rem;letter-spacing:0.28em;text-transform:uppercase;color:var(--moss);display:block;margin-top:2px;}
.itin-center{width:28px;flex-shrink:0;display:flex;flex-direction:column;align-items:center;}
.itin-dot{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--sage);background:var(--cream);flex-shrink:0;margin-top:5px;position:relative;z-index:1;transition:background 0.5s ease;}
.itinerario-item.visible .itin-dot{background:var(--sage);}
.itin-line{width:1px;flex:1;min-height:36px;background:linear-gradient(to bottom,rgba(184,146,74,0.35),rgba(184,146,74,0.08));}
.itinerario-item:last-child .itin-line{display:none;}
.itin-right{flex:1;padding:0 0 40px 16px;text-align:left;}
.itin-evento{font-family:"Jost";font-weight:300;font-size:0.66rem;letter-spacing:0.42em;text-transform:uppercase;color:var(--moss);display:block;margin-bottom:4px;}
.itin-titulo{font-family:"Cormorant Garamond";font-size:clamp(1.1rem,2.8vw,1.38rem);font-weight:400;color:var(--forest);line-height:1.25;}
.itin-desc{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(0.88rem,2vw,1rem);color:var(--moss);line-height:1.65;margin-top:4px;max-width:300px;}

.dress-section{padding:72px 24px;text-align:center;background:var(--cream2);}
.dress-icons{display:flex;justify-content:center;gap:60px;margin:40px 0 8px;}
.dress-icon-luxe { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.dress-icon-luxe svg { width: 48px; height: 48px; stroke: var(--forest); stroke-width: 0.8; fill: none; stroke-linecap: round; stroke-linejoin: round; opacity: 0.8; }
.dress-icon-luxe span { font-family: "Jost"; font-weight: 300; font-size: 0.62rem; letter-spacing: 0.3em; text-transform: uppercase; color: var(--moss); }

.family-section{padding:100px 24px;text-align:center;background:var(--cream);}
.family-block{max-width:480px;margin:0 auto 44px;}
.family-role{font-family:"Jost";font-weight:300;font-size:0.68rem;letter-spacing:0.48em;text-transform:uppercase;color:var(--sage);display:block;margin-bottom:14px;}
.family-names{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.2rem,3vw,1.52rem);font-weight:300;color:var(--forest);line-height:1.75;letter-spacing:0.04em;text-align:center;}
.family-divider{width:50px;height:1px;margin:20px auto 28px;background:linear-gradient(90deg,transparent,rgba(184,146,74,0.45),transparent);}

.adultos-section{padding:80px 24px;text-align:center;background:var(--cream2);}
.adultos-icon-luxe { margin: 0 auto 28px; width: 56px; height: 56px; }
.adultos-icon-luxe svg { width: 100%; height: 100%; stroke: var(--sage); stroke-width: 0.8; fill: none; stroke-linecap: round; stroke-linejoin: round; opacity: 0.9; }
.adultos-text{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.15rem,3vw,1.4rem);color:var(--forest);line-height:1.85;max-width:420px;margin:0 auto;opacity:0.9;}

.gallery-section{padding:100px 24px;text-align:center;background:var(--cream);}
.gallery-cards{display:flex;flex-direction:column;gap:20px;max-width:480px;margin:0 auto 8px;}
.gallery-card{position:relative;overflow:hidden;border:1px solid rgba(184,146,74,0.2);border-radius:2px;padding:40px 32px;background:var(--cream);transition:border-color 0.5s var(--ease-expo),box-shadow 0.5s var(--ease-expo),transform 0.5s var(--ease-expo);}
.gallery-card:hover{border-color:rgba(184,146,74,0.45);box-shadow:0 8px 40px rgba(17,17,17,0.1);transform:translateY(-2px);}
.gallery-card-icon-luxe{width:40px;height:40px;margin:0 auto 18px;}
.gallery-card-icon-luxe svg{width:100%;height:100%;stroke:var(--sage);stroke-width:0.8;fill:none;stroke-linecap:round;stroke-linejoin:round;opacity:0.9;}
.gallery-card-label{font-family:"Jost";font-weight:300;font-size:0.66rem;letter-spacing:0.48em;text-transform:uppercase;color:var(--moss);display:block;margin-bottom:12px;}
.gallery-card p{font-family:"Cormorant Garamond";font-size:clamp(1rem,2.5vw,1.15rem);color:var(--forest);line-height:1.8;max-width:380px;margin:0 auto 28px;}

.pase-section{padding:88px 24px 96px;text-align:center;background:var(--forest);position:relative;overflow:hidden;}
.pase-section::after{content:"";position:absolute;inset:0;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23g)' opacity='0.04'/%3E%3C/svg%3E");mix-blend-mode:overlay;opacity:0.6;}
.pase-section .section-title{color:rgba(245,241,234,0.92);}
.pase-section .section-divider::before,.pase-section .section-divider::after{background:linear-gradient(90deg,transparent,rgba(184,146,74,0.5),transparent);}
.pase-section .section-divider span{color:var(--gold);}
.pase-intro{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.05rem,2.6vw,1.28rem);color:rgba(245,241,234,0.55);line-height:1.9;max-width:400px;margin:20px auto 48px;position:relative;z-index:1;}
.pase-ticket{position:relative;z-index:1;max-width:348px;margin:0 auto;background:var(--cream);box-shadow:0 0 0 1px rgba(184,146,74,0.1),0 28px 70px rgba(0,0,0,0.6),0 4px 18px rgba(0,0,0,0.35);transition:transform 0.6s var(--ease-expo),box-shadow 0.6s var(--ease-expo);}
.pase-ticket:hover{transform:translateY(-5px) scale(1.01);box-shadow:0 0 0 1px rgba(184,146,74,0.18),0 40px 90px rgba(0,0,0,0.65),0 8px 26px rgba(0,0,0,0.4);}
.pase-ticket-inner{position:absolute;inset:9px;border:1px solid rgba(184,146,74,0.16);pointer-events:none;z-index:0;}
.pase-ticket-inner2{position:absolute;inset:15px;border:1px solid rgba(184,146,74,0.07);pointer-events:none;z-index:0;}
.pase-ticket-corner{position:absolute;width:20px;height:20px;z-index:2;pointer-events:none;}
.pase-ticket-corner svg{width:20px;height:20px;}
.pase-ticket-corner--tl{top:9px;left:9px;}
.pase-ticket-corner--tr{top:9px;right:9px;transform:scaleX(-1);}
.pase-ticket-corner--bl{bottom:9px;left:9px;transform:scaleY(-1);}
.pase-ticket-corner--br{bottom:9px;right:9px;transform:scale(-1,-1);}
.pase-ticket-top{padding:44px 36px 26px;text-align:center;position:relative;z-index:1;}
.pase-star{display:block;color:var(--gold);font-size:9px;letter-spacing:5px;margin-bottom:18px;opacity:0.6;}
.pase-edition{font-family:"Jost";font-weight:200;font-size:0.52rem;letter-spacing:0.58em;text-transform:uppercase;color:var(--mist);display:block;margin-bottom:22px;}
.pase-ticket-monogram{font-family:"Balladeer","Cormorant Garamond";font-size:clamp(3.8rem,12vw,5.8rem);font-weight:300;letter-spacing:0.1em;line-height:1;color:var(--forest);display:block;overflow:visible;padding:0.05em 0;}
.pase-event-name{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(0.9rem,2.2vw,1.1rem);color:var(--mist);letter-spacing:0.1em;margin-top:8px;display:block;}
.pase-ticket-names{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.15rem,2.8vw,1.42rem);font-weight:300;color:var(--sage);letter-spacing:0.05em;line-height:1.55;margin:24px 0 0;}
.pase-ticket-names .pase-amp{font-size:0.78em;color:rgba(184,146,74,0.55);display:block;line-height:1.4;}
.pase-cut{display:flex;align-items:center;margin:0;}
.pase-cut-circle-l,.pase-cut-circle-r{width:18px;height:18px;border-radius:50%;background:var(--forest);flex-shrink:0;margin:0 -9px;position:relative;z-index:2;}
.pase-cut-line{flex:1;border-top:1px dashed rgba(184,146,74,0.22);}
.pase-ticket-bottom{padding:24px 36px 36px;text-align:center;position:relative;z-index:1;}
.pase-ticket-meta{display:flex;justify-content:space-between;align-items:flex-start;}
.pase-meta-col{text-align:center;flex:1;}
.pase-meta-label{font-family:"Jost";font-weight:200;font-size:0.5rem;letter-spacing:0.52em;text-transform:uppercase;color:var(--mist);display:block;margin-bottom:6px;}
.pase-meta-value{font-family:"Cormorant Garamond";font-size:clamp(0.88rem,2.2vw,1.02rem);font-weight:400;color:var(--forest);letter-spacing:0.04em;line-height:1.35;display:block;}
.pase-meta-sep{width:1px;height:38px;background:linear-gradient(to bottom,transparent,rgba(184,146,74,0.28),transparent);flex-shrink:0;margin:0 6px;align-self:center;}
.pase-serial{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:20px;}
.pase-serial-line{flex:1;height:1px;max-width:52px;background:linear-gradient(90deg,transparent,rgba(184,146,74,0.28));}
.pase-serial-line:last-child{background:linear-gradient(270deg,transparent,rgba(184,146,74,0.28));}
.pase-serial-text{font-family:"Jost";font-weight:200;font-size:0.5rem;letter-spacing:0.4em;text-transform:uppercase;color:rgba(107,98,88,0.55);}

.regalo-section{padding:100px 24px;text-align:center;position:relative;overflow:hidden;background:var(--cream);}
.regalo-text{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.1rem,2.8vw,1.35rem);color:var(--forest);line-height:1.9;max-width:440px;margin:16px auto 44px;opacity:0.88;}
.regalo-cards{max-width:460px;margin:0 auto;display:flex;flex-direction:column;gap:0;}
.regalo-card{display:flex;align-items:center;gap:24px;padding:28px 32px;background:var(--cream);border:1px solid rgba(184,146,74,0.16);border-radius:2px;text-align:left;transition:border-color 0.4s var(--ease-expo),box-shadow 0.4s var(--ease-expo),transform 0.4s var(--ease-expo);position:relative;overflow:hidden;}
.regalo-card:hover{border-color:rgba(184,146,74,0.38);box-shadow:0 8px 36px rgba(17,17,17,0.07);transform:translateY(-2px);}
.regalo-card-icon-luxe{flex-shrink:0;width:40px;height:40px;}
.regalo-card-icon-luxe svg{width:100%;height:100%;stroke:var(--sage);stroke-width:0.8;fill:none;stroke-linecap:round;stroke-linejoin:round;opacity:0.9;}
.regalo-card-body{flex:1;}
.regalo-card-label{font-family:"Jost";font-weight:300;font-size:0.65rem;letter-spacing:0.5em;text-transform:uppercase;color:var(--moss);display:block;margin-bottom:6px;}
.regalo-card-text{font-family:"Cormorant Garamond";font-size:clamp(1rem,2.4vw,1.15rem);color:var(--forest);line-height:1.6;margin:0 0 14px;opacity:0.8;}
.regalo-btn{display:inline-flex;align-items:center;font-family:"Jost";font-weight:300;font-size:0.62rem;letter-spacing:0.42em;text-transform:uppercase;color:var(--sage);text-decoration:none;border-bottom:1px solid rgba(184,146,74,0.35);padding-bottom:2px;transition:color 0.3s ease,border-color 0.3s ease;}
.regalo-btn:hover{color:var(--moss);border-color:var(--moss);}
.regalo-cards-divider{display:flex;align-items:center;gap:0;margin:0;padding:0 32px;}
.regalo-cards-divider-line{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(184,146,74,0.2),transparent);}
.regalo-cards-divider-gem{width:3px;height:3px;border-radius:50%;background:var(--gold);margin:0 14px;flex-shrink:0;}

.map-embed{max-width:520px;margin:8px auto 32px;border:1px solid rgba(184,146,74,0.25);border-radius:2px;overflow:hidden;}
.map-embed iframe{width:100%;height:280px;border:0;display:block;filter:grayscale(0.35) contrast(1.05) brightness(0.98);}
.map-note{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(0.95rem,2.2vw,1.08rem);color:var(--moss);line-height:1.8;max-width:400px;margin:0 auto 28px;opacity:0.85;}

.faq-section{padding:100px 24px;text-align:center;background:var(--cream2);}
.faq-list{max-width:560px;margin:44px auto 0;text-align:left;}
.faq-item{border-bottom:1px solid rgba(184,146,74,0.2);}
.faq-item summary{list-style:none;cursor:pointer;padding:22px 30px 22px 0;position:relative;font-family:"Cormorant Garamond";font-size:clamp(1.05rem,2.6vw,1.22rem);color:var(--forest);letter-spacing:0.01em;transition:color 0.3s ease;}
.faq-item summary::-webkit-details-marker{display:none;}
.faq-item summary::after{content:"+";position:absolute;right:0;top:20px;font-family:"Jost";font-weight:300;font-size:1.3rem;color:var(--sage);transition:transform 0.4s var(--ease-expo);}
.faq-item[open] summary::after{transform:rotate(45deg);}
.faq-item[open] summary{color:var(--moss);}
.faq-item summary:hover{color:var(--moss);}
.faq-answer{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(0.95rem,2.2vw,1.08rem);color:var(--moss);line-height:1.8;padding:0 30px 24px 0;opacity:0.9;}

.letter-section{padding:110px 24px;text-align:center;background:var(--cream);position:relative;}
.letter-mark{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(2.4rem,6vw,3.4rem);color:var(--gold);line-height:1;margin-bottom:8px;opacity:0.75;}
.letter-body{font-family:"Cormorant Garamond";font-style:italic;font-weight:300;font-size:clamp(1.1rem,2.8vw,1.35rem);color:var(--forest);line-height:2;max-width:520px;margin:0 auto 36px;opacity:0.9;}
.letter-sign{font-family:"Balladeer","Cormorant Garamond";font-size:clamp(1.6rem,4vw,2.2rem);color:var(--sage);letter-spacing:0.04em;}

.pregallery-section{padding:90px 24px 100px;text-align:center;background:var(--cream);}
.pregallery-grid{max-width:640px;margin:44px auto 0;display:grid;grid-template-columns:repeat(3,1fr);gap:8px;}
.pregallery-grid img{width:100%;height:100%;aspect-ratio:1/1;object-fit:cover;display:block;filter:grayscale(0.15) contrast(1.06) saturate(0.92);transition:transform 1.8s var(--ease-expo),filter 0.4s ease;}
.pregallery-item{overflow:hidden;border-radius:1px;opacity:0;transform:scale(1.1);transition:opacity 1s var(--ease-expo),transform 1.4s var(--ease-expo);}
.pregallery-item.visible{opacity:1;transform:scale(1);}
.pregallery-item:nth-child(2){grid-column:span 2;}
.pregallery-item:hover img{transform:scale(1.06);filter:grayscale(0) contrast(1.06) saturate(1);}

.volume-wrap{position:fixed;bottom:82px;right:28px;z-index:199;display:flex;align-items:center;opacity:0;pointer-events:none;transition:opacity 0.3s ease;}
.volume-wrap.show{opacity:1;pointer-events:auto;}
.volume-wrap input[type=range]{width:70px;accent-color:var(--sage);cursor:pointer;transform:rotate(-90deg);transform-origin:right center;margin-right:36px;}

.calendar-btn-wrap{margin-top:18px;position:relative;}
.calendar-menu{display:none;flex-direction:column;gap:10px;margin-top:16px;align-items:center;}
.calendar-menu.show{display:flex;}
.calendar-menu a{font-family:"Jost";font-weight:300;font-size:0.72rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--moss);text-decoration:underline;text-underline-offset:4px;cursor:pointer;transition:color 0.3s ease;}
.calendar-menu a:hover{color:var(--forest);}

.confirmar-wrapper{padding:100px 24px;text-align:center;background:var(--cream2);}
.confirmar-section{border:1px solid rgba(184,146,74,0.18);border-radius:2px;padding:44px 32px;max-width:480px;margin:32px auto 0;background:var(--cream);box-shadow:0 4px 30px rgba(0,0,0,0.04);text-align:center;}
.form-field{margin-bottom:20px;text-align:left;}
.form-label{font-family:"Jost";font-weight:300;font-size:0.68rem;letter-spacing:0.38em;text-transform:uppercase;color:var(--moss);display:block;margin-bottom:8px;}
.form-input{width:100%;padding:12px 16px;background:transparent;border:1px solid rgba(184,146,74,0.25);border-radius:2px;font-family:"Cormorant Garamond";font-size:clamp(1rem,2.2vw,1.1rem);color:var(--forest);transition:border-color 0.3s var(--ease-expo);outline:none;-webkit-appearance:none;appearance:none;}
.form-input:focus{border-color:rgba(184,146,74,0.65);}
.form-input::placeholder{color:var(--moss);opacity:0.55;}
textarea.form-input{resize:vertical;min-height:90px;line-height:1.5;font-family:"Cormorant Garamond";}
.form-passes-note{font-family:"Cormorant Garamond";font-style:italic;font-weight:400;font-size:0.78rem;letter-spacing:0.02em;text-transform:none;color:var(--gold,#b8924a);opacity:0.85;}
.passes-cards{display:flex;gap:14px;margin-top:4px;}
.pass-cards{display:flex;gap:14px;margin-top:4px;}
.pass-card{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:18px 10px 16px;background:transparent;border:1px solid rgba(184,146,74,0.25);border-radius:2px;cursor:pointer;transition:border-color 0.4s var(--ease-expo),background-color 0.4s var(--ease-expo),transform 0.3s var(--ease-expo);text-align:center;}
.pass-card:hover{border-color:rgba(184,146,74,0.55);transform:translateY(-1px);}
.pass-card-num{font-family:"Cormorant Garamond";font-weight:400;font-size:1.7rem;color:var(--forest);line-height:1;}
.pass-card-label{font-family:"Jost";font-weight:300;font-size:0.62rem;letter-spacing:0.28em;text-transform:uppercase;color:var(--moss);}
.pass-card.selected{border-color:var(--gold);background:rgba(184,146,74,0.08);}
.pass-card.selected .pass-card-num{color:var(--gold);}
.pass-card.selected .pass-card-label{color:var(--gold);}
.form-radios{display:flex;gap:24px;justify-content:center;margin-top:4px;}
.form-radio-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-family:"Cormorant Garamond";font-size:clamp(1rem,2.2vw,1.1rem);color:var(--forest);}
.form-radio-label input[type="radio"]{width:14px;height:14px;accent-color:var(--sage);cursor:pointer;flex-shrink:0;}
.form-rule{width:100%;height:1px;background:linear-gradient(90deg,transparent,rgba(184,146,74,0.2),transparent);margin:24px 0;}
.form-success{display:none;padding:28px 0 8px;font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.1rem,2.8vw,1.3rem);color:var(--moss);text-align:center;line-height:1.7;}

/* Bloque que solo existe para quien sí asiste. A quien no puede venir no
   se le pregunta por transporte ni por menú: sobra y se siente frío. */
.form-reveal{max-height:0;overflow:hidden;opacity:0;transition:max-height 0.7s var(--ease-expo),opacity 0.5s var(--ease-expo);}
.form-reveal.abierto{max-height:1200px;opacity:1;}

/* Explicación de por qué pedimos el teléfono. Sin esta línea la gente
   duda y abandona; con ella el dato se vuelve obvio. */
.form-hint{font-family:"Cormorant Garamond";font-style:italic;font-size:0.92rem;line-height:1.55;color:var(--mist);margin-top:8px;opacity:0.9;}
.form-hint strong{font-style:normal;font-weight:500;color:var(--moss);}

.form-input.invalido{border-color:rgba(176,58,58,0.55);}
.form-error{font-family:"Jost";font-weight:300;font-size:0.66rem;letter-spacing:0.14em;text-transform:uppercase;color:#b03a3a;margin-top:7px;min-height:12px;display:block;}

.form-tel-wrap{position:relative;display:flex;align-items:center;}
.form-tel-lada{position:absolute;left:16px;font-family:"Cormorant Garamond";font-size:clamp(1rem,2.2vw,1.1rem);color:var(--mist);opacity:0.6;pointer-events:none;}
.form-tel-wrap .form-input{padding-left:52px;letter-spacing:0.06em;}

.form-alerta{display:none;margin-top:18px;padding:16px 18px;border:1px solid rgba(176,58,58,0.35);border-radius:2px;background:rgba(176,58,58,0.04);font-family:"Cormorant Garamond";font-size:1rem;line-height:1.65;color:var(--forest);text-align:left;}
.form-alerta.visible{display:block;}
.form-alerta .titulo{font-family:"Jost";font-weight:300;font-size:0.64rem;letter-spacing:0.3em;text-transform:uppercase;color:#b03a3a;display:block;margin-bottom:7px;}

.form-success .success-tel{display:block;margin-top:14px;font-style:normal;font-family:"Jost";font-weight:300;font-size:0.68rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--moss);}
.form-success .success-mark{font-family:"Jost";font-size:0.6rem;letter-spacing:0.4em;text-transform:uppercase;color:var(--sage);display:block;margin-bottom:10px;}

footer{background:var(--forest);padding:72px 24px 48px;text-align:center;position:relative;overflow:hidden;}
footer::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:1px;height:80px;background:linear-gradient(to bottom,var(--sage-light),transparent);opacity:0.4;}
.footer-monogram{font-family:"Balladeer","Cormorant Garamond";font-size:clamp(4rem,10vw,6rem);font-weight:300;letter-spacing:0.15em;color:rgba(245,241,234,0.18);display:block;line-height:1.3;padding:0.05em 0.1em;position:relative;z-index:1;overflow:visible;}
.footer-message{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1.1rem,3vw,1.5rem);color:rgba(245,241,234,0.7);margin:12px 0 6px;letter-spacing:0.1em;position:relative;z-index:1;}
.footer-date{font-family:"Cormorant Garamond";font-style:italic;font-size:clamp(1rem,2.8vw,1.3rem);color:var(--sage-light);margin-top:8px;letter-spacing:0.15em;display:block;position:relative;z-index:1;}
.footer-credits{margin-top:44px;position:relative;z-index:1;}
.footer-credits-rule{width:min(180px,50%);height:1px;margin:0 auto 20px;background:linear-gradient(90deg,transparent,rgba(212,174,114,0.4),transparent);}
.footer-credits-text{font-family:"Jost";font-weight:200;font-size:clamp(0.52rem,1.5vw,0.65rem);letter-spacing:0.3em;text-transform:uppercase;color:rgba(245,241,234,0.5);display:block;line-height:2;}
.footer-credits-link{color:var(--gold-light);text-decoration:none;letter-spacing:0.3em;transition:color 0.35s var(--ease-expo);}
.footer-credits-link:hover{color:var(--gold);}

#scroll-progress{position:fixed;top:0;left:0;height:1px;width:0%;background:linear-gradient(90deg,var(--gold),var(--sage-light),var(--gold));z-index:999;transition:width 0.1s linear;}

#music-btn{position:fixed;bottom:28px;right:28px;z-index:200;width:46px;height:46px;border-radius:50%;border:1px solid rgba(184,146,74,0.4);background:rgba(17,17,17,0.88);color:var(--sage-light);cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px);transition:border-color 0.3s ease,transform 0.3s var(--ease-spring);box-shadow:0 4px 20px rgba(0,0,0,0.25);}
#music-btn svg{width:18px;height:18px;fill:var(--sage-light);}
#music-btn:hover{border-color:var(--sage);transform:scale(1.08);}
@keyframes musicPulse{0%,100%{box-shadow:0 4px 16px rgba(0,0,0,0.25),0 0 0 0 rgba(184,146,74,0.4);}60%{box-shadow:0 4px 16px rgba(0,0,0,0.25),0 0 0 10px rgba(184,146,74,0);}}
#music-btn.playing{animation:musicPulse 2.4s var(--ease-expo) infinite;}

@media(hover:hover){
  #cursor{position:fixed;pointer-events:none;z-index:9999;width:10px;height:10px;border-radius:50%;background:var(--gold);mix-blend-mode:multiply;transform:translate(-50%,-50%);transition:width 0.3s,height 0.3s,opacity 0.3s;opacity:0.6;}
  #cursor.hover{width:22px;height:22px;opacity:0.3;background:var(--forest);}
}

.reveal{opacity:0;transform:translateY(36px);transition:opacity 1.1s var(--ease-expo),transform 1.1s var(--ease-expo);}
.reveal.visible{opacity:1;transform:translateY(0);}
.reveal-slow{opacity:0;transform:translateY(20px);transition:opacity 1.5s var(--ease-expo),transform 1.5s var(--ease-expo);}
.reveal-slow.visible{opacity:1;transform:translateY(0);}

.reveal-stagger-1{transition-delay:0.12s;}
.reveal-stagger-2{transition-delay:0.26s;}
.reveal-stagger-3{transition-delay:0.40s;}

.anim-fade-up{opacity:0;transform:translateY(28px);transition:opacity 0.95s var(--ease-expo),transform 0.95s var(--ease-expo);}
.anim-fade-up.visible{opacity:1;transform:translateY(0);}
.anim-fade-in{opacity:0;transition:opacity 1.2s ease;}
.anim-fade-in.visible{opacity:1;}
.anim-scale-in{opacity:0;transform:scale(0.94);transition:opacity 1s var(--ease-expo),transform 1s var(--ease-expo);}
.anim-scale-in.visible{opacity:1;transform:scale(1);}
.anim-slide-left{opacity:0;transform:translateX(-24px);transition:opacity 0.95s var(--ease-expo),transform 0.95s var(--ease-expo);}
.anim-slide-left.visible{opacity:1;transform:translateX(0);}
.anim-slide-right{opacity:0;transform:translateX(24px);transition:opacity 0.95s var(--ease-expo),transform 0.95s var(--ease-expo);}
.anim-slide-right.visible{opacity:1;transform:translateX(0);}

.line-draw{opacity:0;transform:scaleX(0);transform-origin:center;transition:opacity 0.8s ease,transform 1.2s var(--ease-expo);}
.line-draw.visible{opacity:1;transform:scaleX(1);}

@keyframes numPop{0%{transform:scale(1);}30%{transform:scale(1.06);}60%{transform:scale(0.97);}100%{transform:scale(1);}}
.cnum.pop{animation:numPop 0.35s var(--ease-spring);}

.elegant-ornament{display:flex;flex-direction:column;align-items:center;padding:32px 0;gap:0;}
.elegant-ornament .orn-top{width:1px;height:52px;background:linear-gradient(to bottom,transparent,var(--gold));}
.elegant-ornament .orn-gem{width:8px;height:8px;border:1px solid var(--gold);transform:rotate(45deg);margin:8px 0;position:relative;}
.elegant-ornament .orn-gem::before{content:"";position:absolute;inset:2px;background:var(--gold);opacity:0.4;}
.elegant-ornament .orn-bottom{width:1px;height:52px;background:linear-gradient(to bottom,var(--gold),transparent);}

@media(max-width:600px){
  .date-display{gap:18px;}
  .countdown-section{padding:56px 14px;}
  .countdown-grid{gap:6px;}
  .countdown-unit{min-width:0;flex-shrink:1;}
  .countdown-unit .cnum{font-size:clamp(1.7rem,7vw,2.3rem);}
  .countdown-unit .clbl{font-size:0.46rem;letter-spacing:0.08em;white-space:nowrap;}
  .countdown-sep{font-size:clamp(1.3rem,5vw,1.9rem);padding-top:4px;flex-shrink:0;}
  .cover{height:100vh;height:100dvh;}
  .dress-icons{gap:40px;}
}
