@font-face {
  font-family: 'IBM Plex Sans';
  font-style: normal;
  font-display: swap;
  font-weight: 300;
  src: url(fonts/ibm-plex-sans-latin-ext-300-normal.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-style: normal;
  font-display: swap;
  font-weight: 300;
  src: url(fonts/ibm-plex-sans-latin-300-normal.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-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(fonts/ibm-plex-sans-latin-ext-400-normal.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-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(fonts/ibm-plex-sans-latin-400-normal.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-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(fonts/ibm-plex-sans-latin-ext-500-normal.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-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(fonts/ibm-plex-sans-latin-500-normal.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-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(fonts/ibm-plex-sans-latin-ext-600-normal.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-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(fonts/ibm-plex-sans-latin-600-normal.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-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(fonts/ibm-plex-sans-latin-ext-400-italic.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-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url(fonts/ibm-plex-sans-latin-400-italic.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-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(fonts/ibm-plex-mono-latin-ext-400-normal.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 Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(fonts/ibm-plex-mono-latin-400-normal.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-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(fonts/ibm-plex-mono-latin-ext-500-normal.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 Mono';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(fonts/ibm-plex-mono-latin-500-normal.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;
}
:root{
  --bg:#0a0e13; --surface:#10161e; --line:#1f2a36; --text:#e6ecf1; --muted:#8d9aa8;
  --cyan:#5cc4b2; --amber:#ffb547; --green:#5ad68a;
  --sans:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Helvetica,Arial,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;
  --w:min(72rem,calc(100% - 3rem));
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:5rem}
body{margin:0;background:var(--bg);color:var(--text);font:400 1.0625rem/1.65 var(--sans)}
img{max-width:100%;height:auto;display:block}
a{color:var(--cyan)}
:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}
.skip{position:absolute;left:-999px;top:0;background:var(--cyan);color:var(--bg);padding:.5rem 1rem;z-index:20}
.skip:focus{left:1rem}

/* header */
.head{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:1.5rem;padding:.9rem max(1.5rem,calc((100% - 72rem)/2));
  background:rgba(10,14,19,.86);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.has-hero .head{position:fixed;left:0;right:0;background:linear-gradient(rgba(10,14,19,.75),rgba(10,14,19,0));border-bottom-color:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
.has-hero .head.scrolled{background:rgba(10,14,19,.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom-color:var(--line)}
.brand{display:inline-flex;align-items:center;text-decoration:none;color:var(--text);margin:0;line-height:0}
.brand img{height:46px;width:auto;border-radius:3px}
.brand--foot img{height:52px}
.head nav{margin-left:auto;display:flex;gap:1.6rem;flex-wrap:wrap}
.head nav a{color:var(--muted);text-decoration:none;font-size:.92rem;padding:.3rem 0;border-bottom:1px solid transparent}
.head nav a:hover{color:var(--text)}
.head nav a[aria-current=page]{color:var(--text);border-color:var(--cyan)}
.menu-btn{display:none;margin-left:auto;font:500 .85rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text);
  background:none;border:1px solid var(--line);padding:.45rem .8rem;border-radius:2px;cursor:pointer}

/* type helpers */
.label{font:500 .78rem var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--cyan);margin:0 0 1rem}
.lede{font-size:clamp(1.1rem,1.8vw,1.3rem);line-height:1.55;color:#c5d0da;max-width:38em;margin:0}
.big{font-size:clamp(1.3rem,2.4vw,1.75rem);line-height:1.4;font-weight:300;margin:0 0 1.25rem;max-width:30em}

/* hero */
.hero{position:relative;min-height:min(92vh,56rem);min-height:min(92svh,56rem);display:flex;align-items:flex-end;overflow:hidden}
.hero picture,.hero-img{position:absolute;inset:0;width:100%;height:100%}
.hero-img{object-fit:cover;object-position:60% 50%}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,14,19,.94) 0%,rgba(10,14,19,.7) 45%,rgba(10,14,19,.15) 100%),linear-gradient(0deg,var(--bg) 0%,rgba(10,14,19,0) 35%)}
.hero-text{position:relative;z-index:1;width:var(--w);margin:0 auto;padding:9rem 0 5rem}
.hero h1{font:300 clamp(2.6rem,6.4vw,5.4rem)/1.02 var(--sans);letter-spacing:-.02em;margin:0 0 1.5rem;max-width:12em;text-wrap:balance}
.cta{display:flex;flex-wrap:wrap;gap:.9rem;margin:2.25rem 0 0}
.btn{display:inline-block;font:500 .95rem var(--sans);text-decoration:none;color:var(--bg);background:var(--cyan);padding:.75rem 1.3rem;border-radius:2px}
.btn:hover{background:#86d8ca}
.btn--ghost{background:transparent;color:var(--text);border:1px solid #3a4756}
.btn--ghost:hover{background:rgba(255,255,255,.06)}

/* sections */
.band{width:var(--w);margin:0 auto;padding:6rem 0 0}
.band--tight{padding-top:4rem}
.split{display:grid;grid-template-columns:14rem 1fr;gap:2rem;border-top:1px solid var(--line);padding-top:1.5rem}
.split p:not(.label):not(.big){color:#c5d0da;max-width:38em;margin:0}
.focus{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(17rem,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.focus li{background:var(--bg);padding:2rem 1.75rem 2.25rem}
.focus h2{font:500 1.25rem/1.3 var(--sans);margin:0 0 .75rem}
.focus p{color:var(--muted);margin:0}
.focus .sub{font:500 .75rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin:-.4rem 0 .75rem}
.focus--five{grid-template-columns:repeat(6,1fr)}
.focus--five li:nth-child(-n+3){grid-column:span 2}
.focus--five li:nth-child(n+4){grid-column:span 3}
.wide{margin:6rem 0 0;height:min(70vh,40rem);height:min(70svh,40rem);overflow:hidden;border-block:1px solid var(--line)}
.wide img{width:100%;height:100%;object-fit:cover}
.wide--short{height:min(50vh,28rem);margin-top:4rem}
.tiles{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:1rem}
.tiles a{display:flex;flex-direction:column;height:100%;padding:1.5rem 1.5rem 1.75rem;background:var(--surface);border:1px solid var(--line);text-decoration:none;color:var(--text);transition:border-color .2s}
.tiles a:hover{border-color:var(--cyan)}
.tile-k{font:500 .8rem var(--mono);color:var(--cyan);margin-bottom:2.5rem}
.tile-t{font:500 1.2rem/1.3 var(--sans);margin-bottom:.5rem}
.tile-d{color:var(--muted);font-size:.95rem}

/* inner pages */
.page-head{width:var(--w);margin:0 auto;padding:5rem 0 0}
.page-head h1{font:300 clamp(2.2rem,5vw,3.8rem)/1.08 var(--sans);letter-spacing:-.015em;margin:0 0 1.25rem;max-width:16em}
.values,.goals{margin:0;padding:0;list-style:none}
.values{display:flex;flex-wrap:wrap;gap:.6rem}
.values li{font-size:.98rem;border:1px solid var(--line);padding:.5rem .9rem;border-radius:2px}
.goals{counter-reset:g}
.goals li{counter-increment:g;display:grid;grid-template-columns:2.75rem 1fr;padding:1rem 0;border-bottom:1px solid var(--line);color:#c5d0da}
.goals li::before{content:counter(g,decimal-leading-zero);font:500 .85rem/1.9 var(--mono);color:var(--cyan)}

/* TBD */
.tbd{display:flex;align-items:center;gap:1.5rem;border:1px dashed #33414f;padding:2rem}
.tbd-code{font:500 1.6rem var(--mono);letter-spacing:.2em;color:var(--amber)}
.tbd p{margin:0;color:#c5d0da}

/* writings list */
.w-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.w-item a{display:grid;grid-template-columns:11rem 1fr;gap:1.75rem;align-items:center;padding:1.5rem 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--text)}
.w-item img{width:100%;aspect-ratio:3/2;object-fit:cover;border:1px solid var(--line);filter:saturate(.9)}
.w-item h2{font:500 1.2rem/1.35 var(--sans);margin:0 0 .5rem;max-width:40em}
.w-item a:hover h2{color:var(--cyan)}
.w-meta{margin:0;color:var(--muted);font-size:.92rem}
.w-meta span{margin-left:.9rem;font:400 .82rem var(--mono)}

/* article */
.art{width:min(44rem,calc(100% - 3rem));margin:0 auto;padding:4.5rem 0 0}
.art-head .label a{color:inherit;text-decoration:none}
.art h1{font:400 clamp(1.9rem,4.4vw,2.8rem)/1.15 var(--sans);letter-spacing:-.01em;margin:0 0 1rem;text-wrap:balance}
.art-cover{margin:2.25rem 0 2.5rem}
.art-cover img{width:100%;height:auto;border:1px solid var(--line)}
.art-body{font-size:1.08rem;line-height:1.75;color:#d4dde5}
.art-body p{margin:0 0 1.15em}
.art-body strong{color:var(--text);font-weight:600}
.art-body h2,.art-body h3{font:500 1.3rem/1.3 var(--sans);color:var(--text);margin:2em 0 .6em}
.art-body figure{margin:2rem 0}
.art-body figure img{width:100%;height:auto;border:1px solid var(--line)}
.art-body ul,.art-body ol{padding-left:1.25rem;margin:0 0 1.15em}
.art-body li{margin:.3em 0}
.art-body a{word-break:break-word}
.art-body blockquote{margin:1.5em 0;padding-left:1.25rem;border-left:2px solid var(--cyan);color:#c5d0da}
.art-body table{width:100%;border-collapse:collapse;font-size:.95rem;margin:1.5em 0;display:block;overflow-x:auto}
.art-body td,.art-body th{border:1px solid var(--line);padding:.5rem .7rem;text-align:left;vertical-align:top}
.pager{width:min(44rem,calc(100% - 3rem));margin:3.5rem auto 0;display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;border-top:1px solid var(--line);padding-top:1.25rem}
.pager a{text-decoration:none;color:var(--text);font-size:.98rem;line-height:1.4}
.pager a span{display:block;font:500 .75rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin-bottom:.35rem}
.pager .next{text-align:right}
.pager a:hover{color:var(--cyan)}

/* prose (policy) */
.prose{max-width:44rem}
.prose h2{font:500 1.25rem/1.3 var(--sans);margin:2.25rem 0 .6rem}
.prose h2:first-child{margin-top:0}
.prose p{color:#c5d0da;margin:0 0 1em}

/* footer */
.foot{margin-top:7rem;border-top:1px solid var(--line)}
.foot-inner{width:var(--w);margin:0 auto;padding:3rem 0 2rem;display:flex;flex-wrap:wrap;justify-content:space-between;gap:2rem}
.foot-text{color:var(--muted);margin:.5rem 0 0;font-size:.95rem}
.foot-links{display:flex;flex-direction:column;gap:.5rem;font-size:.95rem}
.foot-links a{color:var(--text);text-decoration:none}
.foot-links a:hover{color:var(--cyan)}
.foot-legal{width:var(--w);margin:0 auto;padding:0 0 2.5rem;font:400 .8rem var(--mono);color:var(--muted)}

/* cookie notice */
.cookie{position:fixed;left:0;right:0;bottom:0;z-index:30;background:#f4f7f9;color:#1b2530;box-shadow:0 -10px 30px rgba(0,0,0,.35)}
.cookie-inner{position:relative;width:var(--w);margin:0 auto;padding:1.4rem 3rem 1.4rem 0;display:grid;grid-template-columns:1fr auto;gap:.5rem 2.5rem;align-items:center}
.cookie-title{grid-column:1;font:600 1.15rem var(--sans);margin:0}
.cookie-text{grid-column:1;margin:0;font-size:.95rem;line-height:1.55;color:#2c3a47;max-width:52em}
.cookie-text a{color:#1d5c7a;font-weight:500}
.cookie-actions{grid-column:2;grid-row:1/3;display:flex;flex-direction:column;align-items:center;gap:.6rem;padding-left:2rem;border-left:1px solid #d3dbe2}
.cookie-actions .btn{background:#1d4f6e;color:#fff;min-width:11rem;text-align:center;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border:0;cursor:pointer}
.cookie-actions .btn:hover{background:#163f58}
.cookie-more{color:#4a5866;font-size:.92rem;text-decoration:none}
.cookie-more:hover{text-decoration:underline}
.cookie-x{position:absolute;right:0;top:50%;transform:translateY(-50%);background:none;border:0;font-size:1.8rem;line-height:1;color:#2c3a47;cursor:pointer;padding:.25rem .5rem}

/* intro video (home, once per visit) */
.intro[hidden]{display:none}
.intro{position:fixed;top:0;right:0;bottom:0;left:0;height:100vh;height:100dvh;z-index:50;background:#05080b;display:flex;align-items:center;justify-content:center;transition:opacity .7s ease}
.intro.out{opacity:0;pointer-events:none}
.intro video{width:100%;height:100%;-webkit-transform:translateZ(0);object-fit:contain;background:#05080b}
.intro-ctrl{position:absolute;right:max(1.5rem,env(safe-area-inset-right));bottom:max(1.5rem,env(safe-area-inset-bottom));display:flex;gap:.6rem}
.intro-ctrl button{font:500 .8rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text);background:rgba(10,14,19,.6);
  border:1px solid rgba(230,236,241,.35);padding:.55rem .9rem;border-radius:2px;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.intro-ctrl button:hover{border-color:var(--cyan);color:var(--cyan)}

@media (max-width:900px){
  .menu-btn{display:block}
  .head nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;gap:0;background:rgba(10,14,19,.97);border-bottom:1px solid var(--line);padding:.5rem 1.5rem 1rem}
  .head nav.open{display:flex}
  .head nav a{padding:.7rem 0;border-bottom:1px solid var(--line);font-size:1rem}
  .split{grid-template-columns:1fr;gap:.25rem}
  .hero::after{background:linear-gradient(0deg,var(--bg) 8%,rgba(10,14,19,.75) 55%,rgba(10,14,19,.35) 100%)}
  .focus--five{grid-template-columns:1fr}
  .focus--five li{grid-column:auto!important}
}
@media (max-width:760px){
  .w-item a{grid-template-columns:6.5rem 1fr;gap:1rem}
  .cookie-inner{grid-template-columns:1fr;padding:1.25rem 2.5rem 1.25rem 0}
  .cookie-actions{grid-column:1;grid-row:auto;flex-direction:row;padding-left:0;border-left:0;margin-top:.5rem}
  .cookie-x{top:1rem;transform:none}
  .pager{grid-template-columns:1fr}.pager .next{text-align:left}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* conferences & workshops */
.ev-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.ev-item a{display:grid;grid-template-columns:15rem 1fr;gap:2rem;align-items:center;padding:1.75rem 0;border-bottom:1px solid var(--line);text-decoration:none;color:var(--text)}
.ev-logo{display:flex;align-items:center;justify-content:center;aspect-ratio:4/3;padding:1.25rem;border:1px solid var(--line)}
.ev-logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.ev-item h2{font:400 1.6rem/1.2 var(--sans);margin:.4rem 0 .6rem}
.ev-item h2 span{display:block;font-size:.62em;color:var(--muted);margin-top:.2rem}
.ev-item a:hover h2{color:var(--cyan)}
.ev-meta{display:flex;flex-wrap:wrap;gap:.4rem 1.25rem;margin:0;font:500 .78rem var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--cyan)}
.ev-talk{margin:0;color:#c5d0da;max-width:46em}
.ev-role{display:inline-block;font:500 .72rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--amber);margin-right:.7rem}
.art--event{width:min(52rem,calc(100% - 3rem))}
.ev-sub{font-size:1.15rem;color:var(--muted);margin:0}
.ev-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin:2rem 0 0}
.ev-facts div{background:var(--bg);padding:1rem 1.2rem}
.ev-facts .ev-facts-wide{grid-column:1/-1}
.ev-facts dt{font:500 .72rem var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);margin-bottom:.3rem}
.ev-facts dd{margin:0;color:var(--text)}
.ev-by{display:block;color:var(--muted);font-size:.92rem;margin-top:.25rem}
.ev-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem}
.ev-logo--head{width:11rem;flex-shrink:0;aspect-ratio:auto;height:7rem;padding:.9rem}
.slideshow{margin:2.25rem 0 2.5rem;border:1px solid var(--line);background:#05080b}
.slides{list-style:none;margin:0;padding:0;position:relative;height:min(70vh,36rem);height:min(70svh,36rem)}
.slides li{position:absolute;top:0;right:0;bottom:0;left:0;display:none}
.slides li.on{display:block}
.slides img{position:absolute;top:0;left:0;width:100%;height:100%;max-width:none;object-fit:contain}
.ss-bar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1rem;padding:.75rem;border-top:1px solid var(--line);background:var(--bg)}
.ss-bar button{background:none;border:1px solid #33414f;color:var(--text);font-size:1.6rem;line-height:1;width:2.9rem;height:2.9rem;touch-action:manipulation;-webkit-tap-highlight-color:transparent;border-radius:2px;cursor:pointer}
.ss-bar button:hover{border-color:var(--cyan);color:var(--cyan)}
.ss-cap{margin:0;text-align:center;color:var(--muted);font-size:.92rem}
.ss-count{font:500 .78rem var(--mono);color:var(--cyan);margin-right:.8rem}
@media (max-width:760px){
  .ev-item a{grid-template-columns:1fr;gap:1rem}
  .ev-facts{grid-template-columns:1fr}
  .ev-head{flex-direction:column;align-items:flex-start}
  .slides{height:60vh;height:60svh}
}
.foot-li{display:inline-flex;align-items:center;gap:.55rem}
.foot-li img{width:20px;height:20px;border-radius:3px}

.ev-photo{padding:0}
.ev-photo img{width:100%;height:100%;max-width:none;max-height:none;object-fit:cover}

/* simple events list */
.ev-list{border-top:1px solid var(--line)}
.ev-row{display:grid;grid-template-columns:18rem 1fr auto;gap:1.5rem;align-items:baseline;padding:1.15rem 0;border-bottom:1px solid var(--line)}
.ev-date{font:500 .82rem var(--mono);letter-spacing:.06em;color:var(--cyan)}
.ev-link{font:400 1.2rem/1.35 var(--sans);color:var(--text);text-decoration:none}
.ev-link:hover{color:var(--cyan)}
.ev-place{color:var(--muted);font-size:.95rem;text-align:right}
@media (max-width:760px){.ev-row{grid-template-columns:1fr;gap:.25rem}.ev-place{text-align:left}}

/* iPhone / iPad */
.head{padding-left:max(1.5rem,calc((100% - 72rem)/2),env(safe-area-inset-left));padding-right:max(1.5rem,calc((100% - 72rem)/2),env(safe-area-inset-right))}
.cookie{padding-bottom:env(safe-area-inset-bottom)}
.foot{padding-bottom:env(safe-area-inset-bottom)}
.menu-btn{min-height:44px;touch-action:manipulation}
.head nav a,.intro-ctrl button{touch-action:manipulation}
.intro-ctrl button{min-height:44px}
#intro-play{border-color:var(--cyan);color:var(--cyan)}
@media (hover:none){.tiles a:hover,.btn:hover,.ev-link:hover{transition:none}}
.intro-ctrl button[hidden]{display:none}

/* publications */
.pub-group + .pub-group{padding-top:0;margin-top:3.25rem}
.pub-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.pub{display:grid;grid-template-columns:9rem 1fr;gap:1.5rem;padding:1.3rem 0;border-bottom:1px solid var(--line)}
.pub-tag{font:500 .8rem var(--mono);letter-spacing:.06em;color:var(--cyan);padding-top:.25rem}
.pub-tag--review{color:var(--amber,#e0b35a)}
.pub-title{font:400 1.12rem/1.4 var(--sans);color:var(--text);text-decoration:none;display:block}
a.pub-title:hover{color:var(--cyan)}
.pub-authors{margin:.45rem 0 0;color:var(--text);opacity:.85;font-size:.95rem}
.pub-meta{margin:.2rem 0 0;color:var(--muted);font-size:.92rem}
.pub-links{margin:.45rem 0 0;font:400 .82rem var(--mono);color:var(--muted)}
.pub-links a{color:var(--cyan)}
.pub-oa{color:var(--green)}
@media (max-width:760px){.pub{grid-template-columns:1fr;gap:.35rem}}

.focus p + p{margin-top:.9rem}
/* inner pages: photo behind the page title, as on the home page */
.hero--page{min-height:min(70vh,42rem);min-height:min(70svh,42rem)}
.hero--page .hero-text{padding:9rem 0 3.5rem}
.hero--page h1{font-size:clamp(2.2rem,5vw,3.8rem);line-height:1.08;max-width:16em}
.hero-img--top{object-position:50% 20%}
