@font-face{
  font-family:"WeddingSerifPrimary";
  src:url("fonts/wedding-serif-primary.ttf?v=18") format("truetype");
  font-style:normal;font-weight:400;font-display:swap;
}
@font-face{
  font-family:"WeddingSerifExtra";
  src:url("fonts/wedding-serif-extra.ttf?v=18") format("truetype");
  font-style:normal;font-weight:400;font-display:swap;
}
@font-face{
  font-family:"WeddingLatin";
  src:url("fonts/wedding-latin.ttf") format("truetype");
  font-style:normal;font-weight:400;font-display:swap;
}

:root{
  --paper:#fbf7ef;
  --paper-light:#fffdf8;
  --paper-deep:#f5ecdf;
  --gold:#a98656;
  --gold-dark:#8d6a3e;
  --gold-soft:#dcc8a7;
  --ink:#55483b;
  --muted:#887868;
  --line:rgba(169,134,86,.28);
  --shadow:0 18px 48px rgba(99,75,42,.09);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;background:#e8e4dc;overflow-x:hidden}
body{
  margin:0;color:var(--ink);background:#e8e4dc;
  font-family:"WeddingSerifPrimary","WeddingSerifExtra","Songti SC","STSong",serif;
  overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%;
  -webkit-tap-highlight-color:transparent;
}
button,input,textarea{font:inherit;color:inherit}
button,a{touch-action:manipulation}
button{cursor:pointer}
img{display:block;width:100%;height:auto}
figure{margin:0}
[hidden]{display:none!important}
.page-shell{position:relative;width:min(100%,520px);margin:0 auto;background:var(--paper);overflow:hidden;box-shadow:0 0 80px rgba(45,52,45,.12)}
.music-toggle{
  position:fixed;z-index:65;top:max(14px,calc(env(safe-area-inset-top) + 10px));
  right:max(14px,calc((100vw - 520px)/2 + 14px));width:40px;height:40px;padding:0;
  border:1px solid rgba(255,255,255,.72);border-radius:50%;display:grid;place-items:center;
  background:rgba(255,255,255,.55);color:var(--gold-dark);box-shadow:0 5px 18px rgba(67,57,43,.12);
  backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);
}
.music-toggle span{display:block;font:500 21px/1 "WeddingLatin",Georgia,serif}
.music-toggle.is-playing span{animation:music-spin 4.5s linear infinite}
.music-toggle:disabled{cursor:default;opacity:.48}
.music-toggle:focus-visible{outline:2px solid rgba(169,134,86,.55);outline-offset:3px}

/* 贯穿长页的奶油白纸张质感 */
.texture-section{
  position:relative;isolation:isolate;
  background:
    radial-gradient(ellipse at 12% 10%,rgba(255,255,255,.95) 0 10%,transparent 31%),
    radial-gradient(ellipse at 91% 28%,rgba(255,255,255,.78) 0 8%,transparent 28%),
    radial-gradient(circle at 20% 65%,rgba(189,158,119,.035) 0 1px,transparent 1.4px) 0 0/6px 6px,
    linear-gradient(145deg,var(--paper-light),var(--paper) 54%,#faf4ea);
}
.texture-section:after{
  content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;opacity:.23;
  background:
    repeating-radial-gradient(circle at 0 0,rgba(137,106,65,.06) 0 1px,transparent 1px 4px),
    linear-gradient(95deg,transparent,rgba(255,255,255,.28),transparent);
  mix-blend-mode:multiply;
}

/* 首屏 */
.hero{
  --cloud-left-x:-8px;--cloud-right-x:8px;--cloud-y:0px;--cloud-opacity:1;--cloud-scale:1;
  position:relative;height:735px;height:92svh;min-height:680px;max-height:820px;overflow:hidden;
  background:#9bc8e7;
}
.hero-photo{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center 48%;transform:translateZ(0);
}
.hero:after{
  content:"";position:absolute;z-index:1;inset:0;pointer-events:none;
  background:
    linear-gradient(180deg,rgba(255,255,255,.06),transparent 31%),
    linear-gradient(180deg,transparent 78%,rgba(251,247,239,.18) 90%,var(--paper) 100%);
}
.hero-cloud-pair{
  position:absolute;z-index:2;left:0;right:0;top:-22px;height:330px;pointer-events:none;
}
.hero-cloud-pair img{
  position:absolute;display:block;height:auto;opacity:var(--cloud-opacity);
  filter:blur(.25px);will-change:transform,opacity;
}
.hero-cloud-left{
  left:-64%;top:-2px;width:190%;
  transform:translate3d(var(--cloud-left-x),var(--cloud-y),0) scale(var(--cloud-scale));
  transform-origin:left center;
}
.hero-cloud-right{
  right:-48%;top:88px;width:145%;
  transform:translate3d(var(--cloud-right-x),var(--cloud-y),0) scale(var(--cloud-scale));
  transform-origin:right center;
}
.hero-copy{
  position:absolute;z-index:3;isolation:isolate;
  top:max(52px,calc(env(safe-area-inset-top) + 40px));left:10px;right:10px;
  text-align:center;color:var(--gold-dark);
  text-shadow:0 1px 0 rgba(255,255,255,.9),0 2px 13px rgba(255,255,255,.7);
}
.hero-copy:before{
  content:"";position:absolute;z-index:-1;inset:-30px -26px -14px;pointer-events:none;
  background:radial-gradient(ellipse at 50% 42%,rgba(255,255,255,.84),rgba(255,255,255,.48) 45%,rgba(255,255,255,0) 75%);
  filter:blur(5px);
}
.hero-english{
  margin:0 0 9px;padding-left:.42em;
  font:400 clamp(11px,3.35vw,15px)/1.2 "WeddingLatin",serif;
  letter-spacing:.42em;
}
.hero-copy h1{
  margin:0;font-size:clamp(27px,7.5vw,39px);line-height:1.18;font-weight:400;
  letter-spacing:.045em;white-space:nowrap;
}
.hero-copy h1 b{font:300 clamp(18px,5vw,23px)/1 "WeddingLatin",serif;margin:0 .22em}
.names-divider{width:89%;height:26px;margin:5px auto 0;display:flex;align-items:center;gap:8px}
.names-divider i{flex:1;height:1px;background:linear-gradient(90deg,transparent,rgba(141,106,62,.76))}
.names-divider i:last-child{transform:scaleX(-1)}
.names-divider svg{flex:0 0 40px;width:40px;height:23px;overflow:visible}
.names-divider path{fill:none;stroke:currentColor;stroke-width:1.35;stroke-linecap:round;stroke-linejoin:round}
.hero-invitation-title{position:relative;margin:0 auto;padding:0 0 24px}
.hero-invitation-title h2{
  position:relative;z-index:1;margin:0;font-size:clamp(38px,10.5vw,54px);line-height:1.08;
  font-weight:500;letter-spacing:.008em;white-space:nowrap;
}
.title-swash{
  position:absolute;z-index:0;left:-1%;bottom:0;width:102%;height:48px;overflow:visible;
  fill:none;stroke:currentColor;stroke-width:1.05;stroke-linecap:round;stroke-linejoin:round;
}
.title-swash .leaf{fill:rgba(169,134,86,.05)}
.hero-date{
  display:flex;align-items:center;justify-content:center;gap:13px;margin:4px 0 0;
  color:var(--gold-dark);
}
.hero-date span{font:400 clamp(21px,6.3vw,29px)/1 "WeddingLatin",serif;letter-spacing:.12em}
.hero-date svg{width:20px;height:29px;overflow:visible;fill:none;stroke:currentColor;stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.hero-date svg:last-child{transform:scaleX(-1)}
.scroll-cue{
  position:absolute;z-index:4;left:50%;bottom:max(42px,calc(env(safe-area-inset-bottom) + 22px));transform:translateX(-50%);
  display:grid;justify-items:center;gap:7px;color:var(--gold-dark);text-decoration:none;font-size:12px;letter-spacing:.14em;
  text-shadow:0 1px 7px rgba(255,255,255,.95);
}
.scroll-cue i{display:block;position:relative;width:26px;height:26px;border:1px solid rgba(255,255,255,.9);border-radius:50%;box-shadow:0 2px 10px rgba(73,76,55,.18)}
.scroll-cue i:after{content:"";position:absolute;left:8px;top:6px;width:7px;height:7px;border-right:1px solid #fff;border-bottom:1px solid #fff;transform:rotate(45deg);animation:nudge 1.8s ease-in-out infinite}
@keyframes nudge{50%{transform:translateY(4px) rotate(45deg)}}

/* 视频卡和山脉文案 */
.video-section{padding:0 24px 78px}
.video-section:before{
  content:"";position:absolute;z-index:-1;left:-8%;right:-8%;top:-42px;height:105px;filter:blur(5px);
  background:
    radial-gradient(ellipse at 18% 65%,#fff 0 22%,transparent 54%),
    radial-gradient(ellipse at 50% 74%,#fff 0 31%,transparent 65%),
    radial-gradient(ellipse at 82% 65%,#fff 0 22%,transparent 54%);
}
.video-card{
  position:relative;z-index:2;display:block;width:100%;padding:0;transform:translateY(-34px);
  overflow:hidden;border:2px solid rgba(255,255,255,.94);border-radius:18px;background:#fff;
  box-shadow:0 18px 45px rgba(74,65,45,.13);
}
.video-card img{aspect-ratio:16/9;object-fit:cover}
.video-card:after{content:"";position:absolute;inset:7px;border:1px solid rgba(255,255,255,.54);border-radius:11px;pointer-events:none}
.video-title{position:absolute;z-index:2;left:0;right:0;top:23%;color:#fff;text-align:center;font:400 25px/1.02 "WeddingLatin",serif;letter-spacing:.1em;text-shadow:0 2px 9px rgba(48,62,65,.32)}
.play{position:absolute;z-index:3;left:50%;top:57%;transform:translate(-50%,-50%);width:55px;height:55px;border:1px solid rgba(255,255,255,.9);border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.5);box-shadow:0 8px 24px rgba(0,0,0,.16);backdrop-filter:blur(5px)}
.play:before{content:"";display:block;margin-left:4px;width:0;height:0;border-top:9px solid transparent;border-bottom:9px solid transparent;border-left:14px solid #fff;filter:drop-shadow(0 1px 2px rgba(0,0,0,.12))}
.video-label{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:36px 14px 14px;color:#fff;font-size:14px;letter-spacing:.13em;text-align:center;background:linear-gradient(transparent,rgba(25,42,36,.52))}
.invitation-verse{margin-top:-5px;text-align:center;color:var(--gold-dark)}
.invitation-verse p{margin:0;font-size:17px;line-height:1.9;letter-spacing:.14em}
.ornament-line{position:relative;display:block;width:126px;height:16px;margin:11px auto 0}
.ornament-line:before,.ornament-line:after{content:"";position:absolute;top:8px;width:46%;height:1px;background:linear-gradient(90deg,transparent,var(--gold-soft))}
.ornament-line:before{left:0}.ornament-line:after{right:0;transform:scaleX(-1)}
.ornament-line i{position:absolute;left:50%;top:5px;width:6px;height:6px;border:1px solid var(--gold);transform:translateX(-50%) rotate(45deg)}
.mountain-lines{
  position:absolute;z-index:0;left:-4%;right:-4%;height:164px;pointer-events:none;overflow:hidden;
  background:url("/assets/decor/mountain-lineart-v2.png") center bottom/auto 100% no-repeat;
  opacity:.62;
}
.mountain-lines i,.mountain-lines b{display:none}
.mountain-lines-one{bottom:-18px}

/* 相册 */
.gallery{padding:38px 20px 76px}
.section-heading{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:22px;color:var(--gold-dark);text-align:center}
.section-heading h2{margin:0;font-size:21px;font-weight:500;letter-spacing:.14em;white-space:nowrap}
.section-heading span{width:32px;height:1px;background:linear-gradient(90deg,transparent,var(--gold-soft))}
.section-heading span:last-child{transform:scaleX(-1)}
.photo-grid{display:grid;grid-template-columns:1.14fr .86fr;gap:5px}
.photo-grid figure{overflow:hidden;border-radius:6px;background:#eee}
.photo-grid img{width:100%;height:100%;object-fit:cover}
.photo-grid figure:nth-child(1) img{object-position:center 47%}
.photo-grid figure:nth-child(2) img{object-position:center 56%}
.photo-grid figure:nth-child(3) img{object-position:center 55%}
.photo-grid figure:nth-child(4) img{object-position:center 43%}
.photo-grid figure:nth-child(-n+2){height:176px}
.photo-grid figure:nth-child(n+3){height:137px}

/* 山野同行：保留横向滑动，颜色融入奶油白与暖金体系 */
.journey{padding:22px 0 38px;overflow:hidden}
.journey:before{
  content:"";position:absolute;z-index:-1;left:-12%;right:-12%;bottom:0;height:70%;
  background:
    radial-gradient(ellipse at 18% 78%,rgba(255,255,255,.92) 0 18%,transparent 52%),
    radial-gradient(ellipse at 83% 72%,rgba(255,255,255,.78) 0 17%,transparent 50%),
    linear-gradient(180deg,transparent,rgba(229,211,181,.18));
}
.journey .section-heading{margin-bottom:18px}
.journey-track{
  display:flex;gap:13px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x mandatory;
  padding:4px 24px 17px;scrollbar-width:none;-webkit-overflow-scrolling:touch;outline:none;
}
.journey-track::-webkit-scrollbar{display:none}
.journey-track figure{
  position:relative;flex:0 0 82%;padding:5px;border:1px solid rgba(169,134,86,.28);border-radius:16px;
  scroll-snap-align:center;background:rgba(255,253,248,.72);box-shadow:0 15px 38px rgba(85,68,43,.1);
}
.journey-track img{aspect-ratio:4/3;object-fit:cover;border-radius:11px}
.journey-track figure:nth-child(1) img{object-position:center 55%}
.journey-track figure:nth-child(2) img{object-position:center 58%}
.journey-track figure:nth-child(3) img{object-position:center 54%}
.journey-track:focus-visible{box-shadow:inset 0 0 0 2px rgba(169,134,86,.3)}
.swipe-hint{margin:1px 0 0;color:var(--gold);font-size:11px;letter-spacing:.15em;text-align:center}
.swipe-hint i{font-style:normal;color:var(--gold-soft)}

/* 宴会信息 */
.event{padding:88px 18px 50px}
.mountain-lines-two{top:0;height:96px;opacity:.56}
.event-floral{
  position:absolute;z-index:1;top:46px;width:132px;height:auto;pointer-events:none;
  opacity:.76;filter:drop-shadow(0 8px 16px rgba(107,79,45,.06));
}
.event-floral-left{left:-45px;transform:rotate(-7deg)}
.event-floral-right{right:-45px;transform:scaleX(-1) rotate(-7deg)}
.event:before{
  content:"";position:absolute;z-index:-1;left:-8%;right:-8%;top:58px;height:88px;filter:blur(8px);
  background:
    radial-gradient(ellipse at 18% 72%,#fff 0 21%,transparent 55%),
    radial-gradient(ellipse at 52% 72%,rgba(255,255,255,.96) 0 31%,transparent 67%),
    radial-gradient(ellipse at 84% 72%,#fff 0 22%,transparent 55%);
}
.event-card{position:relative;z-index:2;padding:6px;border:1px solid var(--gold-soft);border-radius:14px;background:rgba(255,253,248,.78);box-shadow:var(--shadow)}
.event-card:before{content:"";position:absolute;inset:4px;border:1px solid rgba(169,134,86,.22);border-radius:10px;pointer-events:none}
.event-card{display:grid;grid-template-columns:1fr auto 1.38fr;align-items:center;gap:12px;min-height:122px}
.event-time{display:grid;gap:5px;color:var(--gold-dark);text-align:center}
.event-time small{font-size:15px;letter-spacing:.1em}
.event-time strong{font:400 43px/1 "WeddingLatin",serif;letter-spacing:.04em}
.event-divider{width:1px;height:66px;background:linear-gradient(transparent,var(--gold),transparent)}
.venue{display:grid;gap:14px;color:var(--gold-dark);text-align:left}
.venue strong,.venue span{display:flex;align-items:center;font-weight:500}
.venue strong{font-size:13px;line-height:1.55}.venue span{font-size:16px;letter-spacing:.13em}
.venue .venue-icon{flex:0 0 23px;width:23px;height:23px;margin-right:7px;object-fit:contain}
.countdown-wrap{position:relative;z-index:2;padding-top:28px}
.countdown-title{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--muted);font-size:13px;letter-spacing:.18em}
.countdown-title i{width:84px;height:1px;background:linear-gradient(90deg,transparent,var(--gold-soft))}
.countdown-title i:last-child{transform:scaleX(-1)}
.countdown{display:grid;grid-template-columns:repeat(4,1fr);margin:18px 0 27px}
.countdown div{position:relative;display:grid;gap:6px;text-align:center}
.countdown div+div:before{content:"";position:absolute;left:0;top:7px;width:1px;height:34px;background:linear-gradient(transparent,var(--gold-soft),transparent)}
.countdown b{font:400 34px/1 "WeddingLatin",serif;color:var(--gold)}
.countdown span{font-size:10px;color:var(--muted)}
.button{position:relative;width:100%;min-height:49px;border-radius:7px;display:flex;align-items:center;justify-content:center;gap:7px;text-decoration:none;font-size:16px;letter-spacing:.16em;transition:filter .2s,transform .2s}
.button:active{transform:scale(.985)}
.button:disabled{cursor:wait;filter:grayscale(.28);opacity:.72}
.button.primary{border:1px solid #a47843;background:linear-gradient(110deg,#c99c5b,#a97b41,#c79857);color:#fff;box-shadow:0 9px 22px rgba(145,99,43,.15)}
.button.secondary{margin-top:10px;border:1px solid var(--gold-soft);background:rgba(255,253,248,.74);color:var(--gold-dark)}

/* 精简回执和留言 */
.forms{padding:26px 18px 16px}
.blessing-section{padding:0 18px 62px}
.form-card{padding:25px 18px 20px;border:1px solid rgba(169,134,86,.3);border-radius:15px;background:rgba(255,253,248,.66);box-shadow:0 16px 42px rgba(99,75,42,.055)}
.form-card.compact{margin-top:0}
.form-title{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:25px;color:var(--gold-dark)}
.form-title h2{margin:0;font-size:22px;font-weight:500;letter-spacing:.16em}
.form-title i{width:30px;height:1px;background:linear-gradient(90deg,transparent,var(--gold-soft))}
.form-title i:last-child{transform:scaleX(-1)}
.trap-field{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
.attendance{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 18px;padding:0;border:0}
.attendance legend{grid-column:1/-1;margin-bottom:2px;color:var(--muted);font-size:12px}
.attendance input{position:absolute;opacity:0}
.attendance span{min-height:46px;border:1px solid rgba(169,134,86,.25);border-radius:8px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.38);color:var(--muted)}
.attendance input:focus-visible+span{outline:2px solid rgba(169,134,86,.45);outline-offset:2px}
.attendance input:checked+span{border-color:var(--gold);background:#f3e5cf;color:var(--gold-dark)}
.attendance input:checked+span:before{content:"✓";margin-right:7px}
.field{display:grid;gap:7px;margin-bottom:16px}
.field>span{color:var(--muted);font-size:12px}
.field input,.field textarea{
  width:100%;min-height:47px;padding:11px 12px;border:1px solid rgba(169,134,86,.22);border-radius:8px;
  outline:none;background:rgba(255,255,255,.42);color:var(--ink);font-size:16px;line-height:1.45;
  -webkit-appearance:none;appearance:none;
}
.field textarea{min-height:112px;resize:vertical}
.field input::placeholder,.field textarea::placeholder{color:#b4aa9e}
.field input:focus,.field textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px rgba(169,134,86,.09)}
.field-row{display:grid;grid-template-columns:.85fr 1.45fr;gap:12px}
.field-row.is-single{grid-template-columns:minmax(0,1fr)}
.field.is-hidden{display:none}
.privacy-note{margin:11px 2px 0;color:#948778;font-size:11px;line-height:1.65;text-align:center}
.form-status{min-height:18px;margin:8px 0 0;color:#58705b;font-size:12px;text-align:center}
.blessing-wall{margin-top:18px;padding:24px 18px 20px;border:1px solid rgba(169,134,86,.22);border-radius:15px;background:rgba(255,253,248,.54)}
.blessing-wall .form-title{margin-bottom:17px}
.blessing-list{display:grid;gap:10px}
.blessing-item{padding:13px 14px;border-radius:10px;background:rgba(255,255,255,.48);box-shadow:inset 0 0 0 1px rgba(169,134,86,.12)}
.blessing-item p{margin:0;color:var(--ink);font-size:14px;line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere}
.blessing-item small{display:block;margin-top:6px;color:var(--gold-dark);font-size:11px;letter-spacing:.08em}

/* 收尾 */
.finale{position:relative;background:var(--paper)}
.finale>img{height:520px;object-fit:cover;object-position:center 52%}
.finale:before{
  content:"";position:absolute;z-index:1;left:-10%;right:-10%;top:-38px;height:92px;filter:blur(6px);
  background:
    radial-gradient(ellipse at 18% 65%,#fff 0 22%,transparent 55%),
    radial-gradient(ellipse at 52% 72%,#fff 0 31%,transparent 66%),
    radial-gradient(ellipse at 84% 65%,#fff 0 22%,transparent 55%);
}
.finale-cloud{
  position:absolute;z-index:1;left:-10%;right:-10%;top:400px;height:240px;filter:blur(7px);
  background:
    radial-gradient(ellipse at 13% 68%,#fff 0 24%,transparent 54%),
    radial-gradient(ellipse at 48% 67%,rgba(255,255,255,.98) 0 30%,transparent 64%),
    radial-gradient(ellipse at 83% 72%,#fff 0 24%,transparent 56%);
}
.finale-copy{position:relative;z-index:2;margin-top:-52px;padding:62px 20px max(82px,calc(env(safe-area-inset-bottom) + 62px));background:
  radial-gradient(circle at 25% 30%,rgba(169,134,86,.035) 0 1px,transparent 1.3px) 0 0/6px 6px,
  linear-gradient(180deg,rgba(255,253,248,.12),var(--paper) 22%);color:var(--gold-dark);text-align:center}
.finale-copy p,.finale-copy h2{margin:0;font-weight:500;letter-spacing:.18em}
.finale-copy p{font-size:20px}.finale-copy h2{margin-top:10px;font-size:27px}
.finale-copy>span{display:flex;align-items:center;justify-content:center;gap:8px;margin:21px auto}
.finale-copy>span i{width:52px;height:1px;background:linear-gradient(90deg,transparent,var(--gold-soft))}
.finale-copy>span i:last-child{transform:scaleX(-1)}
.finale-copy>span b{width:7px;height:7px;border:1px solid var(--gold);transform:rotate(45deg)}
.finale-copy small{font-size:16px;letter-spacing:.2em}

/* 弹层、提示与动效 */
.video-modal{position:fixed;z-index:80;inset:0;padding:calc(env(safe-area-inset-top) + 52px) 18px calc(env(safe-area-inset-bottom) + 24px);display:grid;place-items:center;background:rgba(24,28,25,.8);backdrop-filter:blur(8px)}
.video-modal-panel{position:relative;width:min(100%,640px);overflow:visible;border-radius:16px;background:#111;color:#fff;box-shadow:0 26px 80px rgba(0,0,0,.38)}
.video-modal-panel img,.video-modal-panel video{width:100%;max-height:70vh;object-fit:contain;border-radius:16px 16px 0 0;background:#000}
.video-modal-panel h2{margin:20px 20px 5px;font-size:20px;font-weight:500;text-align:center}
.video-modal-panel p{margin:0;padding:0 20px 22px;color:#ddd;font-size:13px;line-height:1.7;text-align:center}
.dialog-close{position:absolute;right:0;top:-46px;width:42px;height:42px;border:0;background:transparent;color:#fff;font:300 36px/1 sans-serif}
body.modal-open{position:fixed;width:100%;overflow:hidden}
.toast{position:fixed;z-index:100;left:50%;bottom:max(28px,calc(env(safe-area-inset-bottom) + 16px));transform:translate(-50%,22px);max-width:calc(100% - 40px);padding:12px 18px;border-radius:999px;background:rgba(48,44,38,.92);color:#fff;font-size:13px;text-align:center;opacity:0;pointer-events:none;transition:.28s}
.toast.show{opacity:1;transform:translate(-50%,0)}
.petals{position:fixed;z-index:20;top:0;left:50%;width:min(100%,520px);height:100%;transform:translateX(-50%);pointer-events:none;overflow:hidden}
.petals i{position:absolute;top:-7%;width:9px;height:14px;border-radius:80% 0 80% 0;background:#ead3bd;opacity:.5;animation:fall 15s linear infinite}
.petals i:nth-child(1){left:8%}.petals i:nth-child(2){left:37%;animation-delay:4s}.petals i:nth-child(3){left:68%;animation-delay:9s}.petals i:nth-child(4){left:90%;animation-delay:2s}
@keyframes fall{to{transform:translate3d(30px,110vh,0) rotate(500deg)}}
@keyframes music-spin{to{transform:rotate(360deg)}}
.reveal{opacity:0;transform:translateY(18px);transition:opacity .72s ease,transform .72s ease}
.reveal.visible{opacity:1;transform:none}
#rsvp,#blessings,#video-story{scroll-margin-top:14px}

@media(max-width:374px){
  .hero-copy h1{font-size:26px}.hero-copy h1 b{margin:0 5px}.video-section{padding-inline:18px}
  .event-card{grid-template-columns:.9fr auto 1.35fr}.event-time strong{font-size:38px}.venue strong{font-size:12px}
  .field-row{grid-template-columns:1fr}.photo-grid figure:nth-child(-n+2){height:156px}.photo-grid figure:nth-child(n+3){height:120px}
}
@media(max-height:690px){
  .hero{height:690px}.hero-copy{top:max(42px,calc(env(safe-area-inset-top) + 30px))}
  .hero-copy h1{font-size:28px}.hero-english{font-size:10px}.scroll-cue{bottom:28px}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}.petals{display:none}.reveal{opacity:1;transform:none;transition:none}.scroll-cue i:after,.music-toggle span{animation:none}
}
