/* Tax Stamp & Traceability Forum: Justin's TSTF 2027 design on the platform's blocks.
   Plum (#662046) for the header, hero, quotes and footer and for headings; crimson (#981E32) for labels, links and
   buttons; berry, rose, coral and pink as accents on rules (coral and pink are too light for text on white: rules
   only); light grey bands. Fonts are self-hosted (static/tstf/fonts, OFL): Space Grotesk for headings, IBM Plex Sans
   for text, IBM Plex Mono for labels and prices. Class names follow FOC's templates. */

@font-face{font-family:"Space Grotesk";font-weight:300 700;font-style:normal;font-display:swap;src:url("fonts/space-grotesk-latin-wght-normal.25ea4a783c12.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Space Grotesk";font-weight:300 700;font-style:normal;font-display:swap;src:url("fonts/space-grotesk-latin-ext-wght-normal.dea099b7d5a5.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"IBM Plex Sans";font-weight:100 700;font-style:normal;font-display:swap;src:url("fonts/ibm-plex-sans-latin-wght-normal.d28498895ed7.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Sans";font-weight:100 700;font-style:normal;font-display:swap;src:url("fonts/ibm-plex-sans-latin-ext-wght-normal.d313794bd9fd.woff2") format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"IBM Plex Sans";font-weight:100 700;font-style:italic;font-display:swap;src:url("fonts/ibm-plex-sans-latin-wght-italic.ed58f23096fd.woff2") format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Mono";font-weight:400;font-style:normal;font-display:swap;src:url("fonts/ibm-plex-mono-latin-400-normal.814fe1615d4d.woff2") format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-weight:500;font-style:normal;font-display:swap;src:url("fonts/ibm-plex-mono-latin-500-normal.6708425c446b.woff2") format("woff2")}

:root{
  --plum:#662046;          /* header, hero, quotes, footer; headings */
  --plum-2:#4f1836;
  --crimson:#981e32;       /* labels, links, buttons (AA on white) */
  --crimson-dark:#7e1829;
  --berry:#963156;
  --rose:#a2717f;
  --coral:#e0684b;         /* rules only */
  --pink:#de4561;          /* rules only */
  --grey:#e6e7e8;          /* bands and lines */
  --on-plum:#f3e9ee;       /* text on plum */
  --ink:#2a1f26;
  --body-ink:#3d3138;
  --muted:#5e5359;
  --bg:#fff;
  --display:"Space Grotesk","Avenir Next","Segoe UI",system-ui,sans-serif;
  --body:"IBM Plex Sans","Helvetica Neue",Arial,system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,"SFMono-Regular",Menlo,monospace;
  color-scheme:light;
}

*{box-sizing:border-box}
html{scroll-padding-top:88px}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.55 var(--body);-webkit-font-smoothing:antialiased}
img{max-width:100%}
.wrap{max-width:1240px;margin-inline:auto;padding-inline:clamp(16px,3vw,24px)}
h1,h2,h3{font-family:var(--display);text-wrap:balance;margin:0;line-height:1.08;color:var(--plum)}
h1,h2{font-weight:700;letter-spacing:-.015em}
h2{font-size:clamp(2rem,3.6vw,2.75rem)}
h3{font-size:1.25rem;font-weight:600}
p{margin:0}
a{color:var(--crimson)}
a:hover{color:var(--plum)}
:focus-visible{outline:3px solid var(--coral);outline-offset:3px;border-radius:4px}
.eyebrow,.mono{font-family:var(--mono);font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--crimson)}
.mono{font-weight:500}
.lede{color:var(--body-ink);font-size:1.06rem;max-width:62ch}
.hero-eyebrow{display:flex;align-items:center;gap:12px;font:500 .78rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--on-plum)}
.hero-eyebrow::before{content:"";width:32px;height:3px;background:var(--coral);flex:none}

/* header and menu (plum) */
header.top{position:sticky;top:0;z-index:20;background:var(--plum-2);color:#fff}
/* the accent stripe under the header (as on the popups): the menu reads as a bar above the plum title and hero */
header.top::after{content:"";position:absolute;z-index:1;left:0;right:0;bottom:-4px;height:4px;background:linear-gradient(90deg,var(--coral),var(--pink));pointer-events:none}
.nav{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-block:14px}
.brand{display:block;flex:none}
.brand img{display:block;height:52px;width:auto}
.nav ul{display:flex;gap:2px;list-style:none;margin:0;padding:0}
.nav ul a{display:block;padding:8px 10px;border-radius:6px;text-decoration:none;font:500 .92rem var(--body);color:var(--on-plum);white-space:nowrap}
.nav ul a:hover{color:#fff;text-decoration:underline;text-underline-offset:4px}
.nav li{position:relative}
.nav li ul{display:none;position:absolute;z-index:2;top:100%;left:0;min-width:220px;flex-direction:column;background:var(--plum-2);border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:6px;box-shadow:0 12px 32px rgba(42,31,38,.3)}
.nav li:hover>ul,.nav li:focus-within>ul{display:flex}
.nav-cta{display:flex;align-items:center;gap:10px}
.menu-toggle{display:none;background:none;border:1px solid rgba(255,255,255,.5);color:#fff;border-radius:6px;padding:6px 12px;font-size:1.1rem;cursor:pointer;min-height:44px}
/* the phone menu below 1240 px: the full menu and the button (“Keep me informed”) don't fit on one line under that */
@media (max-width:1240px){
  .menu-toggle{display:block}
  .brand img{height:42px}
  .nav>ul{display:none;position:absolute;left:0;right:0;top:calc(100% + 4px);flex-direction:column;background:var(--plum-2);border-top:1px solid rgba(255,255,255,.15);padding:8px clamp(16px,3vw,24px) 16px}
  .nav>ul.open{display:flex}
  .nav li ul{display:flex;position:static;border:0;box-shadow:none;background:none;padding:0 0 0 12px}
  .nav-cta .btn{padding:10px 16px;font-size:.88rem}
}
@media (max-width:420px){.nav-cta .btn{display:none}}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:14px 24px;white-space:nowrap;border-radius:6px;font:600 1rem var(--body);text-decoration:none;border:1.5px solid transparent;cursor:pointer;transition:filter .15s ease,background .15s ease,color .15s ease}
.btn:hover{filter:brightness(1.08)}
.btn-primary{background:var(--crimson);color:#fff}
.btn-primary:hover{color:#fff;background:var(--crimson-dark)}
.btn-light{background:#fff;color:var(--crimson)}
.btn-light:hover{color:var(--crimson)}
.btn-ghost{border-color:currentColor;background:transparent;color:var(--plum)}
.btn-ghost:hover{background:var(--grey);color:var(--plum)}
.cta{display:flex;gap:12px;flex-wrap:wrap}

/* hero: the film under the plum overlay */
.tstf-hero{position:relative;overflow:hidden;background:var(--plum);color:#fff;min-height:clamp(520px,70vh,680px);display:flex;align-items:center;padding-block:clamp(72px,10vw,104px)}
.hero-media{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.hero-shade{position:absolute;inset:0;background:var(--plum);opacity:.72}
.hero-grid{position:relative;z-index:1;width:100%;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(28px,5vw,64px);align-items:center}
.hero-text{display:grid;gap:28px;max-width:760px;min-width:0}
/* without the “Last held” card beside it, the text takes the row: the heading on fewer lines */
.hero-grid:not(:has(>.last-held)){grid-template-columns:minmax(0,1fr)}
.hero-grid:not(:has(>.last-held))>.hero-text{max-width:1040px}
.hero-grid:not(:has(>.last-held)) .hero-intro{max-width:760px}
.tstf-hero h1{font-size:clamp(2.75rem,6vw,5rem);line-height:1.02;letter-spacing:-.02em;color:#fff}
.tstf-hero h1 em{font-style:normal;color:#f7b7a8}
.hero-intro{font-size:1.25rem;line-height:1.5;color:var(--on-plum);max-width:620px}
.hero-facts{display:flex;flex-wrap:wrap;gap:12px 32px;list-style:none;margin:0;padding:0;font:500 1.25rem var(--display)}
.hero-facts li{display:inline-flex;align-items:center;gap:10px}
.tstf-hero .cta{margin-top:8px}
.tstf-hero .btn-ghost{color:#fff;border-color:rgba(255,255,255,.6)}
.tstf-hero .btn-ghost:hover{background:rgba(255,255,255,.1);color:#fff}
.last-held{background:#fff;color:var(--ink);border-radius:10px;padding:clamp(22px,3vw,32px);border-top:6px solid var(--coral);box-shadow:0 24px 60px rgba(0,0,0,.25);display:grid;gap:6px}
.last-place{font:700 clamp(1.8rem,3.4vw,2.4rem)/1.1 var(--display);color:var(--plum)}
.last-place span{color:var(--crimson)}
.last-dates{color:var(--muted)}
.figs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:14px 0 0;background:var(--grey);border:1px solid var(--grey);border-radius:8px;overflow:hidden}
.figs div{background:#fff;padding:12px 16px}
.figs div:last-child:nth-child(odd){grid-column:1/-1}
.figs dt{font:500 .7rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.figs dd{margin:2px 0 0;font:700 1.7rem var(--display);color:var(--plum);font-variant-numeric:tabular-nums}
.pause{position:absolute;right:clamp(16px,3vw,32px);top:16px;z-index:2;font:500 .78rem var(--body);color:#fff;background:rgba(42,31,38,.45);border:1px solid rgba(255,255,255,.35);border-radius:6px;padding:8px 14px;cursor:pointer;min-height:36px}
@media (max-width:860px){.hero-grid{grid-template-columns:1fr}}

section{padding-block:clamp(64px,9vw,112px)}
.sec-head{display:grid;gap:16px;margin-bottom:clamp(28px,4vw,48px);max-width:720px}

/* the strip under the hero (Cards, style "band") */
section.strip{padding:0;background:#fff;border-bottom:1px solid var(--grey)}
.strip-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.strip-item{display:flex;flex-direction:column;gap:6px;padding:32px 28px;text-decoration:none;color:var(--ink);border-top:4px solid var(--crimson);border-right:1px solid var(--grey)}
.strip-item:nth-child(3n+2){border-top-color:var(--coral)}
.strip-item:nth-child(3n){border-top-color:var(--pink);border-right:0}
.strip-item:first-child{padding-left:0}
.strip-title{font:600 1.5rem var(--display);color:var(--plum)}
.strip-text{color:var(--muted);font-size:.94rem}
a.strip-item:hover .strip-title{color:var(--crimson)}
@media (max-width:820px){.strip-item{padding-left:0;border-right:0}}

/* text section: the eyebrow and heading beside the text (the home page's “About the forum”) */
.about{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:clamp(28px,5vw,64px);align-items:start}
.about .sec-head{margin-bottom:0}
.about .body{display:grid;gap:20px;font-size:1.06rem;color:var(--body-ink);min-width:0}
section.text-about+section.cards-cards{padding-top:0}
.rich{display:grid;gap:16px}
.rich ul,.rich ol{margin:0;padding-left:1.3em}
.rich ul{list-style:disc}.rich ol{list-style:decimal}
.rich li+li{margin-top:6px}
.rich li::marker{color:var(--crimson)}
.rich h2{font-size:1.5rem}.rich h3{font-size:1.15rem}
.about .plate{border-radius:10px;overflow:hidden;margin-top:12px}
.about .plate img{display:block;width:100%;height:auto}
section.text{padding-block:clamp(24px,3vw,40px)}
section.text+section.text{padding-top:0}
.flow::after{content:"";display:block;clear:both}
.flow>.eyebrow{display:block;margin-bottom:8px}
.flow h2{font-size:clamp(1.6rem,2.8vw,2.2rem);margin-bottom:14px}
/* text sections' headings run the full width (“balance” would split a long heading into two half-width lines) */
.flow h2,.flow h3,.rich h2,.rich h3{text-wrap:pretty}
.flow .rich{display:block;color:var(--body-ink)}
.flow-narrow{max-width:78ch}
.flow .rich>*+*{margin-top:14px}
.flow .rich h2,.flow .rich h3{margin-top:28px}
.flow-photo{float:right;width:min(42%,500px);margin:6px 0 18px 32px}
.flow-photo-left{float:left;margin:6px 32px 18px 0}
.flow-photo-small{width:min(33%,380px)}
.flow-photo-large{width:min(50%,600px)}
.flow-photo img{display:block;width:100%;height:auto;border-radius:10px}
.flow-photo figcaption{font-size:.72rem;color:var(--muted);margin-top:6px}
@media (max-width:700px){.flow-photo{float:none;width:100%;margin:0 0 18px}}
@media (max-width:860px){.about{grid-template-columns:1fr}}

/* review, standard and section pages: the title on plum, the blocks closer together */
.page-title{background:var(--plum);color:#fff;padding-block:clamp(48px,7vw,88px)}
.page-title .wrap{display:grid;gap:14px}
.page-title .eyebrow{color:var(--on-plum);display:flex;align-items:center;gap:12px}
.page-title .eyebrow::before{content:"";width:32px;height:3px;background:var(--coral)}
.page-title h1{font-size:clamp(2.4rem,5vw,3.6rem);max-width:22ch;color:#fff}
.page-blocks{padding-bottom:clamp(24px,4vw,48px)}
.page-blocks>section{padding-block:clamp(28px,3.5vw,48px)}
.page-blocks>section.text+section.text{padding-top:0}
.page-blocks .sec-head{gap:10px;margin-bottom:clamp(16px,2vw,24px)}
.page-blocks .sec-head h2{font-size:clamp(1.6rem,2.8vw,2.2rem)}
.page-blocks>.sponsor-band{margin-block:clamp(12px,2vw,24px)}
.other-editions{padding-bottom:48px;display:grid;gap:12px}

/* two columns: on the page's width and gutters, close to the row or text section above */
section.cols-row,.page-blocks>section.cols-row{padding-block:clamp(12px,1.5vw,20px)}
section.text+section.cols-row{padding-top:0}
section.cols-row+section.cols-row{padding-top:clamp(12px,2vw,24px)}
section.cols-row+:is(section.text,section.cards-cards){padding-top:clamp(24px,3vw,40px)}  /* white sections after a row follow it closely, as after the About text */
.cols{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,32px)}
.cols-one_third{grid-template-columns:1fr 2fr}
.cols-two_thirds{grid-template-columns:2fr 1fr}
.col{min-width:0}
.col>section{padding:0 0 8px !important}
.col .sec-head{margin-bottom:12px}
@media (max-width:760px){.cols,.cols-one_third,.cols-two_thirds{grid-template-columns:1fr}}
/* images (Image block): rounded; in a row of columns, an image alone in the narrower column (the right one of two
   halves) fills the row's height, cropped to fit, so the row's images line up top and bottom */
.col-image{margin:0}.page-image{margin-block:0}
.col-image img,.page-image img{display:block;width:100%;height:auto;border-radius:10px;object-position:50% 30%}
.col-image figcaption,.page-image figcaption{margin-top:8px;font-size:.85rem;color:var(--muted)}
.page-blocks>.page-image{padding-block:clamp(12px,1.5vw,20px)}
@media (min-width:761px){
  :is(.cols-two_thirds>.col:last-child,.cols-one_third>.col:first-child,.cols-half>.col:last-child):has(>.col-image:only-child){position:relative;min-height:240px}
  :is(.cols-two_thirds>.col:last-child,.cols-one_third>.col:first-child,.cols-half>.col:last-child)>.col-image:only-child{position:absolute;inset:0;display:flex;flex-direction:column}
  :is(.cols-two_thirds>.col:last-child,.cols-one_third>.col:first-child,.cols-half>.col:last-child)>.col-image:only-child img{flex:1;min-height:0;height:100%;object-fit:cover}
}
@media (max-width:760px){.col-image img{aspect-ratio:3/2;object-fit:cover}}  /* stacked: one landscape shape, so a portrait photo doesn't fill the screen */
/* cards: bordered, each with its icon */
.themes{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}
.theme{border:1px solid var(--grey);border-radius:10px;padding:28px;display:grid;gap:14px;align-content:start;background:#fff}
.theme .icon{color:var(--berry)}
.theme h3{font-size:1.25rem}
.theme p{color:var(--muted);font-size:1rem}
.theme img{border-radius:8px;display:block}
.theme .btn{justify-self:start}

/* cards with buttons: panels, the first on plum */
.join{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.join article{border:1px solid var(--grey);border-radius:10px;padding:28px;display:grid;gap:12px;align-content:start;background:#fff}
.join article p{color:var(--muted)}
.join article.feat{background:var(--plum);border-color:var(--plum);color:#fff}
.join article.feat h3{color:#fff}
.join article.feat p{color:var(--on-plum)}
.join article.feat .eyebrow{color:var(--on-plum)}
.join .btn{justify-self:start;margin-top:6px}
.join article.feat .btn-primary{background:#fff;color:var(--crimson)}
.join article.feat .btn-ghost{color:#fff}
@media (max-width:860px){.join{grid-template-columns:1fr}}

/* tags grouped by label (“Who should attend”), on the grey band */
section.cards-tags{background:var(--grey)}
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.8fr);gap:48px;align-items:start}
.split .sec-head{margin-bottom:0}
.split h2{font-size:clamp(1.9rem,3.2vw,2.5rem)}
.tag-groups{display:grid;gap:28px;min-width:0}
.tag-group{display:grid;gap:12px}
.tag-group h3{font:600 .94rem var(--body);color:var(--ink)}
.tags{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0}
.tags li{background:#fff;border-left:3px solid var(--crimson);border-radius:4px;padding:8px 16px;font-size:.94rem}
.tag-group.alt .tags li{border-left-color:var(--coral)}
@media (max-width:860px){.split{grid-template-columns:1fr}}

/* steps */
.week{display:grid;grid-template-columns:repeat(var(--n,5),minmax(0,1fr));gap:14px}
.day{border-top:3px solid var(--crimson);padding-top:14px;display:grid;gap:6px;align-content:start;min-width:0}
.day.social{border-color:var(--plum)}
.day .d{font:500 .74rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.day h3{font-size:1.05rem}
.day p{font-size:.92rem;color:var(--muted)}
@media (max-width:900px){.week{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:480px){.week{grid-template-columns:1fr}}

/* photos: a mosaic */
.photos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(150px,auto);gap:12px}
.photos.few{grid-template-columns:repeat(3,minmax(0,1fr))}
.ph{position:relative;margin:0;border-radius:10px;overflow:hidden;min-height:180px;background:linear-gradient(160deg,var(--berry),var(--plum))}
.ph img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ph figcaption{position:absolute;left:0;right:0;bottom:0;padding:14px 16px;background:linear-gradient(transparent,rgba(42,31,38,.88));display:grid;gap:2px}
.ph figcaption b{font:600 1.05rem var(--display);color:#fff}
.ph figcaption span{font:500 .72rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--on-plum)}
.ph figcaption small{font-size:.68rem;color:var(--on-plum)}
.ph .add{position:absolute;top:12px;left:12px;font:500 .68rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--on-plum);border:1px dashed var(--on-plum);border-radius:4px;padding:5px 10px}
.ph.big{grid-column:span 2;grid-row:span 2;min-height:380px}
.ph.wide{grid-column:span 2}
@media (max-width:860px){.photos,.photos.few{grid-template-columns:repeat(2,minmax(0,1fr))}.ph.big{min-height:300px}}
@media (max-width:480px){.photos,.photos.few{grid-template-columns:1fr}.ph.big,.ph.wide{grid-column:auto;grid-row:auto}}

/* figures (“TSTF 2025 in numbers”) */
section.numbers{padding-block:clamp(56px,7vw,80px);border-bottom:1px solid var(--grey)}
section.numbers .eyebrow{display:block;margin-bottom:32px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:32px}
.stats div{display:flex;flex-direction:column;gap:4px;border-top:3px solid var(--crimson);padding-top:16px}
.stats div:nth-child(2){border-color:var(--berry)}
.stats div:nth-child(3){border-color:var(--coral)}
.stats div:nth-child(4){border-color:var(--pink)}
.stats .num{font:700 3.5rem/1 var(--display);color:var(--plum);font-variant-numeric:tabular-nums}
.stats .lbl{color:var(--muted)}
.page-blocks .stats .num{font-size:2.8rem}

/* programme outline (“Sessions only”): a card per day. Its section's class is .prog-outline, not .outline, which is a
   Tailwind utility (it drew a line around the section). The committee right after it reads as part of it. */
section.prog-outline+section.committee{padding-top:0}
.outline-days{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.outline-day{border:1px solid var(--grey);border-radius:10px;overflow:hidden;display:flex;flex-direction:column}
.outline-day header{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:20px 24px;background:var(--plum);color:#fff}
.outline-day:nth-child(3n+1) header{background:var(--rose)}
.outline-day:nth-child(3n+2) header{background:var(--berry)}
.outline-day header .mono{color:#fff;font-size:.74rem}
.outline-date{font:700 1.375rem var(--display)}
.outline-sessions{padding:24px;display:flex;flex-direction:column;gap:20px}
.outline-session{display:flex;flex-direction:column;gap:4px}
.outline-session+.outline-session{border-top:1px dashed var(--rose);padding-top:20px}
.outline-title{font-weight:600}
.outline-text{color:var(--muted);font-size:.94rem}
.outline-text p{margin:0}

/* attendees, speakers' organisations: pills; government bodies (revenue and customs authorities) in crimson */
.orgs{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0}
.orgs li{padding:7px 14px;border:1px solid var(--grey);border-radius:4px;font-size:.92rem;background:#fff}
.orgs li.cb{border-color:var(--crimson);border-left-width:3px;font-weight:600}
.orgs li small{color:var(--muted);margin-left:4px}
.orgs li a{text-decoration:none;font-weight:600;color:var(--crimson)}

/* programme: a tab per day, as on SDF */
.prog{background:#faf6f8}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:28px}
.tab-btn{background:#fff;border:1px solid var(--grey);color:var(--plum);padding:10px 18px;border-radius:6px;font:600 .9rem var(--body);cursor:pointer;min-height:44px}
.tab-btn:hover{border-color:var(--crimson)}
.tab-btn.active{background:var(--plum);border-color:var(--plum);color:#fff}
.day-panel{display:none;opacity:0;transform:translateY(8px);transition:opacity .35s ease,transform .35s ease}
.day-panel.active{display:block}
.day-panel.shown{opacity:1;transform:none}
.day-title{font:700 1.3rem var(--display);color:var(--plum);margin-bottom:12px}
.sess{display:grid;grid-template-columns:120px 1fr;gap:20px;padding:18px 0;border-top:1px solid var(--grey)}
.sess:last-child{border-bottom:1px solid var(--grey)}
.sess time{font:500 .95rem var(--mono);color:var(--ink);font-variant-numeric:tabular-nums}
.sess time span{color:var(--muted)}
.sess>div>h3{font:600 1.05rem var(--display);color:var(--ink);margin-bottom:6px}
.sess-no{display:block;font:500 .72rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--crimson);margin-bottom:4px}
.sess-session{background:#fff;border-radius:10px;border:1px solid var(--grey);border-left:4px solid var(--crimson);padding:18px 20px;margin-block:10px}
.sess-session+.sess{border-top:0}
.sess-session>div>h3{font-size:1.3rem;color:var(--plum)}
.sess-break>div>h3,.sess-meal>div>h3,.sess-other>div>h3{font-weight:500;color:var(--muted)}
.sess-social>div>h3,.sess-social time{color:var(--berry)}
.sess .who{color:var(--muted);font-size:.92rem}
.sess .rich{gap:6px}
.sess details summary{cursor:pointer;color:var(--crimson);font-size:.85rem}
.talk{padding:10px 0 4px}
.talk+.talk{border-top:1px dashed var(--grey)}
.talk-title{color:var(--ink);font-weight:600}
.talk-time{display:inline-block;min-width:52px;color:var(--crimson);font:500 .86rem var(--mono);font-variant-numeric:tabular-nums}
.sess .who button,.talk-title button{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer;text-align:left;text-decoration:underline;text-decoration-color:var(--coral);text-underline-offset:3px}
.talk .who{padding-left:52px}
.slides{margin-left:10px;padding:2px 10px;font:500 .7rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--crimson);border:1px solid var(--crimson);border-radius:4px;text-decoration:none;white-space:nowrap}
.slides:hover{background:var(--crimson);color:#fff}
.sess-ph{border-top-style:dashed}
.sess-ph time,.sess-ph>div>h3{color:var(--muted);font-weight:400}
.prog-foot{margin-top:28px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px}
.prog-foot p{color:var(--muted);font-size:.92rem}
@media (max-width:640px){.sess{grid-template-columns:1fr;gap:6px}.sess-session{padding:16px}.talk .who{padding-left:0}.talk-time{display:block}}

/* testimonials, on plum: the first quote large, the others as cards */
section.quotes{background:var(--plum);color:#fff}
section.quotes .wrap{display:grid;gap:48px}
.quote-big{margin:0;font:500 clamp(1.6rem,3.2vw,2.5rem)/1.25 var(--display);max-width:1000px}
.quote-big footer{margin-top:20px;font:400 1rem var(--body);color:var(--on-plum)}
.quote-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}
.quote-cards.scroll{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:8px}
.quote-cards.scroll figure{flex:0 0 min(320px,85%);scroll-snap-align:start}
.quote-cards figure{margin:0;background:var(--berry);border-radius:10px;padding:24px;display:flex;flex-direction:column;justify-content:space-between;gap:20px}
.quote-cards blockquote{margin:0;font-size:1rem}
.quote-cards figcaption{font-size:.88rem;font-weight:600}

/* fees: delegate fees as a table beside the intro; sponsorship packages and booths on the grey band */
.fees-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:clamp(32px,5vw,64px);align-items:start}
.fees-side{display:grid;gap:20px;justify-items:start}
.fees-side .lede{color:var(--body-ink)}
.fee-note{background:var(--grey);border-radius:10px;padding:20px 22px;display:grid;gap:4px;font-size:.94rem;width:100%}
.fee-note-name{font-weight:600;color:var(--plum)}
.fee-note .rich{color:var(--body-ink);gap:4px}
.fee-note .mono{font-size:1rem;letter-spacing:0;color:var(--ink)}
.fee-table{border:1px solid var(--grey);border-radius:10px;overflow:hidden;min-width:0}
.fee-row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:22px 28px;border-bottom:1px solid var(--grey)}
.fee-row:last-child{border-bottom:0;font-weight:600}
.fee-row small{display:block;font-size:.84rem;font-weight:400;color:var(--muted);margin-top:2px}
.fee-row .mono{font-size:1rem;letter-spacing:0;color:var(--ink);white-space:nowrap}
.fee-row.free{background:var(--crimson);color:#fff;font-weight:600}
.fee-row.free .mono,.fee-row.free small{color:#fff}
section.sponsorship{background:var(--grey)}
section.fees+section.sponsorship{margin-top:0}
.packages{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}
.package{background:#fff;border-top:6px solid var(--crimson);border-radius:10px;padding:28px;display:flex;flex-direction:column;gap:16px}
.package:nth-child(3n+1){border-top-color:var(--rose)}
.package:nth-child(3n){border-top-color:var(--coral)}
.package-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.package-head .mono{font-size:1rem;letter-spacing:0;color:var(--ink)}
.package .rich{color:var(--muted);font-size:.94rem;gap:8px}
.package-items{display:grid;gap:8px;font-size:.92rem;color:var(--body-ink)}
.package-items-head{font:500 .72rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.package-items ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.package-items li{position:relative;padding-left:14px}
.package-items li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--coral)}
.package-items li.sold-item{color:var(--muted)}
.package-items li.sold-item::before{background:var(--grey)}
.package-items s{text-decoration-color:var(--rose)}
.sold-tag{margin-left:4px;padding:1px 6px;border-radius:3px;background:var(--grey);color:var(--muted);font:500 .64rem var(--mono);letter-spacing:.08em;text-transform:uppercase;vertical-align:1px}
/* a sponsorship item's note: a small “i” after its name, the note in a plum bubble on hover, focus or tap */
.tip{position:relative;display:inline-block;margin-left:6px;vertical-align:1px}
.tip-btn{width:17px;height:17px;padding:0;border-radius:50%;border:1px solid var(--rose);background:#fff;color:var(--rose);font:600 10px/15px var(--mono);cursor:help}
.tip-btn:hover,.tip-btn:focus-visible{background:var(--crimson);border-color:var(--crimson);color:#fff}
.tip-text{position:absolute;z-index:5;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);width:max-content;max-width:220px;padding:8px 12px;border-radius:6px;background:var(--plum);color:#fff;font-size:.8rem;line-height:1.4;box-shadow:0 8px 20px rgba(42,31,38,.25);opacity:0;visibility:hidden;transition:opacity .15s ease;pointer-events:none}
.tip-text::after{content:"";position:absolute;top:100%;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:var(--plum)}
.tip:hover .tip-text,.tip:focus-within .tip-text{opacity:1;visibility:visible}
.sold{font:500 .74rem var(--mono);letter-spacing:.08em;text-transform:uppercase;background:var(--plum);color:#fff;padding:4px 10px;border-radius:4px}
.booths{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-top:20px}
.booth{background:#fff;border:1px dashed var(--rose);border-radius:10px;padding:24px 28px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.booth-name{font-weight:600}
.booth .rich{color:var(--muted);font-size:.94rem}
.booth .mono{font-size:1rem;letter-spacing:0;color:var(--ink)}
/* a brochure (Heyzine flipbook): the words beside the framed flipbook */
.brochure{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.7fr);gap:clamp(20px,4vw,48px);align-items:center;margin-top:28px;padding:clamp(20px,3vw,32px);background:#fff;border:1px solid var(--grey);border-radius:10px}
.brochure-text{display:grid;gap:12px;align-content:center}
.brochure-text p{color:var(--body-ink)}
.brochure-frame{position:relative;aspect-ratio:16/10;max-height:460px;border-radius:8px;overflow:hidden;background:var(--grey)}
.brochure-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.brochure-link{margin-top:20px}
@media (max-width:860px){.brochure{grid-template-columns:1fr}}
.sales-contact{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px 32px;margin-top:28px;padding:22px 28px;background:#fff;border-left:6px solid var(--crimson);border-radius:10px}
.sales-contact>div{display:grid;gap:6px}
.sales-contact p{display:grid;gap:4px;color:var(--body-ink)}
.sales-contact a:not(.btn){color:var(--crimson)}
@media (max-width:860px){.fees-grid{grid-template-columns:1fr}.fee-row{padding:18px 20px}}

/* venue */
.venue-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:48px;align-items:stretch}
.venue-photo{min-height:360px;border-radius:10px;background:var(--grey);display:flex;align-items:center;justify-content:center;color:var(--muted)}
.venue-photo .mono{color:var(--muted);font-size:.85rem}
.venue-photo.has-photo{position:relative;margin:0;overflow:hidden;background:var(--plum)}
.venue-photo.has-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.venue-photo.has-photo figcaption{position:absolute;right:10px;bottom:8px;font-size:.7rem;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6)}
.venue-text{display:grid;gap:20px;align-content:start}
.venue-text .lede,.venue-address{color:var(--body-ink)}
.venue-note{color:var(--muted);font-size:.94rem}
.warning{display:flex;gap:14px;border:1.5px solid var(--coral);border-radius:10px;padding:20px 22px;font-size:.94rem;color:var(--crimson)}
.warning svg{flex:none}
.warning div{display:grid;gap:4px}
.warning strong{color:var(--crimson)}
.warning span{color:var(--body-ink)}

/* call to action (“Get forum updates”), on crimson */
section.updates{background:var(--crimson);color:#fff;padding-block:clamp(56px,7vw,80px)}
.updates-grid{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:32px 48px}
.updates-grid>div{display:grid;gap:12px;max-width:620px}
.updates h2{color:#fff;font-size:clamp(1.8rem,3vw,2.1rem)}
.updates p{color:var(--on-plum)}

/* past editions: a card per edition */
section.editions{background:#faf6f8}
.years{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;list-style:none;margin:0;padding:0}
.years li{position:relative;display:grid;gap:2px;align-content:start;background:#fff;border:1px solid var(--grey);border-top:3px solid var(--rose);border-radius:8px;padding:16px 18px}
.years li.has-review{border-top-color:var(--crimson)}
.years li.now{background:var(--plum);border-color:var(--plum);color:#fff}
.years .yr{font:700 1.7rem var(--display);color:var(--plum);font-variant-numeric:tabular-nums}
.years .place{font-weight:600;color:var(--ink)}
.years a.place{color:var(--crimson);text-underline-offset:3px}
.years .meta{font-size:.86rem;color:var(--muted)}
.years .review-link{font:500 .72rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--crimson);text-decoration:none;margin-top:8px}
.years li.now .yr,.years li.now .place,.years li.now .meta{color:#fff}

/* downloads: the presentations, behind their password */
.downloads-panel{display:flex;align-items:center;justify-content:space-between;gap:20px 32px;flex-wrap:wrap;padding:clamp(22px,3vw,32px);background:var(--grey);border-left:6px solid var(--crimson);border-radius:10px}
.downloads-panel>div{display:grid;gap:8px;min-width:0;max-width:60ch}
.downloads-intro{color:var(--body-ink)}
.download-list{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:2px}
.download-list li{display:flex;justify-content:space-between;gap:16px;padding:10px 4px;border-bottom:1px solid var(--grey)}
.download-list a{color:var(--ink);font-weight:500}
.download-list span{color:var(--muted);font-size:.85rem;white-space:nowrap}
.downloads-note{margin-top:12px;color:var(--muted);font-size:.9rem}

/* sponsors: logos always in their own colours, on white or light (companies' logos are never recoloured) */
.sponsor-band{background:#fff;padding:32px 0 20px;border-block:1px solid var(--grey)}
.sponsor-band>p{text-align:center;font:500 .76rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.sponsor-band .logo-carousel{--logo-height:56px;--logo-gap:72px;--logo-seconds:1.5s}
.logo-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:24px clamp(32px,6vw,80px);padding:24px clamp(16px,3vw,24px)}
.logo-row img{height:56px;width:auto;max-width:200px;object-fit:contain}
.logo-row a{display:flex;transition:transform .15s ease}
.logo-row a:hover,.logo-carousel-track a:hover{transform:translateY(-2px)}
.sponsor-tier+.sponsor-tier{margin-top:32px}
.sponsor-tier h3{font:500 .78rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:14px}
.stands{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px;list-style:none;margin:0;padding:0}
.stands.with-text{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.stands li{display:grid;gap:12px;align-content:start}
.stand-logos{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:16px;min-height:120px;padding:20px;background:#fff;border:1px solid var(--grey);border-radius:10px}
.stand-logos img{max-height:60px;max-width:100%;object-fit:contain}
.stand-logos span{color:var(--ink);font-weight:600;text-align:center}
.stand-text{color:var(--muted);font-size:.9rem}
/* sponsor wall: a centred heading per tier, its tiles centred under it and smaller down the tiers; wide white tiles,
   each logo fitted to the same height band (in its own colours) */
.wall{display:grid;gap:clamp(36px,5vw,56px)}
/* Platinum followed by Diamond: side by side, a column each, on the first row; every other tier across the width */
@media (min-width:761px){
  .wall:has(>.tier-platinum+.tier-diamond){grid-template-columns:1fr 1fr;column-gap:clamp(24px,4vw,48px)}
  .wall:has(>.tier-platinum+.tier-diamond)>.wall-tier{grid-column:1/-1}
  .wall:has(>.tier-platinum+.tier-diamond)>:is(.tier-platinum:has(+.tier-diamond),.tier-platinum+.tier-diamond){grid-column:auto}
}
.wall-tier{--tile-w:190px;--tile-h:110px;display:grid;gap:20px}
.wall-tier.size-xl{--tile-w:340px;--tile-h:190px}
.wall-tier.size-l{--tile-w:260px;--tile-h:150px}
.wall-tier.size-m{--tile-w:220px;--tile-h:125px}
.wall-head{display:flex;align-items:center;gap:16px;font:500 .76rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--crimson)}
.wall-head::before,.wall-head::after{content:"";flex:1;height:1px;background:var(--grey)}
.tiles{display:flex;flex-wrap:wrap;justify-content:center;gap:18px;list-style:none;margin:0;padding:0}
.tile{width:var(--tile-w);height:var(--tile-h)}
.tile-btn{display:flex;align-items:center;justify-content:center;width:100%;height:100%;padding:12% 11%;background:#fff;border:1px solid var(--grey);border-radius:10px;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.tile-btn:hover,.tile-btn:focus-visible{transform:translateY(-3px);box-shadow:0 14px 30px rgba(42,31,38,.12);border-color:var(--rose)}
.tile-logos{display:flex;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;min-height:0}
.tile-logos img{max-width:100%;max-height:100%;object-fit:contain}
.tile-logos.several img{max-width:calc(50% - 6px)}
.tile-name{font:600 1rem var(--display);color:var(--plum);text-align:center}
@media (max-width:560px){
  .tiles{gap:10px}
  .tile{width:calc(50% - 5px);height:auto;aspect-ratio:16/10}
  .wall-tier.size-xl .tile{width:100%;aspect-ratio:16/8}
}
.pop-logos{display:flex;flex-wrap:wrap;align-items:center;gap:20px 32px;padding:18px 0 22px;border-bottom:1px solid var(--grey);margin-bottom:20px}
.pop-logos img{max-height:72px;max-width:240px;object-fit:contain}
.pop-company{display:grid;gap:12px;justify-items:start}
.pop-company+.pop-company{margin-top:24px;padding-top:24px;border-top:1px solid var(--grey)}
.pop-company h3{margin:0}
.pop-text{color:var(--body-ink);font-size:.96rem}
/* fragments (Snippets → Fragments), in a page or a column */
.fragment{display:grid;gap:12px}
.page-blocks>.fragment,main>.fragment{max-width:1240px;margin:clamp(24px,3vw,40px) auto;padding-inline:clamp(16px,3vw,24px)}
.fragment-image{margin:0;display:grid;gap:10px;justify-items:start}
.fragment-image img{display:block;width:100%;height:auto;border-radius:10px}
.fragment-image figcaption,.fragment-caption{font-size:.84rem;color:var(--muted)}
.fragment-embed{display:grid;gap:10px;justify-items:start}
.fragment-embed-frame{width:100%;overflow:hidden;border-radius:10px}
.fragment-embed-frame iframe{display:block;width:100%;border:0}
.fragment-text{display:grid;gap:12px;justify-items:start;border-radius:10px}
.fragment-text h3{font-size:1.4rem}
.fragment-text .rich{color:var(--body-ink)}
.fragment-text-brand{background:var(--plum);color:#fff;padding:28px}
.fragment-text-brand h3,.fragment-text-brand .rich{color:#fff}
.fragment-text-brand .btn-primary{background:#fff;color:var(--crimson)}
.fragment-text-light{background:var(--grey);padding:28px}
/* call for papers: the deadline panel */
section.cfp{padding-block:clamp(16px,2vw,28px)}
.cfp-panel{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px 32px;padding:clamp(22px,3vw,32px);background:var(--grey);border-left:6px solid var(--crimson);border-radius:10px}
.cfp-panel.closed{border-left-color:var(--rose)}
.cfp-text{display:grid;gap:6px}
.cfp-date{font:700 clamp(1.5rem,3vw,2rem)/1.15 var(--display);color:var(--plum)}
.cfp-left{color:var(--body-ink)}
/* programme committee: a card per member (name, organisation and country), on a crimson edge */
.members-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.member{display:grid;gap:4px;align-content:start;background:#fff;border:1px solid var(--grey);border-left:3px solid var(--crimson);border-radius:8px;padding:14px 18px}
.member-name{font:600 1.02rem var(--display);color:var(--plum)}
.member-role{margin-left:4px;padding:1px 6px;border-radius:3px;background:var(--crimson);color:#fff;font:500 .64rem var(--mono);letter-spacing:.08em;text-transform:uppercase;vertical-align:2px}
.member-org{font-size:.9rem;color:var(--body-ink)}
.member-org span{color:var(--muted)}
/* the intro under the title, across the page's width (the title keeps the section head's width) */
.sec-head:has(+ .committee-intro){margin-bottom:16px}
.committee-intro{max-width:none;margin-bottom:clamp(24px,3vw,36px)}
/* award nominations (the ITSA Awards): the words beside a deadline card, the categories as numbered cards */
section.nominations{background:#faf6f8}
/* the words wrap around the deadline card (floated right) */
.nominations-flow{display:flow-root}
.nominations-flow>.deadline-card{float:right;width:min(42%,440px);margin:0 0 24px clamp(28px,5vw,64px)}
.nominations-flow>.eyebrow{display:block;margin-bottom:16px}
.nominations-flow>h2{max-width:720px;margin-bottom:16px}
.page-blocks .nominations-flow>h2{font-size:clamp(1.6rem,2.8vw,2.2rem)}
.nominations-flow>.lede{margin-bottom:16px}
.nominations-flow .rich{display:block;color:var(--body-ink)}  /* block, not grid: a grid would sit beside the card instead of wrapping under it */
.nominations-flow .rich>*+*{margin-top:16px}
.deadline-card{background:#fff;border:1px solid var(--grey);border-top:6px solid var(--crimson);border-radius:10px;padding:28px;display:grid;gap:8px}
.deadline-card.closed{border-top-color:var(--rose)}
.deadline-date{font:700 clamp(1.5rem,2.6vw,1.9rem)/1.15 var(--display);color:var(--plum)}
.deadline-left{color:var(--body-ink)}
.deadline-card .cta{margin-top:12px}
.award-cats{list-style:none;margin:clamp(28px,4vw,44px) 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}
.award-cats li{background:#fff;border:1px solid var(--grey);border-radius:10px;padding:20px 22px;display:grid;gap:8px;align-content:start}
.award-cats li:nth-child(5n+1){border-top:3px solid var(--crimson)}
.award-cats li:nth-child(5n+2){border-top:3px solid var(--berry)}
.award-cats li:nth-child(5n+3){border-top:3px solid var(--coral)}
.award-cats li:nth-child(5n+4){border-top:3px solid var(--pink)}
.award-cats li:nth-child(5n){border-top:3px solid var(--rose)}
.award-cats h3{font-size:1.05rem}
.award-cats p{color:var(--muted);font-size:.9rem}
@media (max-width:860px){.nominations-flow{display:flex;flex-direction:column}.nominations-flow>.deadline-card{float:none;width:auto;margin:12px 0 0;order:1}}
/* a form on a page (Form block): the call for papers */
section.form-band{background:#faf6f8}
.page-form{background:#fff;border:1px solid var(--grey);border-top:6px solid var(--crimson);border-radius:10px;padding:clamp(24px,4vw,40px);display:grid;gap:14px}
.page-form h2{font-size:clamp(1.8rem,3vw,2.3rem)}
.page-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 18px;margin-top:8px}
.page-form-wide{grid-column:1/-1}
.page-form .site-form-field{display:flex;flex-direction:column;gap:6px;margin:0}
.page-form .site-form-field label{font:500 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0}
.page-form textarea{min-height:200px;resize:vertical;font:inherit}
.page-form input[type=file]{width:100%;padding:14px;border:1.5px dashed var(--rose);border-radius:8px;background:#faf6f8;font:inherit;font-size:.94rem;cursor:pointer}
.page-form input:focus,.page-form textarea:focus{outline:2px solid var(--coral);outline-offset:1px;border-color:var(--coral)}
.page-form-help,.site-form-count{display:block;font-size:.84rem;color:var(--muted);margin-top:4px}
.site-form-count.over{color:var(--crimson);font-weight:600}
.page-form .site-form-error,.page-form-error{color:var(--crimson);font-size:.9rem}
.site-form label.page-form-consent{display:flex;gap:10px;align-items:flex-start;margin:8px 0 0;font-size:.92rem;font-weight:400;color:var(--body-ink)}
.page-form-consent input{width:18px;height:18px;margin-top:3px;flex:none;accent-color:var(--crimson)}
.page-form-send{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:16px;margin-top:8px}
.page-form-success{padding:18px 20px;border-left:4px solid var(--crimson);background:#faf6f8;color:var(--ink)}
@media (max-width:640px){.page-form-grid{grid-template-columns:1fr}}
/* edition section pages: the editions as year pills under the title */
.year-pills{display:flex;flex-wrap:wrap;gap:8px}
.year-pills a{padding:8px 16px;border:1px solid rgba(255,255,255,.45);border-radius:999px;color:var(--on-plum);text-decoration:none;font:500 .86rem var(--mono);min-height:40px;display:inline-flex;align-items:center}
.year-pills a:hover{background:rgba(255,255,255,.1);color:#fff}
.year-pills a[aria-current]{background:#fff;color:var(--plum);border-color:#fff}

/* galleries, video */
.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.gallery-grid a{display:block;border-radius:8px;overflow:hidden;aspect-ratio:3/2;background:var(--grey)}
.gallery-grid img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s ease}
.gallery-grid a:hover img{transform:scale(1.04)}
.gallery-more{margin-top:20px}
/* gallery "carousel": a strip of photos across the whole screen, scrolling; paused under the mouse */
section.gallery-strip{padding-block:clamp(28px,3.5vw,48px)}
section.gallery-strip+section{padding-top:clamp(28px,3.5vw,48px)}
.gallery-strip .sec-head{margin-bottom:clamp(16px,2vw,24px)}
.photo-strip{overflow:hidden}
.photo-strip-track{display:flex;gap:10px;width:max-content;animation:photo-scroll calc(var(--photo-count) * 5s) linear infinite}
.photo-strip:hover .photo-strip-track,.photo-strip:focus-within .photo-strip-track{animation-play-state:paused}
.photo-strip a{display:block;flex:none;border-radius:8px;overflow:hidden;background:var(--grey)}
.photo-strip img{display:block;height:clamp(180px,22vw,280px);width:auto;aspect-ratio:3/2;object-fit:cover;transition:transform .3s ease}
.photo-strip a:hover img{transform:scale(1.04)}
@keyframes photo-scroll{to{transform:translateX(calc(-50% - 5px))}}
@media (prefers-reduced-motion: reduce){
  .photo-strip{overflow-x:auto}
  .photo-strip-track{animation:none;padding-inline:clamp(16px,3vw,24px)}
  .photo-strip-track [aria-hidden]{display:none}
}
.lightbox{max-width:none;max-height:none;width:100vw;height:100vh;margin:0;padding:0;border:0;background:rgba(42,31,38,.95);color:#fff}
.lightbox figure{margin:0;height:100%;display:grid;place-items:center;padding:56px 16px}
.lightbox img{max-height:calc(100vh - 140px);max-width:100%;object-fit:contain}
.lightbox figcaption{font-size:.85rem;color:var(--on-plum);margin-top:10px;text-align:center}
.lightbox button{position:absolute;background:rgba(102,32,70,.6);color:#fff;border:1px solid rgba(255,255,255,.3);border-radius:50%;width:44px;height:44px;font-size:1.5rem;cursor:pointer}
.lb-close{top:16px;right:16px}.lb-prev{left:16px;top:50%}.lb-next{right:16px;top:50%}
.video-frame{position:relative;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:var(--plum)}
.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* footer (plum), contact form */
.site-form{display:grid;gap:14px}
.site-form h3{font:700 1.5rem var(--display)}
.site-form label{display:block;font-size:.8rem;font-weight:600;color:var(--muted);margin-bottom:4px}
.site-form input[type=text],.site-form input[type=email],.site-form textarea{width:100%;padding:12px 14px;border-radius:6px;border:1px solid var(--grey);background:#fff;color:var(--ink);font:inherit;font-size:16px;min-height:48px}
.site-form [role=alert],.site-form .errorlist{color:var(--crimson)}
footer{background:var(--plum);color:var(--on-plum)}
.foot-grid{display:grid;grid-template-columns:1fr 1.4fr 1.8fr;gap:40px;padding-block:56px 48px;border-bottom:1px solid rgba(255,255,255,.15)}
.foot-logo{display:block;height:44px;width:auto;margin-bottom:16px}
.foot-brand p{font-size:15px;line-height:1.7;max-width:280px}
.foot-brand strong{color:#fff}
.foot-col h2,.foot-form h2{font:500 12.5px/1.3 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#fff;margin-bottom:16px}
.foot-col h2.foot-follow{margin-top:24px}
.foot-nav+.foot-follow{margin-top:0}  /* the last group's own margin is the space */
.foot-col a,.foot-col p{display:block;font-size:15px;margin-bottom:10px;color:var(--on-plum);text-decoration:none}
.foot-col a:hover{color:#fff;text-decoration:underline}
/* the groups flow down two columns (each straight after the one above, no row gaps) */
.foot-nav{columns:2;column-gap:28px}
.foot-group{display:grid;align-content:start;break-inside:avoid;margin-bottom:24px}
.foot-group a{margin-bottom:8px}
.foot-col .foot-group h2{margin-bottom:12px}
.foot-col .foot-group h2 a{display:inline;margin:0;color:#fff;font:inherit}
.foot-social{display:flex;flex-wrap:wrap;gap:0 18px}
.foot-contact{margin-top:32px}
.foot-contact a{overflow-wrap:anywhere}
.foot-form{scroll-margin-top:36px}
.foot-form-intro{font-size:15px;line-height:1.7;margin-bottom:20px}
.foot-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}
.foot-form-wide{grid-column:1/-1}
.foot-form .site-form-field{display:flex;flex-direction:column;gap:6px;margin:0}
.foot-form .site-form-field label{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--on-plum);margin:0}
.foot-form input[type=text],.foot-form input[type=email],.foot-form textarea{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.4);color:#fff}
.foot-form textarea{min-height:112px;resize:vertical}
.foot-form input:focus,.foot-form textarea:focus{outline:2px solid var(--coral);outline-offset:1px;border-color:var(--coral);background:rgba(255,255,255,.14)}
.foot-form-error,.foot-form .site-form-error{color:#ffc4b8;font-size:13.5px}
.site-form label.foot-form-consent{display:flex;align-items:flex-start;gap:10px;margin:18px 0 6px;font-size:13.5px;line-height:1.6;font-weight:400;color:var(--on-plum);cursor:pointer}
.foot-form-consent input{flex:none;width:16px;height:16px;margin-top:3px;accent-color:var(--coral)}
.foot-form-send{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-top:18px}
.foot-form-send .btn{margin-left:auto;background:#fff;color:var(--crimson)}
.foot-form .btn:disabled,.pop-form .btn:disabled{opacity:.7;cursor:progress}
.foot-form-success{padding:18px 20px;border:1px solid rgba(255,255,255,.35);border-left:3px solid var(--coral);background:rgba(255,255,255,.08);color:#fff}
.foot-bottom{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;padding-block:22px calc(22px + env(safe-area-inset-bottom,0px));font-size:13px}
.foot-bottom a{color:var(--on-plum)}
@media (max-width:900px){.foot-grid{grid-template-columns:1fr 1fr}.foot-form-col{grid-column:1/-1}}
@media (max-width:560px){.foot-grid,.foot-form-grid{grid-template-columns:1fr}}
.foot-form-trap{position:absolute;left:-9999px}

/* popups (register interest, abstract, speaker), as on SDF: centred, a stripe of the site's colours along the top,
   a round close button */
dialog.tstf-pop{margin:auto;position:fixed;inset:0;width:min(680px,calc(100vw - 32px));max-height:min(86vh,820px);padding:0;border:none;border-radius:12px;overflow:auto;background:#fff;color:var(--ink);box-shadow:0 30px 80px rgba(42,31,38,.45)}
dialog.tstf-pop::backdrop{background:rgba(42,31,38,.7);backdrop-filter:blur(3px)}
dialog.tstf-pop[open]{animation:popIn .25s cubic-bezier(.2,.7,.3,1)}
@keyframes popIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){dialog.tstf-pop[open]{animation:none}}
.tstf-pop .stripe-bar{position:sticky;top:0;z-index:2;height:6px;background:linear-gradient(90deg,var(--plum) 0 30%,var(--crimson) 30% 55%,var(--coral) 55% 80%,var(--pink) 80%)}
.tstf-pop-close{position:absolute;top:16px;right:16px;z-index:3;width:40px;height:40px;border-radius:50%;border:1px solid var(--grey);background:#fff;color:var(--plum);font-size:22px;line-height:1;cursor:pointer}
.tstf-pop-close:hover{border-color:var(--crimson);color:var(--crimson)}
.tstf-pop-body{padding:30px 36px 32px}
.tstf-pop-body .eyebrow{display:block;margin-bottom:10px;padding-right:40px}
.tstf-pop-body h3{font-size:clamp(22px,3vw,28px);margin:0 40px 8px 0}
.tstf-pop-body .rich{color:var(--body-ink)}
.pop-who{color:var(--muted);font-size:14.5px;margin-bottom:18px}
.pop-person{display:flex;gap:24px;align-items:center;padding-bottom:22px}
.pop-photo{width:112px;height:112px;flex:none;border-radius:50%;object-fit:cover;border:3px solid var(--rose)}
@media (max-width:560px){.tstf-pop-body{padding:24px 22px 26px}.pop-person{flex-direction:column;align-items:flex-start}}
.tstf-pop-form{width:min(620px,calc(100vw - 32px))}
.tstf-pop-form:focus{outline:none}
.pop-form h3{margin-bottom:18px}
.pop-form-intro{color:var(--muted);margin-bottom:18px}
.pop-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}
.pop-form-wide{grid-column:1/-1}
.pop-form textarea{width:100%;min-height:120px;resize:vertical;padding:12px 14px;border-radius:6px;border:1px solid var(--grey);font:inherit}
@media (max-width:560px){.pop-form-grid{grid-template-columns:1fr}}
.pop-form .site-form-field{display:flex;flex-direction:column;gap:6px;margin:0}
.pop-form .site-form-field label,.pop-form-areas legend{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0}
.pop-form input:focus{outline:2px solid var(--coral);outline-offset:1px;border-color:var(--coral)}
.pop-form-error,.pop-form .site-form-error{color:var(--crimson);font-size:13.5px}
.pop-form-areas{margin:20px 0 0;padding:0;border:none}
.pop-form-areas legend{margin-bottom:10px}
.pop-form-areas label{display:inline-flex;align-items:center;gap:8px;margin:0 22px 6px 0;cursor:pointer;color:var(--ink)}
.pop-form-areas input,.pop-form-consent input{width:16px;height:16px;accent-color:var(--crimson)}
.site-form label.pop-form-consent{display:flex;gap:10px;align-items:flex-start;margin:18px 0 0;font-size:.88rem;font-weight:400;color:var(--muted)}
.pop-form-consent input{margin-top:3px;flex:none}
.pop-form-send{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:20px}
.pop-form-success{margin-top:8px;padding:18px 20px;border:1px solid var(--grey);border-left:3px solid var(--crimson);background:#faf6f8;color:var(--ink)}

/* the cookie banner (includes/cookie_banner.html): a plum card as the footer, the popups' stripe along its top;
   its SDF button names take TSTF's buttons */
.cookie-banner{position:fixed;left:16px;right:16px;bottom:16px;z-index:40;max-width:560px;margin-inline:auto;background:var(--plum);color:var(--on-plum);border-radius:12px;padding:24px 22px 20px;box-shadow:0 18px 50px rgba(42,31,38,.45);overflow:hidden;font-size:.95rem;line-height:1.6}
.cookie-banner[hidden]{display:none}
.cookie-banner::before{content:"";position:absolute;left:0;right:0;top:0;height:6px;background:linear-gradient(90deg,var(--crimson) 0 40%,var(--coral) 40% 75%,var(--pink) 75%)}
.cookie-banner a{color:#fff;text-underline-offset:3px}
.cookie-banner-buttons{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}
.cookie-banner .btn{padding:10px 22px}
.cookie-banner .btn-gold{background:#fff;color:var(--crimson)}
.cookie-banner .btn-outline{border-color:rgba(255,255,255,.6);background:transparent;color:#fff}
.cookie-banner .btn-outline:hover{border-color:#fff;background:rgba(255,255,255,.08)}
@media (max-width:420px){.cookie-banner-buttons .btn{flex:1}}

/* gentle motion: sections rise into view (scroll-driven, so complete whenever in view) */
@media (prefers-reduced-motion:no-preference){
@supports (animation-timeline:view()){
  @keyframes rise-in{from{transform:translateY(32px);opacity:.2}}
  .theme,.join article,.day,.years li,.stand-logos,.tile,.stats div,.outline-day,.package,.quote-cards figure{animation:rise-in linear both;animation-timeline:view();animation-range:entry 0% entry 70%}
}}

/* the password page (protected presentations, "Download all") and "your download has started"
   (templates/password_required.html, templates/download_started.html, shared by every site): a white card on the
   plum ground, the popups' stripe along its top; their SDF button names take TSTF's buttons */
.lock-backdrop{position:relative;overflow:hidden;min-height:calc(100vh - 140px);display:flex;align-items:center;justify-content:center;padding:64px 16px;background:var(--plum)}
.lock-backdrop .fine-lines,.lock-backdrop .guilloche{display:none}
.lock-card{position:relative;z-index:2;width:min(440px,100%);background:#fff;color:var(--ink);border-radius:12px;box-shadow:0 30px 80px rgba(0,0,0,.35);overflow:hidden;animation:popIn .3s cubic-bezier(.2,.7,.3,1)}
.lock-card .stripe-bar{display:block;height:6px;background:linear-gradient(90deg,var(--plum) 0 30%,var(--crimson) 30% 55%,var(--coral) 55% 80%,var(--pink) 80%)}
.lock-card .stripe-bar span{display:none}
.lock-body{padding:32px 34px 30px}
.lock-icon{width:34px;height:34px;color:var(--crimson);margin-bottom:14px}
.lock-body .eyebrow{display:block;margin-bottom:8px}
.lock-body h2{font-size:clamp(1.6rem,4vw,2rem);margin-bottom:10px}
.lock-body>p{color:var(--muted);font-size:15px;margin-bottom:22px}
.lock-form label{display:block;font:500 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.lock-form input[type=password]{width:100%;padding:13px 14px;font:inherit;font-size:16px;color:var(--ink);background:#fff;border:1px solid var(--grey);border-radius:6px;margin-bottom:14px}
.lock-form input[type=password]:focus{outline:2px solid var(--coral);outline-offset:1px;border-color:var(--coral)}
.lock-form input[aria-invalid=true]{border-color:var(--crimson)}
.lock-error{color:var(--crimson);font-size:14px;margin:-6px 0 14px}
.lock-form .btn,.lock-back{width:100%;justify-content:center}
.lock-card .btn-gold{background:var(--crimson);color:#fff}
.lock-card .btn-outline{border-color:var(--grey);background:#fff;color:var(--plum);margin-top:16px}
.lock-card .btn-outline:hover{border-color:var(--crimson);color:var(--crimson)}
.lock-form .btn:disabled{opacity:.7;cursor:progress}
.lock-help{margin-top:18px;font-size:13.5px;color:var(--muted);text-align:center}
.download-file{color:var(--ink);font-size:15px;margin-bottom:12px;word-break:break-word}
@media (prefers-reduced-motion:reduce){.lock-card{animation:none}}
