:root{--bd-1d1b26:#1d1b26;--bd-2b2838:#2b2838;--bd-33303d:#33303d;--bd-b8d65a:#b8d65a;--bd-d6d4cc:#d6d4cc;--bd-d9dde6:#d9dde6;--bd-dcd9ce:#dcd9ce;--bd-dcdad2:#dcdad2;--bd-e08a3c:#e08a3c;--bd-e1e6ee:#e1e6ee;--bd-e63946:#e63946;--bd-ecebe6:#ecebe6;--bd-f0efea:#f0efea;--bd-ffffff-14:rgba(255,255,255,0.14);--bg-000000-0:rgba(0,0,0,0);--bg-000000-55:rgba(0,0,0,0.55);--bg-0a0d16-92:rgba(10,13,22,0.92);--bg-0f1420:#0f1420;--bg-121018:#121018;--bg-1d1b26:#1d1b26;--bg-2a2836:#2a2836;--bg-2a3048:#2a3048;--bg-2f4a77:#2f4a77;--bg-33303d:#33303d;--bg-4a5d86:#4a5d86;--bg-5f7aa3:#5f7aa3;--bg-5f7aa3-0:rgba(95,122,163,0);--bg-5f7aa3-45:rgba(95,122,163,0.45);--bg-9bc400:#9bc400;--bg-c3cddc:#c3cddc;--bg-c9c6bd:#c9c6bd;--bg-d64545:#d64545;--bg-e3f19a:#e3f19a;--bg-e4e8ef:#e4e8ef;--bg-e62117:#e62117;--bg-e9eef5:#e9eef5;--bg-ecebe6:#ecebe6;--bg-eef6d0:#eef6d0;--bg-f0efea:#f0efea;--bg-f1f5f9:#f1f5f9;--bg-f2f1ec:#f2f1ec;--bg-f2fbc6:#f2fbc6;--bg-f4f3ee:#f4f3ee;--bg-f4f6fa:#f4f6fa;--bg-f7b928-12:rgba(247,185,40,0.12);--bg-faf9f6:#faf9f6;--bg-fbe3f7:#fbe3f7;--bg-fde7d6:#fde7d6;--bg-fffffd:#fffffd;--bg-fffffd-88:rgba(255,255,253,0.88);--bg-ffffff:#ffffff;--bg-ffffff-60:rgba(255,255,255,0.6);--bg-ffffff-8:rgba(255,255,255,0.08);--fg-000000:#000000;--fg-111111:#111111;--fg-1d1b26:#1d1b26;--fg-2f3d00:#2f3d00;--fg-2f4a77:#2f4a77;--fg-3f3d47:#3f3d47;--fg-3f5200:#3f5200;--fg-4a6591:#4a6591;--fg-55525e:#55525e;--fg-5f7a00:#5f7a00;--fg-5f7aa3:#5f7aa3;--fg-6d84a8:#6d84a8;--fg-6e6c76:#6e6c76;--fg-93a6c2:#93a6c2;--fg-94a3b8:#94a3b8;--fg-9bc400:#9bc400;--fg-a9b6cc:#a9b6cc;--fg-c2611a:#c2611a;--fg-c3cddc:#c3cddc;--fg-c9c6d3:#c9c6d3;--fg-c9d4e6:#c9d4e6;--fg-cbd5e1:#cbd5e1;--fg-d1d5db:#d1d5db;--fg-d64545:#d64545;--fg-d6d3c9:#d6d3c9;--fg-e4e2ea:#e4e2ea;--fg-e63946:#e63946;--fg-e6e4ec:#e6e4ec;--fg-f2fbc6:#f2fbc6;--fg-f59e0b:#f59e0b;--fg-f7b928:#f7b928;--fg-ffffff:#ffffff;--mark-000000:#000000;--mark-006aa7:#006aa7;--mark-1d1b26:#1d1b26;--mark-1d1b26-10:rgba(29,27,38,0.1);--mark-2f4a77:#2f4a77;--mark-5f7aa3:#5f7aa3;--mark-5f7aa3-22:rgba(95,122,163,0.22);--mark-93a6c2:#93a6c2;--mark-9bc400:#9bc400;--mark-9bc400-18:rgba(155,196,0,0.18);--mark-a8a59c:#a8a59c;--mark-c3cddc:#c3cddc;--mark-c9c6bd-35:rgba(201,198,189,0.35);--mark-d64545:#d64545;--mark-d9dde6:#d9dde6;--mark-dbe3ee:#dbe3ee;--mark-dcdad2:#dcdad2;--mark-e08a3c:#e08a3c;--mark-e9eef5:#e9eef5;--mark-ecebe6:#ecebe6;--mark-f0efea:#f0efea;--mark-f4f6fa:#f4f6fa;--mark-fecc00:#fecc00;--mark-ffffff:#ffffff;}
:root[data-theme="dark"]{--bd-1d1b26:#1e1d24;--bd-2b2838:#2b2838;--bd-33303d:#33303d;--bd-b8d65a:#b8d65a;--bd-d6d4cc:#4b4a4f;--bd-d9dde6:#3a3d42;--bd-dcd9ce:#4c4b45;--bd-dcdad2:#454449;--bd-e08a3c:#e08a3c;--bd-e1e6ee:#32353b;--bd-e63946:#e63946;--bd-ecebe6:#333336;--bd-f0efea:#302f32;--bd-ffffff-14:rgba(42,42,45,0.14);--bg-000000-0:rgba(39,38,46,0);--bg-000000-55:rgba(39,38,46,0.55);--bg-0a0d16-92:rgba(39,38,46,0.92);--bg-0f1420:#1b2439;--bg-121018:#27262e;--bg-1d1b26:#27262e;--bg-2a2836:#262430;--bg-2a3048:#2a3048;--bg-2f4a77:#2f4a77;--bg-33303d:#33303d;--bg-4a5d86:#4a5d86;--bg-5f7aa3:#5f7aa3;--bg-5f7aa3-0:rgba(95,122,163,0);--bg-5f7aa3-45:rgba(95,122,163,0.45);--bg-9bc400:#9bc400;--bg-c3cddc:#333a46;--bg-c9c6bd:#46444d;--bg-d64545:#d64545;--bg-e3f19a:#5c6626;--bg-e4e8ef:#252426;--bg-e62117:#e62117;--bg-e9eef5:#201f21;--bg-ecebe6:#252527;--bg-eef6d0:#33381e;--bg-f0efea:#212123;--bg-f1f5f9:#1a1a1c;--bg-f2f1ec:#201f21;--bg-f2fbc6:#393f1c;--bg-f4f3ee:#1e1e1f;--bg-f4f6fa:#19181a;--bg-f7b928-12:rgba(247,185,40,0.12);--bg-faf9f6:#181819;--bg-fbe3f7:#2b1528;--bg-fde7d6:#342316;--bg-fffffd:#121213;--bg-fffffd-88:rgba(18,18,19,0.88);--bg-ffffff:#1a1a1c;--bg-ffffff-60:rgba(26,26,28,0.6);--bg-ffffff-8:rgba(26,26,28,0.08);--fg-000000:#f1f1f4;--fg-111111:#e7e7eb;--fg-1d1b26:#dedde3;--fg-2f3d00:#eaf2d1;--fg-2f4a77:#abbede;--fg-3f3d47:#cac9d3;--fg-3f5200:#e6efc8;--fg-4a6591:#9eb0ce;--fg-55525e:#bdbcc8;--fg-5f7a00:#dfeab7;--fg-5f7aa3:#95a7c2;--fg-6d84a8:#90a1bd;--fg-6e6c76:#afadbc;--fg-93a6c2:#93a6c2;--fg-94a3b8:#94a3b8;--fg-9bc400:#d2e198;--fg-a9b6cc:#a9b6cc;--fg-c2611a:#deb08d;--fg-c3cddc:#c3cddc;--fg-c9c6d3:#c9c6d3;--fg-c9d4e6:#c9d4e6;--fg-cbd5e1:#cbd5e1;--fg-d1d5db:#d3d2da;--fg-d64545:#d64545;--fg-d6d3c9:#d6d3c9;--fg-e4e2ea:#e4e3e8;--fg-e63946:#e63946;--fg-e6e4ec:#e6e6ea;--fg-f2fbc6:#f2fbc6;--fg-f59e0b:#dab87e;--fg-f7b928:#f7b928;--fg-ffffff:#ffffff;--mark-000000:#cfcfd3;--mark-006aa7:#22aeff;--mark-1d1b26:#cfcfd3;--mark-1d1b26-10:rgba(207,207,211,0.1);--mark-2f4a77:#6084c0;--mark-5f7aa3:#5f7aa3;--mark-5f7aa3-22:rgba(95,122,163,0.22);--mark-93a6c2:#415573;--mark-9bc400:#d7ff3f;--mark-9bc400-18:rgba(215,255,63,0.18);--mark-a8a59c:#5b586c;--mark-c3cddc:#3c4d67;--mark-c9c6bd-35:rgba(76,73,90,0.35);--mark-d64545:#d64545;--mark-d9dde6:#2a2c32;--mark-dbe3ee:#272d34;--mark-dcdad2:#4c495a;--mark-e08a3c:#e08a3c;--mark-e9eef5:#2d2c30;--mark-ecebe6:#2d2c30;--mark-f0efea:#2d2c30;--mark-f4f6fa:#2d2c30;--mark-fecc00:#ffe370;--mark-ffffff:#19181d;color-scheme:dark}
/* ---- Site layer: arrows, theme toggle, motion ---- */
html{scroll-behavior:smooth}
body{transition:background-color .35s ease}
html.theme-anim *,html.theme-anim *::before,html.theme-anim *::after{transition:background-color .35s ease,color .35s ease,border-color .35s ease,fill .35s ease,stroke .35s ease!important}

/* Floating controls */
/* Floating buttons stay vertically centered on the right when scrolling. */
.fab-stack{position:fixed;right:20px;top:50%;bottom:auto;transform:translateY(-50%);z-index:60;display:flex;flex-direction:column;gap:10px}
/* Up / theme / down: keep the theme button at the visual centre. */
#fab-up{order:1}
#fab-theme{order:2}
#fab-down{order:3}
.fab{width:46px;height:46px;border-radius:50%;border:1px solid var(--fab-bd);background:var(--fab-bg);color:var(--fab-fg);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 8px 24px rgba(15,20,32,.14);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:transform .25s cubic-bezier(.2,.7,.2,1),opacity .3s ease,background-color .3s ease,visibility .3s;padding:0}
.fab:hover{transform:translateY(-3px)}
.fab:active{transform:scale(.94)}
.fab:focus-visible{outline:2px solid #9bc400;outline-offset:3px}
.fab[data-hidden="true"]{opacity:0;visibility:hidden;transform:translateY(8px) scale(.9);pointer-events:none}
.fab svg{width:20px;height:20px}
.fab .i-sun{display:none}
:root[data-theme="dark"] .fab .i-sun{display:block}
:root[data-theme="dark"] .fab .i-moon{display:none}
:root{--fab-bg:rgba(255,255,253,.9);--fab-fg:#1d1b26;--fab-bd:#e4e2dc}
:root[data-theme="dark"]{--fab-bg:rgba(36,34,44,.9);--fab-fg:#f1f0f4;--fab-bd:#3a3744}

/* Scroll progress */
.scroll-progress{position:fixed;top:0;left:0;height:3px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:#9bc400;z-index:70;pointer-events:none}

/* Page entrance */
html.anim body{animation:page-in .55s ease both}
@keyframes page-in{from{opacity:0}to{opacity:1}}

/* Scroll reveal */
html.anim .rv{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:var(--rv-d,0s)}
html.anim .rv.in{opacity:1;transform:none}

/* Chart drawing */
html.anim svg.chart-anim rect.bar{transform-box:fill-box;transform-origin:50% 100%;transform:scaleY(0);transition:transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:var(--bd,0s)}
html.anim svg.chart-anim.in rect.bar{transform:scaleY(1)}
html.anim svg.chart-anim .draw{stroke-dasharray:1;stroke-dashoffset:1;transition:stroke-dashoffset 1.4s ease .2s}
html.anim svg.chart-anim.in .draw{stroke-dashoffset:0}
html.anim svg.chart-anim .pop{opacity:0;transition:opacity .5s ease;transition-delay:var(--bd,0s)}
html.anim svg.chart-anim.in .pop{opacity:1}
html.anim svg.chart-anim .ring{transition:stroke-dasharray 1.4s cubic-bezier(.2,.7,.2,1) .15s}

/* Hover lift on cards */
.lift{transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s ease}
@media (hover:hover){.lift:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(15,20,32,.10)}}
:root[data-theme="dark"] .lift:hover{box-shadow:0 14px 34px rgba(0,0,0,.45)}

/* Images zoom softly on hover */
@media (hover:hover){.zoom{overflow:hidden}.zoom img{transition:transform .6s cubic-bezier(.2,.7,.2,1)}.zoom:hover img{transform:scale(1.03)}}

/* Main menu fits on one line on desktop */
@media (min-width:901px){.main-links{gap:4px 16px!important}}
@media (min-width:901px) and (max-width:1100px){.main-links{gap:4px 10px!important;font-size:14px!important}nav[aria-label="Main"]{padding:0 20px!important}}

/* Dark-mode touches the variables can't reach */
:root[data-theme="dark"] .nav-burger .bars span{background:#f1f0f4}
:root[data-theme="dark"] img:not(.hero-avatar){filter:brightness(.94)}
:root[data-theme="dark"] input::placeholder,:root[data-theme="dark"] textarea::placeholder{color:#8d8a98}

@media (max-width:640px){.fab-stack{right:14px;top:50%;bottom:auto;gap:8px}.fab{width:42px;height:42px}}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}html.anim .rv{opacity:1!important;transform:none!important}html.anim svg.chart-anim rect.bar{transform:none!important}html.anim svg.chart-anim .draw{stroke-dashoffset:0!important}html.anim body{animation:none}}
@media print{.fab-stack,.scroll-progress{display:none}}

/* ---------- Glass header ---------- */
:root{--glass:rgba(255,255,253,.58);--glass-strong:rgba(255,255,253,.78);--glass-bd:rgba(29,27,38,.08);--glass-sh:0 10px 30px rgba(15,20,32,.07)}
:root[data-theme="dark"]{--glass:rgba(22,21,28,.5);--glass-strong:rgba(22,21,28,.74);--glass-bd:rgba(255,255,255,.09);--glass-sh:0 10px 30px rgba(0,0,0,.35)}
header.glass-head{position:sticky!important;z-index:50!important}
header.glass-head nav[aria-label]{background:var(--glass)!important;border-color:var(--glass-bd)!important;-webkit-backdrop-filter:blur(18px) saturate(1.6);backdrop-filter:blur(18px) saturate(1.6);box-shadow:none;transition:background-color .35s ease,box-shadow .35s ease}
html.scrolled header.glass-head nav[aria-label]{background:var(--glass-strong)!important;box-shadow:var(--glass-sh)}
main section[id],section[id]{scroll-margin-top:96px}

/* ---------- Ambient colour under the header ---------- */
.ambient{position:absolute;left:0;right:0;top:0;height:560px;pointer-events:none;z-index:0;overflow:hidden}
.ambient::before,.ambient::after{content:"";position:absolute;width:46vw;max-width:640px;aspect-ratio:1.4;border-radius:50%;filter:blur(70px);opacity:.38;animation:drift 18s ease-in-out infinite alternate}
.ambient::before{left:4%;top:-220px;background:radial-gradient(closest-side,#f39be6,transparent)}
.ambient::after{right:4%;top:-240px;background:radial-gradient(closest-side,#dcf35a,transparent);animation-delay:-9s}
:root[data-theme="dark"] .ambient::before,:root[data-theme="dark"] .ambient::after{opacity:.22}
.amb-host{position:relative}
.amb-host > main,.amb-host > footer,.amb-host > section{position:relative;z-index:1}
@keyframes drift{from{transform:translate3d(0,0,0) scale(1)}to{transform:translate3d(3vw,30px,0) scale(1.08)}}

/* ---------- Home hero: cut-out avatar with live glow ---------- */
.hero-wrap{position:relative;isolation:isolate}
.hero-glow{position:absolute;inset:0;left:50%;width:100%;height:100%;transform:translateX(-50%);z-index:-1;pointer-events:none}
.hero-glow span{position:absolute;border-radius:50%;filter:blur(60px);animation:glow 9s ease-in-out infinite alternate}
.hero-glow .g1{left:6%;top:32%;width:44%;height:46%;background:radial-gradient(closest-side,rgba(244,140,232,.85),rgba(244,140,232,0))}
.hero-glow .g2{right:4%;top:28%;width:44%;height:48%;background:radial-gradient(closest-side,rgba(220,245,70,.9),rgba(220,245,70,0));animation-delay:-4.5s}
.hero-glow .g3{left:15%;right:15%;top:0;height:40%;background:radial-gradient(closest-side,rgba(244,160,232,.35),rgba(220,245,70,.0));filter:blur(80px)}
:root[data-theme="dark"] .hero-glow span{opacity:.6}
@keyframes glow{from{transform:translate3d(-2%,0,0) scale(1)}to{transform:translate3d(2%,-3%,0) scale(1.07)}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}

/* ---------- Small motion touches ---------- */
.sec-links a,.main-links > a,.main-links > .nav-item > a,nav[aria-label="Section"] > a{background-image:linear-gradient(#9bc400,#9bc400);background-size:0 2px;background-repeat:no-repeat;background-position:0 calc(100% - 8px);transition:background-size .3s ease,color .2s ease}
.sec-links a:hover,.sec-links a.is-active{background-size:100% 2px}
.sec-links a.is-active{color:var(--fab-fg)!important;font-weight:500}
a.deck-btn,a.deck-btn-alt,button[type="submit"]{position:relative;overflow:hidden}
a.deck-btn::after,a.deck-btn-alt::after,button[type="submit"]::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);transform:skewX(-18deg);transition:left .6s ease;pointer-events:none}
a.deck-btn:hover::after,a.deck-btn-alt:hover::after,button[type="submit"]:hover::after{left:120%}
html.anim .rv img{transition:transform .9s cubic-bezier(.2,.7,.2,1)}
html.anim .rv:not(.in) img{transform:scale(1.04)}

/* ---------- Site contents (left) ---------- */
.toc{position:fixed;z-index:65;font-family:'Instrument Sans',system-ui,sans-serif;color:var(--fab-fg)}
.toc-panel{background:var(--glass-strong);border:1px solid var(--glass-bd);-webkit-backdrop-filter:blur(20px) saturate(1.6);backdrop-filter:blur(20px) saturate(1.6);box-shadow:var(--glass-sh);border-radius:22px;padding:14px 10px 12px;overflow:auto;scrollbar-width:thin}
.toc-head{display:flex;align-items:center;gap:10px;padding:2px 8px 12px;border-bottom:1px solid var(--glass-bd);margin-bottom:8px}
.toc-badge{width:30px;height:30px;border-radius:10px;background:#1d1b26;color:#9bc400;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex:none}
:root[data-theme="dark"] .toc-badge{background:#9bc400;color:#1d1b26}
.toc-head b{display:block;font-size:13px;font-weight:600;line-height:1.2}
.toc-head small{display:block;font-size:11px;opacity:.6;letter-spacing:.04em}
.toc ol{list-style:none;margin:0;padding:0}
.toc-page{margin:1px 0}
.toc-row{display:flex;align-items:center;border-radius:10px;transition:background-color .2s ease}
.toc-row:hover{background:var(--toc-hover)}
.toc-p{flex:1;display:flex;align-items:center;gap:8px;padding:7px 4px 7px 8px;font-size:13px;font-weight:500;color:inherit!important;text-decoration:none;line-height:1.25;min-width:0}
.toc-p .n{font-size:10px;font-weight:700;opacity:.45;width:16px;flex:none;font-variant-numeric:tabular-nums}
.toc-page.current > .toc-row .toc-p{font-weight:600}
.toc-page.current > .toc-row .toc-p .n{opacity:1;color:#7a9a00}
:root[data-theme="dark"] .toc-page.current > .toc-row .toc-p .n{color:#9bc400}
.toc-tg{width:26px;height:26px;border:0;background:none;color:inherit;opacity:.55;cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;flex:none;padding:0}
.toc-tg:hover{opacity:1}
.toc-tg svg{width:14px;height:14px;transition:transform .25s ease}
.toc-page.open > .toc-row .toc-tg svg{transform:rotate(90deg)}
.toc-secs{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease}
.toc-page.open > .toc-secs{grid-template-rows:1fr}
.toc-secs > div{overflow:hidden}
.toc-secs ol{margin:2px 0 6px 20px;border-left:1.5px solid var(--glass-bd);padding-left:0}
.toc-s{display:block;position:relative;padding:5px 8px 5px 12px;font-size:12.5px;line-height:1.3;color:inherit!important;opacity:.68;text-decoration:none;border-radius:0 8px 8px 0;transition:opacity .2s ease,background-color .2s ease}
.toc-s:hover{opacity:1;background:var(--toc-hover)}
.toc-s.active{opacity:1;font-weight:600}
.toc-s.active::before{content:"";position:absolute;left:-1.5px;top:5px;bottom:5px;width:2.5px;border-radius:2px;background:#9bc400}
:root{--toc-hover:rgba(29,27,38,.05)}
:root[data-theme="dark"]{--toc-hover:rgba(255,255,255,.06)}
/* pinned on wide screens */
.toc.pinned{left:14px;top:50%;transform:translateY(-50%);width:182px}
.toc.pinned .toc-panel{max-height:calc(100vh - 140px)}
.toc.pinned .toc-open,.toc.pinned .toc-close{display:none}
html.anim .toc.pinned{animation:toc-in .6s cubic-bezier(.2,.7,.2,1) both .2s}
@keyframes toc-in{from{opacity:0;transform:translate(-14px,-50%)}to{opacity:1;transform:translate(0,-50%)}}
/* Enlarged desktop contents panel: clearer text and more of the screen height. */
.toc.pinned{--toc-top:clamp(100px,12vh,120px);left:8px;top:var(--toc-top);transform:none;width:clamp(207px,calc(50vw - 528px),250px)}
.toc.pinned .toc-panel{
  box-sizing:border-box;
  height:min(760px,calc(100vh - var(--toc-top) - 42px));
  max-height:calc(100vh - var(--toc-top) - 42px);
  display:flex;
  flex-direction:column;
  padding:18px 13px 15px;
}
.toc.pinned .toc-head{gap:8px;padding:4px 4px 16px;margin-bottom:10px}
.toc.pinned .toc-badge{width:36px;height:36px;font-size:14px}
.toc.pinned .toc-head b{font-size:15px}
.toc.pinned .toc-head small{font-size:12px}
.toc.pinned .toc-panel > ol{display:flex;flex-direction:column;justify-content:space-evenly;flex:1 0 auto}
.toc.pinned .toc-page{margin:2px 0}
.toc.pinned .toc-row{border-radius:11px}
.toc.pinned .toc-p{font-size:15px;line-height:1.34;gap:8px;padding:10px 5px 10px 8px}
.toc.pinned .toc-p .n{font-size:11px;width:20px}
.toc.pinned .toc-tg{width:29px;height:29px}
.toc.pinned .toc-secs ol{margin-left:26px}
.toc.pinned .toc-s{font-size:13.5px;line-height:1.35;padding:7px 7px 7px 12px}
@keyframes toc-in-tall{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:none}}
html.anim .toc.pinned{animation:toc-in-tall .6s cubic-bezier(.2,.7,.2,1) both .2s}
/* drawer on smaller screens */
.toc.drawer{inset:0;pointer-events:none}
.toc.drawer .toc-open{pointer-events:auto;position:fixed;left:16px;bottom:20px;height:46px;padding:0 16px 0 14px;border-radius:999px;border:1px solid var(--fab-bd);background:var(--fab-bg);color:var(--fab-fg);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 8px 24px rgba(15,20,32,.14);display:flex;align-items:center;gap:8px;font:600 14px/1 'Instrument Sans',system-ui,sans-serif;cursor:pointer;transition:transform .25s cubic-bezier(.2,.7,.2,1)}
.toc.drawer .toc-open:hover{transform:translateY(-3px)}
.toc.drawer .toc-open svg{width:18px;height:18px}
.toc.drawer .toc-scrim{position:fixed;inset:0;background:rgba(10,10,14,.28);opacity:0;transition:opacity .3s ease}
.toc.drawer .toc-panel{position:fixed;left:12px;top:12px;bottom:12px;width:min(300px,calc(100vw - 24px));transform:translateX(calc(-100% - 20px));transition:transform .4s cubic-bezier(.2,.7,.2,1);pointer-events:auto}
.toc.drawer.open .toc-scrim{opacity:1;pointer-events:auto}
.toc.drawer.open .toc-panel{transform:none}
.toc.drawer .toc-p{font-size:15px;padding:10px 6px 10px 10px}
.toc.drawer .toc-s{font-size:14px;padding:8px 10px 8px 14px}
.toc-close{position:absolute;right:10px;top:12px;width:30px;height:30px;border-radius:50%;border:0;background:var(--toc-hover);color:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center}
.toc-head{padding-right:40px}
.toc.pinned .toc-head{padding-right:8px}
.toc-close svg{width:16px;height:16px}
@media (max-width:640px){.toc.drawer .toc-open{left:14px;bottom:14px;height:42px}}
@media print{.toc,.ambient{display:none}}
@media (prefers-reduced-motion:reduce){.ambient::before,.ambient::after,.hero-glow span,img.hero-avatar{animation:none!important}}

html.toc-open .fab-stack{opacity:0;pointer-events:none}
.fab-stack{transition:opacity .3s ease}
@media (max-width:640px){.toc.drawer .toc-open{width:42px;padding:0;justify-content:center;font-size:0;gap:0}.toc.drawer .toc-open svg{width:19px;height:19px}}

/* Home avatar in dark mode: soft white circle */
:root[data-theme="dark"] img.hero-avatar{-webkit-mask-image:radial-gradient(ellipse 50% 56% at 50% 44%,#000 58%,transparent 100%)!important;mask-image:radial-gradient(ellipse 50% 56% at 50% 44%,#000 58%,transparent 100%)!important}
