/* ===================== TOKENS ===================== */
:root{
  --ink:#22261F;
  --ivory:#F6F2E9;
  --ivory-soft:#EFEADC;
  --forest:#33422F;
  --forest-dark:#242E21;
  --wine:#7A2E3A;
  --gold:#B4914C;
  --gold-soft:#D8C79B;
  --line:rgba(34,38,31,0.14);
  --white:#FFFDF9;
  --shadow:0 18px 40px rgba(34,38,31,0.14);
  --radius-photo:2px 40px 2px 40px;
  --serif:'Cormorant Garamond', serif;
  --sans:'Jost', sans-serif;
  --maxw:1180px;
  --section-pad:min(11vw,120px) 6vw;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important; scroll-behavior:auto !important;}
}
html, body{
  max-width:100%;
  overflow-x:hidden;
}
body{
  margin:0;
  font-family:var(--sans);
  color:var(--ink);
  background:var(--ivory);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%; display:block;}
a{color:inherit;}
h1,h2,h3,h4{font-family:var(--serif); font-weight:500; margin:0; line-height:1.08;}
p{margin:0;}
button{font-family:var(--sans); cursor:pointer;}
.section{padding:var(--section-pad); max-width:var(--maxw); margin:0 auto;}
.section-tight{padding-top:min(6vw,70px); padding-bottom:min(6vw,70px);}
.kicker{
  font-family:var(--serif);
  font-style:italic;
  color:var(--wine);
  font-size:clamp(1.05rem,1.6vw,1.25rem);
  margin-bottom:0.6em;
  display:inline-block;
}
h2.heading{
  font-size:clamp(2.1rem,4.2vw,3.1rem);
  max-width:16ch;
}
.lede{
  font-size:clamp(1.02rem,1.3vw,1.14rem);
  color:#4A4E43;
  max-width:56ch;
  margin-top:1.1rem;
}
.divider{
  width:64px; height:2px; background:var(--gold);
  margin:1.4rem 0;
  border:none;
}
.divider.center{margin-left:auto;margin-right:auto;}
.btn{
  display:inline-flex; align-items:center; gap:0.6em;
  padding:0.95em 2.1em;
  border:1px solid var(--forest);
  background:var(--forest);
  color:var(--ivory);
  font-size:0.98rem;
  letter-spacing:0.02em;
  text-decoration:none;
  transition:background .35s ease, color .35s ease, border-color .35s ease, transform .25s ease;
  border-radius:1px 18px 1px 18px;
}
.btn:hover{background:var(--forest-dark); transform:translateY(-2px);}
.btn.outline{background:transparent; color:var(--forest); border-color:var(--forest);}
.btn.outline:hover{background:var(--forest); color:var(--ivory);}
.btn.gold{background:var(--gold); border-color:var(--gold); color:var(--forest-dark);}
.btn.gold:hover{background:#9c7c3d; border-color:#9c7c3d;}
.btn:disabled{opacity:.5; cursor:not-allowed; transform:none;}
.reveal{opacity:0; transform:translateY(22px); transition:opacity .8s ease, transform .8s ease;}
.reveal.in{opacity:1; transform:translateY(0);}
.center-copy{text-align:center; display:flex; flex-direction:column; align-items:center;}

/* ===================== NAV ===================== */
#site-nav{
  position:fixed; top:0; left:0; right:0; z-index:500;
  display:flex; align-items:center; justify-content:space-between;
  padding:1.3rem 6vw;
  background:transparent;
  transition:background .4s ease, padding .4s ease, box-shadow .4s ease;
}
#site-nav.scrolled{
  padding:0.85rem 6vw;
  box-shadow:0 2px 18px rgba(34,38,31,0.08);
  position:fixed;
}
#site-nav.scrolled::before{
  content:"";
  position:absolute; inset:0;
  background:rgba(246,242,233,0.94);
  backdrop-filter:blur(6px);
  z-index:-1;
}
.nav-mark{
  font-family:var(--serif); font-style:italic; font-size:1.35rem; color:var(--white);
  transition:color .4s ease;
  text-decoration:none;
}
#site-nav.scrolled .nav-mark{color:var(--forest-dark);}
.nav-links{display:flex; gap:2.2rem; list-style:none; margin:0; padding:0;}
.nav-links a{
  color:var(--white); text-decoration:none; font-size:0.92rem; letter-spacing:0.02em;
  position:relative; padding-bottom:4px; transition:color .4s ease;
}
#site-nav.scrolled .nav-links a{color:var(--ink);}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:0; height:1px; width:0; background:var(--gold);
  transition:width .3s ease;
}
.nav-links a:hover::after{width:100%;}
.nav-toggle{display:none; background:none; border:none; padding:6px; z-index:501;}
.nav-toggle span{
  display:block; width:24px; height:2px; background:var(--white); margin:5px 0; transition:.3s;
}
#site-nav.scrolled .nav-toggle span{background:var(--ink);}
@media (max-width:900px){
  .nav-links{
    position:fixed; inset:0 0 0 30%; background:var(--forest-dark);
    flex-direction:column; justify-content:center; align-items:flex-start;
    padding:2rem 2.4rem; gap:1.6rem;
    transform:translateX(100%); transition:transform .45s ease;
  }
  .nav-links.open{transform:translateX(0);}
  .nav-links a{color:var(--ivory); font-size:1.15rem;}
  .nav-toggle{display:block;}
  .nav-toggle.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
  .nav-toggle.open span:nth-child(2){opacity:0;}
  .nav-toggle.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
}

/* ===================== HERO ===================== */
.hero{
  position:relative; min-height:100vh; display:flex; align-items:flex-end;
  background:#111 url('https://images.unsplash.com/photo-1465495976277-4387d4b0b4c6?auto=format&fit=crop&w=1800&q=80') center 30%/cover no-repeat;
}
.hero::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(20,22,17,0.35) 0%, rgba(20,22,17,0.1) 35%, rgba(20,22,17,0.78) 100%);
}
.hero-inner{
  position:relative; z-index:2; color:var(--white);
  padding:0 6vw 9vw; max-width:900px;
}
.hero-eyebrow{
  font-family:var(--serif); font-style:italic; font-size: 50px; 
  color: #d8c79b; margin-bottom:0.4rem; display:block;
  text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); /* Extra árnyék az olvashatóság érdekében */
}
.hero h1{
  font-size:clamp(3rem,8vw,6rem);
  color:var(--white);
}
.hero-sub{
  font-size:clamp(1.4rem,2.6vw,2rem); margin-top:0.3rem; font-family:var(--serif); font-style:italic; color:var(--ivory-soft);
}
.hero-meta{
  margin-top:1.6rem; display:flex; flex-wrap:wrap; gap:1.6rem 2.6rem;
  font-size:1.02rem; color:var(--ivory-soft);
}
.hero-meta span{display:flex; align-items:center; gap:0.55em;}
.hero-note{
  margin-top:1.8rem; max-width:46ch; font-size:1.02rem; color:rgba(255,253,249,0.86);
}
.hero-cta{margin-top:2.2rem;}
.scroll-cue{
  position:absolute; bottom:2.2rem; left:50%; transform:translateX(-50%); z-index:2;
  display:flex; flex-direction:column; align-items:center; gap:8px;
}
.scroll-cue .cue-line{width:1px; height:38px; background:rgba(255,253,249,0.5);}
.scroll-cue svg{
  width:18px; height:18px; stroke:var(--gold); fill:none; stroke-width:1.8;
  stroke-linecap:round; stroke-linejoin:round;
  animation:cuebounce 1.6s ease-in-out infinite;
}
@keyframes cuebounce{
  0%,100%{transform:translateY(0); opacity:0.55;}
  50%{transform:translateY(8px); opacity:1;}
}

/* ===================== ICONS (inline svg helper) ===================== */
.icon{width:30px; height:30px; stroke:var(--wine); fill:none; stroke-width:1.3;}

/* ===================== INTRO ===================== */
.intro{
  display:grid; grid-template-columns:0.9fr 1.1fr; gap:5vw; align-items:center;
}
.intro-photo{position:relative;}
.intro-photo img{
  border-radius:var(--radius-photo);
  box-shadow:var(--shadow);
}
.intro-photo::after{
  content:""; position:absolute; width:120px; height:120px; border:1px solid var(--gold);
  bottom:-22px; right:-22px; z-index:-1; border-radius:1px 30px 1px 30px;
}
@media (max-width:860px){
  .intro{grid-template-columns:1fr; text-align:center;}
  .intro .lede{margin-left:auto; margin-right:auto;}
  .intro-photo{order:2; max-width:340px; margin:2.4rem auto 0;}
}

/* ===================== STORY / TIMELINE ===================== */
.story{background:var(--forest); color:var(--ivory);}
.story .kicker{color:var(--gold-soft);}
.story h2.heading{color:var(--white);}
.timeline{margin-top:3.5rem; position:relative;}
.timeline::before{
  content:""; position:absolute; left:50%; top:0; bottom:0; width:1px;
  background:rgba(246,242,233,0.28); transform:translateX(-50%);
}
.t-item{
  display:grid; grid-template-columns:1fr 60px 1fr; align-items:start; margin-bottom:3.2rem;
}
.t-item:last-child{margin-bottom:0;}
.t-card{max-width:420px;}
.t-item:nth-child(odd) .t-card{grid-column:1; justify-self:end; text-align:right;}
.t-item:nth-child(even) .t-card{grid-column:3; justify-self:start; text-align:left;}
.t-dot{
  grid-column:2; justify-self:center; margin-top:0.4rem;
  width:14px; height:14px; border-radius:50%; background:var(--gold); border:3px solid var(--forest);
  box-shadow:0 0 0 1px rgba(246,242,233,0.4); position:relative; z-index:1;
}
.t-year{font-family:var(--serif); font-style:italic; color:var(--gold-soft); font-size:1.5rem; display:block; margin-bottom:0.3rem;}
.t-title{font-family:var(--serif); font-size:1.5rem; margin-bottom:0.5rem;}
.t-text{color:rgba(246,242,233,0.82); font-size:0.98rem; max-width:38ch;}
.t-item:nth-child(odd) .t-text{margin-left:auto;}
@media (max-width:760px){
  .timeline::before{left:18px;}
  .t-item{
    display:block;
    position:relative;
    padding-left:44px;
    margin-bottom:2.4rem;
  }
  .t-item > div:empty:not([class]){display:none;}
  .t-dot{
    position:absolute;
    left:11px;
    top:0.35rem;
    margin:0;
  }
  .t-item:nth-child(odd) .t-card, .t-item:nth-child(even) .t-card{
    text-align:left; max-width:100%;
  }
  .t-item:nth-child(odd) .t-text{margin-left:0;}

  .hero{align-items:flex-start;}
  .hero-inner{padding:16vh 6vw 3rem;}
  .hero-cta{margin-top:1.6rem; margin-bottom:2.6rem;}
  .scroll-cue{bottom:1rem;}
  .scroll-cue .cue-line{height:26px;}
}

/* ===================== COUNTDOWN ===================== */
.countdown-section{
  background:var(--ivory-soft);
  text-align:center;
  border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.countdown-grid{
  display:flex; justify-content:center; gap:clamp(1.2rem,4vw,3.2rem); margin-top:2.6rem; flex-wrap:wrap;
}
.count-box{min-width:96px;}
.count-num{
  font-family:var(--serif); font-size:clamp(2.6rem,6vw,4.4rem); color:var(--wine); font-weight:600; font-variant-numeric:tabular-nums;
}
.count-label{font-size:0.82rem; letter-spacing:0.14em; text-transform:uppercase; color:#5c6155; margin-top:0.3rem;}
.count-sep{font-family:var(--serif); font-size:clamp(2rem,5vw,3.4rem); color:var(--gold-soft); align-self:flex-start; margin-top:0.4rem;}
.count-message{
  display:none; font-family:var(--serif); font-size:1.6rem; color:var(--wine); margin-top:2rem;
}

/* ===================== SCHEDULE ===================== */
.schedule-list{margin-top:3rem; border-top:1px solid var(--line);}
.sch-item{
  display:grid; grid-template-columns:120px 42px 1fr; gap:1.4rem; align-items:center;
  padding:1.5rem 0; border-bottom:1px solid var(--line);
}
.sch-time{font-family:var(--serif); font-size:1.6rem; color:var(--wine);}
.sch-icon-wrap{
  width:42px; height:42px; border-radius:50%; border:1px solid var(--gold-soft);
  display:flex; align-items:center; justify-content:center;
}
.sch-icon-wrap .icon{width:18px; height:18px;}
.sch-title{font-family:var(--serif); font-size:1.25rem;}
.sch-place{color:#5c6155; font-size:0.92rem; margin-top:0.15rem;}
@media (max-width:600px){
  .sch-item{grid-template-columns:78px 34px 1fr; gap:0.9rem;}
  .sch-time{font-size:1.2rem;}
}

/* ===================== VENUE ===================== */
.venue{
  display:grid; grid-template-columns:1.15fr 0.85fr; gap:0; align-items:stretch;
  background:var(--white); border:1px solid var(--line);
}
.venue-photo{position:relative; overflow:hidden; min-width:0;}
.venue-photo img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block;}
.venue-info{padding:clamp(2rem,4vw,3.4rem); min-width:0;}
.venue-info .kicker{margin-bottom:0.2rem;}
.venue-info h3{font-size:clamp(1.8rem,3vw,2.4rem); margin-top:0.4rem;}
.venue-addr{margin-top:0.8rem; color:#4A4E43;}
.venue-text{margin-top:1.2rem; color:#4A4E43; max-width:40ch;}
.venue-actions{margin-top:1.8rem; display:flex; gap:1rem; flex-wrap:wrap;}
.map-embed{
  margin-top:2rem; position:relative; overflow:hidden; aspect-ratio:16/9; background:var(--ivory-soft);
  border:1px dashed var(--gold-soft); border-radius:1px 24px 1px 24px;
}
.map-embed b{display:block; color:var(--forest); font-family:var(--serif); font-size:1.05rem; margin-bottom:0.4rem;}
.map-embed > div{position:absolute; inset:0;}
.map-embed iframe{position:absolute; inset:0; width:100%; height:100%; max-width:100%; border:0; display:block;}
.parking-note{margin-top:1.4rem; font-size:0.9rem; color:#5c6155; display:flex; gap:0.6em; align-items:flex-start;}
@media (max-width:900px){
  .venue{grid-template-columns:1fr;}
  .venue-photo{height:260px;}
}
@media (max-width:480px){
  .venue-photo{height:220px;}
}

/* ===================== INFO CARDS ===================== */
.info-grid{
  margin-top:3rem; display:grid; grid-template-columns:repeat(3,1fr); gap:1px;
  background:var(--line); border:1px solid var(--line);
}
.info-card{background:var(--white); padding:2.3rem 1.9rem;}
.info-card .icon-wrap{
  width:52px; height:52px; border-radius:50%; background:var(--ivory-soft);
  display:flex; align-items:center; justify-content:center; margin-bottom:1.2rem;
}
.info-card h4{font-size:1.28rem; margin-bottom:0.6rem;}
.info-card p{font-size:0.94rem; color:#4A4E43;}
@media (max-width:860px){ .info-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .info-grid{grid-template-columns:1fr;} }

/* ===================== GALLERY ===================== */
.gallery-grid{
  margin-top:3rem; columns:4 220px; column-gap:14px;
}
.gallery-grid figure{
  margin:0 0 14px; break-inside:avoid; position:relative; overflow:hidden; border-radius:1px 20px 1px 20px; cursor:zoom-in;
}
.gallery-grid img{width:100%; display:block; transition:transform .6s ease;}
.gallery-grid figure::after{
  content:"\2725"; position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  background:rgba(34,38,31,0.28); color:var(--white); font-size:1.4rem; opacity:0; transition:opacity .35s ease;
}
.gallery-grid figure:hover::after{opacity:1;}
.gallery-grid figure:hover img{transform:scale(1.06);}
@media (max-width:640px){ .gallery-grid{columns:2 160px;} }

.lightbox{
  position:fixed; inset:0; background:rgba(20,22,17,0.94); z-index:900;
  display:none; align-items:center; justify-content:center; padding:4vh 4vw;
}
.lightbox.open{display:flex;}
.lightbox img{max-height:88vh; max-width:88vw; border-radius:2px;}
.lightbox-close{
  position:absolute; top:24px; right:32px; background:none; border:none; color:var(--white); font-size:2rem; line-height:1;
}
.lightbox-nav{
  position:absolute; top:50%; transform:translateY(-50%); background:none; border:none; color:var(--white); font-size:2.2rem; padding:0.6rem 1rem;
}
.lightbox-prev{left:8px;} .lightbox-next{right:8px;}

/* ===================== RSVP ===================== */
.rsvp{background:var(--forest-dark); color:var(--ivory);}
.rsvp .kicker{color:var(--gold-soft);}
.rsvp h2.heading{color:var(--white);}
.rsvp .lede{color:rgba(246,242,233,0.8);}
.rsvp-card{
  margin-top:2.8rem; background:rgba(246,242,233,0.04); border:1px solid rgba(246,242,233,0.18);
  border-radius:2px 30px 2px 30px; padding:clamp(1.6rem,4vw,3rem); max-width:760px; margin-left:auto; margin-right:auto;
}
.rsvp-choice{display:flex; gap:1.2rem; flex-wrap:wrap; justify-content:center;}
.choice-btn{
  flex:1 1 220px; padding:1.6rem 1.2rem; background:rgba(246,242,233,0.03);
  border:1px solid rgba(246,242,233,0.28); color:var(--ivory); font-size:1.05rem; text-align:center;
  border-radius:1px 22px 1px 22px; transition:.3s;
}
.choice-btn:hover{border-color:var(--gold); background:rgba(180,145,76,0.12);}
.choice-btn.active{background:var(--gold); color:var(--forest-dark); border-color:var(--gold);}
.rsvp-form{margin-top:2.2rem; display:none;}
.rsvp-form.show{display:block; animation:fadeUp .5s ease;}
@keyframes fadeUp{from{opacity:0; transform:translateY(14px);} to{opacity:1; transform:translateY(0);}}
.field{margin-bottom:1.3rem;}
.field label{display:block; font-size:0.86rem; color:var(--gold-soft); margin-bottom:0.5rem; letter-spacing:0.02em;}
.field input[type=text], .field input[type=number], .field input[type=email], .field textarea, .field select{
  width:100%; background:rgba(246,242,233,0.06); border:1px solid rgba(246,242,233,0.3); color:var(--ivory);
  padding:0.8em 1em; font-family:var(--sans); font-size:0.98rem; border-radius:2px;
}
.field textarea{min-height:90px; resize:vertical;}
.field input::placeholder, .field textarea::placeholder{color:rgba(246,242,233,0.4);}
.field-row{display:grid; grid-template-columns:1fr 1fr; gap:1.2rem;}
@media (max-width:560px){ .field-row{grid-template-columns:1fr;} }
.segmented{display:flex; gap:0.6rem; flex-wrap:wrap;}
.seg-opt{
  padding:0.6em 1.2em; border:1px solid rgba(246,242,233,0.3); border-radius:20px; font-size:0.88rem;
  color:var(--ivory); background:transparent;
}
.seg-opt.selected{background:var(--gold); color:var(--forest-dark); border-color:var(--gold);}
.field-hint{font-size:0.8rem; color:rgba(246,242,233,0.5); margin-top:0.4rem;}
.rsvp-success{display:none; text-align:center; padding:2.4rem 1rem;}
.rsvp-success.show{display:block; animation:fadeUp .5s ease;}
.rsvp-success .icon{stroke:var(--gold); width:44px; height:44px; margin:0 auto 1rem;}

/* ===================== ACCOMMODATION ===================== */
.accom-grid{margin-top:3rem; display:grid; grid-template-columns:repeat(3,1fr); gap:1.8rem;}
.accom-card{border:1px solid var(--line); background:var(--white); overflow:hidden; border-radius:1px 26px 1px 26px;}
.accom-card img{width:100%; height:190px; object-fit:cover;}
.accom-body{padding:1.5rem;}
.accom-body h4{font-size:1.3rem;}
.accom-dist{display:inline-block; margin-top:0.4rem; font-size:0.8rem; color:var(--wine); letter-spacing:0.02em;}
.accom-meta{margin-top:0.9rem; font-size:0.9rem; color:#4A4E43; line-height:1.7;}
.accom-desc{margin-top:0.7rem; font-size:0.88rem; color:#5c6155;}
.accom-body .btn{margin-top:1.2rem; width:100%; justify-content:center; padding:0.75em 1em; font-size:0.9rem;}
@media (max-width:860px){ .accom-grid{grid-template-columns:1fr;} }

/* ===================== FAQ ===================== */
.faq-list{margin-top:3rem; max-width:820px; border-top:1px solid var(--line);}
.faq-item{border-bottom:1px solid var(--line);}
.faq-q{
  width:100%; text-align:left; background:none; border:none; padding:1.5rem 0; display:flex; justify-content:space-between; align-items:center;
  font-family:var(--serif); font-size:1.2rem; color:var(--ink); gap:1rem;
}
.faq-q .plus{font-size:1.6rem; color:var(--gold); transition:transform .3s ease; flex-shrink:0;}
.faq-item.open .plus{transform:rotate(45deg);}
.faq-a{max-height:0; overflow:hidden; transition:max-height .4s ease;}
.faq-a p{padding-bottom:1.5rem; color:#4A4E43; max-width:70ch; font-size:0.96rem;}

/* ===================== MUSIC ===================== */
.music{background:var(--ivory-soft); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
.music-form{margin-top:2.4rem; max-width:560px; display:grid; gap:1rem;}
.music-form input{
  padding:0.9em 1.1em; border:1px solid var(--line); background:var(--white); font-family:var(--sans); font-size:0.98rem; border-radius:2px;
}
.music-row{display:grid; grid-template-columns:1fr 1fr; gap:1rem;}
@media (max-width:560px){.music-row{grid-template-columns:1fr;}}
.music-success{display:none; margin-top:1rem; color:var(--wine); font-family:var(--serif); font-size:1.05rem;}
.music-success.show{display:block;}

/* ===================== HASHTAG ===================== */
.hashtag-section{
  text-align:center; background:var(--forest); color:var(--ivory); position:relative; overflow:hidden;
}
.hashtag-big{
  font-family:var(--serif); font-style:italic; font-size:clamp(2rem,6vw,3.6rem); color:var(--gold-soft); margin:1.6rem 0;
  word-break:break-word;
}
.copy-btn{position:relative;}
.copy-toast{
  position:absolute; top:-2.4rem; left:50%; transform:translateX(-50%); background:var(--gold); color:var(--forest-dark);
  padding:0.4em 1em; border-radius:20px; font-size:0.82rem; opacity:0; transition:opacity .3s ease, transform .3s ease; white-space:nowrap;
}
.copy-toast.show{opacity:1; transform:translateX(-50%) translateY(-6px);}

/* ===================== UPLOAD ===================== */
.upload-zone{
  margin-top:2.6rem; border:1.5px dashed var(--gold-soft); border-radius:2px 30px 2px 30px;
  padding:clamp(2rem,5vw,3.4rem); text-align:center; background:var(--white); transition:.3s;
}
.upload-zone.drag{background:var(--ivory-soft); border-color:var(--gold);}
.upload-zone .icon{width:40px; height:40px; margin:0 auto 1rem; stroke:var(--wine);}
.upload-filename{margin-top:1rem; font-size:0.92rem; color:var(--wine); display:none;}
.upload-filename.show{display:block;}
.upload-extra{margin-top:1.6rem; max-width:420px; margin-left:auto; margin-right:auto; text-align:left; display:none;}
.upload-extra.show{display:block; animation:fadeUp .4s ease;}
.upload-success{display:none; margin-top:1.4rem; color:var(--wine); font-family:var(--serif); font-size:1.05rem;}
.upload-success.show{display:block;}

/* ===================== MESSAGES ===================== */
.msg-form{margin-top:2.6rem; max-width:640px; display:grid; gap:1rem;}
.msg-form input, .msg-form textarea{
  padding:0.9em 1.1em; border:1px solid var(--line); background:var(--white); font-family:var(--sans); font-size:0.98rem; border-radius:2px;
}
.msg-form textarea{min-height:100px; resize:vertical;}
.msg-wall{margin-top:2.8rem; display:grid; grid-template-columns:repeat(3,1fr); gap:1.4rem;}
.msg-card{background:var(--white); border:1px solid var(--line); padding:1.5rem; border-radius:1px 20px 1px 20px;}
.msg-card p{font-size:0.94rem; color:#4A4E43; font-style:italic;}
.msg-card span{display:block; margin-top:0.8rem; font-family:var(--serif); color:var(--wine); font-size:1.02rem;}
@media (max-width:860px){ .msg-wall{grid-template-columns:1fr;} }

/* ===================== CONTACT ===================== */
.contact-grid{margin-top:2.6rem; display:flex; gap:2.6rem; flex-wrap:wrap;}
.contact-item{display:flex; align-items:center; gap:0.9rem; font-size:1.02rem;}
.contact-item .icon-wrap{
  width:46px; height:46px; border-radius:50%; background:var(--ivory-soft); display:flex; align-items:center; justify-content:center; flex-shrink:0;
}
.contact-item a{text-decoration:none; border-bottom:1px solid transparent; transition:border-color .3s;}
.contact-item a:hover{border-color:var(--wine);}

/* ===================== CLOSING ===================== */
.closing{
  position:relative; min-height:70vh; display:flex; align-items:center; justify-content:center; text-align:center;
  background:#111 url('https://images.unsplash.com/photo-1522673607200-164d1b6ce486?auto=format&fit=crop&w=1800&q=80') center/cover no-repeat;
  color:var(--white);
}
.closing::before{content:""; position:absolute; inset:0; background:rgba(20,22,17,0.5);}
.closing-inner{position:relative; z-index:1; padding:4rem 6vw; max-width:760px;}
.closing p.msg{font-family:var(--serif); font-style:italic; font-size:clamp(1.4rem,3vw,2.1rem); color:var(--ivory-soft);}
.closing h3{font-size:clamp(2.2rem,5vw,3.2rem); margin-top:1.6rem; color:var(--white);}
.closing .closing-date{margin-top:0.5rem; font-size:1.1rem; color:var(--gold-soft);}
.closing .closing-tag{margin-top:1.2rem; font-family:var(--serif); font-style:italic; color:var(--gold-soft); font-size:1.2rem;}

/* ===================== FOOTER ===================== */
footer{background:var(--forest-dark); color:rgba(246,242,233,0.7); text-align:center; padding:3rem 6vw 2rem;}
footer .foot-mark{font-family:var(--serif); font-style:italic; color:var(--white); font-size:1.4rem;}
footer .foot-meta{margin-top:0.6rem; font-size:0.9rem;}
footer .foot-brand{margin-top:1.6rem; font-size:0.78rem; color:rgba(246,242,233,0.4); letter-spacing:0.04em;}

/* focus visibility */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible{
  outline:2px solid var(--gold); outline-offset:2px;
}
