@font-face{font-family:Inter;src:url(/assets/fonts/inter.woff2)format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:Fraunces;src:url(/assets/fonts/fraunces.woff2)format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/assets/fonts/jetbrains-mono.woff2)format("woff2");font-weight:100 800;font-display:swap}:root{--navy:#0a1f3c;--navy-2:#14365e;--bg:#fff;--bg-2:#f6f8fa;--surface:#fff;--text:#1f2328;--muted:#57606a;--line:#d8dee4;--accent:#1f6feb;--accent-soft:#1f6feb1a;--green:#1a7f37;--green-soft:#1a7f371a;--red:#cf222e;--red-soft:#cf222e17;--shadow:0 1px 2px #0f172a0f, 0 8px 24px #0f172a0f;--serif:"Fraunces", Charter, Georgia, serif;--sans:"Inter", -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--mono:"JetBrains Mono", Consolas, "Liberation Mono", monospace;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#0b1220;--bg-2:#0f1829;--surface:#111b2e;--text:#e6edf3;--muted:#9aa7b8;--line:#23314a;--accent:#58a6ff;--accent-soft:#58a6ff1f;--green:#3fb950;--green-soft:#3fb9501f;--red:#f85149;--red-soft:#f851491f;--shadow:0 1px 2px #0000004d, 0 8px 24px #00000040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){html:not([data-theme]){--bg:#0b1220;--bg-2:#0f1829;--surface:#111b2e;--text:#e6edf3;--muted:#9aa7b8;--line:#23314a;--accent:#58a6ff;--accent-soft:#58a6ff1f;--green:#3fb950;--green-soft:#3fb9501f;--red:#f85149;--red-soft:#f851491f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html{scroll-padding-top:80px}html:focus-within{scroll-behavior:smooth}body{font:17px/1.7 var(--sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;transition:background-color .25s,color .25s}a{color:var(--accent);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}h1,h2,h3{font-family:var(--serif);font-optical-sizing:auto;letter-spacing:-.01em;font-weight:650;line-height:1.2}.wrap{max-width:1040px;margin:0 auto;padding:0 28px}.muted{color:var(--muted)}.small{font-size:14px}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}.skip{z-index:50;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 14px;position:absolute;top:10px;left:-9999px}.skip:focus{left:10px}.nav{z-index:30;background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:saturate(160%)blur(12px);border-bottom:1px solid var(--line);position:sticky;top:0}.nav-inner{justify-content:space-between;align-items:center;height:64px;display:flex}.brand{color:var(--text);align-items:center;gap:10px;font-weight:600;display:flex}.brand:hover{text-decoration:none}.mark{background:var(--navy);color:#fff;width:32px;height:32px;font:700 13px/1 var(--sans);letter-spacing:.02em;border-radius:8px;place-items:center;display:grid}[data-theme=dark] .mark{box-shadow:inset 0 0 0 1px #2b4a75}.nav nav{align-items:center;gap:4px;display:flex}.nav nav a{color:var(--muted);border-radius:8px;padding:6px 12px;font-size:15px;font-weight:500}.nav nav a:hover{color:var(--text);background:var(--bg-2);text-decoration:none}.nav nav a.active,.nav nav a[aria-current]{color:var(--text);background:var(--bg-2)}.theme-toggle{border:1px solid var(--line);width:36px;height:36px;color:var(--muted);cursor:pointer;background:0 0;border-radius:8px;place-items:center;margin-left:6px;display:grid}.theme-toggle:hover{color:var(--text);background:var(--bg-2)}.theme-toggle svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;width:18px;height:18px}.theme-toggle .i-moon,[data-theme=dark] .theme-toggle .i-sun{display:none}[data-theme=dark] .theme-toggle .i-moon{display:block}html:not(.js) .theme-toggle{display:none}.hero{color:#fff;background:linear-gradient(135deg, #081831 0%, var(--navy) 45%, var(--navy-2) 100%);padding:88px 0 96px;position:relative;overflow:hidden}.hero-bg{pointer-events:none;-webkit-mask-image:radial-gradient(520px circle at var(--mx,75%) var(--my,40%), #000 0%, #00000059 45%, transparent 75%);-webkit-mask-image:radial-gradient(520px circle at var(--mx,75%) var(--my,40%), #000 0%, #00000059 45%, transparent 75%);mask-image:radial-gradient(520px circle at var(--mx,75%) var(--my,40%), #000 0%, #00000059 45%, transparent 75%);background-image:radial-gradient(#7fb2f038 1.2px,#0000 1.2px);background-size:24px 24px;animation:40s linear infinite drift;position:absolute;inset:0}@keyframes drift{to{background-position:240px 120px}}.hero:after{content:"";background:linear-gradient(90deg,#0000,#4fa3ff99,#0000);height:1px;position:absolute;inset:auto 0 0}.hero-inner{grid-template-columns:1.1fr .9fr;align-items:center;gap:56px;display:grid;position:relative}.hero-id{align-items:center;gap:16px;margin-bottom:18px;display:flex}.avatar{border:3px solid #ffffff2e;border-radius:50%;width:88px;height:88px;box-shadow:0 0 0 6px #4fa3ff14}.eyebrow{color:#c9d6e8;background:#ffffff12;border:1px solid #ffffff1f;border-radius:999px;align-items:center;gap:8px;margin:0;padding:6px 14px;font-size:14px;display:inline-flex}.dot{background:#3fb950;border-radius:50%;width:8px;height:8px;animation:2.4s infinite pulse;box-shadow:0 0 #3fb95099}@keyframes pulse{70%{box-shadow:0 0 0 8px #3fb95000}to{box-shadow:0 0 #3fb95000}}.hero h1{color:#fff;margin:0 0 16px;font-size:clamp(40px,6vw,60px);font-weight:700}.lead{color:#c9d6e8;max-width:34em;margin:0;font-size:19px;line-height:1.6}.buttons{flex-wrap:wrap;gap:12px;margin:30px 0 0;display:flex}.btn{color:var(--navy);font:600 15px/1.2 var(--sans);cursor:pointer;background:#fff;border:1px solid #0000;border-radius:10px;align-items:center;gap:8px;padding:10px 20px;transition:transform .15s,box-shadow .15s,background .15s;display:inline-flex}.btn:hover{text-decoration:none;transform:translateY(-1px);box-shadow:0 6px 18px #0000002e}.btn-ghost{color:#fff;background:0 0;border-color:#ffffff59}.btn-ghost:hover{background:#ffffff14}.term{font:14px/1.65 var(--mono);background:#040c1ac7;border:1px solid #7fb2f038;border-radius:14px;overflow:hidden;box-shadow:0 24px 60px #00000059}.term-bar{border-bottom:1px solid #7fb2f024;align-items:center;gap:7px;padding:11px 14px;display:flex}.term-bar span{background:#2b3a52;border-radius:50%;width:11px;height:11px}.term-bar em{color:#7f93ae;margin-left:8px;font-size:12px;font-style:normal}.term-body{color:#dce6f2;scrollbar-width:thin;scrollbar-color:#7fb2f04d transparent;height:230px;padding:16px 18px 4px;overflow-y:auto}.term-body p{white-space:pre-wrap;word-break:break-word;margin:0 0 2px}.term-body .o{color:#9fb4ce}.term-body .hint b{color:#8ec2ff;font-weight:600}.term-body a{color:#8ec2ff}.pr{color:#3fb950;margin-right:8px}.term-in{align-items:center;padding:6px 18px 16px;display:flex}.term-in input{color:#fff;min-width:0;font:inherit;caret-color:#8ec2ff;background:0 0;border:0;flex:1}.term-in input:focus{outline:none}.term:focus-within{border-color:#7fb2f080;box-shadow:0 0 0 3px #4fa3ff59}html:not(.js) .term-in{display:none}.glance{z-index:2;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:-44px;display:grid;position:relative}.g{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:18px 20px}.g p{margin:0}.g-k{font:600 12px/1 var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--accent);margin-bottom:10px!important}.g-v{font:650 19px/1.3 var(--serif)}.g-s{color:var(--muted);font-size:14px;line-height:1.45;margin-top:4px!important}.section{padding-top:104px}.sec-head{margin-bottom:28px}.sec-head h2{margin:0;font-size:clamp(28px,3.6vw,38px)}.sec-head .muted{max-width:40em;margin:12px 0 0}.kicker{font:600 13px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin:0 0 10px}.prose{max-width:44em;margin:0;font-size:18px}.tags{flex-wrap:wrap;gap:8px;margin:24px 0 0;padding:0;display:flex}.tags span{background:var(--bg-2);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:4px 12px;font-size:13px}.figure{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;margin:36px 0 0;padding:12px;overflow-x:auto}.figure figcaption{font:500 12px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:6px 4px 2px}.pipe{width:100%;min-width:720px;height:auto;font-family:var(--sans);display:block}.pipe .node rect{fill:var(--bg-2);stroke:var(--line)}.pipe .t1{fill:var(--text);font-size:19px;font-weight:600}.pipe .t2{fill:var(--muted);font-size:14px}.pipe .small.t1{font-size:16px}.pipe .small.t2{font-size:13px}.pipe .llm rect{fill:var(--navy);stroke:#2b4a75}.pipe .llm .t1{fill:#fff}.pipe .llm .t2{fill:#c9d6e8}.pipe .ctx rect{fill:var(--surface);stroke:#4fa3ff;stroke-dasharray:5 4}.pipe .user .t1,.pipe .user .bar{fill:var(--green)}.pipe .att .t1,.pipe .att .bar{fill:var(--red)}.pipe .flow{fill:none;stroke:var(--muted);stroke-width:2px;stroke-dasharray:7 6;animation:1.2s linear infinite flow}.pipe .flow.blue{stroke:#4fa3ff}.pipe .flow.green{stroke:var(--green)}.pipe .flow.red{stroke:var(--red)}.pipe .m-arrow{fill:var(--muted)}.pipe .m-blue{fill:#4fa3ff}.pipe .m-green{fill:var(--green)}.pipe .m-red{fill:var(--red)}.pipe .b-user,.pipe .b-att{transition:opacity .35s}@keyframes flow{to{stroke-dashoffset:-13px}}.figure[data-verdict=user] .b-att,.figure[data-verdict=attacker] .b-user{opacity:.18}.figure[data-verdict] .llm rect{stroke:#4fa3ff;stroke-width:2px}.explorer{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;padding:8px 8px 20px}.ex-tabs{border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:4px;padding:6px;display:flex}.ex-tabs button{color:var(--muted);font:500 15px/1.2 var(--sans);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 14px}.ex-tabs button:hover{color:var(--text);background:var(--bg-2)}.ex-tabs button[aria-selected=true]{color:var(--text);background:var(--accent-soft);box-shadow:inset 0 -2px 0 var(--accent)}.ex-score{text-align:right;font:500 13px/1 var(--mono);color:var(--muted);margin:0;padding:10px 18px 0}.ex-score:empty,html:not(.js) .ex-tabs{display:none}.ex-panel{padding:22px 22px 0}.case+.case{border-top:1px dashed var(--line);margin-top:28px;padding-top:28px}.js .case{display:none}.js .case.active{animation:.35s ease-out rise;display:block}.js .case+.case{border-top:0;margin-top:0;padding-top:0}.case-label{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;margin:0 0 12px;font-size:14px;display:flex}.tech{font:500 12px/1.9 var(--mono);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:0 10px}.tech:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}.code{font:14px/1.6 var(--mono);color:#dce6f2;background:#0a1424;border:1px solid #1e2c44;border-radius:12px;padding:14px 18px;overflow-x:auto}.code-path{color:#7f93ae;margin-bottom:4px;font-size:12.5px;display:block}.code code{font:inherit;white-space:pre}.choices{flex-wrap:wrap;align-items:center;gap:10px;margin-top:18px;display:flex}.choices-q{margin-right:6px;font-weight:600}.choice{border:1px solid var(--line);background:var(--bg-2);color:var(--text);font:600 15px/1.2 var(--sans);cursor:pointer;border-radius:10px;padding:9px 18px;transition:border-color .15s,background .15s,transform .15s}.choice[data-pick=user]:hover{border-color:var(--green);background:var(--green-soft)}.choice[data-pick=attacker]:hover{border-color:var(--red);background:var(--red-soft)}.choice:active{transform:scale(.98)}.choice:disabled{cursor:default;opacity:.55}.choice.picked{opacity:1;box-shadow:inset 0 0 0 2px var(--accent)}html:not(.js) .choices{display:none}.answer{margin-top:20px}.js .answer{display:none}.js .case.done .answer{animation:.35s ease-out rise;display:block}.verdict{border-radius:999px;align-items:center;gap:10px;margin:0 0 16px;padding:6px 14px;font-size:15px;font-weight:600;display:inline-flex}.verdict.user{color:var(--green);background:var(--green-soft)}.verdict.attacker{color:var(--red);background:var(--red-soft)}.v-result:empty{display:none}.v-result{color:var(--text);font-weight:500}.v-result:after{content:"·";color:var(--muted);margin-left:10px}.ctx-title{font:600 12px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}.ctx{margin:0 0 14px;padding:0;list-style:none}.ctx li{padding:4px 0 4px 22px;font-size:15.5px;position:relative}.ctx li:before{content:"";background:#4fa3ff;border-radius:50%;width:7px;height:7px;position:absolute;top:13px;left:4px}.why{border-left:3px solid var(--accent);background:var(--bg-2);border-radius:0 10px 10px 0;margin:0;padding:12px 16px;font-size:15.5px}.next{color:var(--accent);font:600 15px/1.2 var(--sans);cursor:pointer;background:0 0;border:0;margin-top:18px;padding:0}.next:hover{text-underline-offset:3px;text-decoration:underline}html:not(.js) .next{display:none}.fine{color:var(--muted);margin:18px 22px 0;font-size:13px}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.timeline{margin:0;padding:0 0 0 28px;list-style:none;position:relative}.timeline:before{content:"";background:linear-gradient(var(--line), var(--accent));width:2px;position:absolute;top:8px;bottom:8px;left:7px}.timeline li{padding:0 0 34px 18px;position:relative}.timeline li:last-child{padding-bottom:0}.timeline li:before{content:"";background:var(--bg);border:2px solid var(--line);border-radius:50%;width:14px;height:14px;position:absolute;top:6px;left:-27px}.timeline li.now:before{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 5px var(--accent-soft)}.t-year{font:600 13px/1 var(--mono);color:var(--accent)}.timeline h3{margin:6px 0 2px;font-size:21px}.t-org{color:var(--muted);margin:0 0 4px;font-size:15px}.timeline li p:last-child{max-width:40em;margin:0}.cards{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px;display:grid}.card{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:16px;flex-direction:column;padding:24px 26px;transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;position:relative}.card:hover{border-color:color-mix(in srgb, var(--accent) 45%, var(--line));transform:translateY(-3px)}.card-year{font:600 12px/1 var(--mono);color:var(--muted);margin:0 0 6px}.card h3{margin:0 0 10px;font-size:21px}.card h3 a{color:var(--text)}.card p{margin:0 0 8px;font-size:15.5px}.card .tags{margin-top:auto;padding-top:10px}.stretch:after{content:"";border-radius:16px;position:absolute;inset:0}.stretch:hover{text-decoration:none}.more{color:var(--accent);font-weight:600;margin:14px 0 0!important}.more span{transition:transform .2s;display:inline-block}.card:hover .more span{transform:translate(4px)}.contact{color:#fff;background:linear-gradient(135deg, var(--navy), var(--navy-2));box-shadow:var(--shadow);border-radius:20px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:24px;padding:40px 44px;display:flex}.contact h2{color:#fff;margin:0 0 8px;font-size:clamp(26px,3.4vw,34px)}.contact .kicker{color:#8ec2ff}.contact .muted{color:#c9d6e8;margin:0}.contact-actions{flex-wrap:wrap;gap:12px;display:flex}footer{border-top:1px solid var(--line);background:var(--bg-2);margin-top:112px}.footer-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-top:32px;padding-bottom:12px;display:flex}.footer-inner p{margin:0}.footer-name{font:650 18px/1.3 var(--serif)}.footer-links{gap:20px;font-weight:500;display:flex}.footer-meta{flex-wrap:wrap;justify-content:space-between;gap:8px;padding-bottom:28px;display:flex}.footer-meta p{margin:0}.page{padding-top:72px}.page-head h1{margin:0 0 8px;font-size:clamp(36px,5vw,48px)}.page-head p{margin:0}.page-head .print{margin-top:16px}.page h2{border-bottom:1px solid var(--line);margin:56px 0 18px;padding-bottom:10px;font-size:26px}.cv{margin:0;padding:0;list-style:none}.cv li{border-bottom:1px solid var(--line);justify-content:space-between;gap:24px;padding:14px 0;display:flex}.cv li:last-child{border-bottom:0}.cv strong{font-weight:600}.cv .year{color:var(--muted);white-space:nowrap;font:500 14px/1.9 var(--mono)}.btn-line{color:var(--text);border-color:var(--line);background:0 0}.btn-line:hover{background:var(--bg-2);box-shadow:none}.e404 .code{max-width:560px;margin:24px 0}.js .reveal{opacity:0;transition:opacity .6s ease-out,transform .6s ease-out;transform:translateY(14px)}.js .reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html,html:focus-within{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.js .reveal{opacity:1;transform:none}}@media (width<=860px){.hero{padding:64px 0 88px}.hero-inner{grid-template-columns:1fr;gap:40px}.glance{grid-template-columns:repeat(2,1fr)}.brand-name{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}@media (width<=560px){.wrap{padding-left:20px;padding-right:20px}.nav nav a{padding:6px 8px;font-size:14px}.glance{grid-template-columns:1fr}.section{padding-top:80px}.ex-tabs{grid-template-columns:1fr 1fr;display:grid}.ex-tabs button{padding:10px 8px;font-size:14px}.ex-panel{padding:18px 12px 0}.case .code code{white-space:pre-wrap;overflow-wrap:anywhere}.contact{padding:32px 26px}.cv li{flex-direction:column;gap:2px}}@media (width<=400px){.nav nav a[href$=\#path]{display:none}}@media print{:root,[data-theme=dark]{--text:#000;--muted:#444;--line:#bbb;--bg:#fff;--bg-2:#fff;--surface:#fff;--accent:#000;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}.nav,.skip,.footer-links,.footer-inner,.print,.theme-toggle{display:none!important}body{font-size:11pt}.page{padding-top:0}.page h2{break-after:avoid;margin-top:18pt}.cv li{break-inside:avoid;padding:6pt 0}footer{background:0 0;border:0;margin-top:24pt}.js .reveal{opacity:1;transform:none}}.page-head .muted a{text-underline-offset:3px;text-decoration:underline}
