/* OPTIMIZE CoE · built from css/src by tools/build_site.py (redesign-20261002c) */
/* 01-tokens.css */
/* ===== Design tokens: one place for colour, type, spacing, radius, shadow and motion ===== */
@font-face{font-family:"Plex Thai";src:url("/fonts/plex-thai-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Plex Thai";src:url("/fonts/plex-thai-Medium.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Plex Thai";src:url("/fonts/plex-thai-SemiBold.woff2") format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Plex Thai";src:url("/fonts/plex-thai-Bold.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Space Grotesk";src:url("/fonts/space-grotesk-500.woff2") format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Space Grotesk";src:url("/fonts/space-grotesk-700.woff2") format("woff2");font-weight:700;font-display:swap}
:root{
  /* brand: the film's night plum, gold and the logo's violet → pink → sky */
  --night:#100b19; --night-2:#1a1228; --night-3:#251a38;
  --violet:#6a46c8; --violet-600:#5a37b3; --violet-300:#b9a3f2; --lilac:#ece5fb;
  --pink:#d94f86; --sky:#2e9db0; --gold:#e0a43a; --gold-ink:#8a5a0c;
  --gradient:linear-gradient(115deg,#7b5cf0 0%,#d94f86 52%,#2e9db0 100%);
  --gradient-soft:linear-gradient(115deg,rgba(123,92,240,.14),rgba(217,79,134,.1) 52%,rgba(46,157,176,.12));
  /* research pillars (chips, bars, cards) */
  --opt:#e08a2c; --opt-ink:#8b4c0b; --opt-tint:#fdf0e2;
  --int:#c43c7c; --int-ink:#97245b; --int-tint:#fbe6ef;
  --pre:#2b93a3; --pre-ink:#13616d; --pre-tint:#e1f3f5;
  /* surfaces & text (light theme) */
  --bg:#faf8fd; --surface:#ffffff; --surface-2:#f4f0fa; --surface-3:#ebe4f6;
  --text:#1b1430; --text-2:#463c5c; --text-3:#655b7c; --line:#e3dbef; --line-2:#d3c7e6;
  --link:#5a37b3; --focus:#7b5cf0;
  /* type */
  --font:"Plex Thai","IBM Plex Sans Thai","Noto Sans Thai",system-ui,sans-serif;
  --display:"Space Grotesk","Plex Thai","IBM Plex Sans Thai",system-ui,sans-serif;
  --fs-xs:.78rem; --fs-sm:.88rem; --fs-md:1rem; --fs-lg:1.15rem;
  --fs-h3:clamp(1.12rem,1rem + .5vw,1.35rem);
  --fs-h2:clamp(1.6rem,1.2rem + 1.6vw,2.5rem);
  --fs-h1:clamp(2.1rem,1.4rem + 3vw,3.9rem);
  /* space, shape, depth, motion */
  --s1:.25rem; --s2:.5rem; --s3:.75rem; --s4:1rem; --s5:1.5rem; --s6:2rem; --s7:3rem; --s8:4.5rem; --s9:6.5rem;
  --r-sm:8px; --r:14px; --r-lg:22px; --r-pill:999px;
  --shadow-1:0 1px 2px rgba(27,20,48,.06),0 4px 14px rgba(27,20,48,.06);
  --shadow-2:0 10px 30px rgba(42,22,82,.12),0 2px 6px rgba(42,22,82,.06);
  --shadow-glow:0 18px 50px rgba(106,70,200,.25);
  --ease:cubic-bezier(.2,.7,.2,1); --dur:.5s;
  --container:1240px; --gutter:clamp(16px,4vw,32px);
  color-scheme:light;
}
/* dark theme: follows the system unless the visitor picked one (js/theme.js sets data-theme) */
:root[data-theme="dark"]{
  --bg:#0d0915; --surface:#161024; --surface-2:#1d152f; --surface-3:#271d3d;
  --text:#f2edfb; --text-2:#cfc4e4; --text-3:#a99ec2; --line:#2c2342; --line-2:#3a2f55;
  --link:#bea8ff; --lilac:#2a2042; --violet-600:#a98bff;
  --opt-ink:#f3b46e; --opt-tint:#2e2014; --int-ink:#f08ab9; --int-tint:#2e1525; --pre-ink:#78d3df; --pre-tint:#0f2a2f;
  --gold-ink:#f0c46c;
  --shadow-1:0 1px 2px rgba(0,0,0,.4),0 4px 14px rgba(0,0,0,.3);
  --shadow-2:0 12px 34px rgba(0,0,0,.45);
  color-scheme:dark;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#0d0915; --surface:#161024; --surface-2:#1d152f; --surface-3:#271d3d;
    --text:#f2edfb; --text-2:#cfc4e4; --text-3:#a99ec2; --line:#2c2342; --line-2:#3a2f55;
    --link:#bea8ff; --lilac:#2a2042; --violet-600:#a98bff;
    --opt-ink:#f3b46e; --opt-tint:#2e2014; --int-ink:#f08ab9; --int-tint:#2e1525; --pre-ink:#78d3df; --pre-tint:#0f2a2f;
    --gold-ink:#f0c46c;
    --shadow-1:0 1px 2px rgba(0,0,0,.4),0 4px 14px rgba(0,0,0,.3);
    --shadow-2:0 12px 34px rgba(0,0,0,.45);
    color-scheme:dark;
  }
}
/* 02-base.css */
/* ===== Base ===== */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:90px}
body{margin:0;background:var(--bg);color:var(--text);font:400 var(--fs-md)/1.75 var(--font);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}
img,svg,video{display:block;max-width:100%}
img{height:auto}
a{color:var(--link);text-underline-offset:.2em;text-decoration-thickness:1px}
a:hover{text-decoration-thickness:2px}
h1,h2,h3,h4{margin:0;font-family:var(--display);line-height:1.2;letter-spacing:-.01em;color:var(--text)}
p{margin:0}
ul,ol{margin:0;padding:0}
button,input,select{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:6px}
::selection{background:rgba(123,92,240,.28)}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip-path:inset(50%)!important;white-space:nowrap!important;border:0!important}
[hidden]{display:none!important}
.skip-link{position:absolute;left:var(--gutter);top:-60px;z-index:100;padding:.6rem 1rem;border-radius:var(--r-sm);background:var(--violet);color:#fff;font-weight:600}
.skip-link:focus{top:12px}
main{display:block;min-height:60vh}
main:focus{outline:none}
.muted{color:var(--text-3)}
.small{font-size:var(--fs-sm)}
/* ===== Layout ===== */
.container{width:min(100% - 2*var(--gutter),var(--container));margin-inline:auto}
.container.narrow{width:min(100% - 2*var(--gutter),900px)}
.section{padding-block:clamp(3.2rem,6vw,6rem)}
.section-tint{background:var(--surface-2)}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,5rem)}
@media (max-width:900px){.two-col{grid-template-columns:1fr}}
.kicker{display:inline-flex;align-items:center;gap:.55rem;margin-bottom:.7rem;color:var(--violet-600);font:600 var(--fs-xs)/1.4 var(--display);letter-spacing:.14em;text-transform:uppercase}
.kicker::before{content:"";width:22px;height:2px;border-radius:2px;background:var(--gradient)}
.section-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;margin-bottom:clamp(1.8rem,3vw,2.8rem)}
.section-title{font-size:var(--fs-h2);font-weight:700;max-width:22ch}
.section-title small{font:500 var(--fs-md) var(--font);color:var(--text-3);margin-left:.4rem}
.section-lead{margin-top:.8rem;max-width:62ch;color:var(--text-2);font-size:var(--fs-lg)}
.mini-title{font:600 var(--fs-sm)/1.4 var(--display);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin-bottom:1rem}
.text-link{display:inline-flex;align-items:center;gap:.4rem;font-weight:600;white-space:nowrap;text-decoration:none;color:var(--link)}
.text-link .icon{transition:transform .25s var(--ease)}
.text-link:hover .icon{transform:translateX(4px)}
@media (max-width:700px){.section-head{flex-direction:column;align-items:flex-start}}
/* ===== Header ===== */
.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.6) blur(14px);-webkit-backdrop-filter:saturate(1.6) blur(14px);border-bottom:1px solid transparent;transition:border-color .3s,box-shadow .3s,background .3s}
.site-header.is-scrolled{border-bottom-color:var(--line);box-shadow:0 6px 24px rgba(27,20,48,.07)}
.header-inner{display:flex;align-items:center;gap:1.2rem;width:min(100% - 2*var(--gutter),1360px);margin-inline:auto;height:76px;transition:height .3s var(--ease)}
.is-scrolled .header-inner{height:64px}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;color:var(--text);flex:none}
.brand-logo{width:44px;height:44px;border-radius:50%;box-shadow:0 0 0 3px var(--surface),0 4px 14px rgba(106,70,200,.35)}
.brand-text{display:flex;flex-direction:column;line-height:1.1}
.brand-mark{font:700 1.08rem/1.1 var(--display);letter-spacing:.02em}
.brand-mark span{background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}
.brand-sub{font-size:.72rem;color:var(--text-3);margin-top:.2rem}
.main-nav{flex:1;display:flex;align-items:center;justify-content:center;gap:.4rem}
.main-nav ul{display:flex;list-style:none;gap:.1rem}
.main-nav a{position:relative;display:block;padding:.5rem .7rem;border-radius:var(--r-pill);color:var(--text-2);font-weight:500;font-size:.93rem;text-decoration:none;white-space:nowrap;transition:color .2s,background .2s}
.main-nav a:hover{color:var(--text);background:var(--surface-2)}
.main-nav a[aria-current="page"]{color:var(--violet-600);background:var(--lilac)}
.main-nav .nav-extra{display:none}
.header-tools{display:flex;align-items:center;gap:.35rem;margin-left:auto}
.tool-btn{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:50%;border:1px solid transparent;background:transparent;color:var(--text-2);cursor:pointer;transition:background .2s,color .2s,border-color .2s}
.tool-btn:hover{background:var(--surface-2);color:var(--text)}
.lang-switch{display:inline-grid;place-items:center;min-width:46px;height:38px;padding:0 .7rem;border:1px solid var(--line-2);border-radius:var(--r-pill);font:600 .82rem var(--display);color:var(--text);text-decoration:none}
.lang-switch:hover{border-color:var(--violet);color:var(--violet-600)}
.icon-sun,.icon-close{display:none}
:root[data-theme="dark"] .icon-sun{display:block} :root[data-theme="dark"] .icon-moon{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .icon-sun{display:block} :root:not([data-theme="light"]) .icon-moon{display:none}}
.nav-toggle{display:none}
@media (max-width:1180px){
  .main-nav a{padding:.5rem .5rem;font-size:.88rem}
}
@media (max-width:1060px){
  .nav-toggle{display:inline-grid}
  .main-nav{position:fixed;inset:64px 0 auto 0;max-height:calc(100dvh - 64px);overflow:auto;flex-direction:column;align-items:stretch;padding:1rem var(--gutter) 1.6rem;background:var(--bg);border-bottom:1px solid var(--line);box-shadow:var(--shadow-2);transform:translateY(-12px);opacity:0;visibility:hidden;transition:opacity .25s,transform .25s var(--ease),visibility .25s}
  .nav-open .main-nav{transform:none;opacity:1;visibility:visible}
  .main-nav ul{flex-direction:column;gap:.15rem}
  .main-nav a{padding:.85rem 1rem;font-size:1.02rem;border-radius:var(--r)}
  .main-nav .nav-extra{display:block;margin-top:.6rem;padding-top:.8rem;border-top:1px solid var(--line)}
  .nav-contact{display:flex!important;align-items:center;gap:.6rem}
  .nav-open .icon-open{display:none} .nav-open .icon-close{display:block}
  .header-inner{height:64px}
  .brand-sub{display:none}
}
@media (max-width:420px){.brand-mark{font-size:.98rem}.tool-btn{width:38px;height:38px}}
/* ===== Footer ===== */
.site-footer{position:relative;overflow:hidden;margin-top:0;padding:clamp(3rem,6vw,5rem) 0 1.6rem;background:var(--night);color:#d9d0ea}
.footer-glow{position:absolute;inset:-40% -10% auto auto;width:70vw;height:70vw;max-width:900px;max-height:900px;background:radial-gradient(circle,rgba(123,92,240,.28),transparent 60%);pointer-events:none}
.footer-grid{position:relative;display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:clamp(2rem,4vw,4rem)}
.brand-invert{color:#fff}.brand-invert .brand-sub{color:#b9add2}
.brand-invert .brand-logo{box-shadow:0 0 0 3px rgba(255,255,255,.08),0 6px 20px rgba(123,92,240,.45)}
.footer-name{margin-top:1.2rem;color:#fff;font:600 1.02rem/1.6 var(--font);max-width:38ch}
.footer-faculty{margin-top:.4rem;color:#b9add2;font-size:var(--fs-sm)}
.footer-title{font:600 var(--fs-sm) var(--display);letter-spacing:.1em;text-transform:uppercase;color:#fff;margin-bottom:1rem}
.footer-contact{list-style:none;display:grid;gap:.8rem;font-size:var(--fs-sm)}
.footer-contact li{display:grid;grid-template-columns:22px 1fr;gap:.6rem;align-items:start}
.footer-contact .icon{color:var(--violet-300);margin-top:.25rem}
.site-footer a{color:#e9e2f7;text-decoration:none}
.site-footer a:hover{color:#fff;text-decoration:underline}
.footer-links{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:.55rem 1.2rem;font-size:var(--fs-sm)}
.footer-links button{padding:0;border:0;background:none;color:#e9e2f7;cursor:pointer;text-align:left;font-size:var(--fs-sm);text-decoration:underline}
.footer-bottom{position:relative;display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:3rem;padding-top:1.4rem;border-top:1px solid rgba(255,255,255,.1);font-size:var(--fs-xs);color:#a89cc2}
@media (max-width:900px){.footer-grid{grid-template-columns:1fr 1fr}.footer-brand{grid-column:1/-1}}
@media (max-width:560px){.footer-grid{grid-template-columns:1fr}}
/* 03-components.css */
/* ===== Buttons, chips, tags ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:46px;padding:.7rem 1.25rem;border-radius:var(--r-pill);border:1px solid transparent;font:600 .95rem/1.2 var(--font);text-decoration:none;cursor:pointer;transition:transform .2s var(--ease),box-shadow .2s,background .2s,color .2s,border-color .2s}
.btn small{font-weight:500;opacity:.75}
.btn:hover{transform:translateY(-2px)}
.btn-primary{color:#fff;background:var(--gradient);background-size:160% 100%;box-shadow:0 8px 22px rgba(123,92,240,.35)}
.btn-primary:hover{background-position:100% 0;box-shadow:var(--shadow-glow)}
.btn-light{color:var(--night);background:#fff;border-color:rgba(255,255,255,.5)}
.btn-ghost{color:var(--text);background:var(--surface);border-color:var(--line-2)}
.btn-ghost:hover{border-color:var(--violet);color:var(--violet-600)}
.btn-sm{min-height:36px;padding:.4rem .85rem;font-size:.84rem}
.btn-row{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center}
.btn .icon{width:18px;height:18px}
.chip{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .65rem;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:600;line-height:1.6;white-space:nowrap}
.chip .dot,.dot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block}
.chip-optimization{background:var(--opt-tint);color:var(--opt-ink)} .chip-optimization .dot,.dot-optimization{background:var(--opt)}
.chip-intelligence{background:var(--int-tint);color:var(--int-ink)} .chip-intelligence .dot,.dot-intelligence{background:var(--int)}
.chip-prediction{background:var(--pre-tint);color:var(--pre-ink)} .chip-prediction .dot,.dot-prediction{background:var(--pre)}
.tag{display:inline-flex;align-items:center;padding:.1rem .55rem;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:600;line-height:1.7;background:var(--surface-2);color:var(--text-2)}
.tag-leadership{background:linear-gradient(120deg,#f6e3bd,#f1d39a);color:#6b4408}
.tag-core{background:var(--lilac);color:var(--violet-600)}
.tag-national{background:var(--pre-tint);color:var(--pre-ink)}
.tag-international{background:var(--int-tint);color:var(--int-ink)}
.tag-young{background:var(--opt-tint);color:var(--opt-ink)}
.tag-papers{background:transparent;border:1px solid var(--line-2);color:var(--text-3)}
.tag-new{background:var(--gradient);color:#fff}
.badge-top2{display:inline-flex;align-items:center;padding:.25rem .7rem;border-radius:var(--r-pill);font:700 .82rem var(--display);color:#3b2504;background:linear-gradient(120deg,#ffd987,#e0a43a);box-shadow:0 4px 14px rgba(224,164,58,.35)}
/* ===== Page hero (inner pages) ===== */
.page-hero{position:relative;overflow:hidden;padding:clamp(2.4rem,5vw,4.5rem) 0 clamp(2.4rem,5vw,4rem);background:var(--surface-2);border-bottom:1px solid var(--line)}
.page-hero::before{content:"";position:absolute;inset:0;opacity:.75;pointer-events:none;background-repeat:no-repeat;background-position:right -80px center;background-size:auto 140%}
.page-hero::after{content:"";position:absolute;width:520px;height:520px;right:-120px;top:-220px;border-radius:50%;background:var(--gradient-soft);filter:blur(10px);pointer-events:none}
.page-hero .container{position:relative;z-index:1}
.motif-contours::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 600 400' fill='none' stroke='%237b5cf0' stroke-opacity='.22'%3E%3Cellipse cx='420' cy='200' rx='40' ry='26'/%3E%3Cellipse cx='420' cy='200' rx='80' ry='54'/%3E%3Cellipse cx='420' cy='200' rx='125' ry='84'/%3E%3Cellipse cx='420' cy='200' rx='170' ry='116'/%3E%3Cellipse cx='420' cy='200' rx='220' ry='150'/%3E%3Cellipse cx='420' cy='200' rx='275' ry='186'/%3E%3Cpath d='M120 40 L250 70 L330 130 L380 170 L405 188 L420 200' stroke='%23e0a43a' stroke-opacity='.6' stroke-width='2'/%3E%3C/svg%3E")}
.motif-rings::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 600 400' fill='none' stroke='%23d94f86' stroke-opacity='.18'%3E%3Ccircle cx='430' cy='200' r='40'/%3E%3Ccircle cx='430' cy='200' r='90'/%3E%3Ccircle cx='430' cy='200' r='140'/%3E%3Ccircle cx='430' cy='200' r='190'/%3E%3Ccircle cx='430' cy='200' r='240'/%3E%3Ccircle cx='430' cy='200' r='6' fill='%23e0a43a' fill-opacity='.6'/%3E%3C/svg%3E")}
.motif-dots::before{background-image:radial-gradient(circle,rgba(123,92,240,.22) 1.4px,transparent 1.6px);background-size:22px 22px;background-position:right top;-webkit-mask-image:linear-gradient(100deg,transparent 35%,#000 85%);mask-image:linear-gradient(100deg,transparent 35%,#000 85%)}
.motif-grid::before{background-image:linear-gradient(rgba(46,157,176,.14) 1px,transparent 1px),linear-gradient(90deg,rgba(46,157,176,.14) 1px,transparent 1px);background-size:36px 36px;background-position:right top;-webkit-mask-image:linear-gradient(100deg,transparent 40%,#000 90%);mask-image:linear-gradient(100deg,transparent 40%,#000 90%)}
.motif-wave::before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 600 400' fill='none' stroke-width='2'%3E%3Cpath d='M60 300 C160 300 200 120 300 140 S440 300 560 110' stroke='%232e9db0' stroke-opacity='.45'/%3E%3Cg fill='%237b5cf0' fill-opacity='.25'%3E%3Ccircle cx='90' cy='280' r='4'/%3E%3Ccircle cx='150' cy='300' r='4'/%3E%3Ccircle cx='210' cy='210' r='4'/%3E%3Ccircle cx='270' cy='160' r='4'/%3E%3Ccircle cx='330' cy='170' r='4'/%3E%3Ccircle cx='390' cy='230' r='4'/%3E%3Ccircle cx='450' cy='240' r='4'/%3E%3Ccircle cx='510' cy='160' r='4'/%3E%3C/g%3E%3C/svg%3E")}
.crumbs{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:1.4rem;font-size:var(--fs-sm);color:var(--text-3)}
.crumbs a{color:var(--text-2);text-decoration:none}.crumbs a:hover{color:var(--link);text-decoration:underline}
.page-title{font-size:var(--fs-h1);font-weight:700;max-width:18ch}
.page-lead{margin-top:1rem;max-width:62ch;font-size:var(--fs-lg);color:var(--text-2)}
.hero-stats{display:flex;flex-wrap:wrap;gap:.8rem;margin:2rem 0 0}
.hero-stats div{min-width:130px;padding:.8rem 1.1rem;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-1)}
.hero-stats dt{font-size:var(--fs-xs);color:var(--text-3)}
.hero-stats dd{margin:0;font:700 1.8rem/1.1 var(--display);background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}
/* ===== Filter bar ===== */
.filter-bar{position:sticky;top:72px;z-index:20;display:flex;flex-wrap:wrap;gap:.8rem 1.2rem;align-items:center;margin-bottom:2.2rem;padding:1rem;border-radius:var(--r-lg);background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line);box-shadow:var(--shadow-1)}
.search-field{position:relative;flex:1 1 260px;display:flex;align-items:center}
.search-field .icon{position:absolute;left:14px;color:var(--text-3)}
.search-field input{width:100%;height:46px;padding:0 1rem 0 2.6rem;border-radius:var(--r-pill);border:1px solid var(--line-2);background:var(--bg);transition:border-color .2s,box-shadow .2s}
.search-field input:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 4px rgba(123,92,240,.15)}
.chip-group{display:flex;flex-wrap:wrap;gap:.4rem}
.chip-btn{display:inline-flex;align-items:center;gap:.4rem;min-height:38px;padding:.3rem .85rem;border-radius:var(--r-pill);border:1px solid var(--line-2);background:var(--surface);font-size:.86rem;font-weight:500;color:var(--text-2);cursor:pointer;transition:all .2s}
.chip-btn:hover{border-color:var(--violet);color:var(--text)}
.chip-btn.is-on{background:var(--night-2);border-color:var(--night-2);color:#fff}
:root[data-theme="dark"] .chip-btn.is-on{background:var(--violet-300);border-color:var(--violet-300);color:var(--night)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .chip-btn.is-on{background:var(--violet-300);border-color:var(--violet-300);color:var(--night)}}
.chip-btn .count{font-size:.74rem;padding:0 .4rem;border-radius:var(--r-pill);background:rgba(127,110,160,.14)}
.chip-btn.is-on .count{background:rgba(255,255,255,.18)}
.filter-count{flex-basis:100%;font-size:var(--fs-sm);color:var(--text-3)}
.empty-state{padding:3rem 1rem;text-align:center;color:var(--text-3)}
@media (max-width:1060px){.filter-bar{top:66px}}
@media (max-width:700px){.filter-bar{position:static;padding:.8rem}.chip-group{flex-wrap:nowrap;overflow-x:auto;padding-bottom:.2rem;scrollbar-width:none;width:100%}.chip-group::-webkit-scrollbar{display:none}.chip-btn{flex:none}}
/* ===== Person card ===== */
.people-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.1rem}
.people-grid.is-leadership{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.person-card{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s,border-color .3s}
.person-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-2);border-color:var(--line-2)}
.person-link{display:flex;flex-direction:column;height:100%;color:inherit;text-decoration:none}
.person-photo{position:relative;aspect-ratio:4/4.3;background:linear-gradient(160deg,var(--surface-3),var(--surface-2));overflow:hidden}
.person-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 18%;transition:transform .6s var(--ease)}
.person-card:hover .person-photo img{transform:scale(1.04)}
.person-photo .initials{position:absolute;inset:0;display:grid;place-items:center;font:700 2.4rem var(--display);color:#fff;background:var(--gradient)}
.flag{display:inline-grid;place-items:center;min-width:34px;height:24px;padding:0 .4rem;border-radius:6px;font:700 .72rem/1 var(--display);letter-spacing:.06em;color:#fff;background:var(--gradient);box-shadow:0 2px 8px rgba(0,0,0,.2)}
.person-photo .flag{position:absolute;right:10px;bottom:10px}
.person-body{flex:1;display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.1rem 1.15rem}
.person-name{font:600 1.02rem/1.35 var(--font);letter-spacing:0}
.person-role{font-size:var(--fs-sm);color:var(--gold-ink);font-weight:600}
.person-aff{font-size:var(--fs-sm);color:var(--text-3);line-height:1.55}
.person-tags{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:auto;padding-top:.5rem}
.member-group{margin-bottom:3rem;scroll-margin-top:160px}
@media (max-width:640px){.people-grid,.people-grid.is-leadership{grid-template-columns:1fr 1fr;gap:.7rem}.person-body{padding:.75rem .8rem .9rem;gap:.25rem}.person-name{font-size:.92rem}.person-aff{font-size:.78rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.tag{font-size:.7rem}}
.group-title{display:flex;align-items:center;gap:.7rem;margin-bottom:1.2rem;font-size:var(--fs-h3);font-weight:700}
/* ===== Event card ===== */
.event-grid,.news-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1.3rem}
.news-grid{grid-template-columns:repeat(3,1fr)}
.event-card{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);overflow:hidden;transition:transform .3s var(--ease),box-shadow .3s}
.event-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-2)}
.event-link{display:flex;flex-direction:column;height:100%;color:inherit;text-decoration:none}
.event-media{position:relative;aspect-ratio:16/10;overflow:hidden;background:var(--surface-3)}
.event-media img{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease)}
.event-card:hover .event-media img{transform:scale(1.05)}
.event-type{position:absolute;left:12px;top:12px;padding:.15rem .65rem;border-radius:var(--r-pill);font-size:var(--fs-xs);font-weight:600;color:#fff;background:rgba(16,11,25,.72);backdrop-filter:blur(6px)}
.event-body{flex:1;display:flex;flex-direction:column;gap:.55rem;padding:1.1rem 1.2rem 1.2rem}
.event-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;font-size:var(--fs-xs);color:var(--text-3)}
.event-meta .icon{width:15px;height:15px}
.event-title{font:600 1.05rem/1.45 var(--font);letter-spacing:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.event-summary{font-size:var(--fs-sm);color:var(--text-2);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.event-foot{display:flex;justify-content:space-between;align-items:center;gap:.6rem;margin-top:auto;padding-top:.6rem}
.more{display:inline-flex;align-items:center;gap:.35rem;font-size:var(--fs-sm);font-weight:600;color:var(--link)}
.more .icon{width:16px;height:16px;transition:transform .25s var(--ease)}
a:hover .more .icon{transform:translateX(4px)}
.event-card.is-featured{grid-row:span 2}
.event-card.is-featured .event-media{aspect-ratio:16/11}
.event-card.is-featured .event-title{font-size:1.35rem;-webkit-line-clamp:4}
@media (max-width:1000px){.news-grid{grid-template-columns:1fr 1fr}.event-card.is-featured{grid-column:1/-1;grid-row:auto}}
@media (max-width:640px){.news-grid,.event-grid{grid-template-columns:1fr;gap:.8rem}.event-card:not(.is-featured) .event-link{display:grid;grid-template-columns:118px 1fr}.event-card:not(.is-featured) .event-media{aspect-ratio:auto;height:100%;min-height:128px}.event-card:not(.is-featured) .event-summary{display:none}.event-card:not(.is-featured) .event-body{padding:.75rem .85rem;gap:.35rem}.event-card:not(.is-featured) .event-title{font-size:.94rem;-webkit-line-clamp:3}.event-card:not(.is-featured) .event-type{font-size:.66rem;left:6px;top:6px}.event-card:not(.is-featured) .event-foot{padding-top:.2rem}.event-card:not(.is-featured) .chip{display:none}}
.year-block{margin-bottom:3rem}
.year-title{display:flex;align-items:baseline;gap:.8rem;margin-bottom:1.2rem;font:700 clamp(2rem,4vw,3rem)/1 var(--display)}
.year-title span{background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}
.year-title small{font:500 var(--fs-sm) var(--font);color:var(--text-3)}
/* ===== Paper ===== */
.paper-list{display:grid;gap:1rem}
.container.narrow > .section-title{max-width:none;margin-bottom:1.5rem}
.paper{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1.2rem;overflow-wrap:anywhere;padding:1.4rem 1.5rem;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);transition:box-shadow .3s,border-color .3s;scroll-margin-top:170px}
.paper:hover{box-shadow:var(--shadow-1);border-color:var(--line-2)}
.paper:target{border-color:var(--violet);box-shadow:0 0 0 4px rgba(123,92,240,.15)}
.paper-num::before{content:attr(data-n)}
.paper-num{font:700 1.5rem/1 var(--display);color:var(--line-2)}
.paper-tags{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin-bottom:.6rem}
.q{display:inline-flex;padding:.1rem .6rem;border-radius:var(--r-pill);font:700 .74rem/1.7 var(--display);letter-spacing:.04em}
.q-q1{background:linear-gradient(120deg,#ffe2a6,#f0b85a);color:#4d3006}
.q-q2{background:var(--lilac);color:var(--violet-600)}
.paper-year{font-size:var(--fs-xs);color:var(--text-3);font-weight:600}
.paper-title{font:600 1.08rem/1.5 var(--font);letter-spacing:0}
.paper-title a{color:var(--text);text-decoration:none}
.paper-title a:hover{color:var(--link);text-decoration:underline}
.paper-authors{margin-top:.5rem;font-size:var(--fs-sm);color:var(--text-2)}
.member-author{font-weight:600;color:var(--violet-600);text-decoration:none;border-bottom:1px dashed currentColor}
.paper-journal{margin-top:.25rem;font-size:var(--fs-sm);color:var(--text-3)}
.paper-actions{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-top:.9rem}
.paper-note{font-size:var(--fs-xs);font-weight:600;color:var(--gold-ink);background:var(--opt-tint);padding:.15rem .6rem;border-radius:var(--r-pill)}
.source-note{margin-top:2rem;font-size:var(--fs-xs);color:var(--text-3)}
@media (max-width:560px){.paper{grid-template-columns:minmax(0,1fr);padding:1.1rem}.paper-num{display:none}}
/* ===== Search dialog ===== */
.search-dialog{width:min(680px,calc(100% - 24px));max-height:min(78vh,720px);margin:10vh auto auto;padding:0;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);color:var(--text);box-shadow:0 30px 80px rgba(16,11,25,.45)}
.search-dialog::backdrop{background:rgba(13,9,21,.55);backdrop-filter:blur(4px)}
.search-box{display:flex;align-items:center;gap:.6rem;padding:.6rem .6rem .6rem 1.1rem;border-bottom:1px solid var(--line)}
.search-box > .icon{color:var(--text-3)}
.search-box input{flex:1;height:48px;border:0;background:transparent;font-size:1.1rem}
.search-box input:focus{outline:none}
.search-box:focus-within{box-shadow:inset 0 -2px var(--focus)}
.search-empty{padding:1.2rem 1.1rem;color:var(--text-2)}
.search-hint{padding:.6rem 1.2rem;font-size:var(--fs-xs);color:var(--text-3)}
.search-results{list-style:none;max-height:calc(min(78vh,720px) - 120px);overflow:auto;padding:0 .6rem .8rem}
.search-results a{display:block;padding:.7rem .8rem;border-radius:var(--r);text-decoration:none;color:var(--text)}
.search-results a:hover,.search-results a[aria-selected="true"]{background:var(--surface-2)}
.search-results .k{display:inline-block;margin-bottom:.15rem;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--violet-600)}
.search-results .t{display:block;font-weight:600;line-height:1.45}
.search-results .s{display:block;font-size:var(--fs-sm);color:var(--text-3)}
.search-results mark{background:rgba(224,164,58,.35);color:inherit;border-radius:3px}
/* ===== Lightbox ===== */
.lightbox{width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:rgba(10,7,16,.94);color:#fff}
.lightbox[open]{display:grid;grid-template-columns:auto 1fr auto;align-items:center}
.lightbox figure{margin:0;display:grid;justify-items:center;gap:.8rem;padding:4rem 1rem}
.lightbox img{max-width:100%;max-height:78vh;border-radius:var(--r);box-shadow:0 20px 60px rgba(0,0,0,.6)}
.lightbox figcaption{font-size:var(--fs-sm);color:#cfc4e4}
.lightbox .tool-btn{color:#fff;margin:0 .6rem;background:rgba(255,255,255,.08)}
.lightbox .tool-btn:hover{background:rgba(255,255,255,.18)}
.lb-close{position:absolute;top:1rem;right:.4rem}
@media (max-width:640px){.lightbox[open]{grid-template-columns:1fr}.lb-prev,.lb-next{position:absolute;bottom:1.5rem}.lb-prev{left:30%}.lb-next{right:30%}}
/* ===== Statistics consent panel (created by js/analytics.js on the live host) ===== */
.analytics-choice{position:fixed;right:18px;bottom:18px;z-index:80;width:min(440px,calc(100% - 36px));display:flex;flex-wrap:wrap;gap:.6rem;padding:1.3rem;border-radius:var(--r-lg);background:var(--surface);color:var(--text);border:1px solid var(--line-2);box-shadow:var(--shadow-2)}
.analytics-choice p{flex-basis:100%;font-size:.95rem;line-height:1.7}
.analytics-choice button{min-height:44px;padding:.55rem 1.1rem;border-radius:var(--r-pill);border:1px solid var(--line-2);background:var(--surface);font-weight:600;cursor:pointer}
.analytics-choice button:first-of-type{border-color:transparent;background:var(--gradient);color:#fff}
.analytics-choice a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--fs-sm)}
.analytics-preferences{min-height:auto;color:inherit}
.sdg{display:inline-flex;align-items:center;padding:.1rem .5rem;border-radius:var(--r-pill);border:1px solid #2f9a58;color:#1d6b3c;font:600 var(--fs-xs)/1.6 var(--display)}
:root[data-theme="dark"] .sdg{border-color:#5fd18e;color:#8be3ad}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .sdg{border-color:#5fd18e;color:#8be3ad}}
/* 04-home.css */
/* ===== Home: launch film hero (ids/classes used by js/launch-film.js) ===== */
.live-hero{position:relative;background:#0c0a12;--bar-h:104px}
/* the film fills the first screen minus the header and the title bar under it */
.live-stage{position:relative;width:100%;aspect-ratio:16/9;max-height:calc(100svh - 76px - var(--bar-h));overflow:hidden;background:#0c0a12}
.launch-video{display:block;width:100%;height:100%;object-fit:contain;background:#0c0a12}
.motion-fallback{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.4rem;padding:2rem 8%;background:#0c0a12;color:#f3eef9;text-align:center}
.motion-fallback p{font:600 clamp(1.1rem,2vw,1.8rem)/1.6 var(--font);max-width:900px}
/* title bar: full official name + film controls, never on top of the picture */
.live-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem 2rem;min-height:var(--bar-h);padding:14px max(var(--gutter),(100% - 1360px) / 2);background:linear-gradient(180deg,#0c0a12,#120d1c);border-top:1px solid #2a2133}
.live-title{min-width:0}
.live-kicker{margin:0 0 .3rem;font:600 .74rem/1.4 var(--display);letter-spacing:.06em;color:var(--gold)}
.live-title h1{margin:0;font:600 clamp(1.02rem,.78rem + .6vw,1.42rem)/1.45 var(--font);color:#f3eef9;text-wrap:balance}
.live-controls{display:flex;flex:none;gap:.5rem}
.live-controls button{display:inline-flex;align-items:center;gap:.45rem;min-height:42px;padding:.5rem 1rem;border-radius:var(--r-pill);border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.06);color:#fff;font:500 .82rem var(--font);cursor:pointer;transition:background .2s,border-color .2s}
.live-controls button:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.4)}
.live-controls button:disabled{opacity:.45}
@media (max-width:1100px){
  .live-stage{aspect-ratio:auto;max-height:none}
  .launch-video{height:auto;aspect-ratio:16/9}
}
@media (max-width:700px){
  .live-hero{--bar-h:auto}
  .launch-video{aspect-ratio:2/3}
  .live-bar{flex-direction:column;align-items:stretch;padding:16px var(--gutter) 18px}
  .live-controls{justify-content:flex-start}
  .live-hero[data-state=unavailable] .live-stage{min-height:min(150vw,680px)}
}
/* intro band under the film */
.intro-band{position:relative;padding:clamp(2.4rem,5vw,4rem) 0;background:linear-gradient(180deg,#0c0a12,var(--night) 70%);color:#e8e1f6}
.intro-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(2rem,5vw,5rem);align-items:center}
.intro-quote{margin:0;position:relative}
.quote-mark{width:46px;height:46px;color:var(--gold);opacity:.9;margin-bottom:.6rem}
.intro-quote blockquote{margin:0;font:600 clamp(1.3rem,1rem + 1.4vw,2.1rem)/1.55 var(--font);color:#fff}
.intro-quote figcaption{margin-top:1rem;color:#b9add2;font-size:var(--fs-sm)}
.motion-access{display:flex;flex-wrap:wrap;gap:.4rem 1.6rem;margin-top:1.4rem;font-size:var(--fs-sm)}
.motion-access summary{cursor:pointer;color:#cfc4e4;padding:.4rem 0}
.motion-access summary:hover{color:#fff}
.motion-access details[open]{flex-basis:100%}
.motion-downloads > div{display:flex;flex-wrap:wrap;gap:1.2rem;padding:.6rem 0}
.motion-downloads a{display:inline-flex;align-items:center;gap:.4rem;color:#fff}
#motionTranscript{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.8rem;margin:.8rem 0}
.motion-scene-copy{padding:1rem 1.1rem;border-radius:var(--r);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}
.motion-scene-copy h3{font-size:1rem;color:#fff}
.motion-scene-copy p{margin-top:.4rem;white-space:pre-line;color:#d9d0ea}
.motion-scene-copy small{display:block;margin-top:.5rem;color:#a89cc2}
@media (max-width:860px){.intro-grid{grid-template-columns:1fr}}
/* stats band */
.stats-band{position:relative;overflow:hidden;padding:clamp(2.6rem,5vw,4rem) 0;background:var(--night);color:#fff;border-top:1px solid rgba(255,255,255,.06)}
.stats-band::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 120% at 15% 0%,rgba(123,92,240,.35),transparent 60%),radial-gradient(50% 120% at 90% 100%,rgba(217,79,134,.28),transparent 60%);pointer-events:none}
.stats-grid{position:relative;display:grid;grid-template-columns:repeat(6,1fr);gap:1rem;margin:0}
.stat{padding:1rem .2rem;border-left:1px solid rgba(255,255,255,.12);padding-left:1.1rem}
.stat dt{font-size:var(--fs-sm);color:#cfc4e4}
.stat .stat-value{margin:.2rem 0 .2rem;font:700 clamp(2.2rem,1.6rem + 2vw,3.4rem)/1 var(--display);background:linear-gradient(120deg,#fff,#d8c9ff 60%,#ffd59a);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat .stat-note{margin:0;font-size:var(--fs-xs);color:#a89cc2}
@media (max-width:1000px){.stats-grid{grid-template-columns:repeat(3,1fr);row-gap:1.6rem}}
@media (max-width:560px){.stats-grid{grid-template-columns:repeat(2,1fr)}}
/* research pillars */
.pillar-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.3rem}
.pillar-card{position:relative;display:flex;flex-direction:column;gap:.6rem;padding:1.6rem;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);overflow:hidden;transition:transform .35s var(--ease),box-shadow .35s}
.pillar-card::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--accent)}
.pillar-card::after{content:"";position:absolute;width:260px;height:260px;right:-90px;top:-110px;border-radius:50%;background:var(--accent);opacity:.08;transition:opacity .35s,transform .5s var(--ease)}
.pillar-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-2)}
.pillar-card:hover::after{opacity:.16;transform:scale(1.15)}
.pillar-optimization{--accent:var(--opt);--ink:var(--opt-ink);--tint:var(--opt-tint)}
.pillar-intelligence{--accent:var(--int);--ink:var(--int-ink);--tint:var(--int-tint)}
.pillar-prediction{--accent:var(--pre);--ink:var(--pre-ink);--tint:var(--pre-tint)}
.pillar-art{height:150px;margin:-.4rem -.4rem .4rem;border-radius:var(--r);background:var(--tint);color:var(--accent);display:grid;place-items:center}
.pillar-svg{width:100%;height:100%}
.pillar-svg ellipse,.pillar-svg .link{fill:none;stroke:currentColor;stroke-opacity:.45;stroke-width:1.4}
.pillar-svg .path,.pillar-svg .curve{fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.pillar-svg .pt{fill:currentColor;fill-opacity:.55}
.pillar-svg .node{fill:var(--surface);stroke:currentColor;stroke-width:2}
.pillar-svg .goal{fill:var(--gold);filter:drop-shadow(0 0 6px rgba(224,164,58,.8))}
.pillar-svg .axis{fill:none;stroke:currentColor;stroke-opacity:.35}
.pillar-index{font:700 .9rem var(--display);color:var(--ink);letter-spacing:.1em}
.pillar-name{font-size:var(--fs-h3);font-weight:700}
.pillar-lead{color:var(--text-2);font-size:.95rem}
.pillar-topics{list-style:none;display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.2rem}
.pillar-topics li{padding:.15rem .6rem;border-radius:var(--r-pill);background:var(--tint);color:var(--ink);font-size:var(--fs-xs);font-weight:600}
.pillar-links{display:flex;flex-wrap:wrap;gap:1rem;margin-top:auto;padding-top:.9rem;border-top:1px solid var(--line)}
.pillar-links a{font-size:var(--fs-sm);font-weight:600;color:var(--ink);text-decoration:none}
.pillar-links a:hover{text-decoration:underline}
.pillar-grid.compact .pillar-art{height:120px}
@media (max-width:960px){.pillar-grid{grid-template-columns:1fr}.pillar-card{display:grid;grid-template-columns:200px 1fr;column-gap:1.4rem}.pillar-art{grid-row:span 6;height:auto;min-height:140px;margin:0}}
@media (max-width:600px){.pillar-card{display:flex}.pillar-art{height:130px}}
/* team */
.team-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(2rem,4vw,4rem);align-items:center}
.lead-card{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);border-radius:var(--r-lg);overflow:hidden;background:var(--night);color:#fff;box-shadow:var(--shadow-2)}
.lead-photo{background:linear-gradient(160deg,#2a1d42,#120d1d)}
.lead-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 15%;min-height:300px}
.lead-body{display:flex;flex-direction:column;justify-content:center;gap:.8rem;padding:1.8rem}
.lead-body .kicker{color:var(--gold)}
.lead-name{font-size:clamp(1.3rem,1rem + .9vw,1.8rem)}
.lead-name a{color:#fff;text-decoration:none}
.lead-badge{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;font-size:var(--fs-sm)}
.lead-badge a{color:#e8dcff}
.profile-body .lead-badge a{color:var(--link)}
.lead-aff{font-size:var(--fs-sm);color:#cfc4e4}
.avatar-stack{display:flex;list-style:none;margin:1.6rem 0}
.avatar-stack li{margin-left:-14px;transition:transform .25s var(--ease)}
.avatar-stack li:first-child{margin-left:0}
.avatar-stack li:hover{transform:translateY(-6px);z-index:2}
.avatar-stack img,.avatar-more a{width:72px;height:72px;border-radius:50%;object-fit:cover;object-position:50% 15%;border:3px solid var(--bg);box-shadow:var(--shadow-1);background:var(--surface-3)}
.avatar-more a{display:grid;place-items:center;font:700 1rem var(--display);color:#fff;background:var(--gradient);text-decoration:none}
.group-list{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.group-list a{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);text-decoration:none;color:var(--text);transition:border-color .2s,transform .2s}
.group-list a:hover{border-color:var(--violet);transform:translateX(3px)}
.group-list strong{font:700 1.3rem var(--display)}
@media (max-width:960px){.team-grid{grid-template-columns:1fr}}
@media (max-width:560px){.lead-card{grid-template-columns:1fr}.lead-photo img{max-height:340px}.group-list{grid-template-columns:1fr}}
/* network */
.network-section{background:var(--night);color:#e8e1f6;position:relative;overflow:hidden}
.network-section .section-title{color:#fff}
.network-section .section-lead{color:#cfc4e4}
.network-section .kicker{color:var(--violet-300)}
.network-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.6fr);gap:clamp(2rem,4vw,4rem);align-items:center}
.partner-list{list-style:none;display:grid;gap:.6rem;margin-top:1.6rem}
.partner-list li{display:flex;gap:.8rem;align-items:center;padding:.65rem .9rem;border-radius:var(--r);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.08)}
.partner-list .flag{flex:none}
.partner-list strong{display:block;color:#fff;font-weight:600}
.partner-list small{display:block;color:#a89cc2;font-size:var(--fs-xs)}
.network-map{position:relative}
.network-map img{width:100%;height:auto}
.network-overlay{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.network-overlay .arc{fill:none;stroke:#ffcf7a;stroke-width:2.2;stroke-linecap:round;opacity:.85}
.js .network-overlay .arc{stroke-dasharray:1400;stroke-dashoffset:1400}
.network-overlay .pin circle{fill:#ff8fc0;stroke:#fff;stroke-width:2;transform-box:fill-box;transform-origin:center}
.js .network-overlay .pin circle{opacity:0}
.network-overlay text{fill:#fff;font:600 19px var(--font);paint-order:stroke;stroke:#100b19;stroke-width:5px}
.js .network-overlay text{opacity:0}
.network-overlay .home circle{fill:var(--gold)}
.network-overlay .home .pulse{fill:none;stroke:var(--gold);stroke-width:2;transform-box:fill-box;transform-origin:center;animation:pulse 2.4s infinite}
.js .network-overlay .home text,.network-overlay .home text{opacity:1;fill:#ffd98a}
.is-visible .network-overlay .arc{animation:draw 1.6s var(--ease) forwards;animation-delay:var(--d)}
.is-visible .network-overlay .pin circle,.is-visible .network-overlay .pin text{animation:pop .5s var(--ease) forwards;animation-delay:calc(var(--d) + .9s)}
@media (max-width:900px){.network-grid{grid-template-columns:1fr}.network-map{order:-1}}
/* innovations shots */
.shot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.3rem}
.shot-card{display:flex;flex-direction:column;border-radius:var(--r-lg);overflow:hidden;background:var(--surface);border:1px solid var(--line);text-decoration:none;color:var(--text);transition:transform .35s var(--ease),box-shadow .35s}
.shot-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-2)}
.shot-frame{position:relative;padding:26px 10px 0;background:linear-gradient(160deg,var(--surface-3),var(--surface-2));overflow:hidden}
.shot-dots{position:absolute;left:14px;top:9px;display:flex;gap:5px}
.shot-dots i{width:9px;height:9px;border-radius:50%;background:#ff7a8a}.shot-dots i:nth-child(2){background:#ffc865}.shot-dots i:nth-child(3){background:#5fd38b}
.shot-img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top;border-radius:10px 10px 0 0;box-shadow:0 -2px 14px rgba(0,0,0,.12);transition:transform .7s var(--ease)}
.shot-card:hover .shot-img{transform:translateY(-6px)}
.shot-body{display:flex;flex-direction:column;gap:.35rem;padding:1.1rem 1.2rem 1.3rem}
.shot-body h3{font:600 1.05rem/1.4 var(--font)}
.shot-body p{font-size:var(--fs-sm);color:var(--text-3)}
@media (max-width:960px){.shot-grid{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.shot-grid{grid-template-columns:1fr}}
/* call to action */
.cta-band{padding:clamp(3rem,6vw,5rem) 0;background:var(--surface-2)}
.cta-inner{position:relative;display:flex;justify-content:space-between;align-items:center;gap:2rem;flex-wrap:wrap;padding:clamp(2rem,4vw,3.4rem);border-radius:calc(var(--r-lg) + 6px);overflow:hidden;background:var(--night);color:#e8e1f6}
.cta-inner::before{content:"";position:absolute;inset:0;background:radial-gradient(70% 140% at 0% 0%,rgba(123,92,240,.45),transparent 60%),radial-gradient(60% 140% at 100% 100%,rgba(46,157,176,.35),transparent 60%);pointer-events:none}
.cta-inner > *{position:relative}
.cta-inner .kicker{color:var(--violet-300)}
.cta-title{font-size:clamp(1.5rem,1.1rem + 1.6vw,2.4rem);color:#fff;max-width:24ch}
.cta-inner p{margin-top:.6rem;max-width:56ch;color:#cfc4e4}
/* Thai universities in the network, under the map */
.domestic{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.6rem;margin-top:clamp(2rem,4vw,3rem);padding:1.1rem 1.3rem;border-radius:var(--r-lg);background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.09)}
.domestic-head{flex:none}
.domestic-label{display:flex;align-items:center;gap:.45rem;margin:0;font-weight:600;color:#fff}
.domestic-label .icon{width:18px;height:18px;color:var(--gold)}
.domestic-count{margin:.15rem 0 0;font-size:var(--fs-xs);color:#a89cc2}
.domestic-list{list-style:none;display:flex;flex-wrap:wrap;gap:.45rem;flex:1 1 420px;margin:0;padding:0}
.domestic-list li{display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .5rem .35rem .8rem;border-radius:var(--r-pill);background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);color:#e8e1f6;font-size:var(--fs-sm)}
.domestic-list abbr{text-decoration:none;cursor:help}
.domestic-n{min-width:1.6em;padding:0 .4rem;border-radius:var(--r-pill);background:rgba(255,207,122,.16);color:#ffd98a;font:600 .74rem/1.6 var(--display);text-align:center}
.domestic-link{display:inline-flex;align-items:center;gap:.35rem;flex:none;color:var(--violet-300);font-weight:600;font-size:var(--fs-sm);text-decoration:none}
.domestic-link:hover{color:#fff}
.domestic-link .icon{width:16px;height:16px}
@media (max-width:640px){.domestic{padding:1rem}.domestic-list{flex-basis:100%}}
/* 05-pages.css */
/* ===== Vision ===== */
.vision-statement{margin:0;padding:clamp(2rem,4vw,3.4rem);border-radius:calc(var(--r-lg) + 6px);background:var(--night);color:#fff;position:relative;overflow:hidden}
.vision-statement::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 120% at 100% 0%,rgba(217,79,134,.35),transparent 60%),radial-gradient(50% 120% at 0% 100%,rgba(123,92,240,.4),transparent 60%)}
.vision-statement > *{position:relative}
.vision-statement .kicker{color:var(--violet-300)}
.vision-statement blockquote{margin:0;font:600 clamp(1.3rem,1rem + 1.6vw,2.3rem)/1.55 var(--font)}
.goal-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1rem}
.goal-card{display:flex;flex-direction:column;gap:.35rem;padding:1.4rem;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);transition:transform .3s var(--ease),box-shadow .3s}
.goal-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-2)}
.goal-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--gradient);color:#fff;margin-bottom:.4rem}
.goal-value{font:700 2.1rem/1.1 var(--display);background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}
.goal-unit{font-weight:600;font-size:var(--fs-sm)}
.goal-text{font-size:var(--fs-sm);color:var(--text-2);margin-top:.3rem}
@media (max-width:1100px){.goal-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:700px){.goal-grid{grid-template-columns:1fr 1fr}}
@media (max-width:440px){.goal-grid{grid-template-columns:1fr}}
.mission-list,.strategy-steps{list-style:none;display:grid;gap:.8rem}
.mission-list li{display:grid;grid-template-columns:44px 1fr;gap:1rem;align-items:start;padding:1.1rem;border-radius:var(--r);background:var(--surface);border:1px solid var(--line)}
.mission-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--lilac);color:var(--violet-600)}
.strategy-steps{counter-reset:s}
.strategy-steps li{position:relative;display:grid;grid-template-columns:44px 1fr;gap:1rem;align-items:start;padding:.4rem 0 1.2rem}
.strategy-steps li:not(:last-child)::before{content:"";position:absolute;left:21px;top:48px;bottom:0;width:2px;background:linear-gradient(var(--violet-300),transparent)}
.step-num{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:var(--surface);border:2px solid var(--violet);font:700 1rem var(--display);color:var(--violet-600)}
.strategy-steps p{padding-top:.55rem;color:var(--text-2)}
/* ===== Member profile ===== */
.profile-hero{position:relative;padding:clamp(2rem,4vw,3.4rem) 0;background:var(--surface-2);border-bottom:1px solid var(--line);overflow:hidden}
.profile-hero::before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,rgba(123,92,240,.2) 1.4px,transparent 1.6px);background-size:22px 22px;-webkit-mask-image:linear-gradient(100deg,transparent 45%,#000 90%);mask-image:linear-gradient(100deg,transparent 45%,#000 90%)}
.profile-grid{position:relative;display:grid;grid-template-columns:300px 1fr;gap:clamp(1.6rem,4vw,3.4rem);align-items:center}
.profile-grid .crumbs{grid-column:1/-1;margin-bottom:0}
.profile-photo{aspect-ratio:4/4.6;border-radius:var(--r-lg);overflow:hidden;background:linear-gradient(160deg,var(--surface-3),var(--surface));box-shadow:var(--shadow-2);position:relative}
.profile-photo img{width:100%;height:100%;object-fit:cover;object-position:50% 15%}
.profile-photo .initials{position:absolute;inset:0;display:grid;place-items:center;font:700 4rem var(--display);color:#fff;background:var(--gradient)}
.profile-body .page-title{font-size:clamp(1.8rem,1.3rem + 2vw,3rem);max-width:none}
.profile-role{margin-top:.5rem;font-weight:600;color:var(--gold-ink)}
.profile-facts{display:grid;gap:.7rem;margin:1.4rem 0}
.profile-facts div{display:grid;grid-template-columns:150px 1fr;gap:.6rem}
.profile-facts dt{display:flex;align-items:center;gap:.45rem;color:var(--text-3);font-size:var(--fs-sm)}
.profile-facts dd{margin:0}
.profile-nav{margin-top:2.4rem}
@media (max-width:760px){.profile-grid{grid-template-columns:1fr}.profile-photo{max-width:280px}.profile-facts div{grid-template-columns:1fr;gap:.1rem}}
/* ===== Publications overview ===== */
.pub-overview{display:grid;grid-template-columns:repeat(3,1fr);gap:1.2rem;margin-bottom:2.6rem}
.pub-chart{padding:1.4rem;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line)}
.bar-stack{display:flex;height:58px;border-radius:var(--r);overflow:hidden}
.bar-stack .bar{width:var(--w);display:flex;align-items:center;justify-content:center;gap:.3rem;font-size:var(--fs-sm);white-space:nowrap;padding:0 .4rem}
.bar.q-q1{background:linear-gradient(120deg,#ffe2a6,#f0b85a);color:#4d3006}
.bar.q-q2{background:var(--lilac);color:var(--violet-600)}
.area-bars,.author-rank{list-style:none;display:grid;gap:.6rem}
.area-bars li{display:grid;grid-template-columns:minmax(0,1.2fr) 1fr auto;gap:.6rem;align-items:center;font-size:var(--fs-sm)}
.track{height:10px;border-radius:var(--r-pill);background:var(--surface-2);overflow:hidden}
.fill{display:block;height:100%;width:var(--w);border-radius:inherit;transition:width 1.2s var(--ease)}
.js .fill{width:0}
.js .is-visible .fill{width:var(--w)}
.pillar-bg-optimization{background:var(--opt)}.pillar-bg-intelligence{background:var(--int)}.pillar-bg-prediction{background:var(--pre)}
.author-rank li{display:flex;justify-content:space-between;gap:.6rem;font-size:var(--fs-sm);padding-bottom:.45rem;border-bottom:1px dashed var(--line)}
.author-rank a{color:var(--text);text-decoration:none}.author-rank a:hover{color:var(--link)}
@media (max-width:960px){.pub-overview{grid-template-columns:1fr}}
/* ===== Innovations page ===== */
.innov-list{display:grid;gap:clamp(2.4rem,5vw,4.5rem)}
.innov{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(1.6rem,4vw,3.6rem);align-items:center}
.innov:nth-child(even) .innov-shot{order:2}
.innov-shot{display:block;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-2);transition:transform .4s var(--ease)}
.innov-shot:hover{transform:translateY(-6px) rotate(-.4deg)}
.innov-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.8rem}
.status-live{display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .65rem;border-radius:var(--r-pill);background:#dcf6e6;color:#17663a;font-size:var(--fs-xs);font-weight:700}
:root[data-theme="dark"] .status-live{background:#123623;color:#8be3ad}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .status-live{background:#123623;color:#8be3ad}}
.status-live .icon{width:14px;height:14px}
.innov-title{font-size:clamp(1.4rem,1.1rem + 1vw,2rem)}
.innov-sub{margin-top:.4rem;color:var(--ink,var(--violet-600));font-weight:600}
.innov-text{margin-top:.8rem;color:var(--text-2)}
.tech-tags{display:flex;flex-wrap:wrap;gap:.35rem;margin:1rem 0 1.4rem}
.tech-tags span{padding:.15rem .6rem;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line);font:500 .78rem var(--display);color:var(--text-2)}
.url-label{font-size:var(--fs-sm);color:var(--text-3)}
@media (max-width:860px){.innov{grid-template-columns:1fr}.innov:nth-child(even) .innov-shot{order:0}}
/* ===== Activity article ===== */
.article-hero{position:relative;min-height:clamp(340px,52vh,560px);display:flex;align-items:flex-end;color:#fff;overflow:hidden;background:var(--night)}
.article-cover{position:absolute;inset:0}
.article-cover img{width:100%;height:100%;object-fit:cover;opacity:.55;transform:scale(1.03)}
.article-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,11,25,.15) 0%,rgba(16,11,25,.55) 45%,rgba(16,11,25,.95) 100%)}
.article-head{position:relative;padding-block:2.4rem 2.6rem}
.article-head .crumbs,.article-head .crumbs a{color:#e8e1f6}
.article-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}
.article-tags .event-type{position:static}
.article-title{font-size:clamp(1.6rem,1.1rem + 2.4vw,3.2rem);color:#fff;max-width:30ch}
.article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:1rem;color:#e0d6f2;font-size:var(--fs-sm)}
.article-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:clamp(2rem,5vw,4rem);padding-block:clamp(2.4rem,5vw,4rem)}
.article-lead{font-size:1.18rem;color:var(--text);font-weight:500;margin-bottom:1.4rem}
.prose{color:var(--text-2);font-size:1.03rem}
.prose p{margin-bottom:1rem}
.prose .prose-h{margin:2rem 0 .8rem;font-size:1.25rem;color:var(--text)}
.prose ul{margin:0 0 1rem 1.2rem}
.prose li{margin-bottom:.4rem}
.prose b,.prose strong{color:var(--text)}
.side-card{position:sticky;top:96px;padding:1.3rem;border-radius:var(--r-lg);background:var(--surface-2);border:1px solid var(--line)}
.gallery-section{padding-bottom:2rem}
.gallery{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.8rem;margin-top:1.2rem}
.gallery a{display:block;border-radius:var(--r);overflow:hidden;aspect-ratio:4/3;background:var(--surface-3)}
.gallery img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease),filter .3s}
.gallery a:hover img{transform:scale(1.06);filter:brightness(1.05)}
.article-pager{display:grid;grid-template-columns:1fr 1fr;gap:1rem;padding-block:1rem 4rem}
.pager-card{display:flex;flex-direction:column;gap:.3rem;padding:1.1rem 1.3rem;border-radius:var(--r-lg);border:1px solid var(--line);background:var(--surface);text-decoration:none;color:var(--text);transition:border-color .2s,transform .2s}
.pager-card:hover{border-color:var(--violet);transform:translateY(-3px)}
.pager-card small{display:flex;align-items:center;gap:.3rem;color:var(--text-3)}
.pager-card.is-next{text-align:right;align-items:flex-end}
@media (max-width:860px){.article-grid{grid-template-columns:1fr}.side-card{position:static}}
@media (max-width:560px){.article-pager{grid-template-columns:1fr}.gallery{grid-template-columns:1fr 1fr}}
/* ===== Books ===== */
.book-grid{display:grid;gap:clamp(1.6rem,3vw,2.4rem)}
.book{display:grid;grid-template-columns:240px 1fr;gap:clamp(1.4rem,4vw,3rem);align-items:center;padding:clamp(1.2rem,3vw,2rem);border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line)}
.book-cover{display:block;perspective:900px}
.book-cover img{width:100%;border-radius:4px 10px 10px 4px;box-shadow:-6px 0 0 #d9cff0,0 18px 40px rgba(27,20,48,.28);transform:rotateY(-14deg);transition:transform .5s var(--ease)}
.book-cover:hover img{transform:rotateY(0)}
.book-title{font:600 clamp(1.15rem,1rem + .6vw,1.5rem)/1.5 var(--font);letter-spacing:0}
.book-author{display:flex;align-items:center;gap:.4rem;margin:.6rem 0;color:var(--gold-ink);font-weight:600;font-size:var(--fs-sm)}
.book-text{color:var(--text-2);margin-bottom:1.3rem}
.file-meta{margin-top:.6rem;font-size:var(--fs-xs);color:var(--text-3)}
@media (max-width:700px){.book{grid-template-columns:1fr}.book-cover{max-width:200px}}
/* ===== Announcements ===== */
.notice{border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);overflow:hidden}
.notice-head{display:grid;grid-template-columns:auto 1fr auto;gap:1.2rem;align-items:start;padding:1.6rem;background:var(--gradient-soft);border-bottom:1px solid var(--line)}
.notice-icon{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:var(--gradient);color:#fff}
.notice-meta{display:flex;gap:.6rem;align-items:center;font-size:var(--fs-sm);color:var(--text-3)}
.notice-title{margin-top:.4rem;font:600 1.3rem/1.4 var(--font)}
.notice-text{margin-top:.4rem;color:var(--text-2);font-size:.95rem}
.file-group{padding:1.2rem 1.6rem}
.file-group + .file-group{border-top:1px solid var(--line)}
.file-group-title{font:600 var(--fs-sm) var(--font);color:var(--text-3);margin-bottom:.6rem}
.file-list{list-style:none;display:grid;gap:.35rem}
.file-list a{display:grid;grid-template-columns:auto 1fr auto auto;gap:.8rem;align-items:center;padding:.55rem .7rem;border-radius:var(--r-sm);text-decoration:none;color:var(--text)}
.file-list a:hover{background:var(--surface-2)}
.file-type{min-width:48px;text-align:center;padding:.1rem .4rem;border-radius:6px;font:700 .7rem/1.7 var(--display);color:#fff;background:#7a6e93}
.type-pdf{background:#b93a3a}.type-docx,.type-doc{background:#3461bd}.type-xlsx{background:#237544}.type-pptx{background:#a8561a}
.file-name{font-size:.95rem}
.file-size{font-size:var(--fs-xs);color:var(--text-3)}
.file-list .icon{color:var(--text-3)}
@media (max-width:700px){.notice-head{grid-template-columns:1fr}.notice-icon{display:none}.file-list a{grid-template-columns:auto 1fr auto}.file-list .icon{display:none}}
/* ===== Contact ===== */
.contact-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(1.6rem,4vw,3rem);align-items:start;margin-bottom:2.4rem}
.contact-cards{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.contact-card{display:flex;flex-direction:column;gap:.5rem;padding:1.4rem;border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line)}
.contact-card h2{font:600 1.05rem var(--font)}
.contact-card p{color:var(--text-2);font-size:.95rem}
.contact-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--lilac);color:var(--violet-600)}
.collab-card{position:relative;overflow:hidden;padding:clamp(1.6rem,3vw,2.4rem);border-radius:var(--r-lg);background:var(--night);color:#e8e1f6}
.collab-card::before{content:"";position:absolute;inset:0;background:radial-gradient(70% 90% at 100% 0%,rgba(217,79,134,.35),transparent 60%);pointer-events:none}
.collab-card > *{position:relative}
.collab-card .kicker{color:var(--violet-300)}
.collab-card .section-title{color:#fff;font-size:clamp(1.4rem,1.1rem + 1vw,2rem)}
.collab-list{list-style:none;display:grid;gap:.6rem;margin:1.2rem 0 1.6rem}
.collab-list li{display:grid;grid-template-columns:22px 1fr;gap:.5rem}
.collab-list .icon{color:#7be0a5;margin-top:.2rem}
.collab-card .muted{color:#b9add2;margin-top:1rem}
.people-strip{padding:1.4rem;border-radius:var(--r-lg);background:var(--surface-2);border:1px solid var(--line)}
.people-strip ul{list-style:none;display:grid;gap:.8rem}
.people-strip li{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem}
.people-strip li > a:first-child{display:flex;align-items:center;gap:.8rem;text-decoration:none;color:var(--text)}
.people-strip img{width:52px;height:52px;border-radius:50%;object-fit:cover;object-position:50% 15%}
.people-strip span{display:flex;flex-direction:column}
.people-strip small{color:var(--text-3)}
@media (max-width:900px){.contact-grid{grid-template-columns:1fr}}
@media (max-width:520px){.contact-cards{grid-template-columns:1fr}}
/* innovations: readiness level, intellectual property, real-world use */
.trl{display:inline-flex;align-items:center;padding:.15rem .6rem;border-radius:var(--r-pill);background:var(--gold-soft,#fff1d6);color:#7a4c00;font:700 var(--fs-xs)/1.6 var(--display);letter-spacing:.03em}
:root[data-theme="dark"] .trl{background:#3b2c10;color:#ffd98a}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .trl{background:#3b2c10;color:#ffd98a}}
.innov-impact{display:flex;gap:.55rem;align-items:flex-start;margin:.9rem 0 0;padding:.75rem .9rem;border-radius:var(--r);background:var(--surface-2);font-size:var(--fs-sm)}
.innov-impact .icon{flex:none;width:18px;height:18px;margin-top:.15rem;color:var(--accent)}
.innov-ip{list-style:none;display:flex;flex-wrap:wrap;gap:.4rem .9rem;margin:.7rem 0 0;padding:0;font-size:var(--fs-sm);color:var(--text-2)}
.innov-ip li{display:inline-flex;align-items:center;gap:.35rem}
.innov-ip .icon{width:16px;height:16px;color:#1f8a4c}
/* books without a public PDF yet (e.g. forthcoming with a publisher) */
.book-cover{position:relative}
.cover-note{position:absolute;right:.6rem;top:.6rem;padding:.15rem .55rem;border-radius:var(--r-pill);background:rgba(16,11,25,.72);color:#fff;font-size:var(--fs-xs)}
.book-status{display:inline-flex;align-items:center;gap:.45rem;margin-top:.4rem;padding:.4rem .8rem;border-radius:var(--r-pill);background:var(--surface-2);font-size:var(--fs-sm);font-weight:600}
.book-status .icon{width:16px;height:16px;color:var(--violet-600)}
/* 06-motion.css */
/* ===== Motion: reveal on scroll, drawing strokes, pulses. Everything stops for reduced motion. ===== */
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes pop{0%{opacity:0;transform:scale(.4)}100%{opacity:1;transform:scale(1)}}
@keyframes pulse{0%{opacity:.9;transform:scale(.6)}100%{opacity:0;transform:scale(2.6)}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease);transition-delay:calc(var(--i,0) * 80ms)}
.js .reveal.is-visible{opacity:1;transform:none}
.js .pillar-svg .draw{stroke-dasharray:600;stroke-dashoffset:600}
.is-visible .pillar-svg .draw{animation:draw 1.8s var(--ease) forwards;animation-delay:var(--d,0s)}
.js .pillar-svg .pt{opacity:0}
.is-visible .pillar-svg .pt{animation:pop .5s var(--ease) forwards;animation-delay:.9s}
.pillar-svg .goal{animation:float 3s ease-in-out infinite}
.pillar-card:hover .pillar-svg .node{fill:var(--accent);transition:fill .4s}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}
  .js .reveal{opacity:1;transform:none}
  .js .pillar-svg .draw,.js .network-overlay .arc{stroke-dashoffset:0}
  .js .pillar-svg .pt,.js .network-overlay .pin circle,.js .network-overlay text{opacity:1}
}
@media print{
  .site-header,.site-footer,.filter-bar,.live-stage,.live-controls,.motion-access,.search-dialog,.lightbox,.cta-band,.article-side,.article-pager{display:none!important}
  body{background:#fff;color:#000}
  .js .reveal{opacity:1;transform:none}
  .js .pillar-svg .draw,.js .network-overlay .arc{stroke-dashoffset:0;animation:none}
  .js .pillar-svg .pt,.js .network-overlay .pin circle,.js .network-overlay text{opacity:1;animation:none}
  .js .fill{width:var(--w);transition:none}
  .section{padding-block:1rem}
  a{color:#000}
}
