
/* ============================================================
   СВАДЕБНЫЙ ПЕРЕПОЛОХ — прототип приглашения
   Палитра / типографика / токены
   ============================================================ */
:root{
  /* цвета */
  --paper:      #F4F0E6;
  --paper-2:    #FBF8F0;
  --ink:        #211D17;
  --ink-soft:   #57503F;
  --pink:       #F3CDC6;
  --pink-lite:  #F8E3DE;
  --coral:      #E4573D;
  --yellow:     #F2D478;
  --blue:       #2742D6;
  --blue-lite:  #DDE3FB;
  --green:      #7A8B5C;
  --red:        #D9482B;

  /* шрифты */
  --font-sans:   'Manrope', 'Helvetica Neue', Arial, sans-serif;
  --font-script: 'Caveat', cursive;
  --font-marker: 'Neucha', cursive;

  /* ритм */
  --section-gap: clamp(4.5rem, 11vw, 8.5rem);
  --wrap: 1140px;
  --border-w: 2px;
}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{scroll-padding-top:5.4rem}
@media (prefers-reduced-motion: no-preference){ html{scroll-behavior:smooth} }
html,body{overflow-x:clip}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-sans);
  font-size:clamp(1rem, 2.4vw, 1.06rem);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
/* бумажное зерно */
body::after{
  content:"";
  position:fixed; inset:0;
  pointer-events:none; z-index:80;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='260' height='260'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3CfeComponentTransfer%3E%3CfeFuncA type='linear' slope='0.05'/%3E%3C/feComponentTransfer%3E%3C/filter%3E%3Crect width='260' height='260' filter='url(%23n)'/%3E%3C/svg%3E");
}
img,svg{display:block}
a{color:inherit}
h1,h2,h3{margin:0; font-weight:800; line-height:1.08; letter-spacing:-0.01em; text-transform:uppercase}
p{margin:0}
ul,ol{margin:0; padding:0; list-style:none}
button{font:inherit; color:inherit; background:none; border:0; padding:0; cursor:pointer}
::selection{background:var(--pink); color:var(--ink)}
:focus-visible{outline:3px dashed var(--blue); outline-offset:3px; border-radius:2px}

.wrap{width:min(100% - 2.4rem, var(--wrap)); margin-inline:auto}
.narrow{max-width:720px; margin-inline:auto}

/* ---------- утилиты типографики ---------- */
.hand{font-family:var(--font-script); font-weight:600; text-transform:none; letter-spacing:0}
.marker{font-family:var(--font-marker); text-transform:none; letter-spacing:0}
.overline{
  display:inline-flex; align-items:center; gap:.6rem;
  font-size:.72rem; font-weight:700; letter-spacing:.42em; text-transform:uppercase;
  color:var(--ink-soft);
}
.kicker{
  display:inline-block; font-family:var(--font-marker);
  font-size:1.1rem; color:var(--coral); rotate:-1.5deg;
}
.hl-pink,.hl-yellow,.hl-blue{padding:.05em .3em; display:inline-block; rotate:-.6deg}
.hl-pink{background:var(--pink)}
.hl-yellow{background:var(--yellow)}
.hl-blue{background:var(--blue-lite); color:var(--blue)}

/* ---------- doodle svg ---------- */
svg.dd{
  stroke:currentColor; fill:none;
  stroke-width:3; stroke-linecap:round; stroke-linejoin:round;
  transition:transform .35s cubic-bezier(.2,.7,.2,1);
}
svg.dd:hover{transform:rotate(-7deg) scale(1.07)}
.dec{position:absolute; pointer-events:none}
.dec svg{width:100%; height:auto}
@media (prefers-reduced-motion: no-preference){
  .float{animation:bob 6.5s ease-in-out infinite}
  .float-slow{animation:bob 9s ease-in-out infinite}
  @keyframes bob{50%{transform:translateY(-7px) rotate(2.5deg)}}
}

/* ---------- reveal / draw ---------- */
html.js .reveal{
  opacity:0; transform:translateY(20px) rotate(var(--rr,0deg));
  transition:opacity .7s ease var(--d,0s), transform .7s cubic-bezier(.2,.7,.2,1) var(--d,0s);
}
html.js .reveal.is-in{opacity:1; transform:none}
/* рукописные линии: контур без заливки, "дорисовка" штриха */
.draw{
  fill:none;
  stroke:currentColor;
  stroke-width:3;
  stroke-linecap:round;
  stroke-linejoin:round;
  pointer-events:none;
}
.draw path{
  fill:none;
  stroke-dasharray:var(--len,900); stroke-dashoffset:var(--len,900);
  transition:stroke-dashoffset 1.3s ease .15s;
}
.draw.is-in path{stroke-dashoffset:0}

/* ---------- progress ---------- */
.progress{
  position:fixed; top:0; left:0; right:0; height:3px; z-index:90;
  background:var(--coral); transform:scaleX(0); transform-origin:0 50%;
}

/* ---------- nav ---------- */
.site-nav{
  position:fixed; top:0; left:0; right:0; z-index:70;
  display:flex; justify-content:center; padding:.8rem .9rem;
  pointer-events:none;
}
.nav-tag{
  pointer-events:auto; position:relative;
  display:flex; align-items:center; gap:1rem;
  background:var(--paper-2); border:1.5px solid var(--ink);
  padding:.42rem .85rem; rotate:-.6deg;
  box-shadow:3px 3px 0 rgba(33,29,23,.14);
}
.nav-date{font-family:var(--font-marker); font-size:1.05rem; color:var(--coral); text-decoration:none}
.nav-links{display:flex; align-items:center; gap:1.05rem; list-style:none}
.nav-links a:not(.nav-rsvp){
  font-size:.7rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  text-decoration:none; color:var(--ink);
}
.nav-links a:not(.nav-rsvp):hover{
  color:var(--coral);
  text-decoration:underline wavy 1.5px; text-underline-offset:5px;
}
.nav-rsvp{
  display:inline-block; background:var(--yellow); border:1.5px solid var(--ink);
  padding:.32rem .7rem; font-size:.68rem; font-weight:800; letter-spacing:.16em;
  text-decoration:none; box-shadow:2px 2px 0 var(--ink); transition:transform .15s, box-shadow .15s;
}
.nav-rsvp:hover{transform:translate(-1px,-1px); box-shadow:3px 3px 0 var(--ink)}
.nav-burger{display:none; font-family:var(--font-marker); font-size:.95rem; border:1.5px solid var(--ink); padding:.2rem .6rem; background:var(--paper)}
@media (max-width: 860px){
  .nav-burger{display:inline-block}
  .nav-links{
    position:absolute; top:calc(100% + .55rem); left:50%; translate:-50% 0;
    flex-direction:column; align-items:flex-start; gap:.85rem;
    background:var(--paper-2); border:1.5px solid var(--ink);
    padding:1.1rem 1.5rem; box-shadow:4px 4px 0 rgba(33,29,23,.14);
    opacity:0; visibility:hidden; scale:.96; transform-origin:top center;
    transition:opacity .22s ease, scale .22s ease, visibility .22s;
    min-width:190px;
  }
  .nav-links a:not(.nav-rsvp){font-size:.85rem}
  .nav-tag.open .nav-links{opacity:1; visibility:visible; scale:1}
}

/* ---------- кнопки ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5rem;
  min-height:52px; padding:.95rem 1.7rem;
  background:var(--coral); color:var(--paper-2);
  border:var(--border-w) solid var(--ink);
  font-family:var(--font-sans); font-weight:800; font-size:.92rem;
  letter-spacing:.14em; text-transform:uppercase; text-decoration:none;
  box-shadow:4px 4px 0 var(--ink); rotate:-.8deg; cursor:pointer;
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}
.btn:hover{transform:translate(-2px,-2px); box-shadow:6px 6px 0 var(--ink); background:#ea6549}
.btn:active{transform:translate(2px,2px); box-shadow:1px 1px 0 var(--ink)}
.btn--ghost{background:var(--paper-2); color:var(--ink); box-shadow:4px 4px 0 var(--pink)}
.btn--ghost:hover{background:var(--pink-lite); box-shadow:6px 6px 0 var(--pink)}
.btn.wiggle{animation:wig .5s ease}
@keyframes wig{25%{rotate:1.6deg}50%{rotate:-3deg}75%{rotate:.4deg}}

/* ---------- секции: каркас ---------- */
section{position:relative; padding-block:var(--section-gap)}
.sec-title{font-size:clamp(1.85rem, 6vw, 3.4rem)}

/* ============================================================
   HERO — приглашение
   ============================================================ */
.hero{
  text-align:center; overflow:clip;
  padding-top:clamp(6rem, 14vh, 8.5rem);
  padding-bottom:clamp(3.5rem, 8vw, 5.5rem);
}
.hero-title{display:block; margin-top:1.4rem}
.hero-title-sans{
  display:block; font-size:clamp(2.3rem, 8.6vw, 5.1rem);
  font-weight:800; letter-spacing:.02em;
}
.hero-title-hand{
  display:block; font-family:var(--font-script); font-weight:700;
  font-size:clamp(3rem, 13vw, 7rem); line-height:.95;
  color:var(--coral); rotate:-2deg; margin-top:.1rem;
}
.hero-tagline{
  margin-top:1.5rem; font-weight:700;
  font-size:clamp(1.05rem, 3vw, 1.35rem); line-height:1.5;
}
.hero .names{
  font-family:var(--font-script); font-weight:600;
  font-size:clamp(2.1rem, 7vw, 3.4rem); margin-top:1.6rem;
}
.hero .names .amp{color:var(--coral); font-size:1.15em; padding:0 .1em}
.hero-date{position:relative; display:inline-block; margin-top:1.8rem; padding:.5rem 1.9rem}
.hero-date .oval{position:absolute; inset:-4px -6px; width:calc(100% + 12px); height:calc(100% + 8px); color:var(--coral)}
.date-big{
  position:relative; z-index:1;
  font-size:clamp(3.2rem, 15vw, 6.4rem); font-weight:800; letter-spacing:.01em; line-height:1;
}
.date-big .dot{color:var(--coral)}
.hero-city{
  margin-top:1rem; font-weight:700; font-size:.85rem;
  letter-spacing:.4em; text-transform:uppercase; text-indent:.4em;
}
.hero .btn{margin-top:2.1rem}
/* декор hero */
.hero .dec-disco{top:0; right:7%; width:64px; color:var(--ink-soft)}
.hero .dec-flower{left:4%; top:24%; width:54px; color:var(--coral)}
.hero .dec-rings{right:5%; top:40%; width:58px; color:var(--blue)}
.hero .dec-glasses{left:7%; bottom:14%; width:62px; color:var(--ink)}
.hero .dec-heart{right:9%; bottom:24%; width:42px; color:var(--coral)}
.hero .dec-conf1{left:14%; top:12%; width:52px; color:var(--blue)}
.hero .dec-conf2{right:16%; top:16%; width:46px; color:var(--pink)}
.hero .dec-tulip{left:16%; top:52%; width:38px; color:var(--green)}
.hero .corner{width:16px; color:var(--ink-soft); opacity:.7}
.hero .c-tl{top:5.2rem; left:1.1rem}
.hero .c-tr{top:5.2rem; right:1.1rem; rotate:14deg}
.hero .c-bl{bottom:1rem; left:1.2rem; rotate:-8deg}
.hero .c-br{bottom:1rem; right:1.2rem; rotate:22deg}
@media (max-width:640px){
  .hero .dec-glasses{left:3%; bottom:9%; width:48px}
  .hero .dec-rings{right:3%; top:auto; bottom:30%; width:46px}
  .hero .dec-flower{left:3%; top:20%; width:42px}
  .hero .dec-heart{right:6%; bottom:12%; width:34px}
  .hero .dec-tulip,.hero .dec-conf1,.hero .dec-conf2{display:none}
  .hero .dec-disco{right:5%; width:50px}
}

/* ============================================================
   ПОВОРОТ
   ============================================================ */
.twist{text-align:center; overflow:clip}
.twist h2{font-size:clamp(1.8rem, 6.4vw, 3.6rem)}
.twist-small{
  margin-top:1.2rem; font-family:var(--font-marker);
  font-size:clamp(1.05rem, 3vw, 1.3rem); color:var(--ink-soft); rotate:-1deg;
}
.twist-big{
  margin-top:1rem; font-weight:800; color:var(--blue);
  font-size:clamp(2.15rem, 10vw, 5.4rem); line-height:1.05;
  display:inline-block; position:relative;
}
.twist-big .swash{display:block; width:100%; height:16px; margin-top:.35rem; color:var(--coral)}
.twist-text{margin-top:2.4rem; color:var(--ink-soft); font-size:clamp(1rem, 2.7vw, 1.18rem); line-height:1.7}
.twist-text p + p{margin-top:.9rem}
.twist .dec-arrow{left:6%; top:16%; width:64px; color:var(--pink)}
.twist .dec-heart2{right:7%; bottom:14%; width:52px; color:var(--coral)}
@media (max-width:640px){ .twist .dec-arrow{left:2%; top:6%; width:44px} .twist .dec-heart2{right:3%; bottom:6%; width:38px} }

/* ============================================================
   КОНЦЕПЦИЯ
   ============================================================ */
.concept{text-align:center; overflow:clip}
.concept .lead{margin-top:1.5rem; font-size:clamp(1.05rem, 2.8vw, 1.25rem); color:var(--ink-soft); max-width:52ch; margin-inline:auto}
.chips{
  display:flex; flex-wrap:wrap; justify-content:center; align-items:baseline;
  gap:.75rem .6rem; margin:2.2rem auto 0; max-width:860px;
}
.chip{
  padding:.34rem .85rem; border:1.5px solid var(--ink); background:var(--paper-2);
  font-weight:700; font-size:.95rem; letter-spacing:.06em; text-transform:uppercase;
}
.chip:nth-child(3n){rotate:-2deg}
.chip:nth-child(3n+1){rotate:1.4deg}
.chip:nth-child(4n){rotate:-1deg}
.chip.hand{font-size:1.35rem; font-weight:600; border:0; background:none; padding:.1rem .5rem}
.c-pink{background:var(--pink)}
.c-yellow{background:var(--yellow)}
.c-blue{background:var(--blue-lite); color:var(--blue); border-color:var(--blue)}
.c-coral{background:var(--coral); color:var(--paper-2)}
.c-plain{background:transparent; border-style:dashed}
.c-hand-coral{color:var(--coral)}
.c-hand-blue{color:var(--blue)}
.c-hand-ink{color:var(--ink)}
.concept-after{margin:2.2rem auto 0; max-width:52ch; color:var(--ink-soft); font-size:clamp(1rem, 2.7vw, 1.15rem); line-height:1.7}
.concept-after p + p{margin-top:.8rem}
.stamp{
  display:inline-block; margin-top:2.6rem;
  border:2.5px solid var(--ink); background:var(--paper-2);
  padding:.95rem 1.35rem; rotate:-2deg;
  font-weight:800; font-size:clamp(1.15rem, 4.2vw, 1.85rem); line-height:1.3;
  box-shadow:6px 6px 0 var(--yellow);
}
.concept .dec-dove{right:5%; top:10%; width:66px; color:var(--ink-soft)}
.concept .dec-lemon{left:5%; bottom:12%; width:52px; color:var(--yellow)}
@media (max-width:640px){ .concept .dec-dove{right:2%; width:46px} .concept .dec-lemon{left:2%; width:40px} }

/* ============================================================
   ЧТО БУДЕТ
   ============================================================ */
.happen-sec{text-align:center}
.happen{
  display:flex; flex-direction:column; gap:clamp(1.2rem, 3vw, 1.9rem);
  max-width:800px; margin:2.8rem auto 0; text-align:left;
}
.happen li{
  width:min(100%, 640px); padding:.5rem .6rem; text-align:left;
}
.happen li:nth-child(odd){align-self:flex-start; rotate:-1deg}
.happen li:nth-child(even){align-self:flex-end; rotate:.9deg}
.h-head{display:flex; align-items:center; gap:.85rem}
.h-num{font-family:var(--font-marker); font-size:1rem; color:var(--ink-soft); min-width:2ch}
.h-icon{width:42px; height:42px; flex:none}
.happen li:nth-child(4n+1) .h-icon{color:var(--coral)}
.happen li:nth-child(4n+2) .h-icon{color:var(--blue)}
.happen li:nth-child(4n+3) .h-icon{color:var(--green)}
.happen li:nth-child(4n+4) .h-icon{color:var(--coral)}
.h-text{font-weight:800; font-size:clamp(1.05rem, 3.6vw, 1.45rem); letter-spacing:.02em; text-transform:uppercase; line-height:1.25}
.h-text.hand{font-size:clamp(1.5rem, 4.6vw, 2.1rem); font-weight:700}
.h-desc{margin:.55rem 0 0; color:var(--ink-soft); font-size:.98rem; line-height:1.65; max-width:54ch}
@media (min-width:760px){ .h-desc{margin-left:calc(2ch + 42px + 1.7rem)} }

/* ============================================================
   ПРОГРАММА — timeline
   ============================================================ */
.program{overflow:clip}
.program .sec-head{text-align:center}
.timeline{position:relative; margin-top:3.2rem; padding-block:.5rem}
.timeline::before{
  content:""; position:absolute; top:0; bottom:0; left:11px; width:24px;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='56' viewBox='0 0 24 56'%3E%3Cpath d='M12 0q9 7 0 14t0 14 0 14 0 14' fill='none' stroke='%23211D17' stroke-width='2.2' stroke-linecap='round' opacity='0.75'/%3E%3C/svg%3E") repeat-y center / 24px 56px;
}
.t-item{position:relative; padding-left:3.2rem; margin-bottom:2.8rem}
.t-item::before{
  content:""; position:absolute; left:16px; top:.45rem;
  width:14px; height:14px; border:2.5px solid var(--ink);
  background:var(--paper); border-radius:50%;
}
.t-time{
  font-family:var(--font-marker); font-size:clamp(1.55rem, 5vw, 2.15rem);
  line-height:1; color:var(--coral); display:inline-flex; align-items:center; gap:.55rem;
}
.t-item:nth-child(even) .t-time{color:var(--blue)}
.t-doodle{width:32px; height:32px; color:var(--ink-soft)}
.t-item h3{margin-top:.5rem; font-size:clamp(1.15rem, 3.8vw, 1.6rem); letter-spacing:.04em}
.t-item p{margin-top:.45rem; color:var(--ink-soft); max-width:46ch; font-size:.98rem}
.t-item p + p{margin-top:.5rem}
@media (min-width:768px){
  .timeline::before{left:50%; margin-left:-12px}
  .t-item{width:calc(50% - 3rem); padding-left:0; margin-bottom:3.4rem}
  .t-item:nth-child(odd){margin-right:auto; text-align:right}
  .t-item:nth-child(odd)::before{left:auto; right:calc(-3rem - 8px)}
  .t-item:nth-child(odd) p{margin-left:auto}
  .t-item:nth-child(even){margin-left:auto; text-align:left}
  .t-item:nth-child(even)::before{left:calc(-3rem - 8px)}
  .t-item:nth-child(odd) .t-time{flex-direction:row-reverse}
}
.program .dec-cake{right:4%; top:6%; width:60px; color:var(--pink)}
.program .dec-gorko{left:3%; bottom:8%; width:96px; color:var(--coral); rotate:8deg}
@media (max-width:640px){ .program .dec-cake{right:2%; width:44px} .program .dec-gorko{width:76px; left:2%} }

/* ============================================================
   ТАНЕЦ (контрастный блок)
   ============================================================ */
.dance{
  background:var(--blue); color:var(--paper);
  text-align:center; overflow:clip;
}
.dance .kicker{color:var(--yellow)}
.dance h2{font-size:clamp(2rem, 7.5vw, 4rem); margin-top:.8rem}
.dance-lines{margin-top:2rem; color:rgba(244,240,230,.85); font-size:clamp(1rem, 2.8vw, 1.2rem); line-height:1.8}
.dance-lines p + p{margin-top:.9rem}
.dance-quote{
  margin-top:1.4rem; display:inline-block;
  font-family:var(--font-script); font-weight:700;
  font-size:clamp(1.9rem, 7vw, 3.2rem); color:var(--pink); rotate:-2deg;
}
.dance-big{margin-top:2.2rem; font-weight:800; font-size:clamp(1.35rem, 5vw, 2.7rem); line-height:1.35}
.dance-big .hl{background:var(--pink); color:var(--ink); padding:0 .35em; display:inline-block; rotate:-1.2deg}
.dance-media{
  margin-top:2.8rem; display:flex; flex-wrap:wrap; gap:1.6rem;
  align-items:stretch; justify-content:center;
}
.media-slot{
  flex:1 1 260px; max-width:430px; min-height:190px;
  border:2px dashed rgba(244,240,230,.6); padding:1.5rem;
  display:grid; place-content:center; gap:.7rem; text-align:center;
}
.media-slot svg{width:46px; height:46px; margin-inline:auto; color:var(--paper)}
.media-slot span{font-family:var(--font-marker); font-size:1.05rem; color:rgba(244,240,230,.85)}
.guest-stamp{
  align-self:center; border:2.5px solid var(--yellow); color:var(--yellow);
  padding:.9rem 1.2rem; rotate:-2.5deg; text-align:center;
}
.guest-stamp b{display:block; font-weight:800; font-size:1rem; letter-spacing:.2em}
.guest-stamp em{display:block; font-family:var(--font-marker); font-style:normal; font-size:.95rem; margin-top:.25rem; opacity:.9}
.dance .dec-heart3{left:6%; top:14%; width:44px; color:var(--pink)}
.dance .dec-note{right:7%; top:20%; width:44px; color:var(--yellow)}
.dance .dec-dove2{right:9%; bottom:12%; width:60px; color:rgba(244,240,230,.8)}
.dance .dec-star1{left:10%; bottom:18%; width:30px; color:var(--yellow)}
@media (max-width:640px){
  .dance .dec-heart3{left:3%; width:32px}
  .dance .dec-note{right:4%; width:32px}
  .dance .dec-dove2,.dance .dec-star1{display:none}
}

/* ============================================================
   DRESS CODE
   ============================================================ */
.dress{text-align:center; overflow:clip}
.dress .sub-hand{
  margin-top:.6rem; font-family:var(--font-script); font-weight:600;
  font-size:clamp(1.5rem, 5vw, 2.2rem); color:var(--blue); rotate:-1.5deg;
}
.dress-grid{display:grid; gap:2.4rem; max-width:920px; margin:2.8rem auto 0}
.dress-col{
  position:relative; text-align:left;
  border:1.5px solid var(--ink); background:var(--paper-2);
  padding:1.7rem 1.5rem 1.6rem; rotate:-.8deg;
  box-shadow:5px 5px 0 var(--pink);
}
.dress-col + .dress-col{rotate:.8deg; box-shadow:5px 5px 0 var(--blue-lite)}
.dress-col h3{font-size:1.25rem; letter-spacing:.16em}
.dress-icons{display:flex; gap:.7rem; margin-bottom:1rem; color:var(--ink)}
.dress-icons svg{width:46px; height:46px}
.dress-col ul{margin-top:1rem}
.dress-col li{position:relative; padding-left:1.7rem; margin-bottom:.5rem; font-size:1rem}
.dress-col li::before{
  content:""; position:absolute; left:0; top:.28rem; width:1.05rem; height:1rem;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath d='M32 52C12 40 8 26 18 19c8-5 13 2 14 6 1-4 6-11 14-6 10 7 6 21-14 33Z' fill='none' stroke='%23E4573D' stroke-width='6' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;
}
.dress-col li.hand-note{font-family:var(--font-script); font-size:1.3rem; color:var(--coral)}
.dress-col li.hand-note::before{display:none}
.dress-col li.hand-note{padding-left:0; margin-top:.9rem}
.dress-funny{
  margin:3rem auto 0; font-weight:800;
  font-size:clamp(1.3rem, 4.6vw, 2.1rem); line-height:1.3;
}
.dress-text{margin:1.2rem auto 0; max-width:48ch; color:var(--ink-soft); line-height:1.7}
.dress-text p + p{margin-top:.7rem}
.dress-main{margin-top:1.4rem; font-family:var(--font-script); font-weight:600; font-size:clamp(1.4rem, 4.4vw, 1.9rem); color:var(--ink-soft); rotate:-1deg}
.dress .dec-bowtie{left:5%; top:12%; width:56px; color:var(--ink)}
.dress .dec-veil{right:5%; top:14%; width:52px; color:var(--pink)}
.dress .dec-heel{right:8%; bottom:10%; width:56px; color:var(--coral)}
.dress .dec-bouquet{left:7%; bottom:12%; width:52px; color:var(--green)}
@media (min-width:760px){ .dress-grid{grid-template-columns:1fr 1fr; gap:2.8rem} }
@media (max-width:640px){
  .dress .dec-bowtie{left:2%; width:40px}
  .dress .dec-veil{right:2%; width:38px}
  .dress .dec-heel,.dress .dec-bouquet{display:none}
}

/* ============================================================
   ЗНАКОМСТВА (маленький блок)
   ============================================================ */
.solo{text-align:center}
.solo .q{font-size:clamp(1.5rem, 5vw, 2.5rem)}
.solo .a{
  margin-top:.9rem; font-weight:800; color:var(--coral);
  font-size:clamp(2.2rem, 9vw, 4.6rem); rotate:-1.5deg;
}
.solo-text{margin:1.8rem auto 0; max-width:52ch; color:var(--ink-soft); line-height:1.7}
.solo-text p + p{margin-top:.8rem}
.bracelets{
  margin:2.6rem auto 0; display:flex; flex-wrap:wrap;
  justify-content:center; gap:1.6rem 2.4rem; max-width:760px;
}
.bracelet{display:flex; align-items:center; gap:.9rem; text-align:left; width:min(100%, 300px)}
.bracelet svg{width:52px; height:52px; flex:none}
.bracelet b{display:block; font-size:.95rem; letter-spacing:.12em; text-transform:uppercase}
.bracelet span{display:block; font-size:.9rem; color:var(--ink-soft); margin-top:.15rem}
.b-green svg{color:var(--green)}   .b-green b{color:var(--green)}
.b-yellow svg{color:#D9A62E}       .b-yellow b{color:#B98A17}
.b-red svg{color:var(--red)}       .b-red b{color:var(--red)}
.solo-quote{
  margin:3rem auto 0; max-width:56ch;
  font-weight:800; font-size:clamp(1.15rem, 4vw, 1.8rem); line-height:1.4;
}

/* ============================================================
   ЧТО ВХОДИТ
   ============================================================ */
.included{text-align:center}
.checklist{
  columns:1; column-gap:3rem; text-align:left;
  max-width:880px; margin:2.4rem auto 0;
}
.checklist li{
  position:relative; padding-left:2.1rem; margin-bottom:.75rem;
  break-inside:avoid; font-weight:600; font-size:1rem;
}
.checklist li::before{
  content:""; position:absolute; left:0; top:.18rem; width:1.3rem; height:1.3rem;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'%3E%3Cpath d='M10 34l12 14L54 12' fill='none' stroke='%23E4573D' stroke-width='7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
}
@media (min-width:720px){ .checklist{columns:2} }
.bar-note{
  display:inline-block; margin-top:2.2rem;
  background:var(--yellow); padding:.55rem 1rem; rotate:-1.2deg;
  font-weight:800; font-size:.95rem; letter-spacing:.1em;
  box-shadow:3px 3px 0 rgba(33,29,23,.18);
}

/* ============================================================
   КОМАНДА
   ============================================================ */
.team{text-align:center; overflow:clip}
.team-card{
  position:relative; max-width:760px; margin:2.4rem auto 0;
  border:1.5px solid var(--ink); background:var(--paper-2);
  padding:clamp(1.6rem, 5vw, 2.8rem) clamp(1.2rem, 5vw, 2.6rem);
  rotate:-.5deg; box-shadow:6px 6px 0 var(--blue-lite);
}
.team-card p{color:var(--ink-soft); line-height:1.7; max-width:56ch; margin-inline:auto}
.team-card p + p{margin-top:.9rem}
.team-social{
  margin-top:1.4rem; font-family:var(--font-marker);
  font-size:clamp(1.05rem, 3vw, 1.25rem); color:var(--blue); rotate:-1deg;
}
.team-sign{
  margin-top:1.2rem; font-family:var(--font-marker);
  font-size:.95rem; color:var(--ink-soft); opacity:.75;
}
.team .dec-disco2{left:6%; top:14%; width:56px; color:var(--ink-soft)}
.team .dec-bow2{right:7%; bottom:14%; width:56px; color:var(--coral)}
@media (max-width:640px){ .team .dec-disco2{left:2%; width:40px} .team .dec-bow2{right:2%; width:40px} }

/* ============================================================
   БИЛЕТЫ / RSVP
   ============================================================ */
.tickets{text-align:center; overflow:clip}
.ticket-card{
  position:relative; max-width:660px; margin:2.6rem auto 0;
  background:var(--paper-2); border:var(--border-w) solid var(--ink);
  padding:clamp(1.8rem, 6vw, 3.2rem) clamp(1.2rem, 5vw, 3rem);
  box-shadow:7px 7px 0 var(--pink); rotate:-.4deg;
}
.ticket-card::before{
  content:""; position:absolute; inset:9px; pointer-events:none;
  border:1.5px dashed rgba(33,29,23,.45);
}
.ticket-card .bow-top{position:absolute; top:-30px; left:50%; translate:-50% 0; width:60px; height:60px; color:var(--coral); background:var(--paper)}
.ticket-card .corner{position:absolute; width:16px; height:16px; color:var(--blue)}
.ticket-card .k1{top:14px; left:14px}
.ticket-card .k2{top:14px; right:14px; color:var(--yellow); filter:brightness(.85)}
.ticket-card .k3{bottom:14px; left:14px; color:var(--pink)}
.ticket-card .k4{bottom:14px; right:14px}
.ticket-card h2{font-size:clamp(1.7rem, 5.6vw, 2.9rem)}
.ticket-card .rsvp-hand{
  margin-top:.5rem; font-family:var(--font-script); font-weight:700;
  font-size:clamp(1.6rem, 5vw, 2.2rem); color:var(--coral); rotate:-2deg;
}
.ticket-friends-line{margin-top:1.6rem; color:var(--ink-soft); font-size:.98rem; max-width:44ch; margin-inline:auto}
.price-line{margin-top:1.1rem; display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:.9rem 1.1rem}
.price-tag{
  border:2px solid var(--ink); background:var(--yellow);
  padding:.3rem .7rem; rotate:-3deg;
  font-family:var(--font-marker); font-size:1.05rem;
}
.price{font-weight:800; font-size:clamp(2.6rem, 10vw, 4.2rem); line-height:1; letter-spacing:-.01em}
.price .rub{color:var(--coral)}
.price-note{margin-top:.9rem; font-family:var(--font-script); font-weight:600; font-size:clamp(1.2rem, 3.6vw, 1.5rem); color:var(--ink-soft); rotate:-1.5deg}
.ticket-card .btn{margin-top:1.8rem; width:min(100%, 420px)}
.limit-note{margin-top:1.1rem; font-size:.88rem; color:var(--ink-soft); letter-spacing:.02em; line-height:1.6}
.buy-note{
  margin-top:1rem; font-family:var(--font-marker); font-size:1.05rem; color:var(--coral);
  opacity:0; translate:0 8px; transition:opacity .4s ease, translate .4s ease;
}
.buy-note.show{opacity:1; translate:0 0}
.tickets .dec-rings2{left:6%; top:18%; width:54px; color:var(--blue)}
.tickets .dec-flower2{right:6%; top:26%; width:48px; color:var(--pink)}
@media (max-width:640px){ .tickets .dec-rings2{left:2%; width:38px} .tickets .dec-flower2{right:2%; width:36px} }

/* ============================================================
   FAQ
   ============================================================ */
.faq{overflow:clip}
.faq .sec-head{text-align:center}
.faq-list{max-width:780px; margin:2.6rem auto 0}
.faq-item{border-bottom:1.5px dashed rgba(33,29,23,.4)}
.faq-item:first-child{border-top:1.5px dashed rgba(33,29,23,.4)}
.faq-q{
  width:100%; display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1.15rem .2rem; text-align:left;
  font-weight:800; font-size:clamp(.98rem, 3vw, 1.12rem);
  letter-spacing:.05em; text-transform:uppercase; line-height:1.35;
}
.faq-q:hover{color:var(--coral)}
.faq-x{position:relative; flex:none; width:18px; height:18px; transition:transform .3s ease}
.faq-x::before,.faq-x::after{content:""; position:absolute; background:var(--coral); border-radius:2px}
.faq-x::before{left:50%; top:0; width:2.5px; height:100%; translate:-50% 0}
.faq-x::after{top:50%; left:0; height:2.5px; width:100%; translate:0 -50%}
.faq-q[aria-expanded="true"] .faq-x{transform:rotate(45deg)}
.faq-a{height:0; overflow:hidden; transition:height .35s ease}
.faq-a p{padding:0 .2rem 1.25rem; color:var(--ink-soft); max-width:62ch; line-height:1.7}
.faq-a p + p{padding-top:.4rem}

/* ============================================================
   ФИНАЛ
   ============================================================ */
.finale{text-align:center; overflow:clip; padding-bottom:clamp(3rem, 8vw, 5rem)}
.finale .couple{width:96px; height:96px; margin:0 auto 1.4rem; color:var(--ink)}
.finale h2{font-size:clamp(1.8rem, 6.4vw, 3.5rem); line-height:1.2}
.finale .names{
  margin-top:1.4rem; font-family:var(--font-script); font-weight:700;
  font-size:clamp(2.2rem, 8vw, 3.8rem); color:var(--coral); rotate:-2deg;
}
.finale .swash{width:min(240px, 60%); height:16px; margin:1rem auto 0; color:var(--pink)}
.finale-meta{margin-top:1.4rem; font-weight:800; letter-spacing:.28em; text-transform:uppercase; font-size:clamp(.85rem, 2.6vw, 1rem); line-height:2}
.finale .btn{margin-top:2.2rem}
.finale-note{
  margin-top:1.1rem; font-family:var(--font-script); font-weight:600;
  font-size:clamp(1.3rem, 4vw, 1.7rem); color:var(--ink-soft); rotate:-1.5deg;
}
.finale .dec-gorko2{right:6%; top:16%; width:92px; color:var(--coral); rotate:9deg}
.finale .dec-star2{left:8%; top:24%; width:30px; color:var(--blue)}
.finale .dec-tulip2{left:6%; bottom:16%; width:44px; color:var(--pink)}
.finale .dec-glasses2{right:8%; bottom:18%; width:56px; color:var(--ink-soft)}
@media (max-width:640px){
  .finale .dec-gorko2{right:2%; width:70px}
  .finale .dec-star2{left:4%; width:22px}
  .finale .dec-tulip2,.finale .dec-glasses2{display:none}
}

/* ---------- footer ---------- */
.site-footer{
  border-top:1.5px dashed rgba(33,29,23,.35);
  padding:1.7rem 1rem 2rem; text-align:center;
}
.foot-line{font-family:var(--font-marker); font-size:.95rem; color:var(--ink-soft)}
.credits{margin-top:.4rem; font-size:.68rem; letter-spacing:.14em; color:var(--ink-soft); opacity:.55}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation:none !important; transition:none !important}
  html.js .reveal{opacity:1; transform:none}
  .draw path{stroke-dashoffset:0 !important}
}

/* Уточнённые дата, площадка и внешние сервисы */
.hero-year{margin-top:.9rem;font-family:var(--font-marker);font-size:1.3rem;color:var(--coral)}
.hero-venue{margin-top:.7rem;font-size:1rem}
.hero-venue a,.team-social a,.venue-map-link a,.ticket-platform a{text-underline-offset:4px}
.venue{text-align:center}
.venue-card{border:2px solid var(--ink);background:var(--paper-2);padding:clamp(1.2rem,4vw,3rem);box-shadow:6px 6px 0 var(--pink)}
.venue .sec-title{margin-top:.8rem}
.venue-address{margin-top:1rem;font-size:clamp(1.1rem,3vw,1.4rem);font-weight:700}
.venue-time{margin-top:.5rem;font-family:var(--font-marker);font-size:1.3rem;color:var(--coral)}
.venue-note{margin-top:1rem;color:var(--ink-soft)}
.venue-map{margin-top:2rem;height:400px;overflow:hidden;border:1.5px solid var(--ink);background:var(--paper)}
.venue-map iframe{display:block;width:100%;height:400px;border:0}
.venue-map-link,.ticket-platform{margin-top:1rem;font-size:.9rem}
