/* =========================================================
   TRF5 – 5th Timing Research Forum · Trieste 2027
   Main stylesheet · Divulgando Srl
   Design tokens are on :root – change them here, not inline.
   ========================================================= */


@font-face{font-family:"Outfit";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/outfit-latin-300-normal.woff2) format("woff2")}
@font-face{font-family:"Outfit";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/outfit-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Outfit";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/outfit-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Outfit";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/outfit-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Figtree";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/figtree-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Figtree";font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/figtree-latin-400-italic.woff2) format("woff2")}
@font-face{font-family:"Figtree";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/figtree-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Figtree";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/figtree-latin-600-normal.woff2) format("woff2")}

:root{
  /* colour */
  --ink:#2a2f33;          /* TRF black */
  --ink-2:#3a4148;
  --muted:#5f6871;
  --line:#dde2e6;
  --paper:#ffffff;
  --paper-2:#f4f6f5;
  --green:#6cbf3a;        /* TRF hand green */
  --green-dk:#3f8a1c;     /* accessible green for text/links on white */
  --sea:#0e4d6e;          /* Adriatic blue – Trieste */
  --sea-2:#e6f0f4;
  --warn:#b45a00;
  /* type */
  --font:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --display:"Outfit","Figtree",system-ui,sans-serif;
  --fs-0:.875rem; --fs-1:1rem; --fs-2:1.125rem; --fs-3:1.375rem; --fs-4:1.75rem; --fs-5:2.375rem; --fs-6:clamp(2.6rem,6vw,4.25rem);
  /* layout */
  --wrap:1160px; --gut:clamp(16px,4vw,40px); --r:12px; --r-lg:20px;
  --shadow:0 1px 2px rgba(42,47,51,.06),0 6px 24px rgba(42,47,51,.06);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);font-size:var(--fs-1);font-weight:400;line-height:1.65;color:var(--ink);background:var(--paper)}
img,svg{max-width:100%;height:auto;display:block}
a{color:var(--green-dk);text-underline-offset:.18em;text-decoration-thickness:1px}
a:hover{color:var(--ink)}
:focus-visible{outline:3px solid var(--green);outline-offset:2px;border-radius:4px}
h1,h2,h3,h4{font-weight:400;line-height:1.15;letter-spacing:.01em;margin:0 0 .6em}
h1{font-size:var(--fs-6);font-weight:300}
h2{font-size:var(--fs-5);font-weight:300}
h3{font-size:var(--fs-3);font-weight:500}
h4{font-size:var(--fs-2);font-weight:500}
p{margin:0 0 1em}
ul,ol{padding-left:1.25em;margin:0 0 1em}
li{margin:.25em 0}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--gut)}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:#fff;padding:.6em 1em;z-index:100}
.skip:focus{left:8px;top:8px}
.eyebrow{font-size:var(--fs-0);letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-weight:500;margin-bottom:.8em;display:block}
.lead{font-size:var(--fs-2);color:var(--ink-2);max-width:62ch}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- logo (provisional) ---------- */
.logo{display:flex;align-items:center;gap:.55rem;text-decoration:none;color:var(--ink)}
.logo-trf{font-weight:300;font-size:1.9rem;letter-spacing:.14em;line-height:1}
.logo-bar{display:flex;align-items:center;gap:.45rem;background:var(--green);color:#fff;border-radius:999px;padding:.2rem .85rem .2rem .2rem;font-weight:600;letter-spacing:.16em;font-size:.82rem;line-height:1}
.logo-num{display:grid;place-items:center;width:1.9rem;height:1.9rem;border-radius:50%;background:#fff;color:var(--ink);font-size:1.1rem;letter-spacing:0;font-weight:600}
.logo--light{color:#fff}

/* ---------- header / nav ---------- */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.94);backdrop-filter:saturate(1.4) blur(8px);border-bottom:1px solid var(--line)}
.site-header .wrap{display:flex;align-items:center;justify-content:space-between;min-height:72px;gap:1rem}
.nav{display:flex;align-items:center}
.nav-list{list-style:none;margin:0;padding:0;display:flex;gap:.25rem;align-items:center}
.nav-list>li{position:relative;margin:0}
.nav-list a{display:block;padding:.55rem .75rem;color:var(--ink);text-decoration:none;font-weight:500;font-size:.95rem;border-radius:8px}
.nav-list a:hover{background:var(--paper-2)}
.nav-list a[aria-current="page"]{color:var(--green-dk)}
.nav-list a[aria-current="page"]::after{content:"";display:block;height:2px;background:var(--green);margin-top:3px;border-radius:2px}
.sub{list-style:none;margin:0;padding:.5rem;position:absolute;left:0;top:100%;min-width:230px;background:#fff;border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translateY(4px);transition:.15s}
.nav-list>li:hover>.sub,.nav-list>li:focus-within>.sub{opacity:1;visibility:visible;transform:none}
.sub a{font-weight:400;padding:.45rem .7rem}
.sub a[aria-current="page"]::after{display:none}
.nav-cta{margin-left:.5rem}
.nav-toggle{display:none;background:none;border:1px solid var(--line);border-radius:10px;width:44px;height:44px;cursor:pointer;color:var(--ink)}
.nav-toggle span,.nav-toggle span::before,.nav-toggle span::after{display:block;width:20px;height:2px;background:currentColor;margin:auto;position:relative;transition:.2s}
.nav-toggle span::before,.nav-toggle span::after{content:"";position:absolute;left:0}
.nav-toggle span::before{top:-6px}.nav-toggle span::after{top:6px}
.nav-open .nav-toggle span{background:transparent}
.nav-open .nav-toggle span::before{top:0;transform:rotate(45deg)}
.nav-open .nav-toggle span::after{top:0;transform:rotate(-45deg)}

@media (max-width:1040px){
  .nav-toggle{display:block}
  .nav{position:fixed;inset:72px 0 0 0;background:#fff;display:none;overflow-y:auto;padding:1rem var(--gut) 2rem}
  .nav-open .nav{display:block}
  .nav-list{flex-direction:column;align-items:stretch;gap:0}
  .nav-list>li{border-bottom:1px solid var(--line)}
  .nav-list a{padding:.85rem .25rem;font-size:1.05rem}
  .nav-list a[aria-current="page"]::after{display:none}
  .sub{position:static;opacity:1;visibility:visible;transform:none;border:0;box-shadow:none;padding:0 0 .6rem 1rem;min-width:0}
  .sub a{padding:.4rem .25rem;font-size:.98rem;color:var(--ink-2)}
  .nav-cta{margin:1.25rem 0 0}
  .nav-cta .btn{width:100%;justify-content:center}
}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:.5em;padding:.75em 1.3em;border-radius:999px;font-weight:500;font-size:.98rem;text-decoration:none;border:1.5px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer;transition:.15s;line-height:1.2}
.btn:hover{background:var(--green-dk);border-color:var(--green-dk);color:#fff}
.btn--ghost{background:transparent;color:var(--ink)}
.btn--ghost:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn--green{background:var(--green);border-color:var(--green);color:var(--ink)}
.btn--green:hover{background:#fff;border-color:#fff;color:var(--ink)}
.btn--light{background:transparent;border-color:rgba(255,255,255,.7);color:#fff}
.btn--light:hover{background:#fff;color:var(--ink);border-color:#fff}
.btn[aria-disabled="true"]{opacity:.55;pointer-events:none}
.btn-row{display:flex;flex-wrap:wrap;gap:.75rem}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;background:var(--ink);color:#fff}
.hero .wrap{position:relative;z-index:2;padding-top:clamp(3.5rem,9vw,7rem);padding-bottom:clamp(3rem,7vw,5.5rem);display:grid;grid-template-columns:1.25fr .9fr;gap:2.5rem;align-items:center}
.hero h1{margin-bottom:.35em}
.hero h1 strong{font-weight:500}
.hero .eyebrow{color:var(--green)}
.hero-meta{display:flex;flex-wrap:wrap;gap:.5rem 2rem;font-size:var(--fs-2);margin:0 0 2rem;color:#d6dbe0}
.hero-meta b{color:#fff;font-weight:500}
.hero-art{position:absolute;inset:0;z-index:1;opacity:.95}
.hero-art svg{position:absolute;right:-8%;top:50%;transform:translateY(-50%);width:min(760px,80vw);height:auto}
.countdown{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.16);border-radius:var(--r-lg);padding:1.5rem;backdrop-filter:blur(4px)}
.countdown h2{font-size:var(--fs-0);letter-spacing:.18em;text-transform:uppercase;font-weight:500;color:#cfd6dc;margin-bottom:1rem}
.cd-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem;text-align:center}
.cd-grid div{background:rgba(0,0,0,.25);border-radius:10px;padding:.8rem .25rem}
.cd-grid b{display:block;font-size:clamp(1.6rem,4vw,2.4rem);font-weight:300;line-height:1;font-variant-numeric:tabular-nums}
.cd-grid span{font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;color:#aab4bd}
.cd-note{margin:1rem 0 0;font-size:var(--fs-0);color:#cfd6dc}
@media (max-width:860px){.hero .wrap{grid-template-columns:1fr}.hero-art svg{right:-35%;opacity:.5}}

/* page hero (inner pages) */
.page-hero{background:var(--ink);color:#fff;position:relative;overflow:hidden}
.page-hero .wrap{padding-top:clamp(2.75rem,6vw,4.5rem);padding-bottom:clamp(2.25rem,5vw,3.5rem);position:relative;z-index:2}
.page-hero h1{font-size:clamp(2.2rem,5vw,3.4rem);margin-bottom:.3em}
.page-hero .eyebrow{color:var(--green)}
.page-hero p{color:#d6dbe0;max-width:62ch;margin:0;font-size:var(--fs-2)}
.page-hero .hero-art svg{width:min(560px,70vw);right:-6%}
.crumbs{font-size:var(--fs-0);margin-bottom:1rem;color:#aab4bd}
.crumbs a{color:#cfd6dc}

/* ---------- sections ---------- */
.section{padding:clamp(3rem,7vw,5.5rem) 0}
.section--alt{background:var(--paper-2)}
.section--sea{background:var(--sea);color:#fff}
.section--sea a{color:#c9f0b0}
.section-head{display:flex;justify-content:space-between;align-items:end;gap:1rem;flex-wrap:wrap;margin-bottom:2rem}
.section-head h2{margin:0}
.grid{display:grid;gap:1.25rem}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}
.g3{grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:900px){.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.g2,.g3,.g4{grid-template-columns:1fr}}
.split{display:grid;grid-template-columns:260px 1fr;gap:clamp(1.5rem,5vw,4rem)}
@media (max-width:860px){.split{grid-template-columns:1fr}}

/* in-page sub navigation */
.toc{position:sticky;top:96px;align-self:start;border-left:2px solid var(--line);padding-left:1rem}
.toc ul{list-style:none;padding:0;margin:0}
.toc a{display:block;color:var(--ink-2);text-decoration:none;padding:.3rem 0;font-size:.97rem}
.toc a:hover{color:var(--green-dk)}
@media (max-width:860px){.toc{position:static;border:0;padding:0}.toc ul{display:flex;flex-wrap:wrap;gap:.4rem}.toc a{border:1px solid var(--line);border-radius:999px;padding:.35rem .8rem;font-size:.9rem}}
.content>section{padding-bottom:2.75rem;margin-bottom:2.75rem;border-bottom:1px solid var(--line);scroll-margin-top:96px}
.content>section:last-child{border-bottom:0;margin-bottom:0}
.content h2{font-size:clamp(1.8rem,3.5vw,2.25rem)}
.prose{max-width:70ch}

/* ---------- cards ---------- */
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);padding:1.5rem;display:flex;flex-direction:column;gap:.4rem}
.card h3{margin:0 0 .3rem}
.card p:last-child{margin-bottom:0}
.card .more{margin-top:auto;padding-top:.75rem;font-weight:500;text-decoration:none}
.card .more::after{content:" →"}
.card--link{text-decoration:none;color:inherit;transition:.15s}
.card--link:hover{border-color:var(--ink);transform:translateY(-2px);box-shadow:var(--shadow)}
.icon{width:44px;height:44px;border-radius:12px;background:var(--sea-2);color:var(--sea);display:grid;place-items:center;margin-bottom:.5rem}
.icon svg{width:24px;height:24px}

/* ---------- important dates (timeline) ---------- */
.dates{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1rem}
.date{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:1.1rem 1.2rem 1.1rem 1.4rem;margin:0}
.date::before{content:"";position:absolute;left:0;top:1rem;bottom:1rem;width:3px;border-radius:3px;background:var(--green)}
.date time{display:block;font-size:var(--fs-3);font-weight:500;line-height:1.2}
.date span{color:var(--ink-2)}
.date--key{background:var(--ink);color:#fff;border-color:var(--ink)}
.date--key span{color:#cfd6dc}
.date.is-past{opacity:.55}
.date.is-past::before{background:var(--muted)}
.date.is-past time::after{content:"closed";font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;margin-left:.6rem;padding:.15rem .45rem;border:1px solid currentColor;border-radius:999px;vertical-align:middle}
.date.is-next{border-color:var(--green-dk);box-shadow:0 0 0 3px rgba(108,191,58,.18)}

/* ---------- tables ---------- */
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);margin:0 0 1.25rem}
table{width:100%;border-collapse:collapse;font-size:.98rem;min-width:540px}
th,td{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--line);vertical-align:top}
thead th{background:var(--paper-2);font-weight:500;font-size:.9rem;letter-spacing:.04em}
tbody tr:last-child td{border-bottom:0}
td.num{font-variant-numeric:tabular-nums;white-space:nowrap}

/* ---------- notices ---------- */
.soon{display:flex;gap:.9rem;align-items:flex-start;background:var(--sea-2);border-radius:var(--r);padding:1rem 1.2rem;color:var(--sea);margin:0 0 1.25rem}
.soon::before{content:"";flex:none;width:10px;height:10px;margin-top:.55em;border-radius:50%;background:var(--sea);box-shadow:0 0 0 5px rgba(14,77,110,.15)}
.soon p{margin:0}
.badge{display:inline-block;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;padding:.22rem .6rem;border-radius:999px;background:var(--sea-2);color:var(--sea);vertical-align:middle}
.badge--green{background:#e7f5de;color:var(--green-dk)}

/* ---------- people / speakers ---------- */
.person{display:flex;gap:1rem;align-items:flex-start}
.avatar{flex:none;width:72px;height:72px;border-radius:50%;background:var(--paper-2);border:1px solid var(--line);display:grid;place-items:center;color:var(--muted);font-weight:500;letter-spacing:.05em}
.speaker .avatar{width:96px;height:96px}
.person h3,.person h4{margin:0 0 .15rem}
.person p{margin:0;color:var(--ink-2);font-size:.95rem}

/* ---------- logos (patronages, sponsors) ---------- */
.logo-tier{margin-bottom:2rem}
.logo-tier h3{font-size:var(--fs-0);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:500}
.logo-row{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}
.logo-slot{display:grid;place-items:center;background:#fff;border:1px dashed #c6ced4;border-radius:var(--r);color:var(--muted);font-size:.85rem;text-align:center;padding:.5rem;width:180px;height:96px;text-decoration:none}
.logo-slot img{max-height:70px;width:auto}
.logo-slot--lg{width:240px;height:120px}
.logo-slot--sm{width:140px;height:76px}

/* ---------- info list ---------- */
.facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;list-style:none;padding:0;margin:0 0 1rem}
.facts li{margin:0;background:var(--paper-2);border-radius:var(--r);padding:1rem 1.1rem}
.facts b{display:block;font-weight:500;margin-bottom:.15rem}
.facts span{color:var(--ink-2);font-size:.96rem}
.links{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.links a{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:.35rem .9rem;text-decoration:none;color:var(--ink);font-size:.93rem}
.links a:hover{border-color:var(--ink)}
.links a::after{content:" ↗";color:var(--muted)}

/* ---------- map ---------- */
.map{border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--line);background:var(--paper-2);aspect-ratio:16/9;display:grid;place-items:center;text-align:center;padding:1rem}
.map iframe{width:100%;height:100%;border:0}

/* ---------- CTA band ---------- */
.cta-band{background:var(--green);color:var(--ink)}
.cta-band .wrap{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-wrap:wrap;padding-top:2.5rem;padding-bottom:2.5rem}
.cta-band h2{margin:0;font-size:clamp(1.6rem,3.5vw,2.2rem);font-weight:400}
.cta-band .btn{border-color:var(--ink)}
.cta-band .btn--ghost:hover{background:var(--ink);color:#fff}

/* ---------- footer ---------- */
.site-footer{background:var(--ink);color:#cfd6dc;font-size:.95rem}
.site-footer .wrap{padding-top:3.5rem;padding-bottom:2rem}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:2rem}
@media (max-width:860px){.foot-grid{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.foot-grid{grid-template-columns:1fr}}
.site-footer h2{font-size:var(--fs-0);letter-spacing:.16em;text-transform:uppercase;color:#fff;font-weight:500;margin-bottom:1rem}
.site-footer ul{list-style:none;padding:0;margin:0}
.site-footer a{color:#cfd6dc;text-decoration:none}
.site-footer a:hover{color:#fff;text-decoration:underline}
.trf-badge{display:inline-flex;align-items:center;gap:.75rem;background:#fff;border-radius:10px;padding:.4rem .7rem;margin-top:1rem}
.trf-badge img{height:38px;width:auto}
.trf-badge span{color:var(--ink);font-size:.8rem;line-height:1.25}
.foot-bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:2.5rem;padding-top:1.25rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:.75rem;font-size:.85rem;color:#98a3ad}

/* ---------- cookie banner ---------- */
.cookie{position:fixed;left:16px;right:16px;bottom:16px;z-index:80;max-width:560px;background:#fff;border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:0 10px 40px rgba(0,0,0,.18);padding:1.1rem 1.25rem;font-size:.93rem}
.cookie p{margin:0 0 .8rem}
.cookie[hidden]{display:none}

@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media print{.site-header,.cookie,.hero-art,.cta-band{display:none}.hero,.page-hero,.site-footer{background:#fff;color:#000}}

/* abstract toggle */
details{border-top:1px solid var(--line);margin-top:.75rem;padding-top:.6rem}
summary{cursor:pointer;font-weight:500;color:var(--green-dk)}
.split>*,.grid>*{min-width:0}
.nav-list a.btn{color:#fff;padding:.6em 1.2em}
.nav-list a.btn:hover{background:var(--green-dk)}
.countdown{background:rgba(42,47,51,.72)}
.hero .hero-art svg{right:-16%}
@media (max-width:860px){.hero-art{opacity:.35}}
b,strong{font-weight:600}

/* ---------- images & live hero (option A) ---------- */
.hero{background:var(--ink) url(../img/hero-oscillations.jpg) right center/cover no-repeat}
.hero-art--live{opacity:1}
.hero-art--live canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.hero::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(42,47,51,.92) 0%,rgba(42,47,51,.55) 45%,rgba(42,47,51,0) 75%)}
@media (max-width:860px){.hero::after{background:linear-gradient(180deg,rgba(42,47,51,.75),rgba(42,47,51,.9))}.hero-art--live{opacity:1}}
.page-hero{background-color:var(--ink);background-position:right center;background-size:cover;background-repeat:no-repeat}
.page-hero::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(42,47,51,.95) 0%,rgba(42,47,51,.7) 50%,rgba(42,47,51,.2) 100%)}
.section--dark{background:var(--ink);color:#fff}
.section--dark .eyebrow{color:var(--green)}
.scale{margin:0;position:relative;border-radius:var(--r-lg);overflow:hidden;aspect-ratio:4/5;background:#000}
.scale img{width:100%;height:100%;object-fit:cover;transition:transform .8s ease}
.scale:hover img{transform:scale(1.06)}
.scale figcaption{position:absolute;left:0;right:0;bottom:0;padding:1rem 1.1rem;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.85));display:grid;gap:.1rem}
.scale b{font-weight:500;font-size:1.15rem}
.scale span{color:#cfd6dc;font-size:.92rem}
@media (max-width:900px){.scale{aspect-ratio:16/10}}

/* ---------- green menu bar ---------- */
.site-header{background:rgba(108,191,58,.97);border-bottom:0}
.site-header .logo-bar{background:var(--ink)}
.site-header .nav-list a{color:var(--ink)}
.site-header .nav-list a:hover{background:rgba(42,47,51,.08)}
.site-header .nav-list a[aria-current="page"]{color:var(--ink);font-weight:600}
.site-header .nav-list a[aria-current="page"]::after{background:var(--ink)}
.site-header .nav-list a.btn{color:#fff;background:var(--ink);border-color:var(--ink)}
.site-header .nav-list a.btn:hover{background:#fff;color:var(--ink);border-color:#fff}
.site-header .nav-toggle{border-color:rgba(42,47,51,.35)}
.site-header .sub a{color:var(--ink)}
.site-header .sub a:hover{background:var(--paper-2)}
@media (max-width:1040px){.nav{background:var(--green)}.site-header .sub a{color:var(--ink)}.nav-list>li{border-color:rgba(42,47,51,.18)}}

/* =========================================================
   MODERN LAYER – type, motion, interaction
   ========================================================= */
.hero .wrap{padding-top:clamp(4rem,10vw,8rem);padding-bottom:clamp(3.5rem,8vw,6.5rem)}
.hero-title{display:flex;flex-direction:column;line-height:.88;font-size:clamp(3.6rem,10.5vw,8.6rem);letter-spacing:-.01em;margin-bottom:.4em}
.hero-title strong{font-weight:500}
.hero-title span{font-weight:300;color:var(--green);letter-spacing:.02em}
.hero{cursor:crosshair}
.hero a,.hero .countdown{cursor:auto}
.hero-hint{position:absolute;right:var(--gut);bottom:1.1rem;z-index:3;margin:0;font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.55);pointer-events:none;display:flex;align-items:center;gap:.5rem}
.hero-hint::before{content:"";width:8px;height:8px;border-radius:50%;border:1.5px solid var(--green);animation:hintPulse 2s infinite}
@keyframes hintPulse{0%{box-shadow:0 0 0 0 rgba(108,191,58,.6)}100%{box-shadow:0 0 0 12px rgba(108,191,58,0)}}
@media (hover:none){.hero-hint{display:none}}

/* header shrinks on scroll */
.site-header .wrap{transition:min-height .25s}
.is-scrolled .site-header{box-shadow:0 6px 24px rgba(42,47,51,.18)}
.is-scrolled .site-header .wrap{min-height:58px}

/* marquee of TRF editions */
.marquee{background:var(--green);color:var(--ink);overflow:hidden;border-block:1px solid rgba(42,47,51,.12)}
.marquee-track{display:flex;width:max-content;animation:marquee 38s linear infinite}
.marquee span{white-space:nowrap;padding:.9rem 2.2rem;font-size:clamp(1rem,2vw,1.35rem);font-weight:300;letter-spacing:.06em;display:flex;align-items:center;gap:2.2rem}
.marquee span::after{content:"";width:7px;height:7px;border-radius:50%;background:var(--ink);opacity:.5}
.marquee .is-now{font-weight:600}
.marquee:hover .marquee-track{animation-play-state:paused}
@keyframes marquee{to{transform:translateX(-50%)}}

/* reveal on scroll (only applied to elements that start below the fold) */
.will-reveal{opacity:0;transform:translateY(28px)}
.revealed{opacity:1;transform:none;transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s)}

/* section headings: big, light, with green tick */
.section-head h2,.split>div>h2{position:relative}
.eyebrow{display:inline-flex;align-items:center;gap:.6rem}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--green);border-radius:2px}

/* 3D tilt on image tiles */
.scales{perspective:1000px}
.scale{transform-style:preserve-3d;transition:transform .25s ease,box-shadow .25s ease;will-change:transform}
.scale:hover{box-shadow:0 24px 50px rgba(0,0,0,.45)}
.scale figcaption{transform:translateZ(30px)}
.scale::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.22),transparent 45%);opacity:0;transition:opacity .25s}
.scale:hover::after{opacity:1}

/* cards: lift + green edge */
.card--link{position:relative;overflow:hidden}
.card--link::before{content:"";position:absolute;left:0;bottom:0;height:3px;width:100%;background:var(--green);transform:scaleX(0);transform-origin:left;transition:transform .35s ease}
.card--link:hover::before{transform:scaleX(1)}
.card--link:hover .icon{background:var(--green);color:var(--ink)}
.icon{transition:background .25s,color .25s}

/* buttons: arrow nudge */
.btn{position:relative;overflow:hidden}
.btn::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--bx,50%) var(--by,50%),rgba(255,255,255,.35),transparent 55%);opacity:0;transition:opacity .2s}
.btn:hover::after{opacity:1}

/* timeline progress above dates */
.progress{margin:0 0 1.75rem}
.progress-bar{height:6px;border-radius:6px;background:var(--line);overflow:hidden}
.progress-bar span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--green-dk),var(--green));border-radius:6px;transition:width 1.6s cubic-bezier(.3,.7,.2,1)}
.progress-labels{display:flex;justify-content:space-between;font-size:.82rem;color:var(--muted);margin-top:.5rem;font-variant-numeric:tabular-nums}
.progress-labels [data-progress-today]{color:var(--green-dk);font-weight:600}

/* flip digits */
.cd-grid b{display:block;transform-origin:50% 50%}
.cd-grid b.flip{animation:flipDigit .45s ease}
@keyframes flipDigit{0%{transform:rotateX(0)}50%{transform:rotateX(-90deg);opacity:.3}100%{transform:rotateX(0)}}

/* inner hero parallax */
.page-hero{background-attachment:scroll}
.page-hero h1{font-size:clamp(2.6rem,6.5vw,4.8rem);font-weight:300;letter-spacing:-.005em}

@media (prefers-reduced-motion:reduce){
  .will-reveal{opacity:1;transform:none}
  .marquee-track{animation:none}
  .hero-hint::before{animation:none}
}

/* =========================================================
   COLOUR BANDS – palette applied to sections
   ========================================================= */
:root{--green-tint:#eef7e7;--sea-tint:#e4eff5;--band-ink:#2a2f33}
.section--green{background:var(--green);color:var(--ink)}
.section--green .eyebrow{color:var(--ink)}
.section--green .eyebrow::before{background:var(--ink)}
.section--green .date{border-color:transparent;box-shadow:0 2px 0 rgba(42,47,51,.08)}
.section--green .date::before{background:var(--green)}
.section--green .date.is-next{border-color:var(--ink);box-shadow:0 0 0 3px rgba(42,47,51,.18)}
.section--green .date.is-past{opacity:.6}
.section--green .progress-bar{background:rgba(42,47,51,.16)}
.section--green .progress-bar span{background:var(--ink)}
.section--green .progress-labels{color:rgba(42,47,51,.7)}
.section--green .progress-labels [data-progress-today]{color:var(--ink)}
.section--green .btn--ghost{border-color:var(--ink);color:var(--ink)}
.section--tint-green{background:var(--green-tint)}
.section--tint-sea{background:var(--sea-tint)}
.section--tint-sea .card,.section--tint-green .card{border-color:transparent}
.section--sea .eyebrow::before{background:#c9f0b0}

/* inner pages: every content block becomes a full-width band */
.content>section{border-bottom:0;margin-bottom:0;padding:clamp(2.25rem,5vw,3.25rem) 0;position:relative}
.content>section:nth-child(4n+2){background:var(--green-tint);box-shadow:0 0 0 100vmax var(--green-tint);clip-path:inset(0 -100vmax)}
.content>section:nth-child(4n+3){background:#fff}
.content>section:nth-child(4n){background:var(--sea-tint);box-shadow:0 0 0 100vmax var(--sea-tint);clip-path:inset(0 -100vmax)}
.content>section:first-child{padding-top:0}
.content>section .card{border-color:rgba(42,47,51,.08)}
.content>section:nth-child(4n+2) .facts li,.content>section:nth-child(4n) .facts li{background:#fff}
.content>section:nth-child(4n) .soon{background:#fff}
.split>.content{position:relative;z-index:0}
.toc{z-index:2;background:transparent}
/* social programme page: excursions band */
.section .grid.g4[data-cms="excursions"]{position:relative}
#supporters .wrap{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2.5rem}
#supporters .section-head{grid-column:1/-1}
@media (max-width:700px){#supporters .wrap{grid-template-columns:1fr}}

/* final logo (S hourglass, animated SVG) */
.logo img{height:30px;width:auto;display:block}
.site-footer .logo img{height:34px}
@media (max-width:520px){.logo img{height:24px}}

/* big animated logo in the home hero */
.hero-logo{margin:0 0 1.75rem;line-height:0}
.hero-logo img{width:clamp(260px,40vw,520px);height:auto;display:block;filter:drop-shadow(0 6px 30px rgba(0,0,0,.35))}

/* =========================================================
   AESTHETIC PASS
   ========================================================= */
/* type rhythm */
h2{font-size:clamp(2.1rem,4.4vw,3.4rem);letter-spacing:-.01em;line-height:1.05;text-wrap:balance}
.section-head{margin-bottom:2.5rem}
.section{padding:clamp(4rem,9vw,7.5rem) 0}
.lead-xl{font-size:clamp(1.25rem,2.1vw,1.6rem);line-height:1.45;font-weight:300;color:var(--ink);margin-bottom:1.25em}
.prose{font-size:1.05rem}

/* soft grain on dark bands */
.hero::before,.section--dark::before,.site-footer::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.06;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.section--dark,.site-footer{position:relative}
.section--dark>.wrap,.site-footer>.wrap{position:relative;z-index:2}

/* "soon available": discreet pill instead of a box */
.soon{display:inline-flex;align-items:center;gap:.6rem;background:transparent;border:1px solid rgba(14,77,110,.25);border-radius:999px;padding:.45rem 1rem .45rem .8rem;color:var(--sea);font-size:.92rem;margin:0 0 1.25rem}
.soon::before{width:8px;height:8px;margin:0;background:var(--green);box-shadow:none;animation:hintPulse 2.2s infinite}
.soon p{margin:0}
.section--sea .soon,.section--dark .soon{color:#cfe6f1;border-color:rgba(255,255,255,.25)}
.content>section:nth-child(4n) .soon{background:transparent}

/* editorial index list (explore) */
.index-list{list-style:none;margin:0;padding:0;border-top:1px solid rgba(42,47,51,.15)}
.index-list li{margin:0;border-bottom:1px solid rgba(42,47,51,.15)}
.index-list a{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) auto;align-items:center;gap:1.5rem;padding:1.6rem .25rem;color:var(--ink);text-decoration:none;position:relative;isolation:isolate}
.index-list a::before{content:"";position:absolute;inset:0;background:var(--green);transform:scaleY(0);transform-origin:bottom;transition:transform .35s cubic-bezier(.2,.7,.2,1);z-index:-1;border-radius:4px}
.index-list a:hover::before,.index-list a:focus-visible::before{transform:scaleY(1)}
.il-title{font-size:clamp(1.6rem,3.4vw,2.6rem);font-weight:300;line-height:1.1;transition:transform .35s}
.il-desc{color:var(--ink-2);font-size:1rem}
.il-arrow{font-size:1.8rem;transition:transform .35s}
.index-list a:hover .il-title{transform:translateX(.75rem)}
.index-list a:hover .il-arrow{transform:translateX(-.5rem) rotate(-45deg)}
@media (max-width:700px){.index-list a{grid-template-columns:1fr auto}.il-desc{grid-column:1;grid-row:2;font-size:.92rem}.il-arrow{grid-row:1/3;grid-column:2}}

/* cards: softer */
.card{border:0;box-shadow:0 1px 2px rgba(42,47,51,.05),0 10px 30px rgba(42,47,51,.06);border-radius:22px;padding:1.75rem}
.date{border:0;box-shadow:0 1px 2px rgba(42,47,51,.05),0 8px 22px rgba(42,47,51,.06);border-radius:16px}
.date time{font-weight:400;letter-spacing:-.005em}

/* committees */
.avatar{background:var(--green);border:0;color:var(--ink);font-weight:600}

/* sponsor placeholders: calm tiles */
.logo-slot{border:0;background:var(--paper-2);color:var(--muted);border-radius:14px}
.logo-tier h3{margin-bottom:.9rem}

/* contacts band */
.section--sea h3{font-weight:400;font-size:1.25rem;color:#c9f0b0}
.section--sea p{font-size:1.08rem}

/* footer: TRF badge on dark */
.trf-badge{background:rgba(255,255,255,.95)}

/* inner page heroes: larger, with bottom fade */
.page-hero .wrap{padding-top:clamp(4rem,9vw,7rem);padding-bottom:clamp(3rem,7vw,5rem)}
.page-hero h1{font-size:clamp(2.8rem,7.5vw,5.6rem)}

/* toc: pill-style active marker */
.toc{border-left:0;padding-left:0}
.toc a{padding:.45rem .9rem;border-radius:999px;transition:background .2s,color .2s}
.toc a:hover{background:var(--green-tint);color:var(--ink)}
.toc a.is-active{background:var(--ink);color:#fff}

/* image tiles: rounder */
.scale{border-radius:26px}

/* typefaces: Outfit for display, Figtree for text */
h1,h2,h3,h4,.il-title,.date time,.cd-grid b,.eyebrow,.btn,.nav-list a,.marquee span,.lead-xl,.hero-meta,.countdown h2{font-family:var(--display)}
h1,h2{font-weight:300}
h3{font-weight:500}
.lead-xl{font-weight:300}
body{font-size:1.02rem}

/* ---------- map ---------- */
.where{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr);gap:clamp(2rem,5vw,4rem);align-items:center}
@media (max-width:900px){.where{grid-template-columns:1fr}}
.map-box{border-radius:26px;overflow:hidden;box-shadow:0 1px 2px rgba(42,47,51,.05),0 16px 40px rgba(42,47,51,.08);background:var(--sea-tint)}
.geo-map{display:block;width:100%;height:auto}
.geo-map .sea{fill:#dbe9f1}
.geo-map .land{fill:#f7f8f6}
.geo-map .land.it{fill:#e9f5df}
.geo-map .border{fill:none;stroke:#aab4bb;stroke-width:.9;stroke-linejoin:round}
.geo-map .route line{stroke:var(--sea);stroke-width:1.4;stroke-dasharray:3 6;opacity:.55;transition:opacity .2s,stroke-width .2s}
.geo-map .route .city{fill:var(--ink);transition:fill .2s}
.geo-map .cname{font:600 22px var(--display);fill:var(--ink)}
.geo-map .ckm{font:500 18px var(--font);fill:var(--muted)}
.geo-map .route{cursor:pointer;outline:none}
.geo-map .route:hover line,.geo-map .route:focus line{opacity:1;stroke-width:2.6;stroke-dasharray:none;stroke:var(--green-dk)}
.geo-map .route:hover .city,.geo-map .route:focus .city{fill:var(--green-dk)}
.geo-map .route:hover .ckm,.geo-map .route:focus .ckm{fill:var(--green-dk)}
.geo-map .dot{fill:var(--green);stroke:#fff;stroke-width:3}
.geo-map .pulse{fill:none;stroke:var(--green);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:mapPulse 2.4s ease-out infinite}
.geo-map .pulse.p2{animation-delay:1.2s}
@keyframes mapPulse{0%{transform:scale(1);opacity:.9}100%{transform:scale(4);opacity:0}}
.geo-map .tname{font:600 34px var(--display);fill:var(--ink)}
.geo-map .country-label{font:500 15px var(--font);letter-spacing:.22em;fill:#7d878f}
.geo-map .sea-label{font:italic 19px var(--font);fill:var(--sea)}
.map-note{font-size:.85rem;color:var(--muted);margin-top:.6rem}
@media (prefers-reduced-motion:reduce){.geo-map .pulse{animation:none;opacity:0}}

/* ---------- photo slots (Trieste) ---------- */
.photo{margin:0;position:relative;border-radius:18px;overflow:hidden;background:linear-gradient(135deg,var(--sea) 0%,#0b3954 60%,var(--ink) 100%);aspect-ratio:4/3}
.photo img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s ease}
.photo:hover img{transform:scale(1.05)}
.photo.is-missing img{display:none}
.photo.is-missing::after{content:"Photo · " attr(data-label);position:absolute;left:1rem;bottom:.9rem;right:1rem;color:rgba(255,255,255,.85);font:500 .85rem var(--font);letter-spacing:.04em}
.photo.is-missing::before{content:"";position:absolute;right:1rem;top:1rem;width:28px;height:22px;border:1.5px solid rgba(255,255,255,.55);border-radius:5px;box-shadow:inset 0 -6px 0 -4px rgba(255,255,255,.4)}
.photo-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:1.5rem}
@media (max-width:620px){.photo-strip{grid-template-columns:1fr}}
.card .photo{margin:-1.75rem -1.75rem 1rem;border-radius:22px 22px 0 0;aspect-ratio:16/10}

/* =========================================================
   IMPORTANT DATES – featured deadline + proportional timeline
   ========================================================= */
.dates-feature{display:grid;grid-template-columns:1fr auto;align-items:center;gap:1.5rem;background:var(--ink);color:#fff;border-radius:26px;padding:clamp(1.4rem,3.5vw,2.25rem) clamp(1.4rem,4vw,2.75rem);margin-bottom:2.5rem;position:relative;overflow:hidden}
.dates-feature::after{content:"";position:absolute;right:-60px;top:-60px;width:220px;height:220px;border-radius:50%;border:1px solid rgba(108,191,58,.35);box-shadow:0 0 0 30px rgba(108,191,58,.06),0 0 0 60px rgba(108,191,58,.04)}
.df-main{display:grid;gap:.3rem;position:relative;z-index:1}
.df-label{font:500 .78rem var(--font);letter-spacing:.18em;text-transform:uppercase;color:var(--green)}
.df-title{font:300 clamp(1.5rem,3.2vw,2.4rem)/1.15 var(--display)}
.df-date{color:#cfd6dc;font-size:1.05rem}
.df-count{text-align:center;position:relative;z-index:1}
.df-count b{display:block;font:300 clamp(3.2rem,8vw,5.5rem)/1 var(--display);color:var(--green);font-variant-numeric:tabular-nums}
.df-count span{font-size:.8rem;letter-spacing:.16em;text-transform:uppercase;color:#cfd6dc}

.timeline{--track:rgba(42,47,51,.25)}
.tl-axis{position:relative;height:28px;border-bottom:2px solid var(--ink);margin:0 0 0}
.tl-month{position:absolute;left:var(--p);bottom:6px;transform:translateX(-50%);font:500 .78rem var(--font);letter-spacing:.08em;text-transform:uppercase;color:rgba(42,47,51,.7);white-space:nowrap}
.tl-month::after{content:"";position:absolute;left:50%;top:calc(100% + 4px);width:1px;height:8px;background:var(--ink)}
.tl-today{position:absolute;left:var(--p,0%);bottom:-7px;width:12px;height:12px;margin-left:-6px;border-radius:50%;background:#fff;border:3px solid var(--ink);z-index:2}
.tl-today i{position:absolute;bottom:34px;left:50%;transform:translateX(-50%);font:600 .72rem var(--font);font-style:normal;letter-spacing:.1em;text-transform:uppercase;background:var(--ink);color:#fff;padding:.15rem .5rem;border-radius:999px;white-space:nowrap}
.tl-list{list-style:none;margin:0;padding:0;position:relative;height:430px}
.tl-item{position:absolute;left:var(--p);top:0;margin:0;width:0}
.tl-dot{position:absolute;left:-9px;top:-10px;width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid var(--ink);z-index:1;transition:transform .2s}
.tl-item::before{content:"";position:absolute;left:-1px;top:8px;width:2px;height:var(--stem,46px);background:var(--ink);opacity:.35}
.tl-card{position:absolute;top:calc(8px + var(--stem,46px));left:-14px;width:min(190px,22vw);background:#fff;border-radius:14px;padding:.75rem .9rem;box-shadow:0 2px 0 rgba(42,47,51,.06),0 10px 24px rgba(42,47,51,.1);display:grid;gap:.15rem;transition:transform .25s,box-shadow .25s}
.tl-card time{font:500 1.02rem/1.2 var(--display)}
.tl-text{font-size:.86rem;color:var(--ink-2);line-height:1.35}
.tl-item:hover .tl-card{transform:translateY(-4px);box-shadow:0 2px 0 rgba(42,47,51,.06),0 16px 30px rgba(42,47,51,.16)}
.tl-item:hover .tl-dot{transform:scale(1.25)}
/* last items open to the left so they stay inside */
.tl-item.flip .tl-card{left:auto;right:-14px}
/* categories */
.cat-open .tl-dot{background:#fff}
.cat-deadline .tl-dot{background:var(--ink)}
.cat-deadline .tl-card{border-top:4px solid var(--ink)}
.cat-notice .tl-dot{background:transparent}
.cat-reg .tl-dot{background:var(--sea);border-color:var(--sea)}
.cat-reg .tl-card{border-top:4px solid var(--sea)}
.cat-event .tl-dot{width:26px;height:26px;left:-13px;top:-14px;background:var(--ink);border-color:#fff;box-shadow:0 0 0 3px var(--ink)}
.cat-event .tl-card{background:var(--ink);color:#fff}
.cat-event .tl-text{color:#cfd6dc}
/* state */
.tl-item.is-past{opacity:.45}
.tl-item.is-past .tl-card time::after{content:" · closed";font:500 .7rem var(--font);letter-spacing:.08em;text-transform:uppercase}
.tl-item.is-next .tl-card{outline:3px solid var(--ink);outline-offset:3px}
.tl-item.is-next .tl-dot{animation:hintPulse 2s infinite}
.tl-legend{list-style:none;margin:1.5rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;font-size:.85rem}
.tl-legend li{display:flex;align-items:center;gap:.45rem;margin:0}
.tl-legend li::before{content:"";width:12px;height:12px;border-radius:50%;border:2px solid var(--ink);background:#fff}
.tl-legend .cat-notice::before{background:transparent}
.tl-legend .cat-deadline::before{background:var(--ink)}
.tl-legend .cat-reg::before{background:var(--sea);border-color:var(--sea)}
.tl-legend .cat-event::before{background:var(--ink);box-shadow:0 0 0 2px #fff,0 0 0 4px var(--ink);width:10px;height:10px}

/* mobile: vertical timeline */
@media (max-width:900px){
  .tl-axis{display:none}
  .tl-list{height:auto;border-left:2px solid var(--ink);margin-left:10px;padding:.5rem 0 .5rem 0;display:grid;gap:1rem}
  .tl-item{position:relative;left:auto;width:auto;padding-left:1.6rem}
  .tl-item::before{display:none}
  .tl-dot{left:-10px;top:1rem}
  .cat-event .tl-dot{left:-14px}
  .tl-card,.tl-item.flip .tl-card{position:relative;top:auto;left:auto;right:auto;width:auto}
  .dates-feature{grid-template-columns:1fr}
  .df-count{text-align:left;display:flex;align-items:baseline;gap:.6rem}
}
.tl-card{z-index:2}
.tl-item::before{z-index:0}
.tl-list{height:390px}
@media (max-width:900px){.tl-list{height:auto}}
.tl-item.date--key{background:none;border:0;box-shadow:none;color:inherit}
.tl-item.date--key::before{background:var(--ink)}
@media (max-width:900px){.tl-item.date--key{padding-left:1.6rem}}

/* ---------- bus to the venue ---------- */
.bus{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.25rem;margin-top:1.75rem}
@media (max-width:760px){.bus{grid-template-columns:1fr}}
.bus-line{background:var(--ink);color:#fff;border-radius:22px;padding:1.6rem;display:grid;gap:.6rem;align-content:start}
.bus-badge{display:inline-grid;place-items:center;width:64px;height:64px;border-radius:16px;background:var(--green);color:var(--ink);font:600 2rem var(--display)}
.bus-line h4{margin:.3rem 0 0;font-size:1.25rem}
.bus-line p{color:#cfd6dc;margin:0}
.bus-line small{color:#98a3ad}
.planner{background:#fff;border-radius:22px;padding:1.6rem;box-shadow:0 1px 2px rgba(42,47,51,.05),0 10px 30px rgba(42,47,51,.06);display:grid;gap:.9rem;align-content:start}
.planner label{font:500 .9rem var(--font)}
.planner select{width:100%;font:inherit;padding:.75rem .9rem;border-radius:12px;border:1.5px solid var(--line);background:#fff;color:var(--ink)}
.planner select:focus{outline:3px solid var(--green);outline-offset:1px}
.planner .btn{justify-content:center}
.planner small{color:var(--muted)}

/* =========================================================
   PALETTE "CARSO" – black + TRF green + Karst stone
   ========================================================= */
:root{
  --stone:#e2b866;        /* accent: Karst stone / hourglass sand */
  --stone-dk:#8a5d12;     /* accent for text on light backgrounds */
  --stone-tint:#f4efe4;   /* light bands */
  --olive:#6b6f63;        /* secondary text */
  --sea:#8a5d12; --sea-2:#f4efe4; --sea-tint:#f4efe4;
  --muted:#6b6f63;
}
.section--sea{background:var(--stone);color:var(--ink)}
.section--sea a{color:var(--ink);text-decoration-color:rgba(42,47,51,.4)}
.section--sea h3{color:var(--ink);font-weight:500}
.section--sea .eyebrow,.section--sea .eyebrow[style]{color:var(--ink)!important}
.section--sea .eyebrow::before{background:var(--ink)}
.section--sea small{color:rgba(42,47,51,.7)}
.soon{border-color:rgba(138,93,18,.3);color:var(--stone-dk)}
.soon::before{background:var(--stone)}
.badge{background:var(--stone-tint);color:var(--stone-dk)}
.badge--green{background:#e7f5de;color:var(--green-dk)}
.icon{background:var(--stone-tint);color:var(--stone-dk)}
.cat-reg .tl-dot{background:var(--stone);border-color:var(--ink)}
.cat-reg .tl-card{border-top-color:var(--stone)}
.tl-legend .cat-reg::before{background:var(--stone);border-color:var(--ink)}
.tl-item.is-next .tl-card{outline-color:var(--stone)}
.dates-feature .df-count b{color:var(--stone)}
.dates-feature::after{border-color:rgba(226,184,102,.4);box-shadow:0 0 0 30px rgba(226,184,102,.07),0 0 0 60px rgba(226,184,102,.04)}
.geo-map .route line{stroke:var(--ink)}
.geo-map .sea-label{fill:#2f6a8a}
.photo{background:linear-gradient(135deg,#3a3326 0%,#22201b 55%,var(--ink) 100%)}
.btn--stone{background:var(--stone);border-color:var(--stone);color:var(--ink)}
.btn--stone:hover{background:#fff;border-color:#fff;color:var(--ink)}
.hero .btn--light:hover{background:var(--stone);border-color:var(--stone);color:var(--ink)}
.marquee .is-now{background:var(--ink);color:var(--stone);border-radius:999px;padding-block:.35rem;margin-block:.55rem}
.marquee .is-now::after{background:var(--stone);opacity:1}
.index-list a::before{background:var(--stone)}
.card--link::before{background:var(--stone)}
.toc a:hover{background:var(--stone-tint)}
.content>section:nth-child(4n+2) .facts li{background:#fff}
.facts li{background:var(--stone-tint)}
.tl-today{border-color:var(--ink)}
.bus-line .links a:hover{border-color:var(--stone)!important}

/* =========================================================
   IMPORTANT DATES v3 – vertical timeline
   ========================================================= */
.dates-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:clamp(2rem,5vw,4.5rem);align-items:start}
@media (max-width:900px){.dates-layout{grid-template-columns:1fr}}
.dates-side{position:sticky;top:110px;display:grid;gap:1rem}
@media (max-width:900px){.dates-side{position:static}}
.dates-side .dates-feature{grid-template-columns:1fr;margin:0;gap:1.25rem}
.dates-side .df-count{text-align:left;display:flex;align-items:baseline;gap:.7rem}
.dates-progress{height:8px;border-radius:8px;background:rgba(42,47,51,.15);overflow:hidden}
.dates-progress span{display:block;height:100%;width:0;background:var(--ink);border-radius:8px;transition:width 1.4s cubic-bezier(.3,.7,.2,1)}
.dates-progress-label{margin:0;font-size:.9rem;color:rgba(42,47,51,.75)}

.vtl{list-style:none;margin:0;padding:0;position:relative}
.vtl::before{content:"";position:absolute;left:118px;top:10px;bottom:10px;width:2px;background:rgba(42,47,51,.25)}
.vtl::after{content:"";position:absolute;left:118px;top:10px;width:2px;height:var(--fill,0%);background:var(--ink);transition:height 1.4s cubic-bezier(.3,.7,.2,1)}
.vtl-item{display:grid;grid-template-columns:100px 36px minmax(0,1fr);align-items:start;margin:0 0 1.1rem;position:relative}
.vtl-when{text-align:right;padding-top:.55rem;line-height:1.05}
.vtl-day{display:block;font:300 2.3rem/1 var(--display);letter-spacing:-.02em}
.vtl-mon{display:block;font:500 .78rem var(--font);letter-spacing:.12em;text-transform:uppercase;color:rgba(42,47,51,.7);margin-top:.25rem}
.vtl-dot{justify-self:center;margin-top:1.15rem;width:18px;height:18px;border-radius:50%;background:#fff;border:3px solid var(--ink);position:relative;z-index:1;transition:transform .2s}
.vtl-card{background:#fff;border-radius:18px;padding:1rem 1.2rem;box-shadow:0 2px 0 rgba(42,47,51,.06),0 10px 26px rgba(42,47,51,.08);display:grid;gap:.3rem;transition:transform .25s,box-shadow .25s}
.vtl-item:hover .vtl-card{transform:translateX(6px);box-shadow:0 2px 0 rgba(42,47,51,.06),0 16px 34px rgba(42,47,51,.14)}
.vtl-item:hover .vtl-dot{transform:scale(1.25)}
.vtl-tag{font:600 .72rem var(--font);letter-spacing:.14em;text-transform:uppercase;color:var(--olive)}
.vtl-text{margin:0;font:400 1.08rem/1.35 var(--display)}
/* categories */
.vtl-item.cat-deadline .vtl-dot{background:var(--ink)}
.vtl-item.cat-deadline .vtl-tag{color:var(--ink)}
.vtl-item.cat-notice .vtl-dot{background:var(--green)}
.vtl-item.cat-reg .vtl-dot{background:var(--stone)}
.vtl-item.cat-reg .vtl-tag{color:var(--stone-dk)}
.vtl-item.cat-open .vtl-tag{color:var(--green-dk)}
.vtl-item.cat-event{margin-top:1.75rem}
.vtl-item.cat-event .vtl-dot{width:30px;height:30px;margin-top:1.4rem;background:var(--ink);border-color:#fff;box-shadow:0 0 0 3px var(--ink)}
.vtl-item.cat-event .vtl-card{background:var(--ink);color:#fff;padding:1.4rem 1.5rem}
.vtl-item.cat-event .vtl-tag{color:var(--stone)}
.vtl-item.cat-event .vtl-text{font-size:1.5rem;font-weight:300}
.vtl-item.cat-event .vtl-day{font-size:1.9rem}
.vtl-item.date--key{background:none;border:0;box-shadow:none}
/* state */
.vtl-item.is-past{opacity:.45}
.vtl-item.is-past .vtl-tag::after{content:" · closed"}
.vtl-item.is-next .vtl-card{outline:3px solid var(--ink);outline-offset:3px}
.vtl-item.is-next .vtl-dot{animation:hintPulse 2s infinite}
@media (max-width:520px){
  .vtl::before,.vtl::after{left:78px}
  .vtl-item{grid-template-columns:62px 32px minmax(0,1fr)}
  .vtl-day{font-size:1.7rem}
  .vtl-mon{font-size:.68rem}
}
.vtl-item.date--key{color:var(--ink)}
.vtl-item.date--key .vtl-card{color:#fff}
.vtl-item{grid-template-columns:120px 36px minmax(0,1fr)}
.vtl::before,.vtl::after{left:138px}
.vtl-item.cat-event .vtl-day{font-size:1.6rem;white-space:nowrap}
.dates-side .df-title{font-size:clamp(1.4rem,2.4vw,1.9rem)}
.vtl-card{margin-left:.4rem}
@media (max-width:520px){.vtl-item{grid-template-columns:70px 30px minmax(0,1fr)}.vtl::before,.vtl::after{left:84px}.vtl-item.cat-event .vtl-day{font-size:1.2rem}}
.vtl-item.date--key .vtl-when span{color:var(--ink)}
.vtl-item.date--key .vtl-mon{color:rgba(42,47,51,.7)}
.vtl-item.cat-notice .vtl-dot{background:#fff}

/* =========================================================
   MOTION & BLUR
   ========================================================= */
/* page-to-page transition (browsers with cross-document View Transitions) */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vtOut .32s cubic-bezier(.4,0,.2,1) both}
::view-transition-new(root){animation:vtIn .5s cubic-bezier(.2,.7,.2,1) both}
@keyframes vtOut{to{opacity:0;filter:blur(10px);transform:scale(.985)}}
@keyframes vtIn{from{opacity:0;filter:blur(14px);transform:scale(1.015)}}
.site-header{view-transition-name:site-header}
::view-transition-group(site-header){animation:none}
/* fallback: soft blur-in on load */
@supports not (view-transition-name:none){
  main{animation:pageIn .6s cubic-bezier(.2,.7,.2,1) both}
}
@keyframes pageIn{from{opacity:0;filter:blur(10px);transform:translateY(8px)}}

/* frosted green header */
.site-header{background:rgba(108,191,58,.82);backdrop-filter:blur(16px) saturate(1.5);-webkit-backdrop-filter:blur(16px) saturate(1.5)}
.sub{background:rgba(255,255,255,.82);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}

/* inner page banners: slow ken-burns drift + blurred orbs */
.page-hero{background:var(--ink)}
.ph-bg{position:absolute;inset:-4%;background-size:cover;background-position:right center;z-index:0;animation:drift 26s ease-in-out infinite alternate;will-change:transform}
@keyframes drift{0%{transform:scale(1) translate3d(0,0,0)}100%{transform:scale(1.12) translate3d(-2.5%,1.5%,0)}}
.page-hero::after{z-index:1}
.page-hero .wrap{z-index:3}
.page-hero h1,.page-hero p,.page-hero .eyebrow{animation:heroText .9s cubic-bezier(.2,.7,.2,1) both}
.page-hero p{animation-delay:.12s}
@keyframes heroText{from{opacity:0;filter:blur(8px);transform:translateY(14px)}}

/* blurred colour orbs */
.orb{position:absolute;border-radius:50%;filter:blur(70px);pointer-events:none;z-index:0;opacity:.55;animation:orb 18s ease-in-out infinite alternate}
.orb-a{width:420px;height:420px;background:var(--green);left:-120px;top:-80px}
.orb-b{width:360px;height:360px;background:var(--stone);right:-100px;bottom:-120px;animation-duration:22s;animation-delay:-6s}
@keyframes orb{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(60px,40px,0) scale(1.15)}100%{transform:translate3d(-30px,70px,0) scale(.95)}}
.page-hero .orb{z-index:2;mix-blend-mode:screen;opacity:.32}
.has-orbs{position:relative;overflow:hidden}
.has-orbs>.wrap{position:relative;z-index:1}
.section--green.has-orbs .orb-a{background:#b7ef8d;opacity:.6}
.section--green.has-orbs .orb-b{background:var(--stone);opacity:.5}
.section--tint-sea.has-orbs .orb-a{background:#cfe9bd;opacity:.7}
.section--tint-sea.has-orbs .orb-b{background:#f0d9a4;opacity:.6}
.section--sea.has-orbs::before,.section--sea.has-orbs::after{content:"";position:absolute;border-radius:50%;filter:blur(80px);pointer-events:none}
.section--sea.has-orbs::before{width:420px;height:420px;background:#fff3cf;opacity:.6;right:-80px;top:-120px}
.section--sea.has-orbs::after{width:320px;height:320px;background:var(--green);opacity:.35;left:10%;bottom:-160px}

/* reveal with blur */
.will-reveal{filter:blur(10px)}
.revealed{filter:none;transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1),filter .9s cubic-bezier(.2,.7,.2,1)}

/* frosted glass on cards over colour */
.section--green .vtl-card,.section--green .dates-feature{backdrop-filter:blur(6px)}
.vtl-card{background:rgba(255,255,255,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.countdown{background:rgba(42,47,51,.45);backdrop-filter:blur(14px) saturate(1.3);-webkit-backdrop-filter:blur(14px) saturate(1.3)}
.hero .btn--light{backdrop-filter:blur(8px);background:rgba(255,255,255,.06)}

/* image tiles: blur-to-sharp on hover neighbours */
.scales:hover .scale:not(:hover) img{filter:blur(3px) brightness(.7);transition:filter .4s}
.scale img{transition:transform .8s ease,filter .4s}

@media (prefers-reduced-motion:reduce){
  .ph-bg,.orb,.page-hero h1,.page-hero p,.page-hero .eyebrow,main{animation:none!important}
  ::view-transition-old(root),::view-transition-new(root){animation:none}
  .will-reveal{filter:none}
}
.section--green.has-orbs .orb-a{background:#e6ffd2;opacity:.75;width:520px;height:520px}
.section--green.has-orbs .orb-b{opacity:.7}

/* =========================================================
   FONT TRIAL – switch with the floating selector (preview only)
   ========================================================= */
@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/plus-jakarta-sans-latin-300-normal.woff2) format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/plus-jakarta-sans-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/plus-jakarta-sans-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Plus Jakarta Sans";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/plus-jakarta-sans-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/manrope-latin-300-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/manrope-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/manrope-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Manrope";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/manrope-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Sora";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/sora-latin-300-normal.woff2) format("woff2")}
@font-face{font-family:"Sora";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/sora-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Sora";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/sora-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Sora";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/sora-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Urbanist";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/urbanist-latin-300-normal.woff2) format("woff2")}
@font-face{font-family:"Urbanist";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/urbanist-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Urbanist";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/urbanist-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Urbanist";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/urbanist-latin-600-normal.woff2) format("woff2")}
html[data-font="jakarta"]{--display:"Plus Jakarta Sans",system-ui,sans-serif;--font:"Plus Jakarta Sans",system-ui,sans-serif}
html[data-font="manrope"]{--display:"Manrope",system-ui,sans-serif;--font:"Manrope",system-ui,sans-serif}
html[data-font="sora"]{--display:"Sora",system-ui,sans-serif;--font:"Figtree",system-ui,sans-serif}
html[data-font="urbanist"]{--display:"Urbanist",system-ui,sans-serif;--font:"Urbanist",system-ui,sans-serif}
html[data-font] body{font-family:var(--font)}
html[data-font="sora"] h1,html[data-font="sora"] h2{letter-spacing:-.025em}
html[data-font="manrope"] h1,html[data-font="manrope"] h2{letter-spacing:-.02em}
html[data-font="jakarta"] h1,html[data-font="jakarta"] h2{letter-spacing:-.02em}
html[data-font="urbanist"] h1,html[data-font="urbanist"] h2{font-weight:300}
.font-trial{position:fixed;left:16px;bottom:16px;z-index:90;display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;max-width:calc(100% - 32px);padding:.45rem;border-radius:999px;background:rgba(42,47,51,.78);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 10px 30px rgba(0,0,0,.25)}
.font-trial span{color:#cfd6dc;font:600 .7rem var(--font);letter-spacing:.14em;text-transform:uppercase;padding:0 .5rem}
.font-trial button{border:0;border-radius:999px;padding:.45rem .85rem;background:transparent;color:#fff;cursor:pointer;font-size:.9rem}
.font-trial button[aria-pressed="true"]{background:var(--green);color:var(--ink)}
.font-trial button:hover{background:rgba(255,255,255,.12)}
.font-trial button[data-f="outfit"]{font-family:"Outfit",sans-serif}
.font-trial button[data-f="jakarta"]{font-family:"Plus Jakarta Sans",sans-serif}
.font-trial button[data-f="manrope"]{font-family:"Manrope",sans-serif}
.font-trial button[data-f="sora"]{font-family:"Sora",sans-serif}
.font-trial button[data-f="urbanist"]{font-family:"Urbanist",sans-serif}
.font-trial{left:auto;right:16px}
.font-trial button[aria-pressed="true"]{background:var(--green)!important;color:#2a2f33!important}
html[data-font="sora"] .nav-list a{font-size:.86rem;padding-inline:.55rem}

/* =========================================================
   FINAL TYPE: Sora (display) + Figtree (text)
   ========================================================= */
:root{--display:"Sora","Figtree",system-ui,sans-serif;--font:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
h1,h2{letter-spacing:-.025em}
.nav-list a{font-size:.88rem;padding-inline:.6rem}
.font-trial{display:none!important}

/* =========================================================
   TRIESTE LINE PROFILES – original line-art skyline
   (Miramare, Faro della Vittoria, Municipio, San Giusto, port cranes, Molo Audace, Karst)
   ========================================================= */
.skyline{display:block;width:100%;height:auto}
.hero-skyline{background:var(--ink);color:var(--green);line-height:0;margin-top:-1px;position:relative;z-index:2}
.hero-skyline .skyline{height:clamp(90px,12vw,170px)}
.hero-skyline .sk-faro{stroke:#fff}
.hero-skyline .sk-beam{stroke:var(--stone);animation:beam 4s ease-in-out infinite;transform-origin:318px 54px;transform-box:view-box}
@keyframes beam{0%,100%{opacity:.15}50%{opacity:.8}}
.sk-wave{animation:waveMove 6s linear infinite}
@keyframes waveMove{to{transform:translateX(-80px)}}
.ph-skyline{position:absolute;left:0;right:0;bottom:-2px;z-index:2;color:rgba(255,255,255,.22);line-height:0;pointer-events:none}
.ph-skyline .skyline{height:clamp(60px,8vw,110px)}
.foot-skyline{color:rgba(108,191,58,.55);line-height:0;padding-top:1rem}
.foot-skyline .skyline{height:clamp(70px,9vw,130px)}
.foot-skyline .sk-faro{stroke:var(--stone)}
.page-hero .wrap{padding-bottom:clamp(4.5rem,9vw,7rem)}
@media (prefers-reduced-motion:reduce){.sk-wave,.hero-skyline .sk-beam{animation:none}}

/* =========================================================
   ACCESSIBILITY (WCAG 2.1/2.2 AA · EN 301 549 · AgID)
   ========================================================= */
:root{--green-dk:#2f6c14;--olive:#53574d;--muted:#53574d}
html{scroll-padding-top:96px}
:focus-visible{outline:3px solid var(--ink);outline-offset:3px;box-shadow:0 0 0 6px #fff}
.hero :focus-visible,.section--dark :focus-visible,.site-footer :focus-visible,.page-hero :focus-visible{outline-color:#fff;box-shadow:0 0 0 6px var(--ink)}
.dates-progress-label{color:var(--ink)}
.foot-bottom a,.prose a,.content p a{text-decoration:underline;text-underline-offset:.18em}
.foot-bottom{color:#c2cad1}
.site-footer a{color:#e6ebef}
.badge--green{color:var(--green-dk)}
.skip:focus{left:12px;top:12px;z-index:200;border-radius:8px;outline:3px solid var(--green)}
/* pause-animations control (WCAG 2.2.2) */
.motion-toggle{display:inline-flex;align-items:center;gap:.45rem;margin-left:auto;margin-right:.5rem;background:rgba(42,47,51,.08);border:1.5px solid rgba(42,47,51,.35);border-radius:999px;padding:.4rem .8rem;font:500 .8rem var(--font);color:var(--ink);cursor:pointer}
.motion-toggle:hover{background:rgba(42,47,51,.16)}
.mt-icon{width:10px;height:12px;border-left:3px solid currentColor;border-right:3px solid currentColor}
.no-motion .mt-icon{width:0;height:0;border:0;border-left:10px solid currentColor;border-top:6px solid transparent;border-bottom:6px solid transparent}
@media (max-width:1040px){.motion-toggle .mt-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.motion-toggle{padding:.6rem .7rem}}
.no-motion *,.no-motion *::before,.no-motion *::after{animation-play-state:paused!important;transition-duration:.01ms!important}
.no-motion .marquee-track,.no-motion .orb,.no-motion .ph-bg,.no-motion .sk-wave{animation:none!important}
.no-motion .will-reveal{opacity:1;transform:none;filter:none}
@media (forced-colors:active){.btn,.vtl-card,.card,.date{border:1px solid CanvasText}}
.motion-toggle{order:3;margin:0 0 0 .6rem;padding:.6rem .7rem}
.motion-toggle .mt-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.site-header .nav{order:2;margin-left:auto}
.site-header .nav-toggle{order:4;margin-left:.5rem}
.motion-toggle[aria-pressed="true"]{background:var(--ink);color:var(--green)}
.nav-list a{white-space:nowrap;font-size:.84rem;padding-inline:.5rem}
.nav-list{gap:.1rem}
@media (max-width:1180px) and (min-width:1041px){.nav-list>li:first-child{display:none}}
.sk-wave-2{animation-duration:9s;animation-direction:reverse}

/* keynote speaker photos */
.avatar--photo{overflow:hidden;background:var(--paper-2)}
.avatar--photo img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
.speaker .avatar--photo{width:112px;height:112px}
.card .person .avatar--photo{width:88px;height:88px}
/* organizing committees */
.committee{margin-top:1.5rem}
.committee>h3{font-size:1.05rem;letter-spacing:.12em;text-transform:uppercase;font-weight:600;color:var(--ink-2);margin:0 0 1rem}
.people{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1rem}
.people--4{grid-template-columns:repeat(4,1fr)}
@media (max-width:1100px){.people--4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:900px){.people{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.people,.people--4{grid-template-columns:1fr}}
.people .person{background:#fff;border-radius:16px;padding:1rem 1.1rem;align-items:center;box-shadow:0 1px 0 rgba(42,47,51,.06),0 8px 24px -14px rgba(42,47,51,.25)}
.people .avatar--photo{width:76px;height:76px}
.people h4{font-size:1.05rem}

/* ===== ACCESSIBILITY PANEL (text size, high contrast, underlined links) ===== */
.a11y-toggle{order:3;margin:0 0 0 .6rem;display:inline-grid;place-items:center;min-width:44px;height:44px;padding:0 .6rem;border-radius:999px;background:rgba(42,47,51,.08);border:1.5px solid rgba(42,47,51,.35);font:600 1rem/1 var(--display);letter-spacing:-.02em;color:var(--ink);cursor:pointer}
.a11y-toggle:hover{background:rgba(42,47,51,.16)}
.a11y-toggle[aria-expanded="true"]{background:var(--ink);color:var(--green)}
.site-header{position:sticky}
.a11y-panel{position:absolute;right:max(var(--gut),calc((100vw - var(--wrap))/2));top:calc(100% + 10px);width:min(320px,calc(100vw - 2*var(--gut)));background:#fff;color:var(--ink);border-radius:18px;padding:1.2rem 1.25rem 1rem;box-shadow:0 22px 60px -18px rgba(42,47,51,.45),0 0 0 1px rgba(42,47,51,.12);z-index:120}
.a11y-panel[hidden]{display:none}
.a11y-panel h2{font:500 1.15rem var(--display);margin:0 0 .9rem}
.a11y-group p{margin:0 0 .45rem;font-size:.9rem;font-weight:600}
.a11y-seg{display:grid;grid-template-columns:repeat(3,1fr);border:1.5px solid var(--ink);border-radius:12px;overflow:hidden;margin-bottom:1rem}
.a11y-seg button{min-height:46px;border:0;border-left:1.5px solid var(--ink);background:#fff;color:var(--ink);font:600 1rem var(--display);cursor:pointer}
.a11y-seg button:first-child{border-left:0}
.a11y-seg button[aria-pressed="true"]{background:var(--ink);color:#fff}
.a11y-switch{display:flex;width:100%;align-items:center;justify-content:space-between;gap:1rem;min-height:46px;padding:.4rem 0;background:none;border:0;border-top:1px solid var(--line);font:500 .98rem var(--font);color:var(--ink);cursor:pointer;text-align:left}
.a11y-knob{flex:none;width:44px;height:26px;border-radius:99px;background:#c9ced2;position:relative;transition:background .15s}
.a11y-knob::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .15s}
.a11y-switch[aria-pressed="true"] .a11y-knob{background:var(--green-dk)}
.a11y-switch[aria-pressed="true"] .a11y-knob::after{transform:translateX(18px)}
.a11y-foot{display:flex;justify-content:space-between;align-items:center;gap:1rem;border-top:1px solid var(--line);padding-top:.75rem;margin-top:.1rem;font-size:.88rem}
.a11y-reset{background:none;border:1.5px solid var(--ink);border-radius:999px;padding:.4rem .9rem;font:500 .88rem var(--font);color:var(--ink);cursor:pointer}
.a11y-foot a{color:var(--ink);text-decoration:underline;text-underline-offset:.18em}
.a11y-panel button:focus-visible,.a11y-toggle:focus-visible{outline:3px solid var(--ink);outline-offset:2px}

/* text size: everything is in rem, so scaling the root scales the site */
html.a11y-size-1{font-size:118.75%}
html.a11y-size-2{font-size:137.5%}
/* with larger text the full menu no longer fits: use the compact (mobile) menu */
html.a11y-size-1 .nav-toggle,html.a11y-size-2 .nav-toggle{display:block}
html.a11y-size-1 .nav,html.a11y-size-2 .nav{position:fixed;inset:var(--hdr-h,72px) 0 0 0;background:var(--green);display:none;overflow-y:auto;padding:1rem var(--gut) 2rem;margin:0}
html.a11y-size-1 .nav-open .nav,html.a11y-size-2 .nav-open .nav{display:block}
html.a11y-size-1 .nav-list,html.a11y-size-2 .nav-list{flex-direction:column;align-items:stretch;gap:0}
html.a11y-size-1 .nav-list>li,html.a11y-size-2 .nav-list>li{display:block;border-bottom:1px solid rgba(42,47,51,.18)}
html.a11y-size-1 .nav-list a,html.a11y-size-2 .nav-list a{padding:.85rem .25rem;font-size:1.05rem;white-space:normal}
html.a11y-size-1 .nav-list a[aria-current="page"]::after,html.a11y-size-2 .nav-list a[aria-current="page"]::after{display:none}
html.a11y-size-1 .sub,html.a11y-size-2 .sub{position:static;opacity:1;visibility:visible;transform:none;border:0;box-shadow:none;padding:0 0 .6rem 1rem;min-width:0;background:transparent}
html.a11y-size-1 .nav-cta,html.a11y-size-2 .nav-cta{margin:1.25rem 0 0}
html.a11y-size-1 .nav-cta .btn,html.a11y-size-2 .nav-cta .btn{width:100%;justify-content:center}
html.a11y-size-1 .a11y-toggle,html.a11y-size-2 .a11y-toggle{margin-left:auto}
html.a11y-size-1 .site-header .logo img,html.a11y-size-2 .site-header .logo img{width:min(260px,52vw);height:auto}

/* underlined links */
html.a11y-links a:not(.btn):not(.logo){text-decoration:underline!important;text-underline-offset:.18em;text-decoration-thickness:max(1px,.08em)}

/* high contrast: black on white, white on black, no decorative layers */
html.a11y-contrast{--ink:#000;--ink-2:#000;--muted:#1b1b1b;--olive:#1b1b1b;--line:#000;--green-dk:#1d5208;--stone-dk:#3d2800;--paper:#fff;--paper-2:#fff;--sea-2:#fff;--sea-tint:#fff;--stone-tint:#fff;--green-tint:#fff;--shadow:none}
html.a11y-contrast body{background:#fff;color:#000}
html.a11y-contrast .orb,html.a11y-contrast .ph-bg,html.a11y-contrast .hero-art,html.a11y-contrast .hero-skyline,html.a11y-contrast .ph-skyline,html.a11y-contrast .foot-skyline,html.a11y-contrast .marquee{display:none!important}
html.a11y-contrast .hero,html.a11y-contrast .page-hero,html.a11y-contrast .section--dark,html.a11y-contrast .site-footer,html.a11y-contrast .dates-feature,html.a11y-contrast .vtl-item.cat-event .vtl-card{background:#000!important;background-image:none!important;color:#fff}
html.a11y-contrast .hero *,html.a11y-contrast .page-hero *,html.a11y-contrast .section--dark *,html.a11y-contrast .site-footer *,html.a11y-contrast .dates-feature *,html.a11y-contrast .vtl-item.cat-event .vtl-card *{color:#fff!important}
html.a11y-contrast .hero .btn,html.a11y-contrast .section--dark .btn{background:#fff!important;color:#000!important;border-color:#fff!important}
html.a11y-contrast .hero .btn *{color:#000!important}
html.a11y-contrast .countdown,html.a11y-contrast .cd-grid>div{background:#000!important;border:2px solid #fff!important;backdrop-filter:none!important}
html.a11y-contrast .section--tint-sea,html.a11y-contrast .section--tint-green,html.a11y-contrast .section--sea,html.a11y-contrast .section,html.a11y-contrast .cta-band{background:#fff!important;color:#000}
html.a11y-contrast .section--green{background:#fff!important;color:#000}
html.a11y-contrast .section,html.a11y-contrast .cta-band{border-top:2px solid #000}
html.a11y-contrast .card,html.a11y-contrast .vtl-card,html.a11y-contrast .people .person,html.a11y-contrast .photo,html.a11y-contrast .table-wrap,html.a11y-contrast .facts li,html.a11y-contrast .logo-slot{border:2px solid #000!important;box-shadow:none!important;background:#fff;backdrop-filter:none!important}
html.a11y-contrast .soon,html.a11y-contrast .badge,html.a11y-contrast .vtl-tag{color:#000!important;background:#fff!important;border-color:#000!important}
html.a11y-contrast .eyebrow{color:#000!important}
html.a11y-contrast .eyebrow::before,html.a11y-contrast .soon::before{background:#000!important}
html.a11y-contrast :is(.hero,.page-hero,.section--dark,.site-footer) .eyebrow{color:#fff!important}
html.a11y-contrast :is(.hero,.page-hero,.section--dark,.site-footer) .eyebrow::before{background:#fff!important}
html.a11y-contrast a:not(.btn){color:#000;text-decoration:underline;text-underline-offset:.18em}
html.a11y-contrast .btn{background:#000;color:#fff;border:2px solid #000}
html.a11y-contrast .btn--ghost,html.a11y-contrast .btn--light,html.a11y-contrast .btn--stone,html.a11y-contrast .btn--green{background:#fff;color:#000;border:2px solid #000}
html.a11y-contrast .site-header{background:var(--green)!important;border-bottom:3px solid #000;backdrop-filter:none}

html.a11y-contrast .nav-list a{color:#000}
html.a11y-contrast .motion-toggle,html.a11y-contrast .a11y-toggle,html.a11y-contrast .nav-toggle{background:#fff;border:2px solid #000;color:#000}
html.a11y-contrast .a11y-toggle[aria-expanded="true"],html.a11y-contrast .motion-toggle[aria-pressed="true"]{background:#000;color:#fff}
html.a11y-contrast .a11y-panel{border:3px solid #000;box-shadow:none}
html.a11y-contrast .vtl::before,html.a11y-contrast .vtl-dot{border-color:#000!important}
html.a11y-contrast .dates-progress{background:#fff;border:2px solid #000}
html.a11y-contrast .dates-progress span{background:#000}
html.a11y-contrast :focus-visible{outline:3px solid #000!important;outline-offset:3px!important;box-shadow:0 0 0 6px #ffd400!important}
html.a11y-contrast .hero :focus-visible,html.a11y-contrast .site-footer :focus-visible,html.a11y-contrast .page-hero :focus-visible{outline-color:#ffd400!important}
html.a11y-contrast .will-reveal{opacity:1!important;transform:none!important;filter:none!important}
@media (forced-colors:active){.a11y-seg button[aria-pressed="true"]{forced-color-adjust:none;background:Highlight;color:HighlightText}.a11y-knob{border:1px solid CanvasText}}
