:root{
  --primary:      #178225;   /* brand green — fills, badges, accents */
  --primary-dark: #10601B;   /* green text on light backgrounds */
  --primary-glow: #57C766;   /* green accents on dark backgrounds */
  --deep:         #0A3A12;   /* dark green section */
  --ink:          #06180B;   /* hero scrim, footer */
  --paper:        #F1F4EC;
  --paper-deep:   #E4EADC;
  --sand:         #E4D9BE;

  --hair:       rgba(6,24,11,.15);
  --hair-soft:  rgba(6,24,11,.09);
  --hair-light: rgba(241,244,236,.22);
  --hair-faint: rgba(241,244,236,.10);

  --font-display:'Newsreader', 'Iowan Old Style', Georgia, 'Times New Roman', serif;
  --font-ui:'Instrument Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;

  --wrap: 1240px;
  --gutter: clamp(20px, 5vw, 64px);
  --radius: 4px;
  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ============================================================
   BASE
   ============================================================ */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--font-ui);
  font-size:clamp(15px,.42vw + 14px,17px);
  line-height:1.62; -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
img{max-width:100%; display:block}
a{color:var(--primary-dark)}
h1,h2,h3,h4{margin:0; font-family:var(--font-display); font-weight:600; line-height:1.06; letter-spacing:-.015em}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}
ul,ol{margin:0; padding:0; list-style:none}

:focus-visible{outline:2.5px solid var(--primary-dark); outline-offset:3px; border-radius:2px}
.hero :focus-visible,.next :focus-visible,.site-footer :focus-visible{outline-color:var(--primary-glow)}

.wrap{max-width:var(--wrap); margin-inline:auto; padding-inline:var(--gutter)}
.skip{position:absolute; left:-9999px; top:0; z-index:200; background:var(--ink); color:var(--paper); padding:.7em 1.2em; text-decoration:none}
.skip:focus{left:0}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--font-ui); font-size:.95rem; font-weight:600;
  padding:15px 28px; border-radius:100px; text-decoration:none;
  border:1px solid transparent; cursor:pointer; color:#fff;
  transition:background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease), transform .3s var(--ease);
}
.btn--primary{background:var(--primary)}
.btn--primary:hover{background:var(--primary-dark); transform:translateY(-2px)}
.btn--ghost{border-color:var(--hair-light); color:var(--paper)}
.btn--ghost:hover{border-color:var(--paper); background:rgba(241,244,236,.12); transform:translateY(-2px)}
.btn--outline{border-color:var(--primary); color:var(--primary-dark)}
.btn--outline:hover{background:var(--primary); color:#fff; transform:translateY(-2px)}
.btn i{width:6px; height:6px; border-radius:50%; background:currentColor; flex:none; opacity:.6}

/* ============================================================
   HEADER
   ============================================================ */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:60;
  border-bottom:1px solid transparent;
  transition:background .35s var(--ease), border-color .35s var(--ease);
}
.site-header.is-stuck{
  background:rgba(241,244,236,.93);
  backdrop-filter:saturate(1.4) blur(14px);
  border-bottom-color:var(--hair);
}
.site-header__inner{display:flex; align-items:center; gap:clamp(16px,3vw,40px); height:74px}
.brand{display:flex; align-items:center; gap:11px; text-decoration:none; color:var(--paper); margin-right:auto; transition:color .35s var(--ease)}
.site-header.is-stuck .brand{color:var(--ink)}
.brand svg{width:26px; height:26px; flex:none; color:var(--primary-glow)}
.site-header.is-stuck .brand svg{color:var(--primary)}
.brand b{font-family:var(--font-display); font-weight:600; font-size:1.05rem; line-height:1}
.brand span{display:block; font-family:var(--font-ui); font-size:.66rem; letter-spacing:.13em; opacity:.62; text-transform:uppercase; margin-top:8px}

.nav{display:flex; align-items:center; gap:clamp(14px,2vw,28px); margin: 6px 0 0;}
.nav a{color:var(--paper); text-decoration:none; font-size:.9rem; font-weight:500; padding:6px 0; position:relative; transition:color .35s var(--ease)}
.site-header.is-stuck .nav a{color:var(--ink)}
.nav a::after{content:""; position:absolute; left:0; right:100%; bottom:2px; height:2px; background:var(--primary-glow); transition:right .3s var(--ease)}
.site-header.is-stuck .nav a::after{background:var(--primary)}
.nav a:hover::after{right:0}
.nav .nav__cta{background:var(--primary); color:#fff; border-radius:100px; padding:9px 18px; transition:background .3s var(--ease)}
.nav .nav__cta::after{display:none}
.nav .nav__cta:hover{background:var(--primary-dark)}
.site-header.is-stuck .nav .nav__cta{color:#fff}

.nav-toggle{display:none; background:none; border:0; padding:8px; cursor:pointer; color:var(--paper)}
.site-header.is-stuck .nav-toggle{color:var(--ink)}
.nav-toggle svg{width:24px; height:24px; display:block}

@media (max-width:880px){
  .nav-toggle{display:block}
  .nav{
    position:absolute; top:74px; left:0; right:0;
    flex-direction:column; align-items:stretch; gap:0;
    background:var(--ink); padding:8px var(--gutter) 24px;
    max-height:0; overflow:hidden; visibility:hidden;
    transition:max-height .4s var(--ease), visibility .4s;
  }
  .nav.is-open{max-height:420px; visibility:visible}
  .nav a,.site-header.is-stuck .nav a{color:var(--paper); padding:13px 0; border-bottom:1px solid var(--hair-light); font-size:1rem}
  .nav a::after{display:none}
  .nav .nav__cta,.site-header.is-stuck .nav .nav__cta{margin-top:14px; text-align:center; border-radius:100px; padding:14px 0}
}

/* ============================================================
   HERO — carries the upcoming conference
   ============================================================ */
.hero{
  position:relative; color:var(--paper); background:var(--ink);
  min-height:min(100svh, 980px);
  display:flex; flex-direction:column;
  padding-top:132px; overflow:hidden; isolation:isolate;
}
.hero::before{
  content:""; position:absolute; inset:0; z-index:-2;
  background:
    radial-gradient(115% 90% at 86% 6%, rgba(23,130,37,.5) 0%, rgba(6,24,11,0) 60%),
    radial-gradient(75% 65% at 2% 100%, rgba(23,130,37,.24) 0%, rgba(6,24,11,0) 70%);
}
.hero__art{
  position:absolute; z-index:-1; pointer-events:none;
  right:-8%; top:-12%; width:min(54vw, 660px); height:100%; opacity:.45;
}
.hero__art path{fill:none; stroke:var(--sand); stroke-width:1.15; stroke-linecap:round}
.hero__art .leaf-fill{fill:rgba(228,217,190,.07); stroke:var(--sand); stroke-width:1}
.hero__grain{position:absolute; inset:0; z-index:-1; opacity:.3; pointer-events:none; mix-blend-mode:overlay}

.hero__inner{margin-top:auto; padding-bottom:clamp(38px,5vw,64px)}

.hero h1{
  font-size:clamp(2.6rem, 6.6vw, 5.9rem);
  font-weight:500; line-height:.95; letter-spacing:-.032em;
  max-width:14ch; margin-bottom:clamp(24px,3.2vw,38px);
}
.hero h1 em{font-style:italic; font-weight:400; color:var(--sand)}

.hero__text{
  display:grid; grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);
  gap:clamp(22px,3.2vw,54px); max-width:1020px;
}
.hero__text p{margin:0}
.hero__lead{
  font-family:var(--font-display);
  font-size:clamp(1.12rem,.7vw + 1rem,1.42rem);
  font-weight:400; line-height:1.44; letter-spacing:-.008em;
  color:rgba(241,244,236,.95);
}
.hero__rest{display:flex; flex-direction:column; gap:1em}
.hero__rest p{font-size:clamp(.94rem,.28vw + .88rem,1.02rem); line-height:1.6; color:rgba(241,244,236,.74)}
@media (max-width:820px){.hero__text{grid-template-columns:1fr; gap:1em}}

.hero__actions{display:flex; flex-wrap:wrap; gap:12px; padding-top:clamp(28px,3.6vw,42px);}

/* fixed-size upcoming bar — never grows with the number of editions */
.hero__bar{
  position:relative;
  border-top:1px solid var(--hair-light);
  background:rgba(6,24,11,.5); backdrop-filter:blur(10px);
}
.hero__bar-inner{
  display:flex; align-items:center; gap:clamp(16px,2.4vw,34px);
  padding-block:18px; flex-wrap:wrap;
}
.hero__bar-num{
  font-family:var(--font-display); font-size:2.5rem; font-weight:400;
  line-height:1; letter-spacing:-.03em; color:var(--primary-glow); flex:none;
}
.hero__bar-main{flex:1 1 240px; min-width:0}
.hero__bar-main b{display:block; font-size:.98rem; font-weight:600; line-height:1.25}
.hero__bar-main span{display:block; font-size:.85rem; color:rgba(241,244,236,.62); margin-top:3px}
.hero__bar-when{flex:none; text-align:right}
.hero__bar-when b{display:block; font-family:var(--font-display); font-size:1.18rem; font-weight:400; letter-spacing:-.01em}
.hero__bar-when span{display:block; font-size:.82rem; color:var(--primary-glow); margin-top:3px}
@media (max-width:640px){
  .hero__bar-inner{gap:14px}
  .hero__bar-num{font-size:2rem}
  .hero__bar-when{text-align:left; flex:1 1 100%}
}

/* ============================================================
   NEXT EDITION — supporting detail
   ============================================================ */
.next{background:var(--deep); color:var(--paper); padding:clamp(56px,7.5vw,92px) 0}
.next__head{
  display:flex; justify-content:space-between; align-items:baseline; gap:20px; flex-wrap:wrap;
  border-bottom:1px solid var(--hair-light); padding-bottom:14px; margin-bottom:clamp(24px,3vw,36px);
}
.next__label{display:flex; align-items:center; gap:9px; margin:0; font-size:.85rem; font-weight:600; letter-spacing:.03em; color:var(--primary-glow)}
.next__label .dot{width:8px; height:8px; border-radius:50%; background:var(--primary-glow); flex:none}
.next__when{margin:0; font-family:var(--font-display); font-size:clamp(1.05rem,1.3vw,1.35rem); color:rgba(241,244,236,.88)}

.next__grid{display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr); gap:clamp(26px,4vw,64px); align-items:start}
@media (max-width:900px){.next__grid{grid-template-columns:1fr}}

.next__motto{
  font-family:var(--font-display); font-style:italic;
  font-size:clamp(1.4rem,2.4vw,2.35rem); line-height:1.24; letter-spacing:-.018em;
  color:var(--sand); margin-bottom:.8em;
}
.next__body > p{color:rgba(241,244,236,.78)}
.next__org{font-size:.9rem; color:rgba(241,244,236,.58); border-left:2px solid var(--primary); padding-left:14px; margin-top:1.3em}

.keydates{border-top:1px solid var(--hair-light)}
.keydates li{display:flex; justify-content:space-between; align-items:baseline; gap:16px; padding:13px 0; border-bottom:1px solid var(--hair-faint)}
.keydates b{font-size:.85rem; font-weight:600; color:rgba(241,244,236,.8)}
.keydates span{font-family:var(--font-display); font-size:1.02rem; color:var(--sand); text-align:right; flex:none}
.keydates li.is-set span{color:var(--primary-glow)}

.chips{display:flex; flex-wrap:wrap; gap:8px; margin-top:clamp(26px,3.4vw,38px)}
.chips a{
  display:inline-block; padding:8px 16px;
  border:1px solid var(--hair-light); border-radius:100px;
  font-size:.85rem; color:rgba(241,244,236,.82); text-decoration:none;
  transition:background .3s var(--ease), color .3s var(--ease), border-color .3s var(--ease);
}
.chips a:hover{background:var(--primary); color:#fff; border-color:var(--primary)}

/* ============================================================
   ARCHIVE — uniform cards, three to a row
   ============================================================ */
.editions{padding:clamp(70px,9vw,120px) 0 clamp(76px,9.5vw,124px)}
.section-head{
  display:flex; align-items:flex-end; justify-content:space-between; gap:24px; flex-wrap:wrap;
  border-bottom:2px solid var(--primary); padding-bottom:16px; margin-bottom:clamp(30px,4vw,46px);
}
.section-head h2{font-size:clamp(1.8rem,3vw,2.7rem); font-weight:500; letter-spacing:-.025em}
.section-head p{font-size:.9rem; color:rgba(6,24,11,.62); max-width:40ch; margin:0}

.grid{display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(18px,2.2vw,28px)}
@media (max-width:1000px){.grid{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.grid{grid-template-columns:1fr}}

.edition{
  position:relative; display:flex; flex-direction:column;
  background:#fff; border:1px solid var(--hair-soft); border-radius:var(--radius);
  transition:transform .45s var(--ease), box-shadow .45s var(--ease), border-color .45s var(--ease);
}
.edition[hidden]{display:none}
.edition:hover,.edition:focus-within{
  transform:translateY(-6px);
  box-shadow:0 26px 44px -26px rgba(6,24,11,.45);
  border-color:rgba(23,130,37,.35);
}
.edition__media{position:relative; overflow:hidden; background:var(--deep); border-radius:var(--radius) var(--radius) 0 0; aspect-ratio:3/2}
.edition__media img{width:100%; height:100%; object-fit:cover; transform:scale(1.005); transition:transform 1.05s var(--ease)}
.edition:hover .edition__media img,.edition:focus-within .edition__media img{transform:scale(1.07)}
.edition__veil{
  position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(to top, rgba(6,24,11,.86) 0%, rgba(6,24,11,.3) 46%, rgba(6,24,11,.05) 100%);
  transition:opacity .55s var(--ease);
}
.edition:hover .edition__veil,.edition:focus-within .edition__veil{opacity:.7}
.edition__numeral{
  position:absolute; left:18px; bottom:8px; z-index:2;
  font-family:var(--font-display); font-weight:400; font-size:3.4rem; line-height:.8;
  color:rgba(241,244,236,.92); letter-spacing:-.02em;
  transition:color .45s var(--ease), transform .55s var(--ease);
}
.edition:hover .edition__numeral,.edition:focus-within .edition__numeral{color:var(--primary-glow); transform:translateY(-3px)}
.edition__year{
  position:absolute; right:14px; top:13px; z-index:2;
  font-size:.75rem; font-weight:600; letter-spacing:.1em; color:var(--paper);
  background:rgba(6,24,11,.55); backdrop-filter:blur(6px);
  border:1px solid var(--hair-light); padding:5px 11px; border-radius:100px;
}
.edition__flag{
  position:absolute; left:16px; top:13px; z-index:2;
  font-size:.7rem; font-weight:600; letter-spacing:.08em;
  background:var(--primary); color:#fff; padding:5px 11px; border-radius:100px;
}
.edition__body{padding:19px 20px 22px; display:flex; flex-direction:column; flex:1}
.edition__place{margin:0 0 8px; font-size:.82rem; font-weight:600; letter-spacing:.02em; color:var(--primary-dark)}
.edition__title{font-size:1.24rem; font-weight:500; letter-spacing:-.018em; line-height:1.18; margin-bottom:9px}
.edition__title a{
  color:inherit; text-decoration:none;
  background-image:linear-gradient(var(--primary),var(--primary));
  background-size:0% 2px; background-repeat:no-repeat; background-position:0 100%;
  transition:background-size .45s var(--ease);
}
.edition__title a::after{content:""; position:absolute; inset:0; z-index:1}
.edition:hover .edition__title a,.edition:focus-within .edition__title a{background-size:100% 2px}
.edition__theme{
  font-family:var(--font-display); font-style:italic; font-size:1rem; line-height:1.4;
  color:rgba(6,24,11,.72); margin-bottom:14px;
  display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden;
}
.edition__meta{margin-top:auto; padding-top:12px; border-top:1px solid var(--hair-soft); font-size:.82rem; color:rgba(6,24,11,.58); line-height:1.5}
.edition__meta b{display:block; font-weight:600; color:rgba(6,24,11,.82)}

.more{display:flex; justify-content:center; margin-top:clamp(28px,3.4vw,42px)}

/* ============================================================
   FOOTER
   ============================================================ */
.site-footer{background:var(--ink); color:rgba(241,244,236,.58); padding:26px 0}
.footer__base{display:flex; justify-content:center; align-items:center; gap:8px; flex-wrap:wrap; text-align:center; font-size:.82rem}
.footer__base p{margin:0}

/* ============================================================
   ONE ORCHESTRATED LOAD MOMENT
   ============================================================ */
.reveal{clip-path:inset(0 0 105% 0); animation:unmask .95s var(--ease) forwards}
.reveal-2{animation-delay:.08s}
.reveal-3{animation-delay:.16s}
.reveal-4{animation-delay:.24s}
@keyframes unmask{to{clip-path:inset(0 0 -18% 0)}}

.hero__art path{
  stroke-dasharray:var(--len); stroke-dashoffset:var(--len);
  animation:draw 2.6s var(--ease) forwards;
  animation-delay:calc(.25s + var(--i) * .075s);
}
@keyframes draw{to{stroke-dashoffset:0}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms !important; animation-delay:0ms !important; transition-duration:.001ms !important}
  .reveal{clip-path:none}
  .hero__art path{stroke-dashoffset:0}
}