@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/serif-1.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/serif-5.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/sans-1.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(assets/fonts/sans-5.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(assets/fonts/sans-1.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(assets/fonts/sans-5.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
:root {
  --p-bg:#eeecea; --p-surface:#e4e1dd; --p-ink:#333231; --p-muted:#625f5b;
  --p-accent:#5c6b54; --p-accent-ink:#fff; --p-action:#5c6b54; --p-action-ink:#fff;
  --p-inv-bg:#333231; --p-inv-surface:#3e3d3c; --p-inv-ink:#eeecea; --p-inv-muted:#adaba9;
  --p-inv-accent:#eeecea; --p-inv-accent-ink:#333231; --p-inv-action:#eeecea; --p-inv-action-ink:#333231;
  --font-display:'Source Serif 4',Georgia,serif; --font-text:'Manrope',sans-serif;
  --display-weight:400; --display-tracking:-.02em; --display-tracking-xl:-.026em;
  --gut:80px; --nav:72px; --padt:120px; --padb:72px;
  --hgap:48px; --hpadb:64px;
  --bg:var(--p-bg); --surface:var(--p-surface); --ink:var(--p-ink);
  --muted:var(--p-muted); --accent:var(--p-accent); --line:#c6c3bc;
}
* { box-sizing:border-box; }
html { scroll-behavior:auto !important; scroll-padding-top:0 !important; }
body { margin:0; background:var(--p-bg); color:var(--p-ink); font:400 16px/1.5 var(--font-text); }
h1,h2,h3,p,figure { margin:0; }
h1,h2,h3 { font-weight:400; }
a { color:inherit; }
button { font:inherit; }
img { display:block; max-width:100%; }
:focus-visible { outline:3px solid var(--p-accent); outline-offset:4px; }
.skip-link { position:fixed; z-index:100; top:8px; left:24px; padding:12px 20px; background:var(--p-bg); transform:translateY(-160%); }
.skip-link:focus { transform:none; }
body .nav { position:fixed; top:0; right:0; left:0; z-index:50; height:var(--nav); background:var(--p-bg); color:var(--p-ink); border-bottom:1px solid var(--line); }
body .nav__bar { height:var(--nav); }
body .nav__logo { display:inline-flex; align-items:center; gap:7px; min-height:44px; font:400 28px/1 var(--font-display); text-decoration:none; }
.nav__logo span { color:var(--p-accent); font-style:italic; }
body .nav__link { min-height:44px; font-size:16px; }
body .nav__toggle { min-width:44px; min-height:44px; font-size:20px; }
.nav-date { font-size:13px; letter-spacing:.05em; color:var(--p-muted); }
body main > section, body footer.closing {
  --h:1; --hm:1;
  height:100svh;
  min-height:0;
  padding:var(--padt) 0 var(--padb);
  overflow:visible;
}
body main > .hero {
  height:100svh;
  padding:calc(var(--nav) + var(--hgap)) 0 var(--hpadb);
}
body .hero > .wrap, body .hero > .wrap > .hero-text { height:100%; min-height:0; }
body .hero .hero__media { border-radius:8px; }
body .hero .hero__media::before, body .hero .hero__media::after { display:none; }
body .hero .hero__media > img { object-position:50% 50%; }
body .hero .hero__over {
  position:absolute; inset:0;
  display:flex; flex-direction:column; justify-content:flex-end; align-items:flex-start;
  padding:24px; background:none; color:var(--p-ink);
}
body .hero .hero__over > .hero-copy {
  --bg:var(--p-bg);
  --ink:var(--p-ink);
  --muted:var(--p-muted);
  --action:var(--p-action);
  --action-ink:var(--p-action-ink);
  width:min(390px,100%);
  padding:28px;
  background:var(--p-bg);
  color:var(--p-ink);
  border-radius:4px;
}
.eyebrow { font-size:14px; line-height:1.5; color:var(--p-muted); }
body .hero h1 { margin:16px 0 18px; font:400 clamp(48px,4.6vw,66px)/.98 var(--font-display); letter-spacing:var(--display-tracking-xl); color:var(--p-ink); text-align:left; }
.hero h1 span, h2 span { color:var(--p-accent); font-style:italic; }
.hero-date { font-size:19px; line-height:1.5; }
.hero-date > span { display:block; font-size:16px; color:var(--p-muted); }
body .hero .hero__lead { margin-top:16px; max-width:28ch; font-size:16px; line-height:1.5; color:var(--p-muted); }
body .btn-row { display:flex; flex-wrap:wrap; gap:12px; margin-top:20px; }
body .btn { min-height:48px; padding:12px 18px; font:500 16px/1.5 var(--font-text); white-space:normal; text-align:center; }
.hero-note { margin-top:18px; font-size:13px; line-height:1.5; color:var(--p-muted); }
body .programme h2, body .closing h2 { margin:0 0 32px; font:400 48px/1.1 var(--font-display); letter-spacing:var(--display-tracking); text-transform:none; }
.programme-grid { align-items:start; row-gap:24px; }
.programme-copy, .programme-photo, .guest-info { min-width:0; }
.section-intro { max-width:34ch; margin-bottom:24px; font-size:17px; color:var(--p-muted); }
.schedule { margin:0; padding:0; list-style:none; }
.schedule li { display:grid; grid-template-columns:84px 1fr; gap:20px; align-items:baseline; padding:15px 0; border-top:1px solid var(--line); }
.schedule li:last-child { border-bottom:1px solid var(--line); }
.schedule time { font:400 28px/1.2 var(--font-display); font-variant-numeric:tabular-nums; color:var(--p-accent); }
.schedule li > span { font-size:17px; }
.timezone { margin-top:16px; font-size:13px; color:var(--p-muted); }
.programme-photo img { width:100%; height:min(520px,calc(100svh - 280px)); aspect-ratio:1.15; object-fit:cover; border-radius:4px; }
body footer.closing { background:var(--p-surface); color:var(--p-ink); }
body footer.closing > .wrap { height:100%; display:flex; flex-direction:column; gap:40px; }
.close { padding:0 0 28px; border-bottom:0; }
body .closing h2 { margin-bottom:16px; }
.closing-date { font-size:14px; color:var(--p-muted); }
.closing-message { max-width:48ch; margin-top:12px; font-size:17px; color:var(--p-muted); }
body .closing .signature { margin-top:18px; font:400 clamp(44px,5vw,72px)/1.05 var(--font-display); letter-spacing:var(--display-tracking); color:var(--p-accent); }
body .closing .links { display:flex; flex-direction:column; flex:1; gap:24px; margin:0; padding:0; }
.guest-info h3 { margin-bottom:10px; font:500 16px/1.5 var(--font-text); }
.guest-info p { color:var(--p-muted); font-size:16px; }
.guest-info .btn { margin-top:18px; }
.footer-bottom { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:8px 24px; margin-top:auto; padding-top:16px; border-top:0; }
.footer-monogram { font:400 26px/1.3 var(--font-display); color:var(--p-accent); }
.credits { font-size:13px; line-height:1.5; color:var(--p-muted); }
.credits a { display:inline-flex; min-height:44px; align-items:center; text-underline-offset:3px; }
@media (min-width:1024px) and (max-width:1199px) {
  .programme-photo img { height:min(440px,calc(100svh - 280px)); }
  .nav-date { display:none; }
}
@media (max-width:1023px) {
  :root { --gut:48px; }
  .programme-grid > .span-6 { grid-column:1 / -1; }
  .programme-photo img { height:180px; aspect-ratio:3; }
  .programme .section-intro { max-width:none; margin-bottom:16px; }
  .programme .schedule li { padding:10px 0; }
  .programme-grid { row-gap:20px; }
  .nav-date { display:none; }
}
@media (max-width:767px) {
  :root { --gut:24px; --nav:56px; --padt:96px; --padb:48px; --hgap:24px; --hpadb:24px; }
  body .hero .hero__over { padding:14px; }
  body .hero .hero__over > .hero-copy { padding:20px; width:100%; max-width:330px; }
  body .hero h1 { font-size:52px; margin:16px 0; }
  .hero-date { font-size:18px; }
  body .hero .hero__lead { margin-top:14px; }
  body .hero .btn-row { margin-top:18px; }
  .hero-note { margin-top:16px; }
  body .programme h2, body .closing h2 { font-size:30px; line-height:1.15; margin-bottom:20px; }
  .section-intro { font-size:16px; }
  .schedule li { grid-template-columns:66px 1fr; gap:14px; }
  .schedule time { font-size:25px; }
  .schedule li > span { font-size:16px; }
  .timezone { margin-top:12px; }
  .programme-photo img { height:170px; aspect-ratio:2; }
  body footer.closing > .wrap { gap:24px; }
  .close { padding-bottom:20px; }
  body .closing h2 { margin-bottom:12px; }
  .closing-message { font-size:16px; margin-top:10px; }
  body .closing .signature { font-size:46px; margin-top:14px; }
  .guest-columns { row-gap:20px; }
  .guest-columns > .span-6 { grid-column:1 / -1; }
  .guest-info h3 { margin-bottom:6px; }
  .guest-info .btn { margin-top:14px; }
  body .closing .links { gap:20px; }
  .footer-bottom { padding-top:10px; gap:4px; }
  .footer-monogram { display:none; }
}
/* На низких экранах информационные блоки продолжаются естественно,
   вместо обрезки текста или наложения следующей секции. */
@media (max-height:759px) {
  body main > .programme, body footer.closing { height:auto; }
  body footer.closing > .wrap { height:auto; }
  .footer-bottom { margin-top:20px; }
}
@media (max-height:650px) {
  :root { --hgap:12px; --hpadb:12px; }
  body .hero .hero__over { padding:10px; }
  body .hero h1 { font-size:40px; margin:10px 0; }
  body .hero .hero__lead { margin-top:8px; }
  body .hero .btn-row { margin-top:10px; }
  .hero-note { margin-top:8px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto !important; }
}
/* Пожелание к одежде: образцы декоративные, без действий и фокуса. */
.dress-code { margin-top:24px; max-width:42ch; }
.dress-swatches { display:flex; gap:12px; margin-top:16px; }
.dress-swatches .swatch { display:block; width:32px; height:32px; border-radius:50%; border:1px solid rgb(51 50 49 / .18); }
.swatch--beige { background:#d9cbb6; }
.swatch--olive { background:#a1a585; }
.swatch--powder { background:#dfc4bd; }
/* Сохраняем композицию, но даём новому тексту необходимое место. */
body footer.closing { height:auto; min-height:100svh; display:flex; flex-direction:column; }
body footer.closing > .wrap { height:auto; flex:1 0 auto; }

/* Operator review after model generation; keep the raw response for comparison. */
body .skip-link {
  left: max(var(--gut), calc((100vw - var(--container)) / 2));
}
@media (min-width: 601px) and (max-width: 1100px) {
  body .programme h2, body .closing h2 { font-size: 40px; }
}
