@charset "UTF-8";
:root {
  --paper: #FBF8F2;
  --ivory: #F4F0E8;
  --ink: #211E1A;
  --muted: #70695F;
  --champagne: #B39A6A;
  --taupe: #D9D0C3;
  --sage: #8D9484;
  --serif: Georgia, "Times New Roman", serif;
  --sans: Arial, Helvetica, sans-serif;
  --max: 1180px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:var(--sans); line-height:1.65; }
a { color:inherit; }
img { max-width:100%; display:block; }
button, a { -webkit-tap-highlight-color: transparent; }
.skip-link { position:absolute; left:-9999px; top:0; padding:10px 14px; background:var(--ink); color:white; z-index:999; }
.skip-link:focus { left:12px; top:12px; }
.site-header { position:absolute; inset:0 0 auto; z-index:20; padding:24px 4vw; display:flex; align-items:center; justify-content:space-between; }
.brand { display:flex; align-items:center; gap:12px; text-decoration:none; letter-spacing:.18em; font-size:.74rem; text-transform:uppercase; }
.brand img { width:42px; height:42px; }
.site-nav { display:flex; gap:28px; align-items:center; }
.site-nav a { text-decoration:none; text-transform:uppercase; letter-spacing:.16em; font-size:.7rem; position:relative; }
.site-nav a::after { content:""; position:absolute; left:0; right:100%; bottom:-6px; height:1px; background:var(--champagne); transition:.25s; }
.site-nav a:hover::after { right:0; }
.menu-button { display:none; border:1px solid rgba(33,30,26,.25); background:rgba(255,255,255,.5); padding:9px 12px; font-size:.74rem; letter-spacing:.12em; text-transform:uppercase; }
.hero { min-height:100vh; display:grid; grid-template-columns:minmax(0,1.08fr) minmax(420px,.92fr); background:var(--ivory); }
.hero-copy { display:flex; flex-direction:column; justify-content:center; padding:132px 8vw 80px; position:relative; overflow:hidden; }
.hero-copy::before { content:""; width:520px; height:520px; border:1px solid rgba(179,154,106,.27); border-radius:50%; position:absolute; left:-280px; top:22%; }
.eyebrow { margin:0 0 26px; text-transform:uppercase; letter-spacing:.29em; font-size:.72rem; color:var(--muted); }
h1, h2, h3 { font-family:var(--serif); font-weight:400; line-height:1.08; }
h1 { margin:0; font-size:clamp(4.3rem, 9vw, 9rem); letter-spacing:-.055em; }
h1 .amp { color:var(--champagne); font-style:italic; font-size:.55em; vertical-align:.22em; padding:0 .07em; }
.hero-intro { max-width:530px; font-family:var(--serif); font-size:clamp(1.2rem, 2vw, 1.55rem); margin:34px 0 38px; color:#49423a; }
.hero-meta { display:flex; align-items:center; gap:18px; text-transform:uppercase; letter-spacing:.18em; font-size:.73rem; }
.hero-meta .line { width:78px; height:1px; background:var(--champagne); }
.hero-art { min-height:100vh; background:url('../images/ivory-still-life.jpg') center/cover no-repeat; position:relative; }
.hero-art::after { content:""; position:absolute; inset:0; box-shadow:inset 24px 0 58px rgba(45,35,23,.08); }
.hero-date-rail { position:absolute; right:24px; top:50%; transform:translateY(-50%) rotate(90deg); transform-origin:center; text-transform:uppercase; letter-spacing:.26em; font-size:.68rem; color:rgba(33,30,26,.68); z-index:2; }
.section { padding:112px 5vw; }
.section-inner { max-width:var(--max); margin:0 auto; }
.section-label { text-transform:uppercase; letter-spacing:.3em; color:var(--champagne); font-size:.7rem; margin:0 0 20px; }
.section-title { font-size:clamp(2.6rem, 5vw, 5.2rem); margin:0 0 34px; letter-spacing:-.03em; }
.invitation { text-align:center; background:var(--paper); }
.invitation .section-inner { max-width:880px; }
.invitation-text { font-family:var(--serif); font-size:clamp(1.5rem,3vw,2.45rem); line-height:1.5; color:#3f3932; }
.branch { width:min(640px,90%); margin:56px auto 0; opacity:.82; }
.countdown { margin-top:65px; display:grid; grid-template-columns:repeat(4,1fr); border-top:1px solid var(--taupe); border-bottom:1px solid var(--taupe); }
.countdown-item { padding:28px 10px; border-right:1px solid var(--taupe); }
.countdown-item:last-child { border-right:0; }
.countdown strong { display:block; font-family:var(--serif); font-size:clamp(2rem,4vw,4rem); font-weight:400; line-height:1; }
.countdown span { display:block; text-transform:uppercase; letter-spacing:.18em; font-size:.66rem; color:var(--muted); margin-top:10px; }
.details { background:#EDE7DC; }
.details-grid { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.detail-card { background:rgba(251,248,242,.88); padding:58px; min-height:390px; display:flex; flex-direction:column; justify-content:space-between; border:1px solid rgba(179,154,106,.25); }
.detail-number { font-family:var(--serif); font-size:1.05rem; color:var(--champagne); }
.detail-card h3 { font-size:2.5rem; margin:22px 0 12px; }
.detail-time { font-family:var(--serif); font-size:3.4rem; margin:0; }
.detail-address { color:var(--muted); margin:12px 0 30px; }
.text-link { text-decoration:none; text-transform:uppercase; letter-spacing:.16em; font-size:.68rem; border-bottom:1px solid var(--champagne); align-self:flex-start; padding-bottom:5px; }
.programme-grid { display:grid; grid-template-columns:.75fr 1.25fr; gap:80px; align-items:start; }
.timeline { border-top:1px solid var(--taupe); }
.timeline-row { display:grid; grid-template-columns:120px 1fr; gap:20px; padding:24px 0; border-bottom:1px solid var(--taupe); }
.timeline-time { font-family:var(--serif); font-size:1.4rem; }
.timeline-title { font-weight:600; letter-spacing:.03em; }
.timeline-note { color:var(--muted); font-size:.92rem; }
.practical { background:var(--ink); color:var(--paper); }
.practical .section-label { color:#D8C398; }
.practical-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.16); }
.practical-card { background:var(--ink); padding:44px 36px; min-height:250px; }
.practical-card h3 { font-size:1.8rem; margin:0 0 18px; }
.practical-card p { color:#D8D2C9; margin:0; }
.contact { text-align:center; }
.contact .section-inner { max-width:860px; }
.contact-actions { display:flex; justify-content:center; gap:14px; flex-wrap:wrap; margin-top:42px; }
.button { display:inline-flex; align-items:center; justify-content:center; min-height:52px; padding:0 27px; text-decoration:none; text-transform:uppercase; letter-spacing:.15em; font-size:.7rem; border:1px solid var(--ink); background:var(--ink); color:var(--paper); cursor:pointer; }
.button.secondary { background:transparent; color:var(--ink); }
.site-footer { padding:34px 5vw; border-top:1px solid var(--taupe); display:flex; justify-content:space-between; gap:20px; font-size:.72rem; color:var(--muted); }
.site-footer a { text-decoration:none; }
@media (max-width: 900px) {
  .site-header { position:fixed; background:rgba(244,240,232,.92); backdrop-filter:blur(12px); padding:14px 20px; border-bottom:1px solid rgba(112,105,95,.16); }
  .menu-button { display:block; }
  .site-nav { position:absolute; top:71px; left:16px; right:16px; display:none; flex-direction:column; align-items:stretch; gap:0; background:var(--paper); border:1px solid var(--taupe); padding:8px; }
  .site-nav.is-open { display:flex; }
  .site-nav a { padding:14px; }
  .hero { grid-template-columns:1fr; }
  .hero-copy { min-height:78vh; padding:140px 24px 74px; }
  .hero-art { min-height:64vh; }
  .hero-date-rail { right:12px; }
  .section { padding:82px 22px; }
  .details-grid, .programme-grid, .practical-grid { grid-template-columns:1fr; gap:16px; }
  .detail-card { padding:38px 28px; min-height:340px; }
  .programme-grid { gap:46px; }
  .countdown { grid-template-columns:1fr 1fr; }
  .countdown-item:nth-child(2) { border-right:0; }
  .countdown-item:nth-child(-n+2) { border-bottom:1px solid var(--taupe); }
  .site-footer { flex-direction:column; }
}
@media (max-width: 520px) {
  h1 { font-size:clamp(3.65rem,18vw,5rem); line-height:.92; }
  h1 [data-partner-one], h1 [data-partner-two], h1 .amp { display:block; }
  h1 .amp { font-size:.42em; padding:.16em 0 .1em; vertical-align:baseline; }
  .hero-meta { flex-wrap:wrap; gap:10px; }
  .hero-meta .line { width:34px; }
  .timeline-row { grid-template-columns:82px 1fr; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior:auto; } * { animation:none!important; transition:none!important; } }
