/* Azil Bahari: editorial academic. Aubergine velvet, gold rule, ivory paper. */
:root{
  --velvet:#2e1446; --velvet-2:#4a2170; --purple:#5b2c83; --purple-soft:#efe8f6;
  --gold:#c9a227; --gold-deep:#8c6b1f; --gold-lite:#f1d98a;
  --foil:linear-gradient(100deg,#a8832a 0%,#e9c766 30%,#fff1bf 42%,#c9a227 60%,#a8832a 100%);
  --ivory:#fbf8f1; --paper:#fffdf8; --ink:#1e1726; --muted:#5d5468; --rule:#ddd3bf;
  --serif:"EB Garamond",Garamond,Georgia,serif; --text:"Source Serif 4",Georgia,serif; --sans:"Public Sans",system-ui,sans-serif;
  --caps:"EB Garamond",Garamond,Georgia,serif; /* used with font-variant-caps:all-small-caps */
  --wrap:1200px; --r:2px; --shadow:none;
  --ease:cubic-bezier(.2,.7,.1,1); --t1:180ms; --t2:700ms;
}
@view-transition{navigation:auto}
::view-transition-old(root),::view-transition-new(root){animation-duration:250ms}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ivory);color:var(--ink);font:400 17.5px/1.62 var(--text);overflow-x:hidden;font-feature-settings:"onum"}
img{max-width:100%;display:block}
a{color:var(--purple);text-decoration:none;background:linear-gradient(var(--gold),var(--gold)) 0 100%/0 1px no-repeat;transition:background-size var(--t1) var(--ease),color var(--t1)}
a:hover{background-size:100% 1px;color:var(--velvet)}
p a,li a,td a,.note a{text-decoration:underline;text-decoration-color:rgba(91,44,131,.3);text-underline-offset:3px}
a.xl,a.il{color:inherit;background:none;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb,var(--gold-deep) 60%,transparent);text-underline-offset:3px;transition:text-decoration-color var(--t1)}
a.xl:hover,a.il:hover{color:inherit;text-decoration-color:var(--gold)}
a.xl::after{content:"\2009\2197";font-size:.68em;vertical-align:.3em;color:var(--gold-deep);font-family:var(--sans)}
.velvet a.xl::after{color:var(--gold)}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 24px}
.skip{position:absolute;left:-999px;top:8px;background:var(--gold);color:var(--ink);padding:8px 14px;z-index:99}
.skip:focus{left:8px}
h1,h2,h3,h4{font-family:var(--serif);font-weight:500;font-feature-settings:"lnum"}
h3{font:500 24px/1.18 var(--serif);margin:0 0 8px;letter-spacing:-.005em}
.muted{color:var(--muted)}
.note{font:400 13.5px/1.5 var(--sans);color:var(--muted)}

/* small caps label (one treatment everywhere) */
.kicker,.rh,.creds,.src,.folio,.tl .yr,.tbl th,.filters label,.press .src,.md .y,footer h4,.arch figcaption,.ph figcaption{
  font-family:var(--caps);font-variant-caps:all-small-caps;letter-spacing:.09em;font-feature-settings:"lnum"}
.kicker{font-size:17px;line-height:1.3;color:var(--gold-deep);font-weight:500}
.velvet .kicker{color:var(--gold-lite)}

/* ---------- velvet (home hero + footer only) ---------- */
.velvet{background:radial-gradient(1100px 620px at 78% -10%,rgba(122,62,170,.5),transparent 62%),linear-gradient(165deg,#371756 0%,#28113d 60%,#1d0b2e 100%);
  color:#f4eefa;position:relative;isolation:isolate}
.velvet::before{content:"";position:absolute;inset:0;z-index:-1;opacity:.16;mix-blend-mode:overlay;pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.foil{background:var(--foil);background-size:100% 100%;-webkit-background-clip:text;background-clip:text;color:transparent}
.braid{height:6px;background:repeating-linear-gradient(135deg,#8c6b1f 0 3px,#e9c766 3px 5px,#c9a227 5px 8px)}
body:not(.p-index) main+.braid{height:3px;background:var(--gold)}

/* ---------- header ---------- */
.top{position:sticky;top:0;z-index:50;background:#26103a;color:#efe6f7;border-bottom:1px solid rgba(201,162,39,.4);view-transition-name:brand}
.top .wrap{display:flex;align-items:center;gap:20px;height:66px}
.brand{display:flex;align-items:center;gap:12px;color:#fff;min-width:0;background:none}
.brand:hover{color:#fff}
.brand .seal{width:36px;height:36px;flex:none}
.brand b{font:500 23px/1 var(--serif);white-space:nowrap}
.brand small{display:block;font:400 14px/1.3 var(--caps);font-variant-caps:all-small-caps;letter-spacing:.1em;color:var(--gold-lite);white-space:nowrap}
.nav{margin-left:auto;display:flex;gap:4px}
.nav a{color:#e3d7ef;font:500 14px/1 var(--sans);padding:10px 9px;background:linear-gradient(var(--gold),var(--gold)) 9px calc(100% - 4px)/0 1px no-repeat}
.nav a:hover{color:#fff;background-size:calc(100% - 18px) 1px}
.nav a[aria-current=page]{color:var(--gold-lite);background-size:calc(100% - 18px) 2px}
.menu{display:none;margin-left:auto;background:none;border:1px solid rgba(201,162,39,.6);color:var(--gold-lite);border-radius:var(--r);padding:8px 14px;font:600 13px var(--sans);cursor:pointer}
@media (max-width:1020px){
  .menu{display:block}
  .nav{display:none;position:absolute;left:0;right:0;top:66px;flex-direction:column;background:#26103a;padding:6px 24px 18px;border-bottom:1px solid rgba(201,162,39,.4)}
  .nav.open{display:flex}
  .nav a{padding:14px 0;font-size:17px;border-bottom:1px solid rgba(255,255,255,.08);background-position:0 calc(100% - 6px)}
  .nav a:hover,.nav a[aria-current=page]{background-size:40px 2px}
}

/* ---------- home hero ---------- */
.hero{padding:84px 0 0;overflow:hidden}
.hero .wrap{display:grid;grid-template-columns:7fr 5fr;gap:56px;align-items:end}
.hero h1{font:500 clamp(54px,8.4vw,118px)/.9 var(--serif);margin:0;letter-spacing:-.028em;color:#fbf3dc}
.hero h1 .at{font-style:italic;font-weight:400;color:var(--gold-lite)}
.hero .creds{font-size:19px;color:var(--gold-lite);margin:26px 0 0;padding-top:14px;border-top:1px solid rgba(233,199,102,.45);max-width:40ch}
.hero .role{font:400 clamp(20px,2vw,24px)/1.35 var(--serif);color:#efe5f8;margin:14px 0 0}
.lead{font:400 19px/1.6 var(--text);color:#ddd0ec;max-width:46ch;margin:26px 0 30px}
.btns{display:flex;flex-wrap:wrap;gap:10px 28px;align-items:center;padding-bottom:72px}
.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 24px;border-radius:var(--r);font:600 15px/1 var(--sans);transition:background-color var(--t1),color var(--t1);background-image:none}
.btn svg{width:17px;height:17px}
.btn-solid,.btn-ink,.btn-gold{background:var(--velvet);color:#fff;border:1px solid var(--velvet)}
.btn-solid:hover,.btn-ink:hover,.btn-gold:hover{background:var(--purple);color:#fff}
.velvet .btn-solid{background:var(--gold-lite);color:var(--velvet);border-color:var(--gold-lite)}
.velvet .btn-solid:hover{background:#fff;color:var(--velvet)}
.go{font:600 15px/1.4 var(--sans);color:var(--purple);display:inline-block}
.go::after{content:"\2009\2192";display:inline-block;transition:transform var(--t1) var(--ease)}
.go:hover::after{transform:translateX(4px)}
.velvet .go{color:var(--gold-lite)}

.arch{position:relative;justify-self:end;width:min(420px,100%);margin:0}
.arch .frame{aspect-ratio:4/5;border-radius:999px 999px 0 0;overflow:hidden;background:#e8e3ec;outline:2px solid var(--gold);outline-offset:8px;margin:10px 10px 0;
  box-shadow:0 40px 70px -30px rgba(0,0,0,.7)}
.arch img{width:100%;height:100%;object-fit:cover;object-position:50% 0}
.arch figcaption{font-size:15px;color:#cfbfe2;padding:22px 0 26px 10px;max-width:34ch}
.arch figcaption::before,.ph figcaption::before{content:"";display:block;width:40px;height:1px;background:var(--gold);margin-bottom:8px}

/* ---------- inner page header (ivory) ---------- */
.phead{padding:52px 0 0;background:var(--ivory)}
.phead .wrap::after{content:"";display:block;height:3px;background:var(--gold);margin-top:40px;transform-origin:left;animation:draw var(--t2) var(--ease) both}
.rh{display:flex;justify-content:space-between;gap:16px;font-size:16px;color:var(--muted);border-bottom:1px solid var(--ink);padding-bottom:8px}
.rh a{color:var(--muted)}
.phead h1{font:500 clamp(52px,8vw,112px)/.92 var(--serif);letter-spacing:-.028em;margin:40px 0 22px;color:var(--velvet)}
.phead p{font:400 clamp(19px,1.8vw,22px)/1.5 var(--text);color:var(--muted);max-width:56ch;margin:0}
.phead p a{color:var(--purple)}
@keyframes draw{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* ---------- sections ---------- */
main{counter-reset:sec}
section.s{padding:80px 0}
section.s.alt{background:var(--paper)}
.sh{display:grid;grid-template-columns:repeat(12,1fr);column-gap:24px;margin-bottom:40px;padding-top:14px;position:relative;counter-increment:sec}
.sh::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--ink);transform-origin:left;transition:transform var(--t2) var(--ease)}
.sh>.kicker{grid-column:1/4}
.sh>div:last-child{grid-column:4/12}
.sh h2,.h2{font:500 clamp(34px,4.4vw,58px)/1 var(--serif);letter-spacing:-.018em;margin:0;color:var(--velvet)}
.h2{font-size:clamp(32px,3.6vw,46px);margin:10px 0 22px}
.sh p{max-width:56ch;color:var(--muted);margin:14px 0 0}
.p-index .sh>.kicker::before,.p-about .sh>.kicker::before,.p-research .sh>.kicker::before{content:"\00a7 " counter(sec,decimal-leading-zero) "  ";color:var(--ink)}
.p-publications .sh>.kicker::before,.p-recognition .sh>.kicker::before{content:"No. " counter(sec) "  ";color:var(--ink)}
@media (max-width:800px){.sh>*{grid-column:1/-1!important}.sh>.kicker{margin-bottom:8px}}

.grid{display:grid;gap:24px 36px}
.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
@media (max-width:900px){.g3,.g4{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.g2,.g3,.g4{grid-template-columns:1fr}}
.grid>*,.bar,.axis span{min-width:0}

/* ruled blocks instead of cards */
.card{background:none;border:0;border-top:1px solid var(--ink);border-radius:0;padding:18px 0 0;position:relative}
.card.gilt{border-top:2px solid var(--gold)}
.card .num,.flow-m .num{display:block;font:400 44px/1 var(--serif);color:var(--purple);font-feature-settings:"lnum";margin-bottom:12px}
.card>.kicker{margin-bottom:4px}
.card ul{margin:0}
.icon{display:none}
.tags{margin-top:22px;font:500 13.5px/1.9 var(--sans);color:var(--muted)}
.tag{display:inline;padding:0;background:none;color:var(--muted)}
.tag+.tag::before{content:"  \00b7  ";color:var(--gold-deep);white-space:pre}
.clients{list-style:none;padding:0;margin:0;columns:3 220px;column-gap:36px}
.clients li{font:400 19px/1.3 var(--serif);padding:10px 0;border-bottom:.5px solid var(--rule);break-inside:avoid}
.chip{display:inline;font:inherit;color:inherit}
.chip svg{display:none}

/* ---------- ledger stats ---------- */
.stats{display:grid;grid-template-columns:repeat(3,1fr);column-gap:36px;border-top:1px solid var(--ink)}
.stat{display:grid;grid-template-columns:minmax(120px,auto) 1fr;gap:18px;align-items:baseline;padding:18px 0;border-bottom:.5px solid var(--rule)}
.stat b{font:500 clamp(36px,3.8vw,54px)/1 var(--serif);color:var(--velvet);font-feature-settings:"lnum","tnum";text-align:right;white-space:nowrap;letter-spacing:-.01em}
.stat b small{font:500 .42em/1 var(--sans);letter-spacing:.04em;color:var(--purple);margin:0 .2em}
.stat b em{font-style:normal}
.stat span{font:400 15px/1.4 var(--text);color:var(--muted)}
.src{font-size:15px;color:var(--muted);margin:10px 0 0}
@media (max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.stats{grid-template-columns:1fr}.stat{grid-template-columns:120px 1fr}}

/* ---------- flow diagram ---------- */
.flow{padding:0;margin:0}
.flow svg{width:100%;height:auto}
.flow .pipe{stroke:var(--gold);stroke-width:2;fill:none}
.flow .stream{stroke:var(--gold-deep);stroke-width:2;fill:none;stroke-dasharray:3 12;animation:stream 1.6s linear infinite}
@keyframes stream{to{stroke-dashoffset:-30}}
.flow text{font-family:var(--sans)}
.flow-m{display:none;list-style:none;margin:0;padding:0}
.flow-m li{display:grid;grid-template-columns:60px 1fr;gap:12px;padding:14px 0;border-top:1px solid var(--rule)}
.flow-m .num{font-size:34px;margin:0}
.flow-m b{display:block;font:500 21px/1.2 var(--serif);color:var(--velvet)}
.flow-m span{display:block;font:400 14.5px/1.45 var(--sans);color:var(--muted);margin-top:2px}
@media (max-width:700px){.flow>svg{display:none}.flow-m{display:block}}

/* ---------- timeline ---------- */
.tl{padding:0;margin:0}
.tl li{list-style:none;display:grid;grid-template-columns:96px 1fr;column-gap:18px;padding:12px 0;border-top:.5px solid var(--rule)}
.tl li>*{grid-column:2}
.tl .yr{grid-column:1;grid-row:1/4;font-size:17px;color:var(--gold-deep);text-align:right;padding-top:2px}
.tl li.big h4{color:var(--velvet)}
.tl li.big .yr{color:var(--purple)}
.tl h4{font:500 20px/1.25 var(--serif);margin:0 0 2px}
.tl p{margin:0;color:var(--muted);font-size:15px}

/* ---------- tables ---------- */
.tbl{width:100%;border-collapse:collapse;font:400 15px/1.5 var(--sans);font-feature-settings:"lnum"}
.tbl th{font-size:15px;font-weight:500;text-align:left;color:var(--gold-deep);padding:10px 12px 8px 0;border-bottom:1px solid var(--ink)}
.tbl td{padding:12px 12px 12px 0;border-bottom:.5px solid var(--rule);vertical-align:top}
.tbl tr:hover td{background:rgba(201,162,39,.06)}
.tbl .num{text-align:right;white-space:nowrap;font-feature-settings:"lnum","tnum"}
.scroll{overflow-x:auto}
@media (max-width:700px){
  .tbl.stack thead{display:none}
  .tbl.stack tr{display:block;padding:12px 0;border-bottom:.5px solid var(--rule)}
  .tbl.stack td{display:block;border:0;padding:2px 0}
  .tbl.stack td[data-l]::before{content:attr(data-l) ": ";font-weight:600;color:var(--gold-deep);font-size:13px}
  .tbl.stack .num{text-align:left}
}
.q{display:inline-grid;place-items:center;min-width:28px;height:20px;padding:0 5px;border-radius:2px;font:600 11px/1 var(--sans);letter-spacing:.03em;font-feature-settings:"lnum"}
.q1{background:var(--velvet);color:var(--gold-lite)}.q2{background:var(--purple);color:#fff}.q3{background:none;color:var(--purple);box-shadow:inset 0 0 0 1px var(--purple)}.q4{background:none;color:var(--muted);box-shadow:inset 0 0 0 1px var(--rule)}
.qx{background:none;color:var(--muted)}
details>summary.btn{display:inline-flex}
details>summary::-webkit-details-marker{display:none}

/* ---------- charts ---------- */
.chart{padding:16px 0 0;border-top:1px solid var(--ink);background:none}
.chart h3{font-size:22px}
.bars{display:flex;align-items:flex-end;gap:4px;height:220px;margin-top:20px;padding-top:26px}
.bar{flex:1;position:relative;height:var(--h);background:var(--purple);opacity:.82;transform-origin:bottom;transition:transform 1s var(--ease)}
.bar.top{background:var(--gold);opacity:1}
html.js .bars:not(.in) .bar{transform:scaleY(0)}
.bar i{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);font:600 11px var(--sans);color:var(--muted);font-style:normal;padding-bottom:4px;white-space:nowrap;opacity:0;transition:opacity var(--t1)}
.bar.top i,.bar:hover i,.bar:focus i{opacity:1;color:var(--ink)}
.axis{display:flex;gap:4px;border-top:1px solid var(--ink);padding-top:6px}
.axis span{flex:1;text-align:center;font:500 11px var(--sans);color:var(--muted)}
@media (max-width:640px){.bars,.axis{gap:2px}.axis span{font-size:9.5px}.axis span:nth-child(even){visibility:hidden}.bar.top i{left:auto;right:0;transform:none}}
.donut{display:flex;gap:26px;align-items:center;flex-wrap:wrap}
.donut svg{width:190px;height:190px;flex:none}
.legend{list-style:none;padding:0;margin:0;font:400 15px/1.4 var(--sans);flex:1;min-width:200px}
.legend li{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:.5px solid var(--rule)}
.legend i{width:12px;height:12px;flex:none}
.legend b{margin-left:auto;padding-left:14px;font-weight:500;font-feature-settings:"lnum","tnum"}

/* ---------- photos ---------- */
.ph{border-radius:0;overflow:hidden;position:relative;background:var(--rule);margin:0;cursor:zoom-in}
.ph img{width:100%;height:100%;object-fit:cover;transition:transform var(--t2) var(--ease)}
.ph:hover img{transform:scale(1.03)}
.ph figcaption{position:absolute;left:0;right:0;bottom:0;padding:34px 14px 10px;font-size:15px;line-height:1.25;color:#fff;background:linear-gradient(transparent,rgba(25,10,40,.82))}
.mosaic{display:grid;grid-auto-flow:dense;grid-template-columns:repeat(4,1fr);grid-auto-rows:190px;gap:10px}
.mosaic .w2{grid-column:span 2}.mosaic .h2{grid-row:span 2}
@media (max-width:800px){.mosaic{grid-template-columns:repeat(2,1fr);grid-auto-rows:170px}}
.lightbox{position:fixed;inset:0;background:rgba(20,8,32,.94);display:none;place-items:center;z-index:100;padding:24px}
.lightbox.open{display:grid}
.lightbox img{max-height:82vh;width:auto}
.lightbox p{color:#efe5f8;text-align:center;font:400 16px var(--text);margin:14px 0 0}
.lightbox button{position:absolute;top:16px;right:18px;background:none;border:1px solid var(--gold);color:var(--gold-lite);border-radius:var(--r);padding:8px 16px;font:600 14px var(--sans);cursor:pointer}

/* ---------- award catalogue ---------- */
.medals{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));column-gap:36px;border-top:1px solid var(--ink)}
.md{display:grid;grid-template-columns:44px 1fr;column-gap:14px;padding:14px 0;border-bottom:.5px solid var(--rule)}
.md>*{grid-column:2}
.md .disc{grid-column:1;grid-row:1/4;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font:500 13px var(--sans);margin-top:2px}
.disc.gold{background:var(--gold);color:var(--velvet)}
.disc.silver{background:#c5c8cf;color:#30343b}
.disc.bronze{background:#8a5a2b;color:#fff}
.disc.honour{background:var(--velvet);color:var(--gold-lite)}
.md b{display:block;font:500 18px/1.2 var(--serif)}
.md small{display:block;color:var(--muted);font:400 13px/1.4 var(--sans);margin-top:3px}
.md .y{font-size:15px;color:var(--gold-deep)}

/* ---------- publications: an index ---------- */
.filters{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:16px;padding:14px 0;border-block:1px solid var(--ink);background:var(--ivory);position:sticky;top:66px;z-index:5}
.filters label{font-size:15px;color:var(--gold-deep);display:block;margin-bottom:4px}
.filters input,.filters select{width:100%;font:400 15px var(--sans);padding:9px 0;border:0;border-bottom:1px solid var(--rule);border-radius:0;background:transparent;color:var(--ink)}
.filters input:focus,.filters select:focus{border-bottom-color:var(--gold);outline:none}
@media (max-width:800px){.filters{grid-template-columns:1fr 1fr;position:static}.filters .f-q{grid-column:1/-1}}
.count{margin:16px 0;color:var(--muted);font:400 14px var(--sans)}
.pubs{list-style:none;padding:0;margin:0}
.pub{display:grid;grid-template-columns:110px 1fr auto;gap:24px;padding:14px 0;border-bottom:.5px solid var(--rule);align-items:start}
.pub .py{font:500 34px/1 var(--serif);color:var(--velvet);font-feature-settings:"lnum"}
.pub .py:empty{visibility:hidden}
.pub.yr1{border-top:1px solid var(--ink);margin-top:-1px}
.pub>div:nth-child(2){padding-left:2em;text-indent:-2em}
.pub .pt{font:500 19px/1.3 var(--serif);margin:0 0 3px}
.pub .pt a{color:var(--ink);text-decoration:none}
.pub .pt a:hover{color:var(--purple)}
.pub .pa{font:400 14px/1.5 var(--sans);color:var(--muted);margin:0;text-indent:0}
.pub .ps{font:italic 400 15px/1.45 var(--text);margin:2px 0 0;text-indent:0}
.pub .pm{text-align:right;display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.pub .cites{font:500 13px var(--sans);color:var(--gold-deep);white-space:nowrap;font-feature-settings:"lnum"}
.pub .ty{font:500 11px var(--sans);color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.me{font-weight:600;color:var(--ink)}
@media (max-width:640px){.pub{grid-template-columns:1fr;gap:6px}.pub .py{font-size:26px}.pub .py:empty{display:none}.pub .pm{flex-direction:row;align-items:center;text-align:left}}

/* ---------- map ---------- */
.mapbox{background:var(--velvet);padding:12px;position:relative}
#map{width:100%;aspect-ratio:2/1;display:block}
#map .land{fill:#4a2a6c;stroke:#2a1240;stroke-width:.4}
#map .land.on{fill:#7a4aa8}
#map .arc{fill:none;stroke:url(#arcg);stroke-width:1.6;stroke-linecap:round}
#map .pin{fill:var(--gold-lite);stroke:#2a1240;stroke-width:1}
#map .home{fill:#fff}
#map .lbl{fill:#f6ecd0;font:600 11px var(--sans);paint-order:stroke;stroke:#1f0c31;stroke-width:3px}

/* ---------- quotes / bands ---------- */
.quote{font:italic 400 clamp(26px,3.2vw,40px)/1.25 var(--serif);max-width:28ch;margin:0;padding-left:24px;border-left:2px solid var(--gold)}
.band{padding:80px 0}
.band .wrap{display:grid;grid-template-columns:7fr 5fr;gap:48px;align-items:center}
@media (max-width:800px){.band .wrap,.hero .wrap{grid-template-columns:1fr}.arch{justify-self:start;max-width:320px}.btns{padding-bottom:36px}.hero{padding-top:56px}}
.press{display:block;color:inherit}
.press:hover{color:inherit}
.press:hover h3{color:var(--purple)}
.press .src{font-size:16px;color:var(--gold-deep);margin:0}
.press h3{margin:8px 0 8px}
.press .go{font:600 14px var(--sans);color:var(--purple)}
.logos{display:flex;flex-wrap:wrap;gap:32px;align-items:center;border-top:.5px solid var(--rule);padding-top:22px}
.logos img{height:56px;width:auto;filter:grayscale(1);opacity:.8;mix-blend-mode:multiply;transition:filter var(--t1),opacity var(--t1)}
.logos img:hover{filter:none;opacity:1}

/* ---------- about essay ---------- */
.essay p{max-width:62ch;hanging-punctuation:first}
p.bio::first-letter{float:left;font:500 4.3em/.8 var(--serif);color:var(--purple);margin:.07em .1em 0 0}
.sn{display:block;font:400 13px/1.45 var(--sans);color:var(--muted);border-left:1px solid var(--gold);padding-left:10px;margin:8px 0 0}

/* ---------- forms & lists ---------- */
.form{display:grid;gap:16px}
.form label{font:600 14px var(--sans)}
.form input,.form select,.form textarea{width:100%;font:400 16px var(--sans);padding:10px 0;border:0;border-bottom:1px solid var(--muted);border-radius:0;background:transparent;margin-top:4px;color:var(--ink)}
.form input:focus,.form select:focus,.form textarea:focus{outline:none;border-bottom:2px solid var(--gold)}
.form textarea{min-height:140px;resize:vertical}
.form .row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:600px){.form .row{grid-template-columns:1fr}}
.form button{justify-self:start;cursor:pointer}
.dl{display:flex;gap:14px;align-items:baseline;padding:14px 0;border-bottom:.5px solid var(--rule);color:var(--ink);background-image:none}
.dl:hover{color:var(--ink)}
.dl:hover b{color:var(--purple)}
.dl svg{display:none}
.dl b{display:block;font:500 19px/1.3 var(--serif)}
.dl small{font:400 14px var(--sans);color:var(--muted)}
a.dl::after{content:"\2192";margin-left:auto;color:var(--gold-deep);transition:transform var(--t1) var(--ease)}
a.dl:hover::after{transform:translateX(4px)}

/* ---------- footer ---------- */
footer.ft{padding:56px 0 30px}
footer .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px}
footer h4{font-size:17px;font-weight:500;color:var(--gold-lite);margin:0 0 12px}
footer a{color:#e9def4}
footer a:hover{color:var(--gold-lite)}
footer ul{list-style:none;padding:0;margin:0;line-height:2;font:400 15px/2 var(--sans)}
footer .base{margin-top:40px;padding-top:18px;border-top:1px solid rgba(233,199,102,.25);font:400 13px var(--sans);color:#bfaed3;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}
@media (max-width:760px){footer .cols{grid-template-columns:1fr}}
.ids{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:16px;font:600 14px var(--sans)}
.ids a{display:inline-flex;align-items:center;gap:6px}
.ids svg{width:14px;height:14px;opacity:.7}
.folio{background:#1d0b2e;color:#a796bd;font-size:15px;padding:10px 0}
.folio .wrap{display:flex;gap:6px 22px;flex-wrap:wrap;border-top:.5px solid rgba(233,199,102,.3);padding-top:10px}
.folio span+span::before{content:"\2014";margin-right:22px;color:var(--gold-deep)}
@media (max-width:560px){.folio span+span::before{display:none}}

/* ---------- motion: visible by default, animated only with JS + consent ---------- */
.rv{opacity:1;transform:none}
html.js .rv{transition:opacity var(--t2) var(--ease),transform var(--t2) var(--ease)}
html.js .rv:not(.in){opacity:0;transform:translateY(14px)}
html.js .sh:not(.in)::before{transform:scaleX(0)}
html.js .sh:not(.in)>*{opacity:0}
html.js .sh>*{transition:opacity var(--t2) var(--ease)}
html.js .sh>div:last-child{transition-delay:80ms}
html.js .grid>.rv:nth-child(2){transition-delay:80ms}html.js .grid>.rv:nth-child(3){transition-delay:160ms}html.js .grid>.rv:nth-child(4){transition-delay:240ms}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}html.js .rv,html.js .sh>*{opacity:1!important;transform:none!important}html.js .sh::before,html.js .bar{transform:none!important}::view-transition-group(*){animation:none!important}}
@media print{.top,.menu,footer.ft,.btns,.filters,.folio .wrap span:nth-child(3){display:none}.velvet{background:#fff;color:#000}.hero h1,.hero .role,.lead{color:#000}.rv,.sh>*{opacity:1!important;transform:none!important}.sh::before{transform:none!important}.bar{transform:none!important}}
.pmeta{display:flex;flex-wrap:wrap;gap:6px 24px;align-items:baseline;margin-top:22px;font:400 14px/1.5 var(--sans);color:var(--muted)}
.cite summary{cursor:pointer;color:var(--purple);font-weight:600;list-style:none}
.cite summary::after{content:" +"}
.cite[open] summary::after{content:" \2212"}
.cite p{font:400 14px/1.55 var(--sans)!important;max-width:70ch;margin:8px 0 0!important;padding:10px 12px;border:1px solid var(--rule);border-radius:var(--r);user-select:all}

/* ===== site chrome (search, theme, progress, back-to-top, print) ===== */
/* ---------- header controls ---------- */
.cx-tools{display:flex;gap:6px;align-items:center;margin-left:8px}
.cx-btn{display:inline-flex;align-items:center;gap:8px;height:38px;min-width:38px;justify-content:center;padding:0 10px;
  background:none;border:1px solid rgba(201,162,39,.45);border-radius:999px;color:var(--gold-lite);cursor:pointer;font:500 13px/1 var(--sans);transition:background .2s,border-color .2s}
.cx-btn:hover{background:rgba(241,217,138,.1);border-color:var(--gold-lite)}
.cx-btn svg{width:18px;height:18px;flex:none}
.cx-btn kbd{font:600 11px/1 var(--sans);padding:3px 6px;border:1px solid rgba(241,217,138,.4);border-radius:4px;color:#d9c9ea}
.cx-theme .cx-moon,[data-theme=dark] .cx-theme .cx-sun{display:none}
[data-theme=dark] .cx-theme .cx-moon{display:block}
@media (max-width:1240px){.cx-search span,.cx-search kbd{display:none}}
@media (max-width:1020px){.cx-tools{margin-left:0}}
@media (max-width:420px){.brand small{display:none}.top .wrap{gap:10px}.brand b{font-size:20px}}

/* ---------- reading progress + back to top ---------- */
.cx-progress{position:absolute;left:0;bottom:-1px;height:2px;width:100%;pointer-events:none}
.cx-progress i{position:absolute;inset:0;transform-origin:0 50%;transform:scaleX(var(--cx-p,0));
  background:linear-gradient(90deg,var(--gold-deep),#e9c766 60%,#fff1bf)}
.cx-top{position:fixed;right:20px;bottom:20px;z-index:40;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;cursor:pointer;
  background:#2a1240;color:var(--gold-lite);border:1px solid rgba(201,162,39,.6);box-shadow:0 10px 24px -10px rgba(20,8,30,.7);
  opacity:0;transform:translateY(14px);pointer-events:none;transition:opacity .3s,transform .3s,background .2s}
.cx-top.on{opacity:1;transform:none;pointer-events:auto}
.cx-top svg{width:18px;height:18px}
.cx-top:hover{background:#3a1959}

/* ---------- search palette ---------- */
.cx-pal{width:min(680px,calc(100vw - 24px));max-height:min(620px,calc(100vh - 80px));margin:9vh auto auto;padding:0;border:0;border-radius:6px;
  background:#1f0c31;color:#f1e8f8;box-shadow:0 30px 80px -20px rgba(10,3,18,.85),inset 0 0 0 1px rgba(201,162,39,.45);overflow:hidden}
.cx-pal[open]{display:flex;flex-direction:column;animation:cx-in .22s ease-out}
.cx-pal::backdrop{background:rgba(18,6,28,.62);backdrop-filter:blur(3px)}
.cx-pal::before{content:"";height:2px;flex:none;background:var(--foil)}
.cx-pal form{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:1px solid rgba(201,162,39,.25);margin:0}
.cx-pal form svg{width:20px;height:20px;color:var(--gold-lite);flex:none}
.cx-pal input{flex:1;min-width:0;background:none;border:0;outline:0;color:#fff;font:500 26px/1.2 var(--serif);caret-color:var(--gold)}
.cx-pal input::placeholder{color:#9e89b4;font-style:italic}
.cx-pal .cx-esc{font:600 11px var(--sans);color:#bfaed3;border:1px solid rgba(241,217,138,.3);border-radius:4px;padding:4px 7px;background:none;cursor:pointer}
.cx-res{overflow-y:auto;padding:6px 0 14px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:rgba(201,162,39,.5) transparent}
.cx-res h5{margin:16px 22px 6px;font:600 11px/1 var(--caps);letter-spacing:.2em;color:var(--gold);display:flex;gap:10px;align-items:center}
.cx-res h5::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,rgba(201,162,39,.4),transparent)}
.cx-res a{display:grid;grid-template-columns:1fr auto;gap:2px 16px;padding:10px 22px;color:inherit;text-decoration:none;border-left:2px solid transparent}
.cx-res a b{font:600 19px/1.25 var(--serif);color:#fff}
.cx-res a small{grid-column:1;font:400 13px/1.45 var(--sans);color:#bfaed3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.cx-res a i{grid-row:1/3;grid-column:2;align-self:center;font:500 10.5px var(--caps);letter-spacing:.14em;color:#9e89b4;font-style:normal}
.cx-res a[aria-selected=true]{background:linear-gradient(90deg,rgba(201,162,39,.16),transparent 80%);border-left-color:var(--gold)}
.cx-res a[aria-selected=true] b{color:var(--gold-lite)}
.cx-res mark{background:none;color:var(--gold-lite);text-decoration:underline 1px rgba(241,217,138,.6);text-underline-offset:3px}
.cx-empty{padding:26px 22px;font:italic 500 19px var(--serif);color:#bfaed3;margin:0}
.cx-foot{display:flex;gap:16px;padding:10px 22px;border-top:1px solid rgba(201,162,39,.2);font:500 11.5px var(--sans);color:#9e89b4}
.cx-foot kbd{font:inherit;border:1px solid rgba(241,217,138,.3);border-radius:3px;padding:1px 5px;margin-right:4px}
@media (max-width:600px){.cx-pal{margin-top:12px}.cx-pal input{font-size:22px}.cx-foot{display:none}.cx-res a i{display:none}}
@keyframes cx-in{from{opacity:0;transform:translateY(-10px) scale(.985)}}

/* ---------- craft details ---------- */
::selection{background:#3a1959;color:#f3dd96}
[data-theme=dark] ::selection{background:#d8b23c;color:#1f0c31}
html{scrollbar-color:#a8832a var(--ivory)}
@supports not (scrollbar-color:auto){
  ::-webkit-scrollbar{width:11px;height:11px}
  ::-webkit-scrollbar-track{background:var(--ivory)}
  ::-webkit-scrollbar-thumb{background:linear-gradient(#c9a227,#8c6b1f);border-radius:8px;border:3px solid var(--ivory)}
}

@media (prefers-reduced-motion:reduce){
  ::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}
  .cx-progress::after{display:none}
  html{scroll-behavior:auto}
}

/* ---------- print (all pages) ---------- */
@media print{
  @page{margin:16mm 14mm}
  :root,[data-theme=dark]{--ivory:#fff;--paper:#fff;--ink:#000;--muted:#333;--rule:#bbb;--purple:#000;--gold:#555;--gold-deep:#333;--gold-lite:#333;--velvet:#000;--shadow:none}
  html,body{background:#fff!important;color:#000!important;font-size:11pt;line-height:1.45}
  .top,.menu,.nav,footer,.btns,.filters,.skip,.cx-top,.cx-pal,.cx-tools,.cx-progress,.medal,video,iframe,canvas{display:none!important}
  *{animation:none!important;transition:none!important;box-shadow:none!important;text-shadow:none!important}
  .velvet{background:#fff!important;color:#000!important}
  .velvet *{color:#000!important}
  .velvet::before,.velvet::after,.card.gilt::before{display:none!important}
  .foil{background:none!important;color:#000!important;-webkit-text-fill-color:#000!important}
  .rv{opacity:1!important;transform:none!important}
  section.s{padding:12pt 0!important;border:0!important}
  .card,.chart,.stats,.tbl,.dl{background:#fff!important;border:1px solid #bbb!important}
  .icon{display:none!important}
  a{color:#000!important}
  main a[href^="http"]::after,main a[href^="mailto"]::after{content:" (" attr(href) ")";font-size:.85em;color:#444;word-break:break-all}
  main a.xl::after,main a.il::after,.pub .pt a::after{content:none}
  h1,h2,h3,h4{break-after:avoid}
  .card,figure,tr,li,.stat,img{break-inside:avoid}
  img{max-height:90mm;width:auto}
  .wrap{max-width:none;padding:0}
}

/* ===== integration fixes ===== */
.cx-btn{border-radius:var(--r)}
.p-index .sh>.kicker::before,.p-about .sh>.kicker::before,.p-research .sh>.kicker::before{content:"\00a7\2009" counter(sec,decimal-leading-zero) "\2002"}
.p-publications .sh>.kicker::before,.p-recognition .sh>.kicker::before{content:"No.\2009" counter(sec) "\2002"}
.g2 .sh{display:block}.g2 .sh>.kicker{margin-bottom:8px}
.lead-in{font-variant-caps:all-small-caps;letter-spacing:.06em;font-weight:600;color:var(--velvet)}
.hero .creds{max-width:none}
.wv-hero .hero-t{position:relative;z-index:1}
.wv-legend{font-family:var(--caps);font-variant-caps:all-small-caps;letter-spacing:.09em;text-transform:none}
.tlx-side{top:86px}
@media (max-width:800px){.tlx-num{top:66px!important}}

/* ===== dark theme (tokens; velvet stays dark) ===== */
[data-theme=dark]{color-scheme:dark;
  --ivory:#140b1c; --paper:#1b1126; --ink:#ece2cf; --muted:#b3a5bc; --rule:#3a2b47;
  --purple:#d2b3f0; --purple-soft:#2b1a3c; --velvet-2:#5a2a86;
  --gold:#d8b23c; --gold-deep:#e2bf5c; --gold-lite:#f3dd96}
[data-theme=dark] :is(.sh h2,.h2,.phead h1,.stat b,.flow-m b,.tl li.big h4,.pub .py,.lead-in,.md b){color:var(--gold-lite)}
[data-theme=dark] .card .num,[data-theme=dark] .flow-m .num{color:var(--purple)}
[data-theme=dark] .bar{background:var(--purple);opacity:.7}
[data-theme=dark] .q1{background:var(--gold);color:#1b1126}
[data-theme=dark] .q2{background:var(--purple);color:#1b1126}
[data-theme=dark] .btn-solid,[data-theme=dark] .btn-ink,[data-theme=dark] .btn-gold{background:var(--gold-lite);border-color:var(--gold-lite);color:#1b1126}
[data-theme=dark] .logos img{filter:grayscale(1) invert(1);mix-blend-mode:screen}
[data-theme=dark] :is(.ph img,.arch img){filter:brightness(.92)}
[data-theme=dark] .tbl tr:hover td{background:rgba(216,178,60,.08)}
[data-theme=dark] .flow svg [fill="#2e1446"]{fill:var(--gold-lite)}
[data-theme=dark] .flow svg [fill="#5d5468"]{fill:var(--muted)}
[data-theme=dark] .flow svg [fill="#5b2c83"]{fill:var(--purple)}
[data-theme=dark] .flow svg [stroke="#1e1726"]{stroke:var(--ink)}
[data-theme=dark] .donut text[fill="#2e1446"]{fill:var(--gold-lite)}
[data-theme=dark] .donut text[fill="#5d5468"]{fill:var(--muted)}
[data-theme=dark] .donut circle[stroke="#2e1446"]{stroke:#7b45ab}
[data-theme=dark] .cimah-fix,[data-theme=dark] svg rect[fill="#fff"]{fill:var(--paper)}
[data-theme=dark] svg text[fill="#2e1446"]{fill:var(--gold-lite)}
[data-theme=dark] svg text[fill="#5d5468"]{fill:var(--muted)}
[data-theme=dark] svg rect[stroke="#e4dccb"]{stroke:var(--rule)}
[data-theme=dark] .folio{background:#0e0714}
/* contrast fixes (AA) */
.crumbs{font:500 13px/1 var(--sans);color:var(--muted)}.crumbs a{color:var(--purple)}
.sv .kicker{color:var(--gold-lite)}
[data-theme=dark] :is(.gl-mast h1,.gl-nums b,.pk h2){color:var(--gold-lite)}
[data-theme=dark] .gl-lede::first-letter{color:var(--gold-lite)}
.cn{font:600 22px var(--serif);color:var(--velvet)}[data-theme=dark] .cn{color:var(--gold-lite)}
