:root{--bg:#0a1628;--surface:#0d1c33;--surface-2:#10223d;--line:#cfe8ff24;--line-strong:#cfe8ff52;--ink:#eaf4ff;--ink-2:#a9c3dd;--ink-3:#6f88a4;--accent:#7dd3fc;--sans:"Space Grotesk", -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--max:1080px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink-2);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;line-height:1.65}a{color:inherit}::selection{background:var(--accent);color:var(--bg)}a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.blueprint-grid{z-index:-1;pointer-events:none;background-color:var(--bg);background-image:linear-gradient(var(--line-strong) 1px, transparent 1px), linear-gradient(90deg, var(--line-strong) 1px, transparent 1px), linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg, var(--line) 1px, transparent 1px);opacity:.6;background-size:160px 160px,160px 160px,32px 32px,32px 32px;position:fixed;inset:0}.wrap{max-width:var(--max);margin:0 auto;padding-left:16px;padding-right:16px}@media (width>=640px){.wrap{padding-left:32px;padding-right:32px}}.nav{z-index:10;background:color-mix(in srgb, var(--bg) 82%, transparent);backdrop-filter:blur(10px);border-bottom:1px dashed var(--line-strong);position:sticky;top:0}.nav-inner{max-width:var(--max);align-items:center;gap:1.5rem;margin:0 auto;padding:.8rem 16px;display:flex}@media (width>=640px){.nav-inner{padding:.8rem 32px}}.logo{font-family:var(--mono);color:var(--ink);font-weight:700;text-decoration:none}.logo span{color:var(--accent)}.nav ol{gap:1.75rem;margin:0 auto;padding:0;list-style:none;display:none}@media (width>=760px){.nav ol{display:flex}}.nav li a{font-size:.85rem;font-family:var(--mono);color:var(--ink-3);text-decoration:none;transition:color .15s}.nav li a:hover{color:var(--accent)}.nav-cv{font-family:var(--mono);color:var(--ink);border:1px dashed var(--line-strong);border-radius:3px;margin-left:auto;padding:.35rem .8rem;font-size:.78rem;font-weight:500;text-decoration:none}@media (width>=760px){.nav-cv{margin-left:0}}.nav-cv:hover{border-color:var(--accent);color:var(--accent)}.hero{text-align:center;padding-top:4rem;padding-bottom:4rem}@media (width>=640px){.hero{padding-top:5.5rem}}.doc-id{font-family:var(--mono);letter-spacing:.12em;color:var(--ink-3);text-transform:uppercase;margin:0 0 2rem;font-size:.7rem}.identity{flex-direction:column;align-items:center;gap:2rem;display:flex}@media (width>=820px){.identity{text-align:left;flex-direction:row;justify-content:center;gap:3rem}.identity .components{justify-content:flex-start}}.figure{border:1px dashed var(--line-strong);background:var(--surface);flex-shrink:0;width:180px;margin:0;padding:8px;position:relative}@media (width>=820px){.figure{width:210px}}.figure:before,.figure:after{content:"";border-color:var(--accent);border-style:solid;width:14px;height:14px;position:absolute}.figure:before{border-width:2px 0 0 2px;top:-1px;left:-1px}.figure:after{border-width:0 2px 2px 0;bottom:-1px;right:-1px}.portrait{aspect-ratio:5/6;object-fit:cover;object-position:50% 15%;width:100%;height:auto;display:block}.figure figcaption{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);text-align:center;margin-top:.55rem;font-size:.62rem}.pill{border:1px dashed var(--line-strong);background:var(--surface);font-family:var(--mono);color:var(--ink-2);border-radius:999px;align-items:center;gap:.55rem;margin:0 0 1.75rem;padding:.35rem .9rem;font-size:.75rem;display:inline-flex}.pill-sep{color:var(--ink-3)}.dot{background:var(--accent);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 25%, transparent);border-radius:50%}h1{letter-spacing:-.03em;color:var(--ink);margin:0;padding-bottom:.1em;font-size:clamp(2.8rem,9vw,5.75rem);font-weight:600;line-height:.95}.components{flex-wrap:wrap;justify-content:center;align-items:center;gap:0;margin:2rem 0 0;display:flex}.component{font-family:var(--mono);letter-spacing:.02em;color:var(--ink);border:1px solid var(--line-strong);background:var(--surface);border-radius:3px;padding:.4rem .75rem;font-size:.78rem}.component:not(:last-child):after{content:"";background:repeating-linear-gradient(90deg, var(--accent) 0 4px, transparent 4px 8px);vertical-align:middle;width:1.5rem;height:1px;margin:0 .35rem;display:inline-block}.summary{max-width:62ch;color:var(--ink-2);text-align:left;margin:2rem auto 0;font-size:1.08rem;font-weight:400}.actions{flex-wrap:wrap;justify-content:center;gap:.75rem;margin-top:2.25rem;display:flex}.btn{border:1px solid var(--line-strong);color:var(--ink);background:var(--surface);border-radius:4px;padding:.68rem 1.2rem;font-size:.9rem;font-weight:500;text-decoration:none;transition:border-color .15s,background .15s}.btn:hover{border-color:var(--accent);background:var(--surface-2)}.btn.primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}.btn.primary:hover{background:#a5e2fd}.dims{grid-template-columns:repeat(2,1fr);gap:1.25rem;margin:4.5rem 0 0;display:grid}@media (width>=700px){.dims{grid-template-columns:repeat(4,1fr)}}.dims>div{border-top:1px dashed var(--line-strong);padding:1.4rem .5rem .6rem;position:relative}.dim-bracket{background:var(--bg);color:var(--accent);font-family:var(--mono);padding:0 .4rem;font-size:.8rem;position:absolute;top:-.62rem;left:50%;transform:translate(-50%)}.dims dd{letter-spacing:-.02em;color:var(--ink);margin:0;font-size:2.1rem;font-weight:600;line-height:1}.dims small{color:var(--ink-3);margin-left:.3rem;font-size:.85rem;font-weight:400}.dims dt{font-family:var(--mono);color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;margin:.4rem 0 0;font-size:.68rem}.section{padding-top:5.5rem;scroll-margin-top:3rem}.section-head{text-align:center;max-width:720px;margin:0 auto 3rem}.label{font-family:var(--mono);letter-spacing:.08em;color:var(--accent);margin:0 0 .9rem;font-size:.78rem}h2{letter-spacing:-.025em;color:var(--ink);margin:0;font-size:clamp(2rem,5.2vw,3.3rem);font-weight:600;line-height:1.08}.card{background:var(--surface);border:1px solid var(--line);border-radius:2px;padding:1.6rem;transition:border-color .15s;position:relative}.card:before,.card:after{content:"";pointer-events:none;border-color:var(--accent);opacity:.7;width:12px;height:12px;position:absolute}.card:before{border-top:1px solid;border-left:1px solid;top:-1px;left:-1px}.card:after{border-bottom:1px solid;border-right:1px solid;bottom:-1px;right:-1px}.card:hover{border-color:var(--line-strong)}.card h3{letter-spacing:-.01em;color:var(--ink);margin:0;font-size:1.2rem;font-weight:600;line-height:1.3}.company{color:var(--accent);margin:.2rem 0 0;font-weight:500}.muted{color:var(--ink-3)}.small{font-size:.88rem}.italic{font-style:italic}.prose{color:var(--ink-2);text-align:left;margin-top:1rem;font-size:.96rem;font-weight:400;display:block}.prose p{margin:0 0 .65rem}.prose ul{margin:.5rem 0 0;padding-left:1.1rem}.prose li{margin-bottom:.5rem}.prose li::marker{color:var(--accent)}.prose strong{color:var(--ink);font-weight:600}.prose code{font-family:var(--mono);background:var(--surface-2);border-radius:3px;padding:.1em .35em;font-size:.85em}.chips{flex-wrap:wrap;gap:.4rem;margin:1.1rem 0 0;display:flex}.chips code{font-family:var(--mono);border:1px solid var(--line-strong);color:var(--ink-2);background:var(--bg);border-radius:3px;padding:.25rem .6rem;font-size:.72rem}.chips.big code{color:var(--ink);padding:.4rem .8rem;font-size:.82rem}.more{font-family:var(--mono);color:var(--ink);border-bottom:1px dashed var(--line-strong);margin-top:1rem;font-size:.78rem;text-decoration:none;display:inline-block}.more:hover{border-color:var(--accent);color:var(--accent)}.pipeline{gap:2rem;max-width:760px;margin:0 auto;padding:0;list-style:none;display:grid;position:relative}.pipeline:before{content:"";border-left:2px dashed var(--line-strong);z-index:0;width:0;position:absolute;top:.4rem;bottom:.4rem;left:50%}@media (width<=640px){.pipeline:before{left:10px}}.node{padding-left:0;position:relative}.node-dot{background:var(--bg);border:2px solid var(--accent);z-index:1;border-radius:50%;width:12px;height:12px;position:absolute;top:.4rem;left:50%;transform:translate(-50%)}@media (width<=640px){.node-dot{left:10px}.node{padding-left:2rem}}.node .card{text-align:left;margin-top:.1rem}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.annot{font-family:var(--mono);color:var(--ink-2);text-align:right;flex-direction:column;gap:.15rem;font-size:.76rem;display:flex}@media (width<=480px){.annot{text-align:left}}.layers{border-top:1px dashed var(--line-strong);gap:0;display:grid}.layer{border-bottom:1px dashed var(--line-strong);text-align:left;padding:1.75rem 1.5rem}@media (width>=720px){.layer{grid-template-columns:12rem 1fr;align-items:start;column-gap:2rem;display:grid}.layer>:not(.layer-edge){grid-column:2}.layer-edge{grid-row:1/span 6}}.layer-edge{font-family:var(--mono);letter-spacing:.08em;color:var(--ink-3);text-transform:uppercase;margin:0 0 .9rem;padding-top:.2rem;font-size:.68rem}.pub-meta{font-family:var(--mono);letter-spacing:.04em;color:var(--ink-3);text-transform:uppercase;margin:0 0 .9rem;font-size:.7rem}.layer h3{color:var(--ink);margin:0;font-size:1.1rem}.checks{margin:0;padding:0;list-style:none}.checks li{border-bottom:1px dashed var(--line);color:var(--ink);padding:.4rem 0;font-size:.95rem}.checks li:last-child{border-bottom:0}.checks li:before{content:"✓";color:var(--accent);font-family:var(--mono);margin-right:.65rem}.plain{color:var(--ink);margin:0 0 .5rem}.grid-3,.grid-2{gap:1rem;margin:0;padding:0;list-style:none;display:grid}@media (width>=760px){.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}}.pub{text-align:left}.pub h3{margin-top:.6rem;font-size:1.02rem}.pub h3 a{text-decoration:none}.pub h3 a:hover{color:var(--accent)}.pub .italic{margin:.6rem 0 0}.grid-2 li{display:flex}.project{text-align:left;flex-direction:column;width:100%;text-decoration:none;display:flex}.project-top{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.arrow{font-family:var(--mono);color:var(--ink-3);transition:color .15s,transform .15s}.project:hover .arrow{color:var(--accent);transform:translate(2px,-2px)}.project .chips{margin-top:auto;padding-top:1.1rem}.contact-section{text-align:center;padding-bottom:3rem}.contact-mail{font-family:var(--mono);color:var(--ink);border-bottom:1px dashed var(--line-strong);overflow-wrap:anywhere;margin-top:.5rem;font-size:clamp(.9rem,3vw,1.35rem);text-decoration:none;display:inline-block}.contact-mail:hover{color:var(--accent);border-color:var(--accent)}.contact-links{flex-wrap:wrap;justify-content:center;gap:1.5rem;margin:1.75rem 0 0;font-size:.9rem;display:flex}.contact-links a{color:var(--ink-3);font-family:var(--mono);text-decoration:none}.contact-links a:hover{color:var(--accent)}.titleblock{margin-top:6rem;padding-bottom:3rem}.titleblock table{border-collapse:collapse;border:1px solid var(--line-strong);width:100%;font-family:var(--mono);font-size:.8rem}.titleblock th,.titleblock td{border:1px solid var(--line-strong);text-align:left;padding:.65rem .9rem;font-weight:400}.titleblock th{color:var(--ink-3);text-transform:uppercase;letter-spacing:.06em;background:var(--surface);width:12%;font-size:.68rem}.titleblock td{color:var(--ink);word-break:break-word;width:38%}.titleblock a{text-decoration:none}.titleblock a:hover{color:var(--accent)}@media (width<=620px){.titleblock table,.titleblock tbody,.titleblock tr,.titleblock th,.titleblock td{width:100%;display:block}.titleblock tr{margin-bottom:-1px}}
