/* ============================================================
   CESTE 2027 — Redesign
   Black + Vibrant Orange (PANTONE 16-1364) duotone system
   ============================================================ */

:root{
  --orange:#ee6a24;          /* PANTONE 16-1364 Vibrant Orange (approx) */
  --orange-soft:#f2854a;
  --bg:#0c0a09;              /* warm near-black */
  --bg-2:#141110;
  --bg-3:#1b1715;
  --ink:#f5f1ea;             /* warm white */
  --ink-dim:rgba(245,241,234,.62);
  --ink-faint:rgba(245,241,234,.38);
  --line:rgba(245,241,234,.13);
  --line-soft:rgba(245,241,234,.07);

  --paper:#f4f0e9;           /* light section bg */
  --paper-ink:#15110f;
  --paper-dim:rgba(21,17,15,.58);
  --paper-line:rgba(21,17,15,.14);

  --f-disp:"Archivo",system-ui,sans-serif;
  --f-cond:"Archivo Narrow",system-ui,sans-serif;
  --f-body:"Archivo",system-ui,sans-serif;

  --pad:clamp(20px,5vw,90px);
  --maxw:1480px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--f-body);
  font-weight:400;
  line-height:1.55;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
::selection{background:var(--orange);color:#000}

/* ---------- Duotone images ---------- */
.duo{filter:url(#ceste-duotone);}
.duo-wrap{position:relative;overflow:hidden;background:var(--bg)}
.duo-wrap img{width:100%;height:100%;object-fit:cover}

/* ============================================================
   TYPE
   ============================================================ */
.kicker{
  font-family:var(--f-cond);
  text-transform:uppercase;
  letter-spacing:.32em;
  font-weight:600;
  font-size:clamp(11px,.85vw,13px);
  color:var(--orange);
  display:inline-flex;align-items:center;gap:.7em;
}
.kicker::before{content:"";width:26px;height:2px;background:var(--orange);display:inline-block}
.kicker.center::after{content:"";width:26px;height:2px;background:var(--orange);display:inline-block}

h1,h2,h3{font-family:var(--f-disp);font-weight:800;line-height:.96;letter-spacing:-.01em}
.display{
  font-family:var(--f-disp);
  font-weight:900;
  text-transform:uppercase;
  line-height:.9;
  letter-spacing:-.015em;
}
.cond{font-family:var(--f-cond);font-weight:700;text-transform:uppercase;letter-spacing:.01em}

.sec-title{
  font-size:clamp(34px,5.4vw,84px);
  font-weight:800;
  text-transform:uppercase;
  line-height:.92;
  letter-spacing:-.02em;
}
.lead{font-size:clamp(16px,1.35vw,20px);line-height:1.6;color:var(--ink-dim);font-weight:400;max-width:60ch}

/* ============================================================
   HEADER (visible top bar — no off-canvas)
   ============================================================ */
.topbar{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  gap:24px;
  padding:18px var(--pad);
  background:linear-gradient(180deg,rgba(12,10,9,.92),rgba(12,10,9,.55) 70%,transparent);
  backdrop-filter:blur(2px);
  transition:background .4s var(--ease),padding .4s var(--ease),border-color .4s;
  border-bottom:1px solid transparent;
}
.topbar.solid{
  background:rgba(10,8,7,.9);
  backdrop-filter:blur(14px) saturate(120%);
  border-bottom:1px solid var(--line);
  padding-top:13px;padding-bottom:13px;
}
.brand{display:flex;align-items:center;gap:13px;flex-shrink:0}
.brand img{height:54px;width:auto;filter:brightness(0) invert(1);transition:height .4s var(--ease)}
.topbar.solid .brand img{height:44px}

.nav{display:flex;align-items:center;gap:clamp(11px,1.3vw,24px)}
.nav a{
  font-family:var(--f-cond);text-transform:uppercase;font-weight:600;
  font-size:15px;letter-spacing:.05em;color:var(--ink-dim);
  position:relative;padding:6px 0;transition:color .25s;white-space:nowrap;
}
.nav a::after{
  content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;
  background:var(--orange);transform:scaleX(0);transform-origin:left;
  transition:transform .35s var(--ease);
}
.nav a:hover{color:var(--ink)}
.nav a:hover::after,.nav a.active::after{transform:scaleX(1)}
.nav a.active{color:var(--ink)}
/* Eight menu items since the proceedings page: between the burger breakpoint
   and a roomy laptop the full bar ran ~60px wider than the screen and pushed
   REGISTER off the right edge. Tighten the type and gaps just for that band. */
@media(min-width:1025px) and (max-width:1240px){
  .topbar{gap:16px}
  .nav{gap:12px}
  .nav a{font-size:13.5px;letter-spacing:.03em}
  .brand img{height:46px}
  .topbar-right{gap:14px}
}

.topbar-right{display:flex;align-items:center;gap:18px;flex-shrink:0}
.lang{
  font-family:var(--f-cond);text-transform:uppercase;font-weight:700;font-size:13px;
  letter-spacing:.12em;color:var(--ink-dim);display:flex;gap:7px;align-items:center;
}
.lang button{padding:2px 0;transition:color .2s}
.lang button.on{color:var(--orange)}
.lang span{color:var(--line)}

.btn{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--f-cond);text-transform:uppercase;font-weight:700;
  font-size:13.5px;letter-spacing:.1em;
  padding:13px 22px;border-radius:2px;
  background:var(--orange);color:#1a0c03;
  position:relative;overflow:hidden;isolation:isolate;
  transition:color .35s var(--ease);
}
.btn::before{
  content:"";position:absolute;inset:0;z-index:-1;background:var(--ink);
  transform:translateY(101%);transition:transform .4s var(--ease);
}
.btn:hover{color:#000}
.btn:hover::before{transform:translateY(0)}
.btn .ar{transition:transform .35s var(--ease)}
.btn:hover .ar{transform:translate(4px,-4px)}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.ghost::before{background:var(--orange)}
.btn.ghost:hover{color:#1a0c03}
.btn.lg{padding:17px 30px;font-size:15px}
.btn.dark{background:var(--paper-ink);color:var(--paper)}
.btn.dark::before{background:var(--orange)}
.btn.dark:hover{color:#1a0c03}

.menu-toggle{display:none}

/* ============================================================
   HERO
   ============================================================ */
.hero{
  position:relative;min-height:112svh;display:flex;flex-direction:column;
  justify-content:flex-end;padding:0 var(--pad) clamp(104px,15vh,170px);
  overflow:hidden;isolation:isolate;
}
.hero-bg{position:absolute;inset:0;z-index:-3;background:var(--bg)}
.hero-bg .duo-wrap{position:absolute;inset:0}
.hero-bg img{
  position:absolute;inset:0;
  width:100%;height:100%;object-fit:cover;
  transform:scale(1.12);
  transition:transform 8s linear, opacity 1.4s var(--ease);
  opacity:0;
}
.hero-bg img.show{opacity:1}
.hero.ready .hero-bg img.show{transform:scale(1)}
.hero-bg::after{ /* legibility + brand gradient */
  content:"";position:absolute;inset:0;z-index:1;
  background:
    linear-gradient(90deg,rgba(12,10,9,.55) 0%,rgba(12,10,9,.28) 34%,rgba(12,10,9,.08) 56%,transparent 72%),
    linear-gradient(180deg,transparent 0%,transparent 72%,var(--bg) 100%);
}
.hero-grain{position:absolute;inset:0;z-index:-2;opacity:.5;mix-blend-mode:overlay;
  background-image:radial-gradient(rgba(255,255,255,.06) 1px,transparent 1px);background-size:3px 3px}

.hero-top{
  position:absolute;top:clamp(96px,12vh,150px);left:var(--pad);z-index:2;
  display:flex;align-items:center;gap:16px;
}
.hero-edition{
  font-family:var(--f-cond);font-weight:700;text-transform:uppercase;letter-spacing:.2em;
  font-size:clamp(12px,1vw,15px);color:var(--ink-dim);
}
.hero-edition b{color:var(--orange)}

.hero-inner{position:relative;z-index:2;width:100%;max-width:var(--maxw);margin:0 auto}
.hero-title{
  font-family:var(--f-disp);font-weight:900;text-transform:uppercase;
  line-height:.84;letter-spacing:-.02em;
  font-size:clamp(48px,10.5vw,176px);
}
.hero-title .l{display:block;overflow:hidden}
.hero-title .l>span{display:block;transform:translateY(108%);transition:transform 1s var(--ease)}
.hero.ready .hero-title .l>span{transform:translateY(0)}
.hero-title .l:nth-child(2)>span{transition-delay:.08s}
.hero-title .l:nth-child(3)>span{transition-delay:.16s}
.hero-title .road{color:var(--orange);font-size:1.12em;letter-spacing:-.03em}
.hero-title sup{font-size:.36em;vertical-align:super;font-weight:800;color:var(--orange)}

/* hero brand mark — the big white CESTE logo above the headline.
   It leads the reveal: the logo first, then the wordmark clips open under it. */
.hero-brand{
  display:block;margin-bottom:clamp(22px,3.4vw,54px);
  opacity:0;transform:translateY(18px);
  transition:opacity .9s var(--ease),transform .9s var(--ease);
}
.hero-brand img{
  width:clamp(196px,31vw,470px);height:auto;display:block;
}
.hero.ready .hero-brand{opacity:1;transform:none}

/* hero wordmark (image headline) */
.hero-wm{display:flex;flex-direction:column;align-items:flex-start;gap:0}
.hero-wm .hw-line{
  font-family:var(--f-cond);text-transform:uppercase;font-weight:700;color:var(--ink);
  line-height:.95;letter-spacing:.02em;
  opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease);
}
.hero-wm .hw-line.top{font-size:clamp(17px,3vw,50px);margin-bottom:clamp(2px,.5vw,6px);margin-left:.1em}
.hero-wm .hw-line.bot{font-size:clamp(18px,3.5vw,60px);margin-top:clamp(2px,.5vw,8px)}
.hero-wm .hw-img{display:block;overflow:hidden;clip-path:inset(0 0 102% 0);transition:clip-path 1.05s var(--ease) .12s;max-width:100%}
.hero-wordmark{width:clamp(218px,42vw,615px);height:auto;display:block}
.hero.ready .hero-wm .hw-img{clip-path:inset(0 0 0 0)}
.hero.ready .hero-wm .hw-line{opacity:1;transform:none}
.hero.ready .hero-wm .hw-line.top{transition-delay:.34s}
.hero.ready .hero-wm .hw-line.bot{transition-delay:.5s}

.hero-meta{
  display:flex;flex-wrap:wrap;align-items:center;gap:clamp(20px,4vw,64px);
  margin-top:clamp(22px,3vw,40px);
}
.hero-meta .when{
  font-family:var(--f-disp);font-weight:800;text-transform:uppercase;
  font-size:clamp(20px,2.4vw,38px);letter-spacing:-.01em;line-height:1;
}
.hero-meta .when b{color:var(--orange)}
.hero-meta .where{
  font-family:var(--f-cond);text-transform:uppercase;font-weight:600;
  letter-spacing:.16em;font-size:clamp(12px,1vw,15px);color:var(--ink-dim);
  border-left:2px solid var(--orange);padding-left:16px;
}
.hero-meta .where b{color:var(--ink);font-weight:700;display:block;letter-spacing:.05em;font-size:clamp(16px,1.9vw,28px);line-height:1.12;margin-bottom:5px}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(26px,3vw,40px)}

.hero-reveal>*{opacity:0;transform:translateY(26px);transition:all .9s var(--ease)}
.hero.ready .hero-reveal>*{opacity:1;transform:none}
.hero.ready .hero-reveal>*:nth-child(1){transition-delay:.45s}
.hero.ready .hero-reveal>*:nth-child(2){transition-delay:.58s}
.hero.ready .hero-reveal>*:nth-child(3){transition-delay:.7s}

.hero-slides-dots{position:absolute;bottom:clamp(28px,4vh,46px);right:var(--pad);z-index:3;display:flex;gap:9px}
.hero-slides-dots button{width:34px;height:3px;background:var(--line);overflow:hidden;position:relative}
.hero-slides-dots button.on{background:rgba(245,241,234,.3)}
.hero-slides-dots button.on::after{content:"";position:absolute;inset:0;background:var(--orange);transform-origin:left;animation:dotfill 6s linear forwards}
@keyframes dotfill{from{transform:scaleX(0)}to{transform:scaleX(1)}}

.scroll-hint{position:absolute;bottom:clamp(28px,4vh,46px);left:50%;transform:translateX(-50%);z-index:3;
  font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.25em;font-size:11px;color:var(--ink-faint);
  display:flex;flex-direction:column;align-items:center;gap:8px}
.scroll-hint .ln{width:1px;height:34px;background:linear-gradient(var(--orange),transparent);animation:scrolly 1.8s var(--ease) infinite}
@keyframes scrolly{0%{transform:scaleY(0);transform-origin:top}40%{transform:scaleY(1);transform-origin:top}60%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ============================================================
   SECTION SHELL
   ============================================================ */
.section{padding:clamp(70px,9vw,150px) var(--pad);position:relative}
.wrap{max-width:var(--maxw);margin:0 auto}
.sec-head{display:flex;flex-direction:column;gap:18px;margin-bottom:clamp(40px,5vw,72px)}
.sec-head.row{flex-direction:row;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:24px}
.divider{height:1px;background:var(--line);width:100%}

/* ---------- INTRO / ABOUT ---------- */
.intro{background:var(--bg)}
.intro-grid{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(36px,5vw,90px);align-items:stretch}
.intro-grid.solo{grid-template-columns:1fr;max-width:none}
.intro-cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,4vw,64px);margin-top:6px}
@media(max-width:860px){.intro-cols{grid-template-columns:1fr;gap:0}}
.intro-copy p{color:var(--ink-dim);font-size:clamp(15px,1.15vw,17.5px);margin-bottom:1.1em;max-width:54ch}
.intro-copy p.big{color:var(--ink);font-size:clamp(20px,1.8vw,27px);line-height:1.4;font-weight:500;font-family:var(--f-disp)}
.hours-badge{
  display:inline-flex;align-items:center;gap:16px;margin-top:14px;
  border:1px solid var(--line);border-left:3px solid var(--orange);
  padding:16px 22px;background:var(--bg-2);
}
.hours-badge .n{font-family:var(--f-disp);font-weight:900;font-size:44px;color:var(--orange);line-height:1}
.hours-badge .t{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.1em;font-size:13px;color:var(--ink-dim);line-height:1.3}
.intro-media{position:relative;min-height:320px}
.intro-media .duo-wrap{position:absolute;inset:0}
.intro-media .tag{position:absolute;left:18px;bottom:18px;z-index:2;font-family:var(--f-cond);text-transform:uppercase;
  letter-spacing:.18em;font-size:12px;font-weight:700;background:var(--orange);color:#1a0c03;padding:8px 14px}

/* ---------- STATS ---------- */
.stats-band-sec{background:var(--orange);padding:clamp(8px,1.6vw,22px) var(--pad)}
.stats.band{display:grid;grid-template-columns:repeat(4,1fr);gap:0;background:transparent;border:none;margin:0}
.stats.band .stat{background:transparent;text-align:center;padding:clamp(28px,4vw,58px) clamp(8px,1.6vw,24px);position:relative}
.stats.band .stat+.stat::before{content:"";position:absolute;left:0;top:20%;bottom:20%;width:2px;background:rgba(20,8,1,.16)}
.stats.band .n{font-family:var(--f-disp);font-weight:900;color:#140802;font-size:clamp(40px,6.2vw,108px);line-height:.86;letter-spacing:-.045em;font-variant-numeric:tabular-nums}
.stats.band .lab{font-family:var(--f-disp);font-weight:800;color:#1a0c03;font-size:clamp(13px,1.25vw,20px);letter-spacing:-.01em;margin-top:clamp(8px,1vw,16px);text-transform:none}
@media(max-width:680px){.stats.band{grid-template-columns:1fr 1fr;row-gap:0}.stats.band .stat:nth-child(3)::before,.stats.band .stat:nth-child(2)::before{}.stats.band .stat:nth-child(odd)::before{display:none}.stats.band .stat:nth-child(3)::after,.stats.band .stat:nth-child(4)::after{content:"";position:absolute;top:0;left:15%;right:15%;height:2px;background:rgba(20,8,1,.16)}}

/* ============================================================
   TOPICS
   ============================================================ */
.topics{background:var(--bg-2)}
.topics-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:14px}
.topic{
  position:relative;overflow:hidden;background:var(--bg);
  min-height:clamp(220px,26vw,340px);display:flex;flex-direction:column;justify-content:flex-end;
  padding:24px;isolation:isolate;text-transform:uppercase;
}
.topic .duo-wrap{position:absolute;inset:0;z-index:-2}
.topic img{transition:transform 1s var(--ease)}
.topic::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(12,10,9,.15),rgba(12,10,9,.4) 50%,rgba(12,10,9,.88));transition:background .4s}
.topic:hover img{transform:scale(1.1)}
.topic:hover::after{background:linear-gradient(180deg,rgba(238,106,36,.12),rgba(12,10,9,.45) 50%,rgba(12,10,9,.92))}
.topic .num{font-family:var(--f-cond);font-weight:700;font-size:13px;letter-spacing:.1em;color:var(--orange);margin-bottom:auto;position:relative;z-index:2}
.topic-logo{
  position:absolute;top:50%;left:50%;z-index:2;
  width:min(78%,340px);height:auto;pointer-events:none;
  transform:translate(-50%,-50%);
  filter:drop-shadow(0 8px 26px rgba(0,0,0,.45));
  opacity:.94;
  transition:transform .6s var(--ease),opacity .45s var(--ease),filter .45s var(--ease);
}
.topic:hover .topic-logo{
  transform:translate(-50%,-50%) scale(1.09);
  opacity:1;
  filter:drop-shadow(0 12px 36px rgba(0,0,0,.6));
}
/* span pattern */
.topic.s4{grid-column:span 4}
.topic.s3{grid-column:span 3}
.topic.s5{grid-column:span 5}
.topic.s6{grid-column:span 6}
.topic.s7{grid-column:span 7}
.topic.tall{min-height:clamp(300px,34vw,460px)}

/* ============================================================
   SPEAKERS  (clean — no boxes)
   ============================================================ */
.speakers{background:var(--bg)}
.spk-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(20px,2.4vw,40px) clamp(16px,2vw,32px)}
.spk{position:relative;cursor:pointer}
.spk-ph{position:relative;aspect-ratio:3/4;overflow:hidden;background:var(--bg-3)}
.spk-ph img{width:100%;height:100%;object-fit:cover;object-position:center top;filter:grayscale(1) contrast(1.04)}
.spk-ph .idx{position:absolute;top:12px;left:12px;font-family:var(--f-cond);font-weight:700;font-size:12px;letter-spacing:.1em;color:var(--orange);
  background:rgba(12,10,9,.55);padding:4px 8px}
.spk-ph .plus{position:absolute;bottom:12px;right:12px;width:34px;height:34px;border:1px solid var(--ink);
  display:grid;place-items:center;opacity:1;background:rgba(12,10,9,.4)}
.spk-nm{font-family:var(--f-disp);font-weight:800;font-size:clamp(16px,1.2vw,19px);line-height:1.05;margin-top:16px;letter-spacing:-.01em}
.spk-ti{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.08em;font-size:11.5px;color:var(--ink-dim);margin-top:7px;line-height:1.4}
.spk-ti .ln{height:1px;background:var(--line);margin-bottom:9px;width:100%}

/* speaker modal */
.spk-modal{position:fixed;inset:0;z-index:120;display:none;align-items:center;justify-content:center;padding:24px}
.spk-modal.open{display:flex}
.spk-modal-bg{position:absolute;inset:0;background:rgba(7,5,4,.86);backdrop-filter:blur(8px);opacity:0;transition:opacity .4s}
.spk-modal.open .spk-modal-bg{opacity:1}
.spk-modal-card{position:relative;z-index:2;max-width:920px;width:100%;background:var(--bg-2);border:1px solid var(--line);
  display:grid;grid-template-columns:300px 1fr;transform:translateY(24px) scale(.98);opacity:0;transition:all .5s var(--ease);max-height:88vh;overflow:hidden}
.spk-modal.open .spk-modal-card{transform:none;opacity:1}
.spk-modal-card .ph{position:relative;overflow:hidden;background:var(--bg-3)}
.spk-modal-card .ph img{width:100%;height:100%;object-fit:cover;object-position:center top;filter:grayscale(1) contrast(1.04)}
.spk-modal-card .body{padding:clamp(26px,3vw,44px);overflow:auto}
.spk-modal-card .body .role{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.16em;font-size:12px;color:var(--orange)}
.spk-modal-card .body h3{font-size:clamp(24px,2.4vw,34px);margin:12px 0 6px}
.spk-modal-card .body .org{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.06em;font-size:13px;color:var(--ink-dim);line-height:1.5}
.spk-modal-card .body p{color:var(--ink-dim);font-size:15px;line-height:1.65;margin-top:20px}
.spk-modal-close{position:absolute;top:14px;right:14px;z-index:3;width:42px;height:42px;border:1px solid var(--line);
  display:grid;place-items:center;background:rgba(12,10,9,.5);transition:all .3s}
.spk-modal-close:hover{background:var(--orange);border-color:var(--orange);color:#1a0c03;transform:rotate(90deg)}

/* ============================================================
   AUSPICES
   ============================================================ */
.auspices{background:var(--bg-2)}
.aus-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:0;border-top:1px solid var(--line)}
.aus{padding:26px 30px 26px 0;border-bottom:1px solid var(--line);display:flex;gap:22px;align-items:flex-start}
.aus:nth-child(odd){border-right:1px solid var(--line);padding-right:40px}
.aus:nth-child(even){padding-left:40px}
.aus .mk{font-family:var(--f-disp);font-weight:900;font-size:20px;color:var(--orange);line-height:1;flex-shrink:0;width:42px}
.aus .tx{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.05em;font-size:clamp(14px,1.1vw,16px);line-height:1.45;color:var(--ink);font-weight:600}
.aus .tx b{color:var(--ink-dim);font-weight:500;display:block;font-size:.85em;letter-spacing:.04em}

/* ============================================================
   SPONSORS + PARTNERS  (light paper section — logos as-is, no boxes)
   ============================================================ */
.partners-sec{background:var(--paper);color:var(--paper-ink)}
.partners-sec .kicker{color:#c0531a}
.partners-sec .kicker::before,.partners-sec .kicker.center::after{background:#c0531a}
.partners-sec .sec-title{color:var(--paper-ink)}
.partners-sec .lead{color:var(--paper-dim)}
.tier{margin-top:clamp(38px,4.5vw,64px)}
.tier-head{display:flex;align-items:center;gap:18px;margin-bottom:clamp(22px,2.6vw,38px)}
.tier-head .lab{font-family:var(--f-cond);text-transform:uppercase;font-weight:700;letter-spacing:.18em;font-size:clamp(13px,1.05vw,16px)}
.tier-head .lab .dot{color:var(--orange)}
.tier-head .rule{flex:1;height:1px;background:var(--paper-line)}
.logos{display:flex;flex-wrap:wrap;align-items:center;gap:clamp(24px,3.5vw,64px);row-gap:clamp(20px,2.5vw,44px)}
.logos.center{justify-content:center}
.logo{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px}
.logo img{height:var(--lh,64px);width:auto;max-width:230px;object-fit:contain;
  transition:transform .45s var(--ease),filter .45s;filter:saturate(.55)}
.logo:hover img{transform:translateY(-4px) scale(1.04);filter:saturate(1)}
.logo .web{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.16em;font-size:10.5px;font-weight:700;
  color:var(--paper-dim);opacity:0;transform:translateY(4px);transition:all .35s var(--ease);display:inline-flex;gap:5px;align-items:center}
.logo:hover .web{opacity:1;transform:none;color:#c0531a}
.tier.platinum .logo img{--lh:86px}
.tier.gold .logo img{--lh:62px}
.tier.silver .logo img{--lh:50px}
.tier.bronze .logo img{--lh:44px}
.tier.partners .logo img{--lh:62px;filter:saturate(.5)}

/* ---- DARK SPONSORS BLOCK (image bg, white logos) ---- */
.sponsors-dark{position:relative;isolation:isolate;background:#160a02;overflow:hidden}
.sponsors-dark .sec-title,.sponsors-dark .kicker{color:var(--ink)}
.sponsors-dark .kicker{color:var(--orange)}
.sponsors-bg{position:absolute;inset:0;z-index:0;background:url('../assets/sponsors-bg.webp') center center/cover no-repeat fixed;filter:brightness(1.18) saturate(1.12)}
.sponsors-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(11,6,1,.46),rgba(18,9,2,.2) 42%,rgba(10,5,1,.58))}
.sponsors-dark .wrap{position:relative;z-index:1}
.sponsors-dark .tier{margin-top:clamp(42px,5vw,76px)}
.sponsors-dark .tier-head{justify-content:center;text-align:center}
.sponsors-dark .tier-head .rule{display:none}
.sponsors-dark .tier-head .lab{color:var(--ink);position:relative;padding-bottom:15px}
.sponsors-dark .tier-head .lab .dot{color:var(--orange)}
.sponsors-dark .tier-head .lab::after{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:42px;height:2px;background:var(--orange)}
.sponsors-dark .logos{justify-content:center;gap:clamp(36px,5vw,84px);row-gap:clamp(30px,3.5vw,58px)}
.sponsors-dark .logo img{filter:none;opacity:.96;max-width:720px;transition:transform .45s var(--ease),opacity .45s;filter:drop-shadow(0 3px 16px rgba(0,0,0,.6))}
.sponsors-dark .logo:hover img{transform:translateY(-5px) scale(1.05);opacity:1}
.sponsors-dark .logo .web{color:rgba(245,241,234,.7)}
.sponsors-dark .logo:hover .web{color:#fff}
/* white→color crossfade on hover */
.logo-media{position:relative;display:inline-flex;line-height:0}
.logo-media .lw{transition:opacity .5s var(--ease)}
.sponsors-dark .logo-media .lc{position:absolute;left:0;top:0;height:100%;width:auto;max-width:none;opacity:0;transition:opacity .5s var(--ease)}
.sponsors-dark .logo:hover .lw{opacity:0}
.sponsors-dark .logo:hover .lc{opacity:1}
.sponsors-dark .tier.platinum .logo img{--lh:300px}
.sponsors-dark .tier.gold .logo img{--lh:210px}
.sponsors-dark .tier.silver .logo img{--lh:178px}
.sponsors-dark .tier.bronze .logo img{--lh:160px}
.sponsors-dark .tier.silver .logos{max-width:1400px;margin-inline:auto}
.sponsors-dark .tier.partners .logo img{--lh:104px;max-width:340px}
.sponsors-dark .tier.partners .logos{gap:clamp(34px,4vw,64px);row-gap:clamp(28px,3vw,48px);max-width:1180px;margin-inline:auto}
.sponsors-dark .tier.media .logo img{--lh:96px;max-width:300px}
.sponsors-dark .tier.media .logos{gap:clamp(40px,5vw,80px);row-gap:clamp(28px,3vw,44px);max-width:1000px;margin-inline:auto}
/* exhibitors — two-row marquee, white logos on dark */
.marquee-dark{margin-top:clamp(16px,2vw,28px)}
.marquee-dark .marquee-row img{filter:none;opacity:.66;height:clamp(96px,11vw,168px);transition:opacity .3s}
.marquee-dark .marquee-row{gap:clamp(70px,8vw,140px)}
.marquee-dark .marquee-row.reverse{animation-direction:reverse;animation-duration:46s}
.marquee-dark:hover .marquee-row img{opacity:.85}
@media(max-width:760px){
  .sponsors-dark .tier.partners .logo img{--lh:64px}
  .marquee-dark .marquee-row img{height:clamp(72px,12vw,104px)}
}
@media(max-width:760px){
  .sponsors-dark .tier.platinum .logo img{--lh:160px}
  .sponsors-dark .tier.gold .logo img{--lh:120px}
  .sponsors-dark .tier.silver .logo img{--lh:104px}
  .sponsors-dark .tier.bronze .logo img{--lh:96px}
}

/* marquee exhibitors */
.marquee{overflow:hidden;position:relative;margin-top:clamp(30px,3.5vw,50px);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee-row{display:flex;gap:clamp(40px,5vw,80px);width:max-content;animation:marq 38s linear infinite}
.marquee:hover .marquee-row{animation-play-state:paused}
.marquee-row img{height:46px;width:auto;object-fit:contain;filter:saturate(.5) opacity(.85)}
@keyframes marq{to{transform:translateX(-50%)}}

/* ============================================================
   COUNTDOWN / CTA band
   ============================================================ */
.cta-band{background:var(--orange);color:#1a0c03;position:relative;overflow:hidden}
.cta-band .wrap{position:relative;z-index:2;display:grid;grid-template-columns:1.3fr 1fr;gap:40px;align-items:center}
.cta-band h2{font-size:clamp(30px,4.2vw,68px);text-transform:uppercase;line-height:.94;color:#190b02}
.cta-band p{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.12em;font-weight:600;font-size:14px;margin-top:16px;color:rgba(25,11,2,.7)}
.cta-band .ghost-word{position:absolute;right:-2%;bottom:-26%;font-family:var(--f-disp);font-weight:900;font-size:34vw;line-height:1;
  color:rgba(25,11,2,.07);z-index:1;pointer-events:none;text-transform:uppercase}
.countdown{display:flex;gap:14px}
.cd-unit{background:rgba(25,11,2,.9);color:var(--orange);padding:18px 8px;text-align:center;min-width:78px;flex:1}
.cd-unit .v{font-family:var(--f-disp);font-weight:900;font-size:clamp(28px,3.2vw,46px);line-height:1;color:#fff}
.cd-unit .l{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.14em;font-size:10.5px;margin-top:8px;color:rgba(255,255,255,.55)}
.cta-band .btn{margin-top:26px}

/* top countdown strip */
.cd-strip{background:var(--bg-2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:clamp(40px,5.5vw,80px) var(--pad)}
.cd-strip .wrap{display:flex;flex-direction:column;align-items:center;gap:clamp(20px,3vw,38px);text-align:center}
.cd-strip-grid{display:flex;align-items:flex-start;justify-content:center;gap:clamp(10px,2.5vw,44px)}
.cd-big{display:flex;flex-direction:column;align-items:center;min-width:clamp(50px,7vw,108px)}
.cd-big .v{font-family:var(--f-disp);font-weight:900;font-size:clamp(38px,6.8vw,96px);line-height:.86;letter-spacing:-.03em;color:var(--ink);font-variant-numeric:tabular-nums}
.cd-big .l{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.2em;font-size:clamp(10px,.9vw,13px);color:var(--orange);margin-top:12px}
.cd-sep{font-family:var(--f-disp);font-weight:900;font-size:clamp(30px,5vw,74px);line-height:.86;color:var(--line);align-self:flex-start}
@media(max-width:560px){.cd-sep{display:none}.cd-strip-grid{gap:20px 28px;flex-wrap:wrap}.cd-big{min-width:40%}}

/* ============================================================
   FOOTER
   ============================================================ */
.footer{background:#070504;padding:clamp(60px,7vw,100px) var(--pad) 30px;border-top:1px solid var(--line)}
.foot-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.2fr;gap:40px}
.foot-brand img{height:80px;filter:brightness(0) invert(1);margin-bottom:22px}
.foot-brand p{color:var(--ink-dim);font-size:14px;max-width:32ch;line-height:1.6}
.foot-col h4{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.16em;font-size:12px;color:var(--orange);margin-bottom:18px;font-weight:700}
.foot-col a,.foot-col p{display:block;color:var(--ink-dim);font-size:14px;margin-bottom:11px;transition:color .25s;line-height:1.5}
.foot-col a:hover{color:var(--ink)}
.foot-organiser{display:block;margin-top:14px}
.foot-organiser img{height:54px;width:auto;opacity:.92;transition:opacity .3s}
.foot-news{display:flex;border:1px solid var(--line);margin-top:6px}
.foot-news input{flex:1;background:transparent;border:none;color:var(--ink);padding:13px 14px;font-family:var(--f-body);font-size:14px;outline:none}
.foot-news input::placeholder{color:var(--ink-faint)}
.foot-news button{background:var(--orange);color:#1a0c03;padding:0 18px;font-family:var(--f-cond);text-transform:uppercase;font-weight:700;letter-spacing:.1em;font-size:12px;transition:background .3s}
.foot-news button:hover{background:var(--ink);color:#000}
.foot-social{display:flex;gap:10px;margin-top:20px}
.foot-social a{width:40px;height:40px;border:1px solid var(--line);display:grid;place-items:center;transition:all .3s}
.foot-social a:hover{background:var(--orange);border-color:var(--orange);color:#1a0c03}
.foot-bottom{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;
  margin-top:clamp(46px,5vw,72px);padding-top:26px;border-top:1px solid var(--line);
  font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.1em;font-size:11.5px;color:var(--ink-faint)}
.foot-bottom a:hover{color:var(--orange)}

/* ============================================================
   REVEAL ANIMATIONS
   ============================================================ */
[data-reveal]{opacity:0;transform:translateY(34px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
[data-reveal="left"]{transform:translateX(-40px)}
[data-reveal="right"]{transform:translateX(40px)}
[data-reveal="scale"]{transform:scale(.94)}
[data-reveal="clip"]{opacity:1;clip-path:inset(0 0 100% 0);transform:none;transition:clip-path 1s var(--ease)}
[data-reveal].in{opacity:1;transform:none;clip-path:inset(0 0 0 0)}
[data-stagger]>*{opacity:0;transform:translateY(30px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
[data-stagger].in>*{opacity:1;transform:none}
[data-stagger].in>*{transition-delay:calc(var(--d,.06s)*var(--i,0))}

/* line-mask headline reveal */
.mask-lines .l{overflow:hidden;display:block}
.mask-lines .l>span{display:block;transform:translateY(110%);transition:transform .9s var(--ease)}
.mask-lines.in .l>span{transform:translateY(0)}
.mask-lines.in .l:nth-child(2)>span{transition-delay:.08s}
.mask-lines.in .l:nth-child(3)>span{transition-delay:.16s}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important}
  [data-reveal],[data-stagger]>*,.mask-lines .l>span,.hero-title .l>span,.hero-brand,.hero-wm .hw-line,.hero-wm .hw-img,.hero-reveal>*,.hero-bg img{opacity:1!important;transform:none!important;clip-path:none!important}
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media(max-width:1080px){
  .intro-grid{grid-template-columns:1fr}
  .intro-media{aspect-ratio:16/10}
  .spk-grid{grid-template-columns:repeat(3,1fr)}
  .cta-band .wrap{grid-template-columns:1fr}
  .foot-top{grid-template-columns:1fr 1fr}
}
@media(max-width:1024px){
  .nav,.brand .brand-tag{display:none}
  /* The language switch stays visible below 1024px. It used to be hidden
     with the desktop nav, which left a phone with no way to reach Croatian
     at all — the switch lives only here, there is no /hr URL to fall back
     on. Bigger hit area than on desktop: it is a thumb target now. */
  .lang{font-size:14px;gap:6px}
  .lang button{padding:9px 3px}
  /* place-content, not just place-items: the two grid rows were stretching to
     fill the 44px button, which left the bars 24.5px apart. The .x rotation
     below nudges each one 3.5px, which only closes a 7px gap — so the open
     state drew a chevron instead of a cross. Rows sized to the bars, the
     pair centred as a block, and it is a real X. */
  .menu-toggle{display:grid;place-items:center;place-content:center;width:44px;height:44px;border:1px solid var(--line);gap:5px}
  .menu-toggle span{width:20px;height:2px;background:var(--ink);display:block;transition:.3s}
  .menu-toggle.x span:nth-child(1){transform:translateY(3.5px) rotate(45deg)}
  .menu-toggle.x span:nth-child(2){transform:translateY(-3.5px) rotate(-45deg)}
  /* The list is centred inside the padding, not inside the whole screen, so
     the first item always clears the bar — with eight items at the old size
     centring put POCETNA straight through the logo. */
  .mobile-nav{position:fixed;inset:0;z-index:90;background:var(--bg);transform:translateY(-100%);
    transition:transform .5s var(--ease);display:flex;flex-direction:column;justify-content:center;gap:2px;
    padding:clamp(92px,13vh,112px) var(--pad) 40px;overflow-y:auto}
  /* A landscape phone has no room to centre anything: start at the top. */
  @media(max-height:560px){.mobile-nav{justify-content:flex-start}}
  .mobile-nav.open{transform:none}
  /* The burger already becomes an X when the menu opens — it just used to be
     underneath the overlay, so the only way out of a full-screen menu was to
     pick a link. The bar now sits above it. Its own background comes off
     while the menu is open: the overlay is already solid, and a scrolled page
     would otherwise draw the .solid rule's line across the middle of it. */
  body.nav-open .topbar{background:none;backdrop-filter:none;border-bottom-color:transparent}
  body.nav-open .menu-toggle{border-color:var(--orange)}
  body.nav-open .menu-toggle span{background:var(--orange)}
  .mobile-nav a{font-family:var(--f-disp);font-weight:800;text-transform:uppercase;font-size:clamp(21px,5.6vw,27px);line-height:1.25;color:var(--ink-dim);padding:6px 0}
  .mobile-nav a:hover{color:var(--orange)}
  .stats{grid-template-columns:repeat(2,1fr)}
  .topics-grid .topic{grid-column:span 6!important;min-height:240px}
  .spk-grid{grid-template-columns:repeat(2,1fr)}
  .aus-grid{grid-template-columns:1fr}
  .aus:nth-child(odd){border-right:none;padding-right:0}
  .aus:nth-child(even){padding-left:0}
  .spk-modal-card{grid-template-columns:1fr;max-height:90vh}
  .spk-modal-card .ph{height:240px}
  .foot-top{grid-template-columns:1fr}
}
/* Phones. The bar was already over budget before the language switch was
   put back: logo 133 + REGISTRACIJA 165 + burger 44 + gaps came to 404px
   inside a 390px screen, so the burger sat half off the edge. The header
   button is the one thing here that is said twice elsewhere — the hero
   carries the same call to action full size, and it is the orange line at
   the bottom of the open menu — so it is what steps aside. */
@media(max-width:560px){
  .topbar-right .btn{display:none}
  .topbar-right{gap:14px}
  .lang{font-size:14px;letter-spacing:.08em}
}
@media(max-width:520px){
  .topics-grid .topic{grid-column:span 12!important}
  .spk-grid{grid-template-columns:1fr 1fr}
  .countdown{flex-wrap:wrap}
  .cd-unit{min-width:64px}
}
.mobile-nav{display:none}
@media(max-width:1024px){.mobile-nav{display:flex}}

/* Present for assistive tech and search engines, absent from the layout. The
   standard recipe: clipped to a 1px box, not display:none, which would take
   it out of the accessibility tree too. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* ============================================================
   SUBPAGE SHELL
   ============================================================ */
.page-hero{position:relative;min-height:62svh;display:flex;flex-direction:column;justify-content:flex-end;
  padding:clamp(110px,16vh,180px) var(--pad) clamp(40px,5vw,70px);overflow:hidden;isolation:isolate}
.page-hero .duo-wrap{position:absolute;inset:0;z-index:-2}
.page-hero img{width:100%;height:100%;object-fit:cover;transform:scale(1.08);transition:transform 9s linear}
.page-hero.ready img{transform:scale(1)}
.page-hero::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(180deg,rgba(12,10,9,.6),rgba(12,10,9,.35) 45%,var(--bg) 99%),linear-gradient(90deg,rgba(12,10,9,.78),transparent 70%)}
.page-hero.light::after{background:linear-gradient(180deg,rgba(12,10,9,.08),transparent 30%,transparent 68%,var(--bg) 100%)}
.page-hero.light img{filter:url(#ceste-duotone) brightness(1.28) contrast(1.02)}
.page-hero .wrap{max-width:var(--maxw);margin:0 auto;width:100%}
.page-hero h1{font-size:clamp(44px,8vw,128px);text-transform:uppercase;line-height:.9;letter-spacing:-.02em;
  margin-top:18px}
.page-hero h1 .o{color:var(--orange)}
.page-hero .pcrumb{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.18em;font-size:12px;color:var(--ink-dim)}
.page-hero .pcrumb a:hover{color:var(--orange)}

.prose{max-width:74ch}
.prose p{color:var(--ink-dim);font-size:clamp(15px,1.15vw,17.5px);line-height:1.75;margin-bottom:1.3em}
.prose p.lead-p{color:var(--ink);font-size:clamp(19px,1.7vw,26px);line-height:1.5;font-family:var(--f-disp);font-weight:500}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,4vw,70px)}
@media(max-width:860px){.two-col{grid-template-columns:1fr}}

/* committee / list cards */
.namelist{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 40px;margin-top:20px}
.namelist li{list-style:none;padding:12px 0;border-bottom:1px solid var(--line);color:var(--ink);font-size:15px;display:flex;gap:12px;align-items:baseline}
.namelist li .mk{color:var(--orange);font-family:var(--f-cond);font-weight:700;font-size:12px}
@media(max-width:680px){.namelist{grid-template-columns:1fr}}

/* committees */
.committee{border-top:2px solid var(--orange);padding-top:24px}
.cm-title{font-family:var(--f-disp);font-weight:800;text-transform:uppercase;font-size:clamp(20px,1.9vw,28px);letter-spacing:-.01em;line-height:1}
.cm-pres{margin-top:18px;font-size:clamp(16px,1.25vw,19px);color:var(--ink);font-weight:500;font-family:var(--f-disp)}
.cm-role{display:block;font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.18em;font-size:11.5px;font-weight:700;color:var(--orange);margin-bottom:4px}
.cm-lab{display:block;margin-top:24px;margin-bottom:4px;font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.18em;font-size:11.5px;font-weight:700;color:var(--ink-dim)}

/* program timeline */
.day{border-top:1px solid var(--line);padding:clamp(24px,3vw,40px) 0;display:grid;grid-template-columns:240px 1fr;gap:30px}
.day .dlabel{font-family:var(--f-disp);font-weight:800;text-transform:uppercase;font-size:clamp(18px,1.5vw,24px);line-height:1.1}
.day .dlabel span{display:block;font-family:var(--f-cond);font-weight:600;font-size:13px;letter-spacing:.14em;color:var(--orange);margin-top:6px}
.events{display:flex;flex-direction:column}
.event{display:flex;gap:24px;padding:16px 0;border-bottom:1px solid var(--line-soft);align-items:baseline}
.event:last-child{border-bottom:none}
.event .tm{font-family:var(--f-cond);font-weight:700;letter-spacing:.06em;color:var(--orange);font-size:15px;min-width:120px;flex-shrink:0}
.event .ev{font-size:clamp(15px,1.2vw,18px);color:var(--ink);font-weight:500}
@media(max-width:680px){.day{grid-template-columns:1fr;gap:14px}.event{flex-direction:column;gap:4px}.event .tm{min-width:0}}

/* pricing / cards */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.card{background:var(--bg-2);padding:clamp(24px,2.6vw,38px)}
.card h3{font-size:22px;text-transform:uppercase;margin-bottom:10px}
.card .price{font-family:var(--f-disp);font-weight:900;font-size:clamp(34px,3.4vw,52px);color:var(--orange);line-height:1;margin:14px 0}
.card .price small{font-size:14px;color:var(--ink-dim);font-weight:600}
.card ul{list-style:none;margin-top:16px}
.card li{padding:9px 0;border-top:1px solid var(--line-soft);color:var(--ink-dim);font-size:14px;display:flex;gap:10px}
.card li::before{content:"→";color:var(--orange)}
@media(max-width:860px){.cards{grid-template-columns:1fr}}

/* info rows */
.inforow{display:flex;justify-content:space-between;gap:20px;padding:15px 0;border-bottom:1px solid var(--line);font-size:15px}
.inforow .k{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.1em;font-size:13px;color:var(--ink-dim)}
.inforow .v{color:var(--ink);font-weight:600;text-align:right}

/* gallery grid */
.gal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.gal-card{position:relative;overflow:hidden;aspect-ratio:4/3;background:var(--bg-3);display:flex;align-items:flex-end;padding:22px;isolation:isolate}
.gal-card .duo-wrap{position:absolute;inset:0;z-index:-2}
.gal-card img{transition:transform 1s var(--ease)}
.gal-card::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,transparent 40%,rgba(12,10,9,.9))}
.gal-card:hover img{transform:scale(1.06)}
.gal-card .yr{font-family:var(--f-disp);font-weight:900;font-size:clamp(26px,3vw,44px);line-height:1}
.gal-card .ct{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.1em;font-size:12px;color:var(--ink-dim);margin-top:4px}
@media(max-width:860px){.gal-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.gal-grid{grid-template-columns:1fr}}
.gal-grid.clean .gal-card::after{display:none}
.gal-grid.clean .gal-card img{filter:none}

/* gallery archive — clean images, caption below */
.gallery-archive{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,2.4vw,34px)}
.ga-link{display:block;color:inherit;text-decoration:none}
.ga-card{cursor:zoom-in}
.ga-ph{position:relative;overflow:hidden;aspect-ratio:3/2;background:var(--bg-3)}
.ga-ph img{width:100%;height:100%;object-fit:cover;transition:transform .9s var(--ease)}
.ga-card:hover .ga-ph img{transform:scale(1.045)}
.ga-cap{display:flex;align-items:baseline;gap:14px;margin-top:14px}
.ga-cap .yr{font-family:var(--f-disp);font-weight:900;font-size:clamp(22px,2vw,32px);color:var(--orange);line-height:1;letter-spacing:-.02em}
.ga-cap .yr sup{font-size:.42em;font-weight:800}
.ga-cap .ct{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.1em;font-size:12.5px;color:var(--ink-dim)}
@media(max-width:860px){.gallery-archive{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.gallery-archive{grid-template-columns:1fr}}

/* proceedings archive — book covers, each opens its PDF in a new tab */
.proceedings-archive{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(34px,4vw,64px) clamp(18px,2.4vw,34px)}
.pr-link{display:block;color:inherit;text-decoration:none}
.pr-cover{position:relative;aspect-ratio:600/848;overflow:hidden;background:var(--paper);box-shadow:0 18px 40px -18px rgba(0,0,0,.8);transition:transform .6s var(--ease),box-shadow .6s var(--ease)}
.pr-cover img{width:100%;height:100%;object-fit:cover;display:block}
.pr-cover::after{content:"";position:absolute;inset:0;border:1px solid var(--line);pointer-events:none}
.pr-link:hover .pr-cover,.pr-link:focus-visible .pr-cover{transform:translateY(-8px);box-shadow:0 30px 50px -20px rgba(0,0,0,.9),0 0 0 2px var(--orange)}
.pr-cap{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;margin-top:18px}
.pr-cap .yr{font-family:var(--f-disp);font-weight:900;font-size:clamp(22px,2vw,32px);color:var(--orange);line-height:1;letter-spacing:-.02em}
.pr-cap .yr sup{font-size:.42em;font-weight:800}
.pr-cap .ct{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.1em;font-size:12.5px;color:var(--ink-dim)}
.pr-open{flex-basis:100%;font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.1em;font-size:12.5px;color:var(--ink);transition:color .3s}
.pr-open .sz{color:var(--ink-faint)}
.pr-link:hover .pr-open{color:var(--orange)}
@media(max-width:1080px){.proceedings-archive{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.proceedings-archive{grid-template-columns:1fr 1fr}}

/* lightbox */
.lightbox{position:fixed;inset:0;z-index:300;display:none;align-items:center;justify-content:center;padding:clamp(20px,5vw,72px);background:rgba(7,4,2,.93);backdrop-filter:blur(7px)}
.lightbox.open{display:flex}
.lb-img{max-width:100%;max-height:100%;object-fit:contain;box-shadow:0 30px 90px rgba(0,0,0,.65);animation:lbin .4s var(--ease)}
@keyframes lbin{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
.lb-close{position:absolute;top:clamp(16px,2.5vw,28px);right:clamp(16px,2.5vw,32px);width:48px;height:48px;border:1px solid var(--line);color:var(--ink);display:grid;place-items:center;font-size:17px;background:rgba(12,10,9,.5);transition:all .25s}
.lb-close:hover{background:var(--orange);border-color:var(--orange);color:#1a0c03;transform:rotate(90deg)}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:56px;height:56px;border:1px solid var(--line);color:var(--ink);display:grid;place-items:center;font-size:30px;line-height:1;background:rgba(12,10,9,.5);transition:all .25s}
.lb-nav:hover{background:var(--orange);border-color:var(--orange);color:#1a0c03}
.lb-prev{left:clamp(12px,3vw,40px)}
.lb-next{right:clamp(12px,3vw,40px)}
.lb-count{position:absolute;bottom:clamp(18px,3vw,34px);left:50%;transform:translateX(-50%);font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.2em;font-size:12px;color:var(--ink-dim)}
@media(max-width:600px){.lb-nav{width:44px;height:44px;font-size:24px}}

/* contact */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,4vw,64px)}
.contact-grid.one-col{grid-template-columns:1fr;max-width:760px}
.contact-grid .map{position:relative;overflow:hidden;min-height:340px;background:var(--bg-3)}
.contact-grid .map .duo-wrap{position:absolute;inset:0}
@media(max-width:860px){.contact-grid{grid-template-columns:1fr}}

/* ============================================================
   TWEAKS PANEL
   ============================================================ */
body.no-anim [data-reveal],body.no-anim [data-stagger]>*,body.no-anim .mask-lines .l>span,
body.no-anim .hero-brand,body.no-anim .hero-wm .hw-img,body.no-anim .hero-reveal>*,body.no-anim .hero-meta,body.no-anim .hero-cta{
  opacity:1!important;transform:none!important;clip-path:none!important}
body.orig-img .duo{filter:none!important}
.tweaks{position:fixed;top:0;right:0;z-index:200;width:312px;max-width:92vw;height:100vh;
  background:rgba(12,10,9,.93);backdrop-filter:blur(16px) saturate(120%);border-left:1px solid var(--line);
  display:flex;flex-direction:column;transform:translateX(102%);transition:transform .45s var(--ease);
  font-family:var(--f-body)}
.tweaks.show{transform:none}
.tweaks-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--line)}
.tweaks-head span{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.22em;font-weight:700;font-size:14px;color:var(--ink)}
.tweaks-head button{width:32px;height:32px;border:1px solid var(--line);display:grid;place-items:center;color:var(--ink);transition:all .25s}
.tweaks-head button:hover{background:var(--orange);border-color:var(--orange);color:#1a0c03;transform:rotate(90deg)}
.tweaks-body{padding:22px;overflow:auto;display:flex;flex-direction:column;gap:24px}
.tw-group>label{display:block;font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.16em;font-size:11px;color:var(--ink-dim);margin-bottom:11px}
.tw-swatches{display:flex;gap:10px}
.tw-swatches button{width:38px;height:38px;border-radius:50%;background:var(--s);border:2px solid transparent;outline:1px solid var(--line);transition:transform .2s,border-color .2s}
.tw-swatches button:hover{transform:scale(1.1)}
.tw-swatches button.on{border-color:var(--ink);outline-color:var(--ink)}
.tw-seg{display:flex;gap:6px;flex-wrap:wrap}
.tw-seg button{flex:1;min-width:fit-content;padding:10px 12px;border:1px solid var(--line);background:transparent;color:var(--ink-dim);
  font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:600;transition:all .25s}
.tw-seg button:hover{color:var(--ink);border-color:var(--ink-dim)}
.tw-seg button.on{background:var(--orange);border-color:var(--orange);color:#1a0c03}
.tweaks-foot{padding:16px 22px;border-top:1px solid var(--line);font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;color:var(--ink-faint)}

/* ============ Ported tables & forms (redesign) ============ */
.data-table{width:100%;border-collapse:collapse;font-family:var(--f-body);color:var(--ink);margin:28px 0}
.data-table th,.data-table td{padding:14px 16px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
.data-table thead th{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.12em;font-size:12px;color:var(--ink-dim);background:var(--bg-2)}
.data-table tbody tr:hover{background:var(--bg-2)}
.data-table .active-period,.data-table .active-price{color:var(--orange);font-weight:700}
.data-table .price-row td,.data-table .price{font-family:var(--f-disp);font-weight:800;color:var(--orange)}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
@media(max-width:720px){.data-table.responsive thead{display:none}
  .data-table.responsive tr{display:block;border:1px solid var(--line);margin-bottom:14px;padding:10px}
  .data-table.responsive td{display:flex;justify-content:space-between;border:0;padding:8px 4px}
  .data-table.responsive td::before{content:attr(data-label);color:var(--ink-dim);font-family:var(--f-cond);text-transform:uppercase;font-size:11px;letter-spacing:.1em}}

.form-card{background:var(--bg-2);border:1px solid var(--line);padding:clamp(20px,4vw,40px);margin:28px 0}
.form-row{display:grid;gap:18px;grid-template-columns:1fr 1fr}
@media(max-width:640px){.form-row{grid-template-columns:1fr}}
.form-field{display:flex;flex-direction:column;gap:7px;margin-bottom:16px}
.form-field label{font-family:var(--f-cond);text-transform:uppercase;letter-spacing:.1em;font-size:12px;color:var(--ink-dim)}
.form-field input,.form-field select,.form-field textarea{background:var(--bg-3);border:1px solid var(--line);color:var(--ink);padding:12px 14px;font-family:var(--f-body);font-size:15px;border-radius:0}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--orange)}
.form-field input[type=file]{padding:10px}
.form-note{color:var(--ink-faint);font-size:13px;margin-top:6px}
.form-msg{padding:12px 16px;margin:14px 0;border:1px solid var(--line)}
.form-msg.error{border-color:#c0392b;color:#e88}
.form-msg.success{border-color:var(--orange);color:var(--orange)}
.pkg-radio{display:flex;gap:12px;align-items:flex-start;padding:14px;border:1px solid var(--line);margin-bottom:10px;cursor:pointer}
.pkg-radio:hover{border-color:var(--orange)}
.pkg-radio input{margin-top:4px}

/* ============ Per-year photo gallery grid (full-color originals, no duotone) ============ */
.photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:860px){.photo-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.photo-grid{grid-template-columns:1fr}}
.photo-grid figure{margin:0;aspect-ratio:4/3;overflow:hidden;background:var(--bg-3);cursor:zoom-in}
.photo-grid img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s var(--ease)}
.photo-grid figure:hover img{transform:scale(1.04)}

/* ============================================================
   FIRST 50 PROMO BAND (homepage, under the hero)
   ============================================================
   Ships with [hidden]; js/promo.js removes it once there is an offer to
   show. The rules below therefore never apply to an empty band. */
.promo-band{
  background:var(--orange);
  color:#1a0c03;
  padding:clamp(22px,3vw,34px) var(--pad);
  position:relative;
  border-top:1px solid rgba(26,12,3,.14);
}
.promo-band[hidden]{display:none}
.promo-band .wrap{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:clamp(20px,4vw,54px);
  align-items:center;
}

.promo-figure{display:flex;flex-direction:column;gap:6px;min-width:0}
/* A black plate, not a caption. Set in the band's own colour at 12px and 72%
   opacity, the name of the offer read as a label on the price; the offer is
   the thing being advertised, so it is the one element that inverts the band. */
.promo-name{
  align-self:flex-start;
  background:var(--bg);
  color:var(--orange);
  font-family:var(--f-cond);
  text-transform:uppercase;
  letter-spacing:.26em;
  font-weight:700;
  font-size:clamp(13px,1.4vw,16px);
  line-height:1;
  /* The tracking pushes a gap past the last letter; the padding is short on
     the right by that much so the plate looks centred. */
  padding:9px 10px 8px 14px;
  border-radius:2px;
}
.promo-amount{display:flex;align-items:baseline;gap:8px;white-space:nowrap}
.promo-price{
  font-family:var(--f-disp);
  font-weight:900;
  font-size:clamp(30px,4vw,50px);
  line-height:.95;
  letter-spacing:-.02em;
}
.promo-vat{
  font-family:var(--f-cond);
  text-transform:uppercase;
  letter-spacing:.14em;
  font-weight:700;
  font-size:13px;
  color:rgba(26,12,3,.72);
}

.promo-copy{min-width:0}
.promo-copy p{margin:0;font-size:15px;line-height:1.45}
.promo-lead{font-weight:700}
.promo-saving{color:rgba(26,12,3,.78);margin-top:2px!important}
.promo-count{
  font-family:var(--f-cond);
  text-transform:uppercase;
  letter-spacing:.1em;
  font-weight:700;
  font-size:13px;
  margin-top:12px!important;
}

/* The meter fills as places are taken, so a full bar reads as "almost gone" —
   the same direction as the number above it. */
.promo-meter{
  height:8px;
  background:rgba(26,12,3,.18);
  border-radius:999px;
  overflow:hidden;
  margin-top:7px;
  max-width:420px;
}
.promo-meter[hidden]{display:none}
.promo-meter-fill{
  display:block;
  height:100%;
  width:0;
  background:#1a0c03;
  border-radius:999px;
  transition:width .9s var(--ease);
}
.promo-note{
  margin-top:9px!important;
  font-size:12.5px;
  color:rgba(26,12,3,.7);
}
.promo-saving[hidden],.promo-count[hidden],.promo-note[hidden]{display:none}

.promo-cta{background:#1a0c03;color:var(--orange);white-space:nowrap}
.promo-cta::before{background:var(--ink)}
.promo-cta:hover{color:#1a0c03}

@media(max-width:1080px){
  .promo-band .wrap{grid-template-columns:auto 1fr;row-gap:22px}
  .promo-cta{grid-column:1/-1;justify-self:start}
}
@media(max-width:640px){
  .promo-band .wrap{grid-template-columns:1fr}
  .promo-meter{max-width:none}
}

/* ============================================================
   NEWS POP-UP
   ============================================================
   Built entirely by js/popup.js — there is no markup for it in any page. */
.news-pop{
  position:fixed;inset:0;z-index:130;
  display:flex;align-items:center;justify-content:center;
  padding:24px;
  pointer-events:none;
}
.news-pop-bg{
  position:absolute;inset:0;
  background:rgba(7,5,4,.82);
  backdrop-filter:blur(6px);
  opacity:0;transition:opacity .35s var(--ease);
  pointer-events:auto;
}
.news-pop-card{
  position:relative;
  width:min(560px,100%);
  max-height:88svh;
  overflow:auto;
  background:var(--bg-2);
  border:1px solid var(--line);
  opacity:0;
  transform:translateY(18px) scale(.985);
  transition:opacity .4s var(--ease),transform .4s var(--ease);
  pointer-events:auto;
}
.news-pop.open .news-pop-bg{opacity:1}
.news-pop.open .news-pop-card{opacity:1;transform:none}

.news-pop-close{
  position:absolute;top:12px;right:12px;z-index:2;
  width:36px;height:36px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(12,10,9,.72);
  color:var(--ink);
  font-size:15px;line-height:1;
  border:1px solid var(--line);
  transition:background .2s,color .2s;
}
.news-pop-close:hover{background:var(--orange);color:#1a0c03}

.news-pop-media{aspect-ratio:16/9;overflow:hidden;background:var(--bg-3)}
.news-pop-media img{width:100%;height:100%;object-fit:cover}

.news-pop-body{padding:clamp(24px,4vw,36px)}
.news-pop-kicker{
  display:block;
  font-family:var(--f-cond);
  text-transform:uppercase;
  letter-spacing:.32em;
  font-weight:700;
  font-size:11px;
  color:var(--orange);
  margin-bottom:12px;
}
.news-pop-body h2{
  font-family:var(--f-disp);
  font-weight:800;
  font-size:clamp(22px,3vw,30px);
  line-height:1.12;
  letter-spacing:-.01em;
  margin-bottom:14px;
}
.news-pop-text p{color:var(--ink-dim);font-size:15px;line-height:1.6}
.news-pop-text p + p{margin-top:11px}
.news-pop-body .btn{margin-top:22px}

@media(max-width:520px){
  .news-pop{padding:14px}
  .news-pop-media{aspect-ratio:3/2}
}

/* ============================================================
   ORGANISING TEAM (about-us)
   ============================================================
   Built on the speaker card's proportions so the two pages feel related, but
   the portraits keep their own colour: the greyscale/duotone treatment is for
   conference imagery, and these are the people a visitor will email. */
.team-sec{background:var(--bg-2)}
.team-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:clamp(22px,3vw,46px);
  max-width:1240px;
}
.team{margin:0}
@media(max-width:1100px){.team-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.team-ph{position:relative;aspect-ratio:4/5;overflow:hidden;background:var(--bg-3)}
.team-ph img{
  width:100%;height:100%;
  object-fit:cover;object-position:center top;
  transition:transform .7s var(--ease);
}
.team:hover .team-ph img{transform:scale(1.035)}
.team-nm{
  font-family:var(--f-disp);font-weight:800;
  font-size:clamp(17px,1.3vw,21px);line-height:1.05;
  margin-top:18px;letter-spacing:-.01em;
}
.team-ro{
  font-family:var(--f-cond);text-transform:uppercase;
  letter-spacing:.08em;font-size:11.5px;
  color:var(--orange);margin-top:8px;line-height:1.45;
}
.team-ro .ln{display:block;height:1px;background:var(--line);margin-bottom:9px;width:100%}

@media(max-width:820px){.team-grid{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.team-grid{grid-template-columns:1fr;max-width:340px}}

/* ============================================================
   CMS TEXT FORMATTING
   Bold is a plain <b>; these two are the other marks the in-page editor
   can write, and there are no others. Deliberately plain: an admin marking
   a phrase should not be able to invent a new typeface, only to reach for
   the ones the design already has. See site/admin/assets/inline-editor.js.
   ============================================================ */
.tx-caps{text-transform:uppercase;letter-spacing:.02em}
.tx-hl{color:var(--orange)}

/* [hidden] is a default the stylesheet can outrank by accident: the hours
   badge is display:flex, and a display rule beats the UA's [hidden] every
   time. Stated once here so switching a section off cannot half-work. */
[hidden]{display:none!important}

/* A section switched off in the CMS. On the live page i18n.js sets [hidden]
   and it is gone; inside the editor it stays on screen, dimmed and struck
   through the corner, because an admin who hid something has to be able to
   find it again. */
.cms-on [data-cms-block-off="1"]{
  opacity:.42;
  outline:1px dashed rgba(238,106,36,.65);
  outline-offset:6px;
  position:relative;
}
