html[data-theme=astro]{color-scheme:dark;--bg: #050816;--surface: rgba(17, 25, 58, .62);--surface-2: rgba(28, 40, 88, .62);--text: #e8edff;--muted: #a3b0d8;--border: rgba(140, 165, 255, .2);--accent: #7fc8ff;--accent-strong: #c2e5ff;--accent-soft: rgba(127, 200, 255, .14);--gold: #ffd27a;--violet: #9b8cff;--shadow: 0 0 0 1px rgba(140, 165, 255, .05), 0 12px 40px rgba(2, 6, 30, .55);background:#050816}html[data-theme=astro] body{background:transparent;position:relative}html[data-theme=astro]:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-3;pointer-events:none;background:radial-gradient(900px 600px at 85% -5%,rgba(120,90,255,.28),transparent 65%),radial-gradient(800px 520px at 5% 30%,rgba(40,140,255,.2),transparent 65%),radial-gradient(700px 500px at 70% 100%,rgba(255,120,150,.14),transparent 65%),linear-gradient(180deg,#060a22,#050816 55%,#03050f)}html[data-theme=astro] body:before,html[data-theme=astro] body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;pointer-events:none}html[data-theme=astro] body:after{animation:twinkle 7s ease-in-out infinite alternate}@keyframes twinkle{0%{opacity:.45}to{opacity:1}}@media (prefers-reduced-motion: reduce){html[data-theme=astro] body:after{animation:none}.astro-hero *,.astro-art *{animation:none!important}.astro-invite .shoot{display:none}}html[data-theme=astro] h1,html[data-theme=astro] h2{color:#f2f5ff}html[data-theme=astro] h2:after{background:linear-gradient(90deg,var(--gold),var(--accent));height:3px;width:64px}html[data-theme=astro] h3{color:var(--muted)}html[data-theme=astro] .header{background:#050816b8;border-bottom:1px solid var(--border)}html[data-theme=astro] .brand{color:#f2f5ff}html[data-theme=astro] .nav a:hover{color:var(--accent-strong);background:var(--accent-soft)}html[data-theme=astro] .footer{border-top-color:var(--border)}html[data-theme=astro] a{color:var(--accent)}html[data-theme=astro] a:hover{color:var(--accent-strong)}html[data-theme=astro] .rows li,html[data-theme=astro] .stage,html[data-theme=astro] .viewer-nav,html[data-theme=astro] .table-wrap,html[data-theme=astro] .defs{backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}html[data-theme=astro] .rows li{transition:border-color .2s,box-shadow .2s}html[data-theme=astro] .rows li:hover{border-color:#7fc8ff73;box-shadow:0 0 28px #508cff2e}html[data-theme=astro] .viewer-nav{padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius);align-self:start;background:var(--surface)}html[data-theme=astro] .viewer-nav li a{color:var(--text)}html[data-theme=astro] .viewer-nav li a:hover{background:var(--accent-soft)}html[data-theme=astro] .button{background:linear-gradient(135deg,#52b1ff,#8f7dff);color:#04112b;box-shadow:0 0 20px #6496ff66;transition:box-shadow .2s,transform .2s}html[data-theme=astro] .button:hover{color:#04112b;box-shadow:0 0 32px #82aaffb3;transform:translateY(-1px)}html[data-theme=astro] .badge{background:var(--accent-soft);color:var(--accent-strong)}html[data-theme=astro] .tags li{background:#141e46b3;color:var(--text);border-color:var(--border)}html[data-theme=astro] p code,html[data-theme=astro] li code{background:#1e2c60b3;border-color:var(--border);color:#cfe6ff}html[data-theme=astro] pre{background:#02040ed9;border:1px solid var(--border)}html[data-theme=astro] .lesson-frame{box-shadow:0 0 0 1px var(--border),0 0 50px #5a82ff38}html[data-theme=astro] .filters input,html[data-theme=astro] .filters select{background:#0a1028cc}html[data-theme=astro] .skymap .brown{color:#ffb48a}html[data-theme=astro] .skymap .mag{color:#9cbcff}html[data-theme=astro] .skymap .controls select,html[data-theme=astro] .skymap .controls input{background:#0a1028d9;color:var(--text);border:1px solid var(--border);border-radius:6px}html[data-theme=astro] .skymap .js-plotly-plot{box-shadow:0 0 0 1px var(--border),0 0 60px #5a82ff33}.astro-hero{position:relative;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:12px;padding:36px 0 18px}.astro-hero .eyebrow{color:var(--gold);letter-spacing:.28em;font-size:.78rem;font-weight:700;text-transform:uppercase;margin:0 0 12px}html[data-theme=astro] .astro-hero h1{font-size:clamp(2.6rem,6.4vw,4.4rem);line-height:1.04;letter-spacing:-.03em;margin:0 0 18px;background:linear-gradient(100deg,#fff 10%,#b9ddff 45%,#ffd27a);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:0 0 40px rgba(120,160,255,.25)}.astro-hero .tagline{color:var(--muted);font-size:1.15rem;max-width:30em;margin:0 0 22px}.astro-hero .jump{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}.astro-hero .jump a{display:inline-block;padding:6px 14px;border-radius:999px;font-size:.9rem;text-decoration:none;color:var(--accent-strong);border:1px solid var(--border);background:#141e468c;transition:border-color .2s,background .2s}.astro-hero .jump a:hover{border-color:var(--accent);background:var(--accent-soft)}.astro-art{width:100%;height:auto;display:block;filter:drop-shadow(0 0 40px rgba(255,190,110,.18))}.shoot{position:absolute;top:14%;left:38%;width:120px;height:2px;opacity:0;transform:rotate(28deg);background:linear-gradient(90deg,#fff0,#fff);border-radius:2px;animation:shoot 11s linear infinite;pointer-events:none}.shoot.two{top:52%;left:12%;animation-delay:5.5s;animation-duration:14s;width:90px}@keyframes shoot{0%{opacity:0;transform:translate(0) rotate(28deg)}3%{opacity:1}9%{opacity:0;transform:translate(260px,140px) rotate(28deg)}to{opacity:0;transform:translate(260px,140px) rotate(28deg)}}.astro-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:26px 0 8px}.astro-card{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:24px 26px 22px;box-shadow:var(--shadow);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);transition:border-color .25s,box-shadow .25s,transform .25s}.astro-card:before{content:"";position:absolute;width:260px;height:260px;right:-90px;top:-110px;border-radius:50%;background:radial-gradient(circle,var(--glow, rgba(110, 150, 255, .28)),transparent 70%);pointer-events:none}.astro-card:hover{border-color:#7fc8ff80;box-shadow:0 0 40px #5a8cff38,var(--shadow)}.astro-card.wide{grid-column:1 / -1}.astro-card.tutorial{--glow: rgba(255, 190, 100, .26)}.astro-card.sofa{--glow: rgba(150, 120, 255, .3)}.astro-card.pkg{--glow: rgba(80, 200, 255, .26)}.astro-card.map{--glow: rgba(255, 120, 160, .24)}.astro-card.clock{--glow: rgba(255, 190, 90, .26)}.astro-card .card-head{display:flex;align-items:center;gap:14px;margin-bottom:10px;position:relative}.astro-card .icon{flex:none;width:46px;height:46px;border-radius:14px;display:grid;place-items:center;color:var(--gold);background:#ffd27a1a;border:1px solid rgba(255,210,122,.3)}.astro-card .icon svg{width:26px;height:26px}.astro-card h2{margin:0;padding:0;border:0;font-size:1.45rem}.astro-card h2:after{display:none}.astro-card h2 a{color:inherit;text-decoration:none}.astro-card h2 a:hover{color:var(--accent-strong)}.astro-card .desc{color:var(--muted);margin:0 0 14px;position:relative}.astro-card .actions{margin:16px 0 0;position:relative}.stage-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;list-style:none;margin:4px 0 0;padding:0;position:relative}.stage-chips li{margin:0}.stage-chips a{display:flex;align-items:baseline;gap:10px;padding:10px 14px;border-radius:12px;text-decoration:none;color:var(--text);background:#141e468c;border:1px solid var(--border);transition:border-color .2s,background .2s}.stage-chips a:hover{border-color:var(--gold);background:#ffd27a14}.stage-chips .num{color:var(--gold);font-weight:700;font-variant-numeric:tabular-nums}.stage-chips .count{margin-left:auto;color:var(--muted);font-size:.82rem;white-space:nowrap}.impl-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;position:relative}.impl{border:1px solid var(--border);border-radius:14px;padding:16px 18px;background:#0f163499;display:flex;flex-direction:column;gap:6px;transition:border-color .2s}.impl:hover{border-color:#9b8cff99}.impl strong{font-size:1.05rem}.impl p{margin:0;color:var(--muted);font-size:.95rem;flex:1}.impl .actions{margin-top:10px}.soon{display:inline-block;margin-top:6px;padding:4px 12px;border-radius:999px;font-size:.82rem;color:var(--violet);border:1px dashed rgba(155,140,255,.5);background:#9b8cff14}.card-sub{position:relative;margin:20px 0 10px;font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.card-sub a{color:inherit;text-decoration:none}.card-sub a:hover{color:var(--accent-strong)}@media (max-width: 860px){.astro-hero{grid-template-columns:1fr}.astro-hero .art-wrap{order:-1;max-width:420px;margin:0 auto}.astro-grid,.impl-grid{grid-template-columns:1fr}}.impl-grid.one{grid-template-columns:1fr}.af-hero{position:relative;padding:30px 0 14px}.eyebrow-gold{color:var(--gold);letter-spacing:.28em;font-size:.78rem;font-weight:700;text-transform:uppercase;margin:0 0 8px}.af-hero h1{font-size:clamp(2.8rem,8vw,5rem);line-height:1;margin:0 0 14px;letter-spacing:-.03em;background:linear-gradient(100deg,#fff 5%,#a9d6ff 45%,#ffd27a 95%);-webkit-background-clip:text;background-clip:text;color:transparent}html[data-theme=astro] .af-hero h1{color:transparent}.af-hero .tagline{color:var(--muted);font-size:1.15rem;max-width:40em;margin:0 0 18px}.af-chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0 0 20px;padding:0}.af-chips li{padding:5px 13px;border-radius:999px;font-size:.85rem;color:var(--accent-strong);border:1px solid var(--border);background:#141e468c}.af-links{display:flex;gap:12px;flex-wrap:wrap;margin:0}html[data-theme=astro] .button.ghost{background:transparent;color:var(--accent-strong);border:1px solid rgba(127,200,255,.5);box-shadow:none}html[data-theme=astro] .button.ghost:hover{color:#fff;background:var(--accent-soft);box-shadow:0 0 22px #6496ff59}.af-features{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:22px 0 8px}.af-feature{position:relative;overflow:hidden;padding:20px 20px 16px;border-radius:16px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.af-feature:before{content:"";position:absolute;right:-60px;top:-70px;width:180px;height:180px;border-radius:50%;background:radial-gradient(circle,rgba(120,140,255,.25),transparent 70%)}.af-feature:nth-child(2):before{background:radial-gradient(circle,rgba(255,190,100,.22),transparent 70%)}.af-feature:nth-child(3):before{background:radial-gradient(circle,rgba(80,200,255,.22),transparent 70%)}.af-icon{position:relative;width:42px;height:42px;display:grid;place-items:center;border-radius:12px;color:var(--gold);background:#ffd27a1a;border:1px solid rgba(255,210,122,.3);margin-bottom:10px}.af-icon svg{width:24px;height:24px}.af-feature h3{position:relative;margin:0 0 6px;font-size:1.02rem;text-transform:none;letter-spacing:0;color:#f2f5ff}.af-feature p{position:relative;margin:0;color:var(--muted);font-size:.93rem}.af-step{margin:34px 0 0}.af-step-title{display:flex;align-items:center;gap:12px;margin:0 0 12px;font-size:1.35rem;text-transform:none;letter-spacing:0;color:#f2f5ff}.af-num{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;font-size:1rem;font-weight:800;color:#04112b;background:linear-gradient(135deg,#ffd27a,#7fc8ff);box-shadow:0 0 18px #ffd27a59}.af-hint{color:var(--muted);font-size:.95rem}.af-h2{margin:44px 0 14px}.af-notes{display:grid;grid-template-columns:1fr 1fr;gap:14px}.af-note{padding:16px 18px;border-radius:14px;background:var(--surface);border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.af-note strong{color:var(--gold)}.af-note p{margin:6px 0 0;color:var(--muted);font-size:.94rem}.af-license{margin-top:28px;color:var(--muted);font-size:.85rem;max-width:60em}.cw{margin:14px 0 16px;border-radius:14px;overflow:hidden;border:1px solid rgba(140,165,255,.28);background:#0b1026;box-shadow:0 0 0 1px #05081699,0 14px 44px #02061e99,0 0 40px #5a78ff1f}.cw-bar{display:flex;align-items:center;gap:12px;padding:9px 14px;background:linear-gradient(180deg,#161d42,#111733);border-bottom:1px solid rgba(140,165,255,.2)}.cw-dots{display:inline-flex;gap:7px}.cw-dots i{width:11px;height:11px;border-radius:50%;background:#ff6b6b;display:block}.cw-dots i:nth-child(2){background:#ffd166}.cw-dots i:nth-child(3){background:#5ee08b}.cw-title{flex:1;color:#8fa0d6;font-size:.82rem;font-family:var(--mono, ui-monospace, Consolas, monospace)}.cw-copy{font:inherit;font-size:.78rem;color:#c8d6ff;background:#7896ff24;border:1px solid rgba(140,165,255,.35);border-radius:7px;padding:3px 11px;cursor:pointer;transition:background .2s,color .2s}.cw-copy:hover{background:#8caaff4d;color:#fff}.cw pre.cw-code{margin:0;padding:16px 18px;border:0;border-radius:0;background:transparent;overflow-x:auto;font:.86rem/1.65 ui-monospace,Cascadia Code,Consolas,Liberation Mono,monospace;color:#dfe7ff}.cw pre.cw-code code{background:none;border:0;padding:0;font:inherit;color:inherit;display:block}.cw .hljs{background:transparent;padding:0;color:#dfe7ff}.cw .hljs-keyword,.cw .hljs-meta{color:#c792ea}.cw .hljs-built_in,.cw .hljs-type{color:#ffcb6b}.cw .hljs-string,.cw .hljs-regexp{color:#a5e075}.cw .hljs-number,.cw .hljs-literal{color:#f78c6c}.cw .hljs-comment{color:#6c7bb0;font-style:italic}.cw .hljs-title,.cw .hljs-title.function_{color:#82aaff}.cw .hljs-variable,.cw .hljs-params{color:#e6ecff}.cw .hljs-property,.cw .hljs-attr{color:#89ddff}.cw .hljs-subst,.cw .hljs-template-variable{color:#ff9cac}.cw .hljs-operator,.cw .hljs-punctuation{color:#8fd0ff}.cw-out{border-top:1px dashed rgba(140,165,255,.28);background:#0312168c;padding:10px 18px 12px}.cw-out-label{display:inline-block;margin-bottom:4px;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#5ee08b}.cw-out pre{margin:0;padding:0;border:0;background:transparent;color:#b7f3c8;font:.86rem/1.6 ui-monospace,Consolas,monospace;overflow-x:auto}@media (max-width: 800px){.af-features,.af-notes{grid-template-columns:1fr}}.astro-invite{position:relative;overflow:hidden;display:grid;grid-template-columns:1.15fr .85fr;align-items:center;gap:8px;padding:34px 38px;border-radius:22px;text-decoration:none;color:#e8edff;border:1px solid rgba(140,165,255,.28);background:radial-gradient(1px 1px at 12% 22%,#fff,transparent),radial-gradient(1.4px 1.4px at 28% 78%,#cfe3ff,transparent),radial-gradient(1px 1px at 41% 14%,#fff,transparent),radial-gradient(1.2px 1.2px at 55% 62%,#ffe9b8,transparent),radial-gradient(1px 1px at 63% 90%,#fff,transparent),radial-gradient(1.6px 1.6px at 72% 18%,#fff,transparent),radial-gradient(1px 1px at 84% 70%,#cfe3ff,transparent),radial-gradient(1.2px 1.2px at 93% 40%,#fff,transparent),radial-gradient(1px 1px at 7% 60%,#ffe9b8,transparent),radial-gradient(1px 1px at 48% 40%,#fff,transparent),radial-gradient(700px 360px at 90% -10%,rgba(120,90,255,.35),transparent 65%),radial-gradient(600px 340px at 0% 100%,rgba(40,140,255,.26),transparent 65%),linear-gradient(180deg,#070b26,#050816);box-shadow:0 14px 44px #0c123c59,0 0 0 1px #05081666;transition:box-shadow .25s,transform .25s,border-color .25s}.astro-invite:hover{border-color:#7fc8ff99;box-shadow:0 18px 54px #3c5adc66,0 0 40px #6ea0ff40;transform:translateY(-2px)}.astro-invite .invite-eyebrow{margin:0 0 6px;color:#ffd27a;letter-spacing:.28em;font-size:.74rem;font-weight:700;text-transform:uppercase}.astro-invite h3{margin:0 0 10px;padding:0;font-size:clamp(1.7rem,4vw,2.4rem);line-height:1.1;letter-spacing:-.02em;text-transform:none;background:linear-gradient(100deg,#fff 10%,#b9ddff 50%,#ffd27a);-webkit-background-clip:text;background-clip:text;color:transparent}.astro-invite .invite-desc{margin:0 0 18px;color:#b6c3ec;max-width:34em}.astro-invite .invite-go{display:inline-block;padding:9px 18px;border-radius:10px;font-weight:700;color:#04112b;background:linear-gradient(135deg,#52b1ff,#8f7dff);box-shadow:0 0 22px #6496ff73}.astro-invite .invite-art{position:relative}.astro-invite .shoot{top:10%;left:42%}@media (max-width: 760px){.astro-invite{grid-template-columns:1fr;padding:26px 22px}.astro-invite .invite-art{order:-1;max-width:300px;margin:0 auto}}html[data-theme=astro] body:before{background-image:radial-gradient(1px 1px at 231px 286px,rgba(255,255,255,.68),transparent),radial-gradient(1px 1px at 300px 97px,rgba(190,215,255,.66),transparent),radial-gradient(1px 1px at 314px 95px,rgba(255,255,255,.59),transparent),radial-gradient(1.2px 1.2px at 46px 275px,rgba(190,215,255,.47),transparent),radial-gradient(1.2px 1.2px at 202px 231px,rgba(190,215,255,.73),transparent),radial-gradient(1px 1px at 80px 319px,rgba(190,215,255,.48),transparent),radial-gradient(1px 1px at 18px 97px,rgba(190,215,255,.46),transparent),radial-gradient(1px 1px at 237px 167px,rgba(190,215,255,.83),transparent),radial-gradient(1.2px 1.2px at 265px 119px,rgba(255,255,255,.67),transparent),radial-gradient(1.2px 1.2px at 43px 234px,rgba(255,255,255,.63),transparent),radial-gradient(1.2px 1.2px at 282px 42px,rgba(255,255,255,.59),transparent),radial-gradient(1px 1px at 117px 262px,rgba(255,255,255,.48),transparent),radial-gradient(1px 1px at 55px 205px,rgba(255,255,255,.62),transparent),radial-gradient(1px 1px at 8px 0px,rgba(255,255,255,.87),transparent),radial-gradient(1px 1px at 26px 240px,rgba(190,215,255,.63),transparent),radial-gradient(1.2px 1.2px at 37px 289px,rgba(255,255,255,.8),transparent),radial-gradient(1px 1px at 138px 172px,rgba(255,255,255,.6),transparent),radial-gradient(1px 1px at 209px 60px,rgba(255,255,255,.77),transparent),radial-gradient(1px 1px at 5px 30px,rgba(255,255,255,.53),transparent),radial-gradient(1px 1px at 286px 96px,rgba(190,215,255,.54),transparent),radial-gradient(1.2px 1.2px at 67px 214px,rgba(255,255,255,.5),transparent),radial-gradient(1px 1px at 215px 108px,rgba(255,255,255,.84),transparent),radial-gradient(1px 1px at 303px 155px,rgba(255,255,255,.53),transparent),radial-gradient(1px 1px at 308px 295px,rgba(255,255,255,.9),transparent),radial-gradient(1px 1px at 109px 226px,rgba(255,255,255,.8),transparent),radial-gradient(1px 1px at 168px 151px,rgba(255,255,255,.48),transparent);background-size:320px 320px}html[data-theme=astro] body:after{background-image:radial-gradient(1.4px 1.4px at 213px 248px,rgba(255,226,170,.81),transparent),radial-gradient(1.8px 1.8px at 464px 130px,rgba(255,226,170,.74),transparent),radial-gradient(1.4px 1.4px at 395px 187px,rgba(190,215,255,.97),transparent),radial-gradient(1.4px 1.4px at 255px 194px,rgba(255,226,170,.89),transparent),radial-gradient(1.8px 1.8px at 201px 397px,rgba(255,226,170,.72),transparent),radial-gradient(1.4px 1.4px at 48px 106px,rgba(255,255,255,.85),transparent),radial-gradient(1.8px 1.8px at 261px 244px,rgba(190,215,255,.83),transparent),radial-gradient(1.4px 1.4px at 502px 300px,rgba(255,226,170,.99),transparent),radial-gradient(1.8px 1.8px at 129px 233px,rgba(255,226,170,.9),transparent),radial-gradient(1.4px 1.4px at 75px 286px,rgba(255,255,255,.92),transparent),radial-gradient(1.8px 1.8px at 70px 275px,rgba(190,215,255,.77),transparent),radial-gradient(1.8px 1.8px at 47px 180px,rgba(190,215,255,.86),transparent),radial-gradient(1.8px 1.8px at 134px 94px,rgba(255,255,255,.97),transparent),radial-gradient(1.4px 1.4px at 338px 143px,rgba(255,255,255,.84),transparent),radial-gradient(2.4px 2.4px at 366px 717px,rgba(255,255,255,.8),transparent),radial-gradient(2.4px 2.4px at 651px 76px,rgba(255,255,255,.95),transparent),radial-gradient(2px 2px at 326px 139px,rgba(255,255,255,.89),transparent),radial-gradient(2px 2px at 376px 754px,rgba(190,215,255,.95),transparent),radial-gradient(2.4px 2.4px at 132px 349px,rgba(255,255,255,.94),transparent),radial-gradient(2px 2px at 79px 427px,rgba(255,226,170,.91),transparent),radial-gradient(2.4px 2.4px at 639px 678px,rgba(255,226,170,.92),transparent);background-size:520px 520px,780px 780px}:root{--bg: #fafbfc;--surface: #ffffff;--surface-2: #f3f6fa;--text: #1a2230;--muted: #5d6879;--border: #e1e6ee;--accent: #2456b8;--accent-strong: #1b4296;--accent-soft: #e8effc;--shadow: 0 1px 2px rgba(20, 30, 50, .05), 0 4px 14px rgba(20, 30, 50, .05);--radius: 12px;--max: 1040px;--mono: ui-monospace, "Cascadia Code", "SFMono-Regular", Consolas, monospace}@media (prefers-color-scheme: dark){:root{--bg: #0f1319;--surface: #171c24;--surface-2: #1d2430;--text: #e8ecf2;--muted: #9aa5b5;--border: #2a3342;--accent: #7aa9f7;--accent-strong: #a3c3fa;--accent-soft: #1d2a42;--shadow: 0 1px 2px rgba(0, 0, 0, .3), 0 4px 14px rgba(0, 0, 0, .25)}}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:76px}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.65 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-underline-offset:3px}a:hover{color:var(--accent-strong)}h1,h2,h3,h4{line-height:1.25;margin:0 0 .5em;letter-spacing:-.01em}h1{font-size:clamp(2.2rem,5.5vw,3.4rem);letter-spacing:-.03em}h2{position:relative;font-size:1.55rem;margin-bottom:.7em;padding-bottom:.45em;border-bottom:1px solid var(--border)}h2:after{content:"";position:absolute;left:0;bottom:-1px;width:56px;height:3px;border-radius:3px;background:var(--accent)}h3{font-size:.8rem;margin:1.8em 0 .8em;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}h4{font-size:1rem}p{margin:0 0 .9em}.container{max-width:var(--max);margin:0 auto;padding:0 20px}.muted{color:var(--muted);font-size:.93em}.section{padding:56px 0 4px}.intro{color:var(--muted);max-width:46em}.header{position:sticky;top:0;z-index:10;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px;flex-wrap:wrap}.brand{font-weight:700;font-size:1.05rem;color:var(--text);text-decoration:none;letter-spacing:-.01em}.nav{display:flex;gap:4px;flex-wrap:wrap}.nav a{color:var(--muted);text-decoration:none;font-size:.9rem;padding:6px 10px;border-radius:8px;transition:background .15s,color .15s}.nav a:hover{color:var(--accent);background:var(--accent-soft)}.menu-toggle{display:none;background:var(--surface);border:1px solid var(--border);color:var(--text);padding:6px 14px;border-radius:8px;font:inherit}@media (max-width: 860px){.menu-toggle{display:inline-block}.nav{display:none;width:100%;flex-direction:column;gap:2px;padding:4px 0 12px}.nav.open{display:flex}}.hero{margin-top:28px;padding:48px 40px 36px;background:radial-gradient(900px 300px at 0% 0%,var(--accent-soft),transparent 70%),var(--surface);border:1px solid var(--border);border-radius:18px;box-shadow:var(--shadow)}@media (max-width: 600px){.hero{padding:32px 22px 24px}}.eyebrow{color:var(--accent);font-weight:600;text-transform:uppercase;letter-spacing:.1em;font-size:.78rem;margin-bottom:.6em}.lead{font-size:1.2rem;color:var(--muted);max-width:42em}.two-col{display:grid;grid-template-columns:3fr 2fr;gap:48px;margin-top:28px}@media (max-width: 760px){.two-col{grid-template-columns:1fr;gap:12px}}.plain{list-style:none;padding:0;margin:0}.plain li{position:relative;padding:7px 0 7px 22px;border-bottom:1px solid var(--border)}.plain li:before{content:"";position:absolute;left:4px;top:1.05em;width:7px;height:7px;border-radius:50%;background:var(--accent)}.hero h3{margin-top:0}.links{list-style:none;padding:0;margin:14px 0 0;display:flex;flex-wrap:wrap;gap:8px}.links li a{display:inline-block;padding:4px 12px;border-radius:999px;font-size:.88rem;font-weight:500;text-decoration:none;border:1px solid var(--border);background:var(--surface);color:var(--accent);transition:border-color .15s,background .15s}.links li a:hover{border-color:var(--accent);background:var(--accent-soft)}.tags{list-style:none;padding:0;margin:10px 0 0;display:flex;flex-wrap:wrap;gap:6px}.tags li{background:var(--surface-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:1px 9px;font-size:.8rem;font-family:var(--mono)}.skills-grid .tags li{background:var(--accent-soft);border-color:transparent;font-family:inherit;font-size:.86rem}.defs{margin:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:4px 18px;box-shadow:var(--shadow)}.defs>div{display:flex;gap:16px;padding:10px 0;border-bottom:1px solid var(--border)}.defs>div:last-child{border-bottom:0}.defs dt{width:120px;flex:none;color:var(--muted);font-size:.92rem}.defs dd{margin:0;word-break:break-word;font-weight:500}#contact h3{margin-top:0}.stack{display:flex;flex-direction:column;gap:14px}.timeline{position:relative;padding-left:26px}.timeline:before{content:"";position:absolute;left:6px;top:8px;bottom:8px;width:2px;background:var(--border);border-radius:2px}.timeline>.entry:before{content:"";position:absolute;left:-26px;top:22px;width:14px;height:14px;border-radius:50%;background:var(--bg);border:3px solid var(--accent)}.entry{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:border-color .15s}.entry:hover,.entry[open]{border-color:color-mix(in srgb,var(--accent) 45%,var(--border))}.entry summary{cursor:pointer;list-style:none;position:relative;padding:16px 48px 16px 20px;display:flex;flex-direction:column;gap:4px}.entry summary::-webkit-details-marker{display:none}.entry summary:after{content:"";position:absolute;right:20px;top:50%;width:8px;height:8px;margin-top:-6px;border-right:2px solid var(--muted);border-bottom:2px solid var(--muted);transform:rotate(45deg);transition:transform .2s}.entry[open] summary:after{transform:rotate(-135deg);margin-top:-2px}.entry[open] summary{border-bottom:1px solid var(--border)}.entry-title{font-weight:650;font-size:1.05rem;display:flex;flex-wrap:wrap;column-gap:10px;align-items:baseline}.entry-title .org{color:var(--accent);font-weight:600;font-size:.95rem}.entry-title .org:before{content:"·";color:var(--muted);margin-right:10px}.entry-meta{color:var(--muted);font-size:.88rem}.entry-body{padding:18px 20px 6px}.entry-summary{color:var(--muted)}.entry-body ul{margin:0 0 1em;padding-left:1.2em}.entry-body li{margin-bottom:.3em}.entry-body li::marker{color:var(--accent)}.project{background:var(--surface-2);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;padding:14px 16px 6px;margin:0 0 14px}.project h4{margin-bottom:.4em}.project p{color:var(--text)}.project .links{margin:4px 0 10px}.project .tags{margin-bottom:10px}.pub-group h3{margin-top:2em}.pubs{list-style:none;padding:0;margin:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.pubs li{display:flex;gap:18px;padding:14px 18px;border-bottom:1px solid var(--border)}.pubs li:last-child{border-bottom:0}.pub-year{width:64px;flex:none;color:var(--accent);font-weight:600;font-variant-numeric:tabular-nums}.pub-title{font-weight:600}.pub-authors{color:var(--muted)}@media (max-width: 560px){.pubs li{flex-direction:column;gap:2px}}.skills-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.skills-grid>div{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px 14px;box-shadow:var(--shadow)}.skills-grid h3{margin:0;color:var(--text);text-transform:none;letter-spacing:0;font-size:1rem}.rows{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.rows li{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;padding:16px 20px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.rows p{margin:4px 0}.row-side{display:flex;flex-direction:column;align-items:flex-end;gap:8px;flex:none}.row-side .links{flex-direction:row;justify-content:flex-end;margin:0}@media (max-width: 600px){.rows li{flex-direction:column;gap:10px}.row-side,.row-side .links{align-items:flex-start;justify-content:flex-start}}.badge{background:var(--accent-soft);color:var(--accent-strong);border-radius:999px;padding:2px 12px;font-size:.78rem;font-weight:600;white-space:nowrap}.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-bottom:16px}.filters input,.filters select{font:inherit;padding:9px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text)}.filters input:focus,.filters select:focus{outline:2px solid var(--accent);outline-offset:1px}.filters input{flex:1;min-width:200px;max-width:360px}.button{display:inline-block;background:var(--accent);color:#fff;padding:9px 18px;border-radius:8px;text-decoration:none;font-weight:600;font-size:.92rem;white-space:nowrap;transition:background .15s}.button:hover{background:var(--accent-strong);color:#fff}@media (prefers-color-scheme: dark){.button,.button:hover{color:#0f1319}}.stages{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,420px),1fr));gap:16px}.stage{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:4px 20px 16px;box-shadow:var(--shadow)}.stage h3{color:var(--text);text-transform:none;letter-spacing:0;font-size:1.05rem;margin-top:16px}.stage ol{padding-left:1.3em;margin:0}.stage li{padding:4px 0}.stage li::marker{color:var(--accent);font-weight:600}.viewer{display:grid;grid-template-columns:250px 1fr;gap:28px;padding-top:24px;padding-bottom:20px;max-width:1400px}@media (max-width: 900px){.viewer{grid-template-columns:1fr}}.viewer-nav{font-size:.9rem}.viewer-nav ul{list-style:none;padding:0;margin:0 0 12px}.viewer-nav li a{display:block;padding:4px 10px;text-decoration:none;border-radius:6px;color:var(--text)}.viewer-nav li a:hover{background:var(--surface-2)}.viewer-nav li a[aria-current=page]{background:var(--accent-soft);color:var(--accent-strong);font-weight:600}.viewer-nav h4{margin:16px 0 4px;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em}.back{display:inline-block;margin:20px 0 0;font-size:.92rem;text-decoration:none}.viewer .back{margin:0 0 4px}.viewer-bar{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:12px}.viewer-bar h2{border:0;margin:0;padding:0}.viewer-bar h2:after{display:none}.lesson-frame{width:100%;display:block;min-height:480px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow)}.pager{display:flex;justify-content:space-between;margin-top:14px;gap:12px}.footer{margin-top:72px;padding:28px 0;border-top:1px solid var(--border);color:var(--muted);font-size:.9rem}.table-wrap{overflow-x:auto;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.cert-table{width:100%;border-collapse:collapse;font-size:.93rem}.cert-table th{text-align:left;padding:10px 14px;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border);background:var(--surface-2)}.cert-table td{padding:9px 14px;border-bottom:1px solid var(--border)}.cert-table tbody tr:last-child td{border-bottom:0}.cert-table tbody tr:hover{background:var(--surface-2)}.nowrap{white-space:nowrap}.badge.track{margin-left:10px}.viewer-main h2{border:0;padding:0;margin:0 0 16px}.viewer-main h2:after{display:none}.markdown h2,.markdown h3{text-transform:none;letter-spacing:0;color:var(--text);font-size:1.2rem;margin:1.4em 0 .5em}pre{background:#10151d;color:#e6edf3;padding:14px 16px;border-radius:8px;overflow-x:auto;font:.85rem/1.55 var(--mono)}pre code{background:none;padding:0;font:inherit}p code,li code{background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:0 5px;font:.88em var(--mono)}.source{max-height:70vh;overflow:auto}.mono{font-family:var(--mono)}.fn-list li{padding:12px 18px}.fn-list p{margin:2px 0}.sig{font-size:.88rem}.sig code{word-break:break-word}.page-title{margin:.4em 0 .2em}.lead{color:var(--muted);font-size:1.1rem;max-width:46em}.title-link{color:inherit;text-decoration:none}.title-link:hover{color:var(--accent)}.sub-title{margin-top:1.4em}.sub-title a{color:inherit;text-decoration:none}.sub-title a:hover{color:var(--accent)}.plain-list{margin:0 0 1em;padding-left:1.3em}.plain-list li{padding:3px 0}.plain-list li::marker{color:var(--accent);font-weight:600}
