/* ==========================================================
   Dr Farina Riaz
   Visual language from quantum circuit notation. Colour follows the
   phase convention used in quantum state plots: violet for phase 0,
   orange for phase pi, on deep indigo ink and cool paper.
   ========================================================== */
@font-face{font-family:"Fraunces";src:url("../fonts/Fraunces.woff2") format("woff2");font-weight:300 900;font-display:swap}
@font-face{font-family:"IBM Plex Sans";src:url("../fonts/PlexSans.woff2") format("woff2");font-weight:300 700;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("../fonts/PlexMono-Regular.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url("../fonts/PlexMono-Medium.woff2") format("woff2");font-weight:500;font-display:swap}

:root{
  --ink:#15122e;--ink-2:#1f1a45;--ink-3:#2b2560;
  --paper:#f6f5fb;--tint:#eeecf8;--white:#ffffff;
  --text:#15122e;--muted:#59547a;--faint:#8b86a6;
  --violet:#6c4dff;--violet-lt:#a796ff;--amber:#ff8a3d;--amber-dk:#d9631a;
  --line:rgba(21,18,46,.11);--line-lt:rgba(246,245,251,.14);
  --serif:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono","IBM Plex Sans","Fraunces",ui-monospace,Menlo,monospace;
  --r:14px;--r-lg:22px;
  --ease:cubic-bezier(.22,.61,.36,1);--spring:cubic-bezier(.34,1.4,.64,1);
  --pad:clamp(72px,9vw,128px);--nav:66px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:hidden}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--paper);color:var(--text);font-family:var(--sans);font-size:17px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg,canvas{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin:0}
ol,ul{margin:0;padding:0;list-style:none}
::selection{background:var(--violet);color:#fff}
:focus-visible{outline:2px solid var(--amber);outline-offset:3px;border-radius:4px}
.wrap{width:min(1180px,90vw);margin:0 auto}
.narrow{width:min(820px,90vw)}
.mono{font-family:var(--mono)}
.skip{position:absolute;left:-9999px;top:0;z-index:500;background:var(--ink);color:#fff;padding:10px 16px;border-radius:8px}
.skip:focus{left:12px;top:12px}
.ic{width:17px;height:17px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.ic.fill{fill:currentColor;stroke:none}
.ic .solid{fill:currentColor;stroke:none}
.progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:300;pointer-events:none}
.progress i{display:block;height:100%;transform:scaleX(0);transform-origin:0 50%;background:linear-gradient(90deg,var(--violet),var(--amber))}

/* ---------- type ---------- */
.kicker{font-family:var(--mono);font-size:.74rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--violet);margin-bottom:16px}
.kicker span{color:var(--faint);margin:0 .35em}
.kicker-lt{color:var(--violet-lt)}
.h2{font-family:var(--serif);font-weight:500;font-size:clamp(2rem,4.6vw,3.4rem);line-height:1.05;letter-spacing:-.02em;font-variation-settings:"opsz" 96}
.h2-lt{color:var(--paper)}
.lede{margin-top:18px;font-size:1.12rem;color:var(--muted);max-width:60ch}
.lede-lt{color:#c9c5e3}
.body{margin-top:18px;color:var(--muted);font-size:1.04rem;line-height:1.75}
.body-lt{color:#c9c5e3}
.sh{max-width:70ch;margin-bottom:clamp(36px,5vw,60px)}
.sh-c{margin-inline:auto;text-align:center}
.sh-c .lede{margin-inline:auto}
.sec{padding:var(--pad) 0;position:relative}
.sec-tint{background:var(--tint)}
.sec-ink{background:var(--ink);color:var(--paper)}
.lnk{display:inline-flex;align-items:center;gap:8px;margin-top:26px;font-weight:600;color:var(--violet);border-bottom:1.5px solid currentColor;padding-bottom:3px}
.lnk .ic{transition:transform .3s var(--spring)}
.lnk:hover .ic{transform:translateX(4px)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:9px;padding:13px 22px;border-radius:999px;border:0;cursor:pointer;background:var(--ink);color:var(--paper);font-weight:600;font-size:.95rem;position:relative;overflow:hidden;isolation:isolate;transition:transform .35s var(--spring),box-shadow .3s,color .25s}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(100deg,var(--violet),var(--amber));opacity:0;transition:opacity .35s}
.btn:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(108,77,255,.32)}
.btn:hover::before{opacity:1}
.btn .ic{transition:transform .3s var(--spring)}
.btn:hover .ic{transform:translateX(3px)}
.btn-sm{padding:9px 18px;font-size:.88rem}
.btn-lt{background:var(--paper);color:var(--ink)}
.btn-lt:hover{color:#fff}
.btn-ghost-lt{background:transparent;color:var(--paper);box-shadow:inset 0 0 0 1.5px rgba(246,245,251,.32)}
.btn-ghost-lt::before{display:none}
.btn-ghost-lt:hover{box-shadow:inset 0 0 0 1.5px var(--violet-lt);background:rgba(167,150,255,.1)}
.btn-ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn-ghost::before{display:none}
.btn-ghost:hover{box-shadow:inset 0 0 0 1.5px var(--violet)}

/* ---------- nav ---------- */
.nav{position:sticky;top:0;z-index:200;background:rgba(246,245,251,.82);backdrop-filter:blur(16px) saturate(1.6);-webkit-backdrop-filter:blur(16px) saturate(1.6);border-bottom:1px solid transparent;transition:border-color .3s,background .3s}
.nav.stuck{border-bottom-color:var(--line)}
.nav-in{width:min(1240px,94vw);margin:0 auto;height:var(--nav);display:flex;align-items:center;gap:18px}
.brand{display:inline-flex;align-items:center;gap:10px;margin-right:auto;font-family:var(--serif);font-weight:600;font-size:1.18rem;letter-spacing:-.01em}
.brand em{font-style:normal;font-family:var(--mono);font-size:.62rem;font-weight:500;letter-spacing:.12em;color:var(--violet);margin-left:6px;vertical-align:super}
.mark{width:32px;height:32px}
.mark .m-ring{fill:none;stroke:var(--ink);stroke-width:2}
.mark .m-eq{fill:none;stroke:var(--violet);stroke-width:1.4;opacity:.7}
.mark .m-vec{stroke:var(--amber);stroke-width:2.4;stroke-linecap:round;transform-origin:20px 20px;transition:transform .6s var(--spring)}
.mark .m-dot{fill:var(--amber);transform-origin:20px 20px;transition:transform .6s var(--spring)}
.brand:hover .m-vec,.brand:hover .m-dot{transform:rotate(-70deg)}
.brand-lt{color:var(--paper)}
.brand-lt .mark .m-ring{stroke:var(--paper)}
.brand-lt em{color:var(--violet-lt)}
.nav-links{display:flex;gap:2px}
.nav-links a{position:relative;padding:8px 12px;font-size:.92rem;font-weight:500;color:var(--muted);transition:color .2s}
.nav-links a::after{content:"";position:absolute;left:12px;right:12px;bottom:3px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--violet),var(--amber));transform:scaleX(0);transform-origin:0 50%;transition:transform .32s var(--ease)}
.nav-links a:hover,.nav-links a[aria-current="page"]{color:var(--ink)}
.nav-links a:hover::after,.nav-links a[aria-current="page"]::after{transform:scaleX(1)}
.burger{display:none;width:42px;height:42px;border:0;background:transparent;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer}
.burger span{width:21px;height:2px;border-radius:2px;background:var(--ink);transition:transform .3s var(--ease)}
.burger.on span:nth-child(1){transform:translateY(4px) rotate(45deg)}
.burger.on span:nth-child(2){transform:translateY(-4px) rotate(-45deg)}
.mob{position:fixed;top:var(--nav);left:0;right:0;z-index:199;background:rgba(246,245,251,.97);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--line);opacity:0;transform:translateY(-8px);pointer-events:none;transition:opacity .28s,transform .28s;max-height:calc(100svh - var(--nav));overflow:auto}
.mob.on{opacity:1;transform:none;pointer-events:auto}
.mob nav{display:flex;flex-direction:column;padding:8px 5vw 24px}
.mob a{padding:14px 2px;font-size:1.08rem;font-weight:500;border-bottom:1px solid var(--line)}
.mob .btn{margin-top:18px;justify-content:center;border-bottom:0}
@media (max-width:1060px){.nav-links{display:none}.nav-in>.btn-sm{display:none}.burger{display:flex}}

/* ============================ HOME HERO ============================ */
.hero{position:relative;overflow:hidden;background:radial-gradient(1100px 520px at 78% 8%,rgba(108,77,255,.32),transparent 62%),radial-gradient(800px 420px at 4% 96%,rgba(255,138,61,.14),transparent 60%),var(--ink);color:var(--paper);padding:clamp(52px,7vw,92px) 0 clamp(44px,5vw,72px)}
.hero-grid{position:absolute;inset:0;pointer-events:none;opacity:.55;background-image:radial-gradient(rgba(246,245,251,.16) 1px,transparent 1.4px);background-size:28px 28px;mask-image:radial-gradient(80% 70% at 50% 30%,#000 30%,transparent 100%);-webkit-mask-image:radial-gradient(80% 70% at 50% 30%,#000 30%,transparent 100%)}
.hero-in{position:relative}
.hero-name{font-family:var(--serif);font-weight:400;font-size:clamp(3.4rem,11vw,9rem);line-height:.92;letter-spacing:-.035em;font-variation-settings:"opsz" 144;margin-top:6px}
.hn-dr{display:inline-block;font-family:var(--mono);font-size:.22em;font-weight:500;letter-spacing:.12em;color:var(--amber);vertical-align:top;margin:.5em .5em 0 0}
.hero-row{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(24px,5vw,72px);align-items:end;margin-top:28px}
.hero-lede{font-size:clamp(1.05rem,1.6vw,1.22rem);line-height:1.6;color:#d4d0ec;max-width:52ch}
.roles{display:flex;flex-wrap:wrap;gap:8px}
.roles li{font-family:var(--mono);font-size:.76rem;padding:7px 12px;border-radius:999px;border:1px solid var(--line-lt);color:#d4d0ec;background:rgba(246,245,251,.04)}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}
.hero-vis{margin-top:clamp(36px,5vw,58px)}
@media (max-width:820px){.hero-row{grid-template-columns:1fr}}

/* ---------- SIGNATURE: the scanning quantum filter ---------- */
.qc-fig{border:1px solid var(--line-lt);border-radius:var(--r-lg);background:linear-gradient(180deg,rgba(31,26,69,.75),rgba(21,18,46,.6));padding:clamp(14px,2vw,24px);box-shadow:0 30px 80px rgba(0,0,0,.35)}
.qc-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
.qc{width:100%;min-width:640px;height:auto}
.qc text{font-family:var(--mono)}
.qc-cap{fill:var(--faint);font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.qw{stroke:rgba(246,245,251,.32);stroke-width:1.4}
.ql{fill:var(--faint);font-size:12px}
.qin{stroke:rgba(246,245,251,.4);stroke-width:1;transition:fill .4s}
.qfeed{fill:none;stroke:rgba(255,138,61,.45);stroke-width:1.2;stroke-dasharray:3 4;animation:feed 1.2s linear infinite}
@keyframes feed{to{stroke-dashoffset:-14}}
.gate rect{fill:var(--ink-2);stroke:var(--violet-lt);stroke-width:1.3}
.gt{fill:var(--paper);font-size:14px;font-weight:500}
.ga{fill:var(--amber);font-size:11px}
.pulse{fill:var(--amber);opacity:0;filter:drop-shadow(0 0 5px rgba(255,138,61,.9))}
.pulse.go{animation:travel 1s var(--ease) forwards}
@keyframes travel{0%{opacity:0;transform:translateX(0)}12%{opacity:1}88%{opacity:1}100%{opacity:0;transform:translateX(360px)}}
.meter rect{fill:var(--ink-2);stroke:rgba(246,245,251,.35);stroke-width:1.2}
.m-arc{fill:none;stroke:rgba(246,245,251,.45);stroke-width:1.4}
.needle{stroke:var(--amber);stroke-width:2.2;stroke-linecap:round;transition:transform .55s var(--spring)}
.cw{stroke:rgba(246,245,251,.3);stroke-width:1}
.qv{fill:var(--paper);font-size:12.5px}
.cn-l{stroke:var(--violet-lt);stroke-width:1.5;transition:stroke .3s}
.cn-c{fill:var(--violet-lt);transition:fill .3s}
.cn-t{fill:var(--ink);stroke:var(--violet-lt);stroke-width:1.5;transition:stroke .3s}
.cn-p{stroke:var(--violet-lt);stroke-width:1.5;transition:stroke .3s}
.cnot.fire .cn-l,.cnot.fire .cn-t,.cnot.fire .cn-p{stroke:var(--amber)}
.cnot.fire .cn-c{fill:var(--amber)}
.qwin{fill:rgba(255,138,61,.14);stroke:var(--amber);stroke-width:2;rx:3;transition:transform .45s var(--ease)}
.qcell{fill:none;stroke:var(--amber);stroke-width:2;rx:3;transition:transform .45s var(--ease)}
.qpx{transition:fill .5s}
.qo{transition:fill-opacity .6s var(--ease),fill .6s}
.qc-swipe{display:none;margin-top:10px;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--violet-lt)}
@media (max-width:700px){.qc-swipe{display:block}}
.qc-fig figcaption{display:flex;gap:10px;align-items:flex-start;margin-top:14px;font-size:.84rem;line-height:1.55;color:var(--faint)}
.dot-live{flex:none;width:8px;height:8px;margin-top:6px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 0 rgba(255,138,61,.6);animation:live 2s infinite}
@keyframes live{70%{box-shadow:0 0 0 9px rgba(255,138,61,0)}100%{box-shadow:0 0 0 0 rgba(255,138,61,0)}}

/* ---------- marquee ---------- */
.marquee{overflow:hidden;background:var(--ink-2);color:#cfcbe8;border-top:1px solid var(--line-lt);padding:15px 0;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.mq-t{display:flex;align-items:center;gap:28px;width:max-content;white-space:nowrap;animation:marq 42s linear infinite;font-family:var(--mono);font-size:.82rem;letter-spacing:.08em;text-transform:uppercase}
.mq-t i{font-style:normal;color:var(--amber)}
.marquee:hover .mq-t{animation-play-state:paused}
@keyframes marq{to{transform:translateX(-50%)}}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.stat{position:relative;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:30px 24px;overflow:hidden;transition:transform .45s var(--spring),box-shadow .35s}
.stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:linear-gradient(180deg,var(--violet),var(--amber));transform:scaleY(0);transform-origin:top;transition:transform .6s var(--ease)}
.stat.in::before{transform:scaleY(1);transition-delay:.3s}
.stat:hover{transform:translateY(-5px);box-shadow:0 18px 44px rgba(21,18,46,.12)}
.st-n{font-family:var(--serif);font-size:clamp(2.6rem,5vw,3.6rem);line-height:1;letter-spacing:-.03em;color:var(--ink)}
.st-n sup{font-family:var(--mono);font-size:.34em;color:var(--violet);margin-left:4px;letter-spacing:0}
.st-l{margin-top:12px;font-size:.92rem;color:var(--muted);line-height:1.45}
@media (max-width:900px){.stats{grid-template-columns:repeat(2,1fr)}}
@media (max-width:440px){.stats{grid-template-columns:1fr}}

/* ---------- split ---------- */
.split{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(36px,6vw,88px);align-items:center}
.split-top{align-items:start}
.split-vis{display:flex;flex-direction:column;gap:22px}
.sticky{position:sticky;top:calc(var(--nav) + 24px)}
@media (max-width:900px){.split{grid-template-columns:1fr}.sticky{position:static}}

/* ---------- portrait ---------- */
.portrait{position:relative;aspect-ratio:4/5;border-radius:var(--r-lg);overflow:hidden;background:var(--ink);box-shadow:0 26px 60px rgba(21,18,46,.22)}
.portrait img{width:100%;height:100%;object-fit:cover}
.pt-fb{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:radial-gradient(420px 320px at 70% 20%,rgba(108,77,255,.45),transparent 70%),var(--ink)}
.portrait.no-img .pt-fb{display:flex}
.pt-bloch{position:absolute;width:76%;fill:none;opacity:.9}
.pt-bloch circle:first-child{stroke:rgba(246,245,251,.5);stroke-width:1.2}
.pt-bloch ellipse{stroke:rgba(167,150,255,.55);stroke-width:1}
.pt-bloch .pt-mer{stroke-dasharray:3 5}
.pt-vec{stroke:var(--amber);stroke-width:2.4;stroke-linecap:round;transform-origin:100px 100px;animation:precess 9s linear infinite}
.pt-dot{fill:var(--amber);transform-origin:100px 100px;animation:precess 9s linear infinite}
@keyframes precess{to{transform:rotate(360deg)}}
.pt-ini{position:relative;font-family:var(--serif);font-size:clamp(3.6rem,8vw,5.4rem);font-weight:500;color:var(--paper);letter-spacing:-.02em}
.portrait figcaption{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;padding:14px 18px;font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;color:#d4d0ec;background:linear-gradient(transparent,rgba(21,18,46,.85))}

/* ---------- pull quote ---------- */
.pull{position:relative;padding:30px 30px 26px;border-radius:var(--r-lg);background:var(--white);border:1px solid var(--line);overflow:hidden}
.pull-ket{position:absolute;right:18px;top:6px;font-family:var(--mono);font-size:3.4rem;color:var(--violet);opacity:.12}
.pull blockquote{margin:0;font-family:var(--serif);font-size:clamp(1.28rem,2.2vw,1.6rem);line-height:1.32;letter-spacing:-.01em;font-variation-settings:"opsz" 48}
.pull figcaption{margin-top:16px;font-size:.86rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px 10px}
.pull figcaption a{font-family:var(--mono);font-size:.76rem;color:var(--violet);border-bottom:1px solid rgba(108,77,255,.35)}
.narrow .pull{margin-top:10px}
.pull-dk{background:var(--ink-2);border-color:var(--line-lt);margin-top:42px}
.pull-dk blockquote{color:var(--paper)}
.pull-dk figcaption{color:#c9c5e3}
.pull-dk figcaption a{color:var(--violet-lt)}

/* ---------- theme cards ---------- */
.tcards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.tcards-3{grid-template-columns:repeat(3,1fr)}
.tcard{position:relative;display:flex;flex-direction:column;gap:10px;padding:26px 22px 24px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transition:transform .45s var(--spring),box-shadow .35s,border-color .3s}
.tcard::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(280px circle at var(--mx,50%) var(--my,50%),rgba(108,77,255,.1),transparent 65%)}
.tcard:hover{transform:translateY(-6px);box-shadow:0 22px 50px rgba(21,18,46,.13);border-color:rgba(108,77,255,.3)}
.tcard:hover::after{opacity:1}
.tcard h3{font-family:var(--serif);font-weight:500;font-size:1.32rem;line-height:1.18;letter-spacing:-.01em}
.tcard p{color:var(--muted);font-size:.95rem;line-height:1.6}
.tc-gl{display:block;width:96px;margin-bottom:6px}
.tc-go{margin-top:auto;padding-top:10px;display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:.88rem;color:var(--violet)}
.tc-go .ic{transition:transform .3s var(--spring)}
.tcard:hover .tc-go .ic{transform:translateX(4px)}
.tcard-st .tag{align-self:flex-start}
@media (max-width:1000px){.tcards,.tcards-3{grid-template-columns:repeat(2,1fr)}}
@media (max-width:580px){.tcards,.tcards-3{grid-template-columns:1fr}}

/* glyphs */
.gl-a{fill:rgba(108,77,255,.1);stroke:var(--violet);stroke-width:1.6}
.gl-b{fill:rgba(255,138,61,.1);stroke:var(--amber);stroke-width:1.6}
.gl-dot{fill:var(--amber)}
.gl-w{stroke:rgba(21,18,46,.25);stroke-width:1.3;fill:none}
.gl-w2{stroke:var(--violet);stroke-width:1.8;fill:none;stroke-linecap:round}
.gl-g{fill:var(--white);stroke:var(--violet);stroke-width:1.4}
.gl-t{fill:none;stroke:var(--violet);stroke-width:1.6}
.tcard:hover .gl-dot,.theme:hover .gl-dot{animation:blink .9s ease 2}
@keyframes blink{50%{fill:var(--violet)}}

/* ---------- featured ---------- */
.feat{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(32px,6vw,80px);align-items:center}
.feat-p{margin-top:18px;font-size:.8rem;letter-spacing:.04em;color:var(--violet-lt)}
.greenhouse{width:100%;max-width:380px;margin-inline:auto;fill:none}
.gh-house{stroke:rgba(246,245,251,.55);stroke-width:2;fill:rgba(167,150,255,.06)}
.gh-frame{stroke:rgba(246,245,251,.18);stroke-width:1.2}
.gh-plants path{stroke:#7fd6a3;stroke-width:3;stroke-linecap:round;stroke-dasharray:120;stroke-dashoffset:120;transition:stroke-dashoffset 1.6s var(--ease)}
.in .gh-plants path{stroke-dashoffset:0}
.in .gh-plants path:nth-child(2){transition-delay:.2s}
.in .gh-plants path:nth-child(3){transition-delay:.4s}
.in .gh-plants path:nth-child(4){transition-delay:.6s}
.gh-q circle{fill:var(--amber);opacity:.9}
.gh-ent{stroke:var(--violet-lt);stroke-width:1.4;stroke-dasharray:4 5;animation:feed 1.4s linear infinite}
@media (max-width:860px){.feat{grid-template-columns:1fr}}

/* ---------- home: awards + media ---------- */
.two{display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,6vw,80px)}
.awlist li{border-top:1px solid var(--line)}
.aw-a{display:grid;grid-template-columns:62px 1fr 18px;gap:2px 16px;padding:16px 0;transition:padding .3s var(--ease)}
.aw-a .ic{grid-row:1/span 2;grid-column:3;width:16px;height:16px;color:var(--faint);transition:transform .3s var(--spring),color .2s}
a.aw-a:hover{padding-left:8px}
a.aw-a:hover .aw-t{color:var(--violet)}
a.aw-a:hover .ic{color:var(--violet);transform:translate(2px,-2px)}
.aw-y{grid-row:span 2;color:var(--amber-dk);font-size:.86rem;padding-top:3px}
.aw-t{font-family:var(--serif);font-size:1.16rem;font-weight:500;line-height:1.3}
.aw-b{font-size:.88rem;color:var(--muted)}
.mrow{display:grid;grid-template-columns:96px 1fr 18px;gap:2px 14px;align-items:start;padding:16px 0;border-top:1px solid var(--line);transition:padding .3s var(--ease)}
.mrow .mono{grid-row:span 2;font-size:.76rem;color:var(--faint);padding-top:3px}
.mr-o{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--violet)}
.mr-t{grid-column:2;font-weight:600;line-height:1.4}
.mrow .ic{grid-row:1/span 2;grid-column:3;color:var(--faint);transition:transform .3s var(--spring),color .2s}
.mrow:hover{padding-left:8px}
.mrow:hover .ic{color:var(--violet);transform:translate(2px,-2px)}
@media (max-width:860px){.two{grid-template-columns:1fr}}

/* ---------- CTA band ---------- */
.sec-cta{padding-top:0}
.cta{position:relative;overflow:hidden;border-radius:28px;padding:clamp(44px,7vw,84px) clamp(24px,5vw,70px);background:radial-gradient(700px 360px at 90% 0%,rgba(108,77,255,.42),transparent 65%),var(--ink);color:var(--paper)}
.cta .body{max-width:56ch}
.cta-wires{position:absolute;inset:0;pointer-events:none}
.cta-wires i,.foot-wires i,.ph-wires i{position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(246,245,251,.16) 20%,rgba(246,245,251,.16) 80%,transparent)}
.cta-wires i:nth-child(1){top:28%}.cta-wires i:nth-child(2){top:52%}.cta-wires i:nth-child(3){top:76%}
.cta-wires i::after,.foot-wires i::after,.ph-wires i::after{content:"";position:absolute;top:-2.5px;left:-10%;width:6px;height:6px;border-radius:50%;background:var(--amber);box-shadow:0 0 12px var(--amber);animation:run 7s linear infinite}
.cta-wires i:nth-child(2)::after,.foot-wires i:nth-child(2)::after,.ph-wires i:nth-child(2)::after{animation-delay:-2.4s;animation-duration:9s}
.cta-wires i:nth-child(3)::after,.foot-wires i:nth-child(3)::after,.ph-wires i:nth-child(3)::after{animation-delay:-4.6s;animation-duration:8s}
.ph-wires i:nth-child(4)::after{animation-delay:-1.2s;animation-duration:10s}
@keyframes run{to{left:110%}}
.cta>*:not(.cta-wires){position:relative}

/* ============================ PAGE HERO ============================ */
.phero{position:relative;overflow:hidden;background:radial-gradient(900px 420px at 85% 0%,rgba(108,77,255,.34),transparent 62%),var(--ink);color:var(--paper);padding:clamp(56px,8vw,104px) 0 clamp(48px,6vw,80px)}
.ph-wires{position:absolute;inset:0;pointer-events:none}
.ph-wires i:nth-child(1){top:22%}.ph-wires i:nth-child(2){top:42%}.ph-wires i:nth-child(3){top:62%}.ph-wires i:nth-child(4){top:82%}
.ph-wires b{position:absolute;left:var(--x);top:calc(22% + var(--w) * 20%);transform:translate(-50%,-50%);font-family:var(--mono);font-weight:500;font-size:.72rem;color:rgba(246,245,251,.5);padding:5px 8px;border:1px solid rgba(167,150,255,.35);border-radius:6px;background:var(--ink);animation:gate 8s ease-in-out infinite;animation-delay:var(--d)}
@keyframes gate{0%,100%{border-color:rgba(167,150,255,.35);color:rgba(246,245,251,.5)}50%{border-color:var(--amber);color:var(--amber);box-shadow:0 0 18px rgba(255,138,61,.35)}}
.ph-in{position:relative}
.crumb{display:flex;gap:9px;font-family:var(--mono);font-size:.74rem;color:var(--faint);margin-bottom:22px}
.crumb a:hover{color:var(--paper)}
.ph-title{font-family:var(--serif);font-weight:400;font-size:clamp(2.6rem,7vw,5.6rem);line-height:1;letter-spacing:-.03em;font-variation-settings:"opsz" 144;max-width:17ch}
.ph-lede{margin-top:22px;max-width:58ch;font-size:1.12rem;color:#c9c5e3}
@media (max-width:700px){.ph-wires b{display:none}}

/* ============================ ABOUT ============================ */
.facts{display:grid;gap:1px;background:var(--line);border-radius:var(--r);overflow:hidden;border:1px solid var(--line)}
.facts>div{background:var(--white);padding:14px 18px;display:grid;grid-template-columns:70px 1fr;gap:14px}
.facts dt{font-family:var(--mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--violet);padding-top:2px}
.facts dd{font-size:.94rem;font-weight:500}
.vals{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.val{background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:26px 22px;transition:transform .45s var(--spring),box-shadow .35s}
.val:hover{transform:translateY(-5px);box-shadow:0 18px 44px rgba(21,18,46,.12)}
.val-k{display:inline-block;font-size:1.1rem;color:var(--amber-dk);margin-bottom:12px}
.val h3{font-family:var(--serif);font-weight:500;font-size:1.3rem}
.val p{margin-top:8px;color:var(--muted);font-size:.95rem;line-height:1.6}
@media (max-width:1000px){.vals{grid-template-columns:repeat(2,1fr)}}
@media (max-width:520px){.vals{grid-template-columns:1fr}}
.sisters{margin-top:40px;padding:28px 30px;border-left:3px solid var(--amber);background:var(--tint);border-radius:0 var(--r) var(--r) 0}
.sisters .body{margin-top:0}

/* ============================ RESEARCH ============================ */
.bloch{display:grid;grid-template-columns:1fr 1fr;gap:clamp(24px,4vw,56px);align-items:center;border:1px solid var(--line-lt);border-radius:var(--r-lg);padding:clamp(18px,3vw,34px);background:rgba(31,26,69,.55)}
.bl-stage{position:relative;aspect-ratio:1;max-width:460px;width:100%;margin-inline:auto}
.bl-stage canvas{width:100%;height:100%;cursor:grab;touch-action:none}
.bl-stage canvas:active{cursor:grabbing}
.bl-shots{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:center;gap:18px;pointer-events:none}
.bl-shots .shot{display:flex;flex-direction:column;align-items:center;gap:6px;font-family:var(--mono);font-size:.78rem;color:#d4d0ec}
.bl-shots .shot i{display:block;width:34px;border-radius:6px 6px 2px 2px;background:var(--violet-lt);height:0;transition:height .7s var(--spring)}
.bl-shots .shot.s1 i{background:var(--amber)}
.bl-state{font-size:clamp(.92rem,1.6vw,1.08rem);color:var(--paper);padding:14px 16px;border-radius:var(--r);background:var(--ink);border:1px solid var(--line-lt);margin-bottom:20px;overflow-x:auto;white-space:nowrap}
.bl-row{display:grid;grid-template-columns:1fr auto;gap:6px 12px;margin-bottom:18px;color:#d4d0ec;font-size:.95rem}
.bl-row em{font-style:normal;color:var(--faint);font-size:.82rem;margin-left:6px}
.bl-row output{font-family:var(--mono);color:var(--amber)}
.bl-row input{grid-column:1/-1}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:24px;background:transparent;cursor:pointer}
input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--violet),var(--amber))}
input[type=range]::-moz-range-track{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--violet),var(--amber))}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;margin-top:-8px;border-radius:50%;background:var(--paper);border:3px solid var(--violet);box-shadow:0 0 0 5px rgba(108,77,255,.25);transition:transform .2s}
input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--paper);border:3px solid var(--violet)}
input[type=range]:active::-webkit-slider-thumb{transform:scale(1.15)}
.bl-probs{display:grid;gap:10px;margin:6px 0 20px}
.bp{display:grid;grid-template-columns:42px 1fr 44px;gap:12px;align-items:center;font-size:.86rem;color:#d4d0ec}
.bp i{display:block;height:10px;border-radius:6px;background:rgba(246,245,251,.08);overflow:hidden}
.bp b{display:block;height:100%;width:0;border-radius:6px;background:var(--violet-lt);transition:width .35s var(--ease)}
.bp b.b1{background:var(--amber)}
.bp output{font-family:var(--mono);text-align:right;color:var(--paper)}
.bl-pre{display:flex;flex-wrap:wrap;gap:8px}
.bl-pre button{font-family:var(--mono);font-size:.84rem;padding:8px 14px;border-radius:999px;border:1px solid var(--line-lt);background:transparent;color:var(--paper);cursor:pointer;transition:border-color .2s,background .2s,transform .25s var(--spring)}
.bl-pre button:hover{border-color:var(--violet-lt);background:rgba(167,150,255,.12);transform:translateY(-2px)}
.bl-pre .bl-meas{border-color:var(--amber);color:var(--amber)}
.bl-pre .bl-meas:hover{background:rgba(255,138,61,.14);border-color:var(--amber)}
.bl-note{margin-top:18px;font-size:.88rem;color:var(--faint);line-height:1.6}
@media (max-width:860px){.bloch{grid-template-columns:1fr}}

.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;counter-reset:s}
.steps li{position:relative;padding:26px 22px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);transition:transform .45s var(--spring),box-shadow .35s}
.steps li:not(:last-child)::after{content:"";position:absolute;top:44px;right:-17px;width:18px;height:1.5px;background:var(--violet);opacity:.5}
.steps li:hover{transform:translateY(-5px);box-shadow:0 18px 44px rgba(21,18,46,.12)}
.st-k{font-size:.78rem;color:var(--amber-dk);letter-spacing:.08em}
.steps h3{margin-top:12px;font-family:var(--serif);font-weight:500;font-size:1.32rem}
.steps p{margin-top:8px;color:var(--muted);font-size:.94rem;line-height:1.6}
.steps-dk{grid-template-columns:repeat(3,1fr)}
.steps-dk li{background:var(--ink-2);border-color:var(--line-lt)}
.steps-dk li::after{display:none}
.steps-dk h3{color:var(--paper)}
.steps-dk p{color:#c9c5e3}
.steps-dk .st-k{color:var(--amber)}
@media (max-width:1000px){.steps{grid-template-columns:repeat(2,1fr)}.steps li::after{display:none}}
@media (max-width:560px){.steps,.steps-dk{grid-template-columns:1fr}}

.themes{display:flex;flex-direction:column;gap:clamp(60px,8vw,104px)}
.theme{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(30px,6vw,80px);align-items:center;scroll-margin-top:calc(var(--nav) + 30px)}
.theme.rev .th-art{order:2}
.th-art{aspect-ratio:4/3;border-radius:var(--r-lg);background:var(--white);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.th-art::before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(21,18,46,.12) 1px,transparent 1.4px);background-size:20px 20px;opacity:.6}
.th-gl{position:relative;width:62%;transition:transform .6s var(--spring)}
.theme:hover .th-gl{transform:scale(1.06) rotate(-1.5deg)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.chips li{font-family:var(--mono);font-size:.76rem;padding:7px 12px;border-radius:999px;background:var(--white);border:1px solid var(--line);color:var(--ink)}
@media (max-width:860px){.theme{grid-template-columns:1fr}.theme.rev .th-art{order:0}}
.fields{display:grid;gap:10px;margin-bottom:38px}
.fields li{display:flex;align-items:center;gap:18px;padding:18px 22px;border-radius:var(--r);background:var(--white);border:1px solid var(--line);font-weight:500;font-size:1.05rem}
.fields .mono{font-size:.82rem;color:var(--violet);padding:4px 10px;border-radius:6px;background:rgba(108,77,255,.08)}

/* ============================ TAGS + PILLS ============================ */
.tag{display:inline-flex;align-items:center;font-family:var(--mono);font-size:.68rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:5px 10px;border-radius:6px;background:rgba(108,77,255,.1);color:var(--violet)}
.tag-journal{background:rgba(108,77,255,.1);color:var(--violet)}
.tag-conference{background:rgba(25,150,140,.12);color:#11786f}
.tag-preprint{background:rgba(255,138,61,.14);color:var(--amber-dk)}
.tag-winner{background:var(--amber);color:var(--ink)}
.tag-finalist{background:rgba(108,77,255,.12);color:var(--violet)}
.tag-selected,.tag-recipient{background:transparent;color:var(--muted);box-shadow:inset 0 0 0 1px var(--line)}
.pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.pill{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:999px;border:1px solid var(--line);font-size:.84rem;font-weight:500;background:var(--white);transition:border-color .2s,color .2s,transform .25s var(--spring)}
.pill .ic{width:14px;height:14px}
.pill:hover{border-color:var(--violet);color:var(--violet);transform:translateY(-2px)}
.pill-lg{padding:11px 18px;font-size:.92rem}
.pill-lg .ic{width:17px;height:17px}

/* ============================ PROJECTS ============================ */
.projs{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.proj{position:relative;padding:30px 28px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transition:transform .45s var(--spring),box-shadow .35s,border-color .3s}
.proj::before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:linear-gradient(90deg,var(--violet),var(--amber));transform:scaleX(0);transform-origin:0 50%;transition:transform .5s var(--ease)}
.proj:hover{transform:translateY(-5px);box-shadow:0 20px 48px rgba(21,18,46,.12);border-color:rgba(108,77,255,.25)}
.proj:hover::before{transform:scaleX(1)}
.pj-top{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap}
.pj-y{font-size:.78rem;color:var(--faint)}
.proj h3{margin-top:16px;font-family:var(--serif);font-weight:500;font-size:1.5rem;line-height:1.2;letter-spacing:-.01em}
.pj-p{margin-top:8px;font-size:.78rem;color:var(--violet)}
.proj>p:not(.pj-p){margin-top:12px;color:var(--muted);font-size:.98rem;line-height:1.65}
@media (max-width:800px){.projs{grid-template-columns:1fr}}

/* ============================ PUBLICATIONS ============================ */
.pub-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:34px;padding-bottom:22px;border-bottom:1px solid var(--line)}
.filters{display:flex;flex-wrap:wrap;gap:8px}
.fbtn{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:999px;border:1px solid var(--line);background:var(--white);font-weight:500;font-size:.92rem;cursor:pointer;transition:background .2s,color .2s,border-color .2s,transform .25s var(--spring)}
.fbtn span{font-family:var(--mono);font-size:.74rem;color:var(--faint)}
.fbtn:hover{border-color:var(--violet);transform:translateY(-2px)}
.fbtn.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.fbtn.on span{color:var(--amber)}
.pub-count{font-size:.82rem;color:var(--faint)}
.ygroup{display:grid;grid-template-columns:110px 1fr;gap:24px;padding:10px 0 30px}
.ygroup.gone{display:none}
.yr{position:sticky;top:calc(var(--nav) + 20px);align-self:start;font-size:1.5rem;font-weight:500;color:var(--violet)}
.publist{display:flex;flex-direction:column;gap:14px}
.pub{padding:24px 24px 22px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);transition:transform .45s var(--spring),box-shadow .35s,opacity .35s}
.pub:hover{transform:translateX(5px);box-shadow:0 16px 40px rgba(21,18,46,.1)}
.pub.hide{display:none}
.pub.flash{animation:flash .45s var(--ease)}
@keyframes flash{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.pub h3{margin-top:12px;font-family:var(--serif);font-weight:500;font-size:1.24rem;line-height:1.3;letter-spacing:-.005em}
.pub-a{margin-top:8px;font-size:.92rem;color:var(--muted)}
.pub-a b{color:var(--ink);font-weight:600}
.pub-v{margin-top:4px;font-size:.8rem;color:var(--faint)}
.more{margin-top:40px;padding:30px;border-radius:var(--r-lg);background:var(--tint);text-align:center}
.more p{color:var(--muted)}
.more .pills{justify-content:center}
@media (max-width:700px){.ygroup{grid-template-columns:1fr;gap:10px}.yr{position:static}}

/* ============================ TIMELINES ============================ */
.aw-sum{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:34px}
.aw-sum>div{padding:24px;border-radius:var(--r-lg);background:var(--white);border:1px solid var(--line)}
@media (max-width:700px){.aw-sum{grid-template-columns:1fr}}
.legend{display:flex;flex-wrap:wrap;gap:20px;font-size:.8rem;color:var(--muted);margin-bottom:34px}
.legend span{display:inline-flex;align-items:center;gap:8px}
.legend i{width:12px;height:12px;border-radius:50%}
.st-winner{background:var(--amber);box-shadow:0 0 0 4px rgba(255,138,61,.2)}
.st-finalist{background:var(--violet);box-shadow:0 0 0 4px rgba(108,77,255,.18)}
.st-selected,.st-recipient{background:var(--white);border:2px solid var(--faint)}
.tl{position:relative;display:flex;flex-direction:column;gap:18px}
.tl-line{position:absolute;left:131px;top:10px;bottom:10px;width:2px;background:var(--line);border-radius:2px;overflow:hidden}
.tl-line i{position:absolute;left:0;right:0;top:0;height:100%;background:linear-gradient(180deg,var(--violet),var(--amber));transform:scaleY(var(--tlp,0));transform-origin:top}
.tl-i{display:grid;grid-template-columns:110px 44px 1fr;align-items:start}
.tl-y{grid-column:1;grid-row:1;padding-top:24px;font-size:.92rem;color:var(--violet);text-align:right;padding-right:6px}
.tl-node{grid-column:2;grid-row:1;justify-self:center;margin-top:26px;width:14px;height:14px;border-radius:50%;background:var(--violet);position:relative;z-index:1;transition:transform .4s var(--spring)}
.tl-journey .tl-node{background:var(--white);border:3px solid var(--violet)}
.tl-node.st-winner{background:var(--amber);box-shadow:0 0 0 5px rgba(255,138,61,.22)}
.tl-node.st-finalist{background:var(--violet);box-shadow:0 0 0 5px rgba(108,77,255,.18)}
.tl-node.st-selected,.tl-node.st-recipient{background:var(--white);border:2px solid var(--faint)}
.tl-i:hover .tl-node{transform:scale(1.35)}
.tl-card{grid-column:3;grid-row:1;padding:22px 24px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);transition:transform .45s var(--spring),box-shadow .35s}
.tl-i:hover .tl-card{transform:translateX(6px);box-shadow:0 16px 40px rgba(21,18,46,.1)}
.tl-card h3{margin-top:10px;font-family:var(--serif);font-weight:500;font-size:1.3rem;line-height:1.25}
.tl-journey .tl-card h3{margin-top:0}
.tl-b{margin-top:6px;font-size:.8rem;color:var(--muted)}
.tl-card>p:not(.tl-b){margin-top:8px;color:var(--muted);font-size:.96rem;line-height:1.65}
@media (max-width:640px){
  .tl-line{left:7px}
  .tl-i{grid-template-columns:16px 1fr;column-gap:16px}
  .tl-node{grid-column:1;grid-row:1;margin-top:6px}
  .tl-y{grid-column:2;grid-row:1;text-align:left;padding:0;font-size:.82rem}
  .tl-card{grid-column:2;grid-row:2;margin-top:8px}
}

/* ============================ TEACHING + MEDIA ============================ */
.mcards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.mcard{position:relative;display:flex;flex-direction:column;gap:10px;padding:26px 24px;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;transition:transform .45s var(--spring),box-shadow .35s,border-color .3s}
.mcard::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .3s;background:radial-gradient(260px circle at var(--mx,50%) var(--my,50%),rgba(255,138,61,.1),transparent 65%)}
.mcard:hover{transform:translateY(-6px);box-shadow:0 20px 48px rgba(21,18,46,.12);border-color:rgba(108,77,255,.25)}
.mcard:hover::after{opacity:1}
.mc-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;font-size:.76rem;color:var(--faint)}
.mcard h3{margin-top:4px;font-family:var(--serif);font-weight:500;font-size:1.22rem;line-height:1.3}
.mcard p{color:var(--muted);font-size:.94rem;line-height:1.6}
.mc-go{margin-top:auto;padding-top:8px;display:inline-flex;align-items:center;gap:6px;font-weight:600;font-size:.88rem;color:var(--violet)}
@media (max-width:1000px){.mcards{grid-template-columns:repeat(2,1fr)}}
@media (max-width:600px){.mcards{grid-template-columns:1fr}}
.talks{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden}
.talks li{background:var(--white);padding:24px 22px;transition:background .25s}
.talks li:hover{background:var(--paper)}
.talks h3{font-family:var(--serif);font-weight:500;font-size:1.16rem}
.talks p{margin-top:8px;color:var(--muted);font-size:.93rem;line-height:1.6}
@media (max-width:900px){.talks{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.talks{grid-template-columns:1fr}}

/* ============================ CONTACT ============================ */
.contact{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(36px,6vw,80px);align-items:start}
.ct-mail{display:block;font-family:var(--serif);font-size:clamp(1.6rem,4.2vw,2.8rem);line-height:1.15;letter-spacing:-.02em;word-break:break-all;background:linear-gradient(90deg,var(--ink),var(--violet));-webkit-background-clip:text;background-clip:text;color:transparent}
.copy{margin-top:18px}
.copy.done{box-shadow:inset 0 0 0 1.5px #19a974;color:#0f7f55}
.cform{margin-top:40px;display:grid;gap:16px;padding:28px;border-radius:var(--r-lg);background:var(--white);border:1px solid var(--line)}
.cf-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.cform label{display:grid;gap:7px;font-size:.86rem;font-weight:600;color:var(--muted)}
.cform input,.cform select,.cform textarea{width:100%;padding:12px 14px;border-radius:10px;border:1.5px solid var(--line);background:var(--paper);font-size:1rem;font-weight:400;color:var(--ink);transition:border-color .2s,box-shadow .2s}
.cform input:focus,.cform select:focus,.cform textarea:focus{outline:0;border-color:var(--violet);box-shadow:0 0 0 4px rgba(108,77,255,.14)}
.cform .bad{border-color:#d43c3c}
.cform .btn{justify-self:start}
.cf-note{font-size:.82rem;color:var(--faint)}
.ctiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ctile{display:flex;flex-direction:column;gap:6px;padding:20px 18px;border-radius:var(--r-lg);background:var(--white);border:1px solid var(--line);transition:transform .4s var(--spring),box-shadow .3s,border-color .3s}
.ctile:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(21,18,46,.1);border-color:var(--violet)}
.ct-ic{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:12px;background:rgba(108,77,255,.1);color:var(--violet);margin-bottom:6px;transition:background .25s,color .25s}
.ct-ic .ic{width:20px;height:20px}
.ctile:hover .ct-ic{background:var(--violet);color:#fff}
.ct-n{font-weight:600}
.ct-h{font-size:.84rem;color:var(--muted)}
@media (max-width:900px){.contact{grid-template-columns:1fr}}
@media (max-width:560px){.cf-row,.ctiles{grid-template-columns:1fr}}

/* ============================ FOOTER ============================ */
.foot{position:relative;overflow:hidden;background:var(--ink);color:#c9c5e3;padding:clamp(60px,7vw,90px) 0 30px}
.foot-wires{position:absolute;inset:0;pointer-events:none;opacity:.7}
.foot-wires i:nth-child(1){top:18%}.foot-wires i:nth-child(2){top:46%}.foot-wires i:nth-child(3){top:74%}
.foot .wrap{position:relative}
.foot-top{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:34px;padding-bottom:36px;border-bottom:1px solid var(--line-lt)}
.foot-id p{margin-top:16px;font-size:.93rem;line-height:1.6;max-width:36ch}
.foot-mail{display:inline-block;margin-top:16px;font-family:var(--mono);font-size:.86rem;color:var(--violet-lt);border-bottom:1px solid rgba(167,150,255,.4)}
.foot-col h4{font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--amber);margin-bottom:14px}
.foot-col a{display:block;padding:5px 0;font-size:.94rem;transition:color .2s,transform .25s var(--spring)}
.foot-col a:hover{color:var(--paper);transform:translateX(3px)}
.foot-base{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:24px;font-size:.84rem;color:var(--faint)}
@media (max-width:860px){.foot-top{grid-template-columns:1fr 1fr}.foot-id{grid-column:1/-1}}

/* ============================ MOTION ============================ */
/* ==========================================================
   Home hero with portrait photograph
   ========================================================== */
.hx{display:grid;grid-template-columns:minmax(0,1.32fr) minmax(0,.68fr);grid-template-areas:"head photo" "body photo";column-gap:clamp(36px,5.5vw,84px);row-gap:0;align-items:start}
.hx-head{grid-area:head;align-self:end}
.hx-body{grid-area:body;margin-top:28px}
.hx-body .hero-lede{max-width:56ch}
.hx-body .roles{margin-top:24px}
.hero-lede a{color:#fff;background-image:linear-gradient(var(--violet-lt),var(--violet-lt));background-size:100% 1.5px;background-repeat:no-repeat;background-position:0 100%;padding-bottom:1px;transition:background-size .35s var(--ease),color .2s}
.hero-lede a:hover{color:var(--amber);background-image:linear-gradient(var(--amber),var(--amber))}
.roles a{display:block;transition:color .2s}
.roles li{transition:border-color .25s,background .25s}
.roles li:hover{border-color:var(--violet-lt);background:rgba(167,150,255,.12)}
.roles li:hover a{color:#fff}

.hx-photo{grid-area:photo;position:relative;margin:0 0 66px;width:100%;max-width:440px;justify-self:end;align-self:center;isolation:isolate}
.hp-frame{position:relative;aspect-ratio:760/950;border-radius:var(--r-lg);overflow:hidden;background:var(--ink-2);
  box-shadow:0 44px 90px rgba(5,3,20,.6),0 0 0 1px rgba(246,245,251,.12);
  animation:hpreveal 1.25s var(--ease) .2s both}
.hp-frame img{width:100%;height:100%;object-fit:cover;object-position:50% 18%;animation:hpsettle 1.8s var(--ease) .2s both}
.hp-frame::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(21,18,46,0) 58%,rgba(21,18,46,.62) 100%),linear-gradient(90deg,rgba(108,77,255,.10),transparent 40%)}
@keyframes hpreveal{from{clip-path:inset(100% 0 0 0 round 22px)}to{clip-path:inset(0 0 0 0 round 22px)}}
@keyframes hpsettle{from{transform:scale(1.12)}to{transform:scale(1)}}

.hp-orbit{position:absolute;z-index:-1;left:-11%;top:-9%;width:122%;height:118%;fill:none;pointer-events:none;overflow:visible}
.hp-ring{stroke:rgba(167,150,255,.38);stroke-width:1.2}
.hp-eq{stroke:rgba(167,150,255,.22);stroke-width:1;stroke-dasharray:3 6}
.hp-dot{fill:var(--amber);filter:drop-shadow(0 0 6px rgba(255,138,61,.8))}

.hp-chip{position:absolute;left:-30px;bottom:-60px;z-index:2;display:flex;flex-direction:column;gap:2px;max-width:248px;
  padding:13px 16px 14px;border-radius:14px;background:rgba(246,245,251,.96);color:var(--ink);
  box-shadow:0 18px 40px rgba(5,3,20,.45);animation:chipin .9s var(--spring) 1.15s both;transition:transform .35s var(--spring)}
.hp-chip:hover{transform:translateY(-3px)}
.hp-chip-k{font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--amber-dk)}
.hp-chip-t{font-family:var(--serif);font-size:1.08rem;font-weight:500;line-height:1.25}
.hp-chip-s{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;color:var(--muted)}
.hp-chip-s .ic{width:13px;height:13px}
@keyframes chipin{from{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:none}}

@media (max-width:960px){
  .hx{grid-template-columns:1fr;grid-template-areas:"head" "photo" "body"}
  .hx-photo{justify-self:start;max-width:420px;margin:30px 0 64px}
  .hp-chip{left:14px;bottom:-58px}
  .hp-orbit{left:-6%;width:112%}
}

/* ---------- inline text links ---------- */
.inl{color:var(--violet);border-bottom:1.5px solid rgba(108,77,255,.35);transition:border-color .2s,color .2s}
.inl:hover{color:var(--amber-dk);border-color:currentColor}
.tl-src{display:inline-flex;align-items:center;gap:5px;margin-top:12px;font-family:var(--mono);font-size:.74rem;color:var(--violet);border-bottom:1px solid currentColor}
.tl-src .ic{width:13px;height:13px}

/* ---------- home: news grid ---------- */
.newsgrid{display:grid;grid-template-columns:1fr 1fr;column-gap:clamp(28px,4vw,56px)}
.newsgrid .mrow{border-top:1px solid var(--line);align-content:start}
@media (max-width:860px){.newsgrid{grid-template-columns:1fr}}

/* ---------- home: link hub ---------- */
.hub{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:22px}
.hub-col{display:flex;flex-direction:column;background:var(--white);border:1px solid var(--line);border-radius:var(--r-lg);padding:22px 20px 14px}
.hub-h{display:flex;align-items:baseline;gap:10px;font-family:var(--serif);font-weight:500;font-size:1.22rem;margin-bottom:8px}
.hub-h .mono{font-size:.72rem;color:var(--amber-dk);letter-spacing:.08em}
.hl{display:grid;grid-template-columns:1fr 16px;gap:1px 10px;padding:11px 0;border-top:1px solid var(--line);transition:padding .3s var(--ease)}
.hl-t{font-weight:600;font-size:.95rem;line-height:1.35}
.hl-s{grid-column:1;font-size:.72rem;color:var(--faint);line-height:1.4;overflow-wrap:anywhere}
.hl .ic{grid-row:1/span 2;grid-column:2;width:15px;height:15px;color:var(--faint);transition:transform .3s var(--spring),color .2s}
.hl:hover{padding-left:6px}
.hl:hover .hl-t{color:var(--violet)}
.hl:hover .ic{color:var(--violet);transform:translate(2px,-2px)}
@media (max-width:1100px){.hub{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:620px){.hub{grid-template-columns:1fr}}

@media (prefers-reduced-motion:reduce){
  .hp-frame,.hp-frame img,.hp-chip{animation:none}
  .hp-dot{display:none}
}

[data-rise]{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease),transform .8s var(--ease)}
[data-rise].in{opacity:1;transform:none}
[data-scramble]{display:inline-block}
.no-js [data-rise]{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  [data-rise]{opacity:1;transform:none}
  .gh-plants path{stroke-dashoffset:0}
  .tl-line i{transform:scaleY(1)}
}
