:root{--ground:#07070b;--panel:#0d0d13;--ink:#efeff5;--dim:#7a7a88;--faint:#3a3a46;--R:#ff3b4e;--R-rgb:255,59,78;--G:#2be07c;--G-rgb:43,224,124;--B:#4d7dff;--B-rgb:77,125,255;--edge:rgba(239,239,245,.09);--edge-2:rgba(239,239,245,.16);--rail:clamp(14px,3.4vw,34px);--gutter:clamp(16px,2.6vw,32px);--mono:"JetBrains Mono",ui-monospace,"SF Mono",Menlo,monospace;--sans:"Archivo",system-ui,-apple-system,sans-serif;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html{text-size-adjust:none}body{background:var(--ground);color:var(--ink);font-family:var(--sans);min-height:100%;overflow-x:hidden;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}::selection{background:var(--B);color:#fff}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}:focus-visible{outline:2px solid var(--ink);outline-offset:3px}#lattice,#spark{position:fixed;inset:0;width:100%;height:100%;display:block;pointer-events:none}#lattice{z-index:0}#spark{z-index:60}.wrap{position:relative;z-index:10;max-width:1240px;margin:0 auto;padding-left:calc(var(--rail) + var(--gutter));padding-right:calc(var(--rail) + var(--gutter))}.rail{position:fixed;left:0;top:0;bottom:0;width:var(--rail);z-index:20;pointer-events:none;border-right:1px solid var(--edge)}.rail i{left:0;width:6px;height:1px;background:var(--edge)}.rail b,.rail i{position:absolute}.rail b{left:9px;font-family:var(--mono);font-size:8px;font-weight:400;letter-spacing:.1em;color:var(--faint);transform:translateY(-4px)}@media (max-width:700px){.rail{display:none}:root{--rail:0px}}.page{padding:clamp(28px,6vh,64px) 0 clamp(40px,8vh,90px);display:flex;flex-direction:column;gap:clamp(20px,3.6vh,40px)}.page.one{min-height:100svh;justify-content:center;padding-top:30px;padding-bottom:30px}.sub{font-family:var(--mono);font-size:clamp(11px,1.35vw,14px);color:var(--dim);letter-spacing:.02em;min-height:1.4em;padding-bottom:clamp(14px,2.4vh,22px);border-bottom:1px solid var(--edge)}.bento{display:grid;grid-gap:1px;gap:1px;grid-template-columns:repeat(2,1fr);background:var(--edge);border:1px solid var(--edge)}.card{--tone:var(--B);--tone-rgb:var(--B-rgb);position:relative;overflow:hidden;isolation:isolate;background:var(--ground);padding:clamp(16px,2.2vw,24px);min-height:clamp(140px,18vh,208px);display:grid;grid-template-rows:auto auto 1fr auto;grid-template-columns:minmax(0,1fr);transition:background .4s ease}.card:after{content:"";position:absolute;inset:1px;z-index:-1;opacity:0;pointer-events:none;--tk:var(--tld,var(--B));--tk-2:rgba(var(--tld-rgb,var(--B-rgb)),.55);background:repeating-linear-gradient(90deg,var(--tk) 0 1px,transparent 1px 40px) 0 0/100% 9px no-repeat,repeating-linear-gradient(90deg,var(--tk-2) 0 1px,transparent 1px 8px) 0 0/100% 4px no-repeat,repeating-linear-gradient(90deg,var(--tk) 0 1px,transparent 1px 40px) 0 100%/100% 9px no-repeat,repeating-linear-gradient(90deg,var(--tk-2) 0 1px,transparent 1px 8px) 0 100%/100% 4px no-repeat,repeating-linear-gradient(180deg,var(--tk) 0 1px,transparent 1px 40px) 0 0/9px 100% no-repeat,repeating-linear-gradient(180deg,var(--tk-2) 0 1px,transparent 1px 8px) 0 0/4px 100% no-repeat,repeating-linear-gradient(180deg,var(--tk) 0 1px,transparent 1px 40px) 100% 0/9px 100% no-repeat,repeating-linear-gradient(180deg,var(--tk-2) 0 1px,transparent 1px 8px) 100% 0/4px 100% no-repeat;transition:opacity .25s ease}.card.lit:after{opacity:1}.card .fx{inset:0;z-index:2}.card .fx,.card .fx .p{position:absolute;pointer-events:none}.card .fx .p{width:3px;height:3px;background:var(--tld,var(--tone));display:block}.card .coord{font-family:var(--mono);font-size:9px;letter-spacing:.16em;color:var(--faint);display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;text-transform:uppercase}.card .coord i{color:var(--dim)}.card .coord em,.card .coord i{font-style:normal;white-space:nowrap}.card .coord em{margin-left:auto;color:var(--faint)}.card .coord .size{display:none;margin-left:auto;white-space:nowrap;color:var(--ink);text-transform:uppercase}.card.lit .coord .size{display:inline}.card.lit .coord em{display:none}.card .coord u{display:inline-block;width:7px;height:7px;text-decoration:none;background:var(--tone);flex:0 0 auto}.card h3{font-size:clamp(19px,2.2vw,26px);font-weight:600;letter-spacing:-.022em;margin:16px 0 8px;align-self:start}.card .body{min-height:0}.card p{font-size:13.5px;line-height:1.55;color:var(--dim);max-width:42ch}.card .foot{display:flex;flex-direction:column;align-items:flex-start;gap:9px;padding-top:14px;border-top:1px solid var(--edge);margin-top:16px}.card .go{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink);display:inline-flex;align-items:center;gap:8px}.card .go svg{transition:transform .3s ease;flex:0 0 auto}.card:hover .go svg{transform:translateX(4px)}.bento.auto{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}@media (max-width:700px){.bento{grid-template-columns:1fr}.card{min-height:clamp(128px,17vh,190px)}}.crumbs{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint);display:flex;flex-wrap:wrap;align-items:center;gap:8px}.crumbs a{color:var(--dim);transition:color .2s ease}.crumbs a:hover,.crumbs span[aria-current]{color:var(--ink)}.doc{--pad:clamp(14px,3vw,36px);max-width:calc(74ch + 2 * var(--pad));background:var(--ground);border:1px solid var(--edge);padding:var(--pad)}.doc-coord{font-family:var(--mono);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding-bottom:12px}.doc-coord u{display:inline-block;width:7px;height:7px;text-decoration:none;background:var(--B);flex:0 0 auto}.doc-coord i{font-style:normal;color:var(--dim)}.doc-mark{padding-bottom:clamp(10px,1.8vh,16px)}.doc-lede{font-size:clamp(11px,1.3vw,13px);line-height:1.7;color:var(--dim);padding-bottom:clamp(14px,2.4vh,22px);border-bottom:1px solid var(--edge)}.doc-lede,.doc-role{font-family:var(--mono)}.doc-role{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-top:14px}.doc-links{display:flex;flex-wrap:wrap;gap:1px;background:var(--edge);border:1px solid var(--edge);margin-top:clamp(16px,3vh,26px)}.doc-links a{font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;background:var(--ground);color:var(--ink);padding:12px 16px;display:inline-flex;align-items:center;gap:9px;flex:1 1 auto;transition:background .25s ease,color .25s ease}.doc-links a:hover{background:var(--panel)}.doc-links a svg{flex:0 0 auto}.doc-intro p{font-size:14.5px;line-height:1.65;color:var(--ink);max-width:68ch}.doc-intro p+p{margin-top:14px}.sec{padding-top:clamp(22px,4vh,38px);border-top:1px solid var(--edge)}.sec+.sec{margin-top:clamp(22px,4vh,38px)}.sec-label{font-family:var(--mono);font-size:9px;font-weight:400;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);margin-bottom:14px}.sec p{font-size:13.5px;line-height:1.7;color:var(--dim);max-width:68ch}.sec p+p{margin-top:12px}.feat{list-style:none;display:grid;grid-gap:1px;gap:1px;background:var(--edge);border:1px solid var(--edge)}.feat li{background:var(--ground);padding:11px 14px;display:flex;gap:11px;align-items:baseline;font-size:13px;line-height:1.5;color:var(--dim)}.feat li b{font-weight:400;color:var(--B);font-family:var(--mono);font-size:10px;flex:0 0 auto}.stack{display:flex;flex-wrap:wrap;gap:1px;background:var(--edge);border:1px solid var(--edge)}.stack span{background:var(--ground);font-family:var(--mono);font-size:10px;letter-spacing:.06em;color:var(--dim);padding:9px 12px;flex:1 1 auto;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.stack svg{width:14px;height:14px;flex:0 0 auto;color:var(--faint)}.shot{border:1px solid var(--edge);background:var(--panel)}.shot .bar{font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--faint);padding:9px 12px;border-bottom:1px solid var(--edge);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shot img{display:block;width:100%;height:auto;max-height:var(--cap,none);object-fit:cover;object-position:top}.shot .ph{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;min-height:220px;font-family:var(--mono);color:var(--faint);text-transform:uppercase;letter-spacing:.18em;font-size:9px;text-align:center;padding:20px}.shot figcaption{font-family:var(--mono);font-size:10px;line-height:1.6;color:var(--dim);padding:11px 12px;border-top:1px solid var(--edge)}.doc-foot{display:flex;flex-wrap:wrap;gap:1px;background:var(--edge);border:1px solid var(--edge);margin-top:clamp(26px,5vh,50px)}.doc-foot a{flex:1 1 auto;background:var(--ground);padding:14px 16px;font-family:var(--mono);font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);transition:background .25s ease,color .25s ease}.doc-foot a:hover{background:var(--panel);color:var(--ink)}.spec{display:grid;grid-gap:1px;gap:1px;background:var(--edge);border:1px solid var(--edge);max-width:74ch;font-family:var(--mono)}.spec>div{background:var(--ground);display:grid;grid-template-columns:12ch 1fr;grid-gap:16px;gap:16px;padding:13px 15px;align-items:baseline}.spec dt{font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--faint)}.spec dd{font-size:12px;line-height:1.7;color:var(--dim)}.spec dd a{color:var(--ink);border-bottom:1px solid var(--edge-2);transition:border-color .2s ease}.spec dd a:hover{border-bottom-color:var(--ink)}@media (max-width:560px){.spec>div{grid-template-columns:1fr;gap:7px}}.flow{--cycle:6s;font-family:var(--mono)}.flow .pipe{display:flex;align-items:flex-start;justify-content:space-between;gap:2px}.flow .node{flex-direction:column;gap:7px;width:clamp(44px,15vw,64px);flex:0 0 auto;text-align:center}.flow .icon,.flow .node{display:flex;align-items:center}.flow .icon{width:40px;height:40px;border:1px solid var(--edge-2);background:var(--ground);color:var(--faint);justify-content:center;animation:cfNode var(--cycle) ease infinite;animation-delay:var(--d);will-change:transform,border-color}.flow .icon svg{width:19px;height:19px}.flow .nlabel{font-size:10px;color:var(--dim);letter-spacing:.02em;line-height:1.2}.flow .nsub{font-size:8px;color:var(--faint);letter-spacing:.04em;line-height:1.2}.flow .wire{flex:1 1 auto;min-width:6px;height:1px;margin-top:20px;position:relative;background:var(--edge-2)}.flow .fill{inset:0;transform-origin:left center;transform:scaleX(0);animation:cfWire var(--cycle) ease infinite;animation-delay:var(--d)}.flow .dot,.flow .fill{position:absolute;background:var(--B)}.flow .dot{top:50%;left:0;width:4px;height:4px;margin-top:-2px;opacity:0;animation:cfDot var(--cycle) linear infinite;animation-delay:var(--d)}@keyframes cfNode{0%,to{transform:scale(1);border-color:var(--edge-2);color:var(--faint)}6%{transform:scale(1.13);border-color:var(--B);color:var(--B)}13%{transform:scale(1);border-color:var(--edge-2);color:var(--faint)}}@keyframes cfWire{0%,2%{transform:scaleX(0);opacity:1}9%{transform:scaleX(1);opacity:1}16%{transform:scaleX(1);opacity:1}24%,to{transform:scaleX(1);opacity:0}}@keyframes cfDot{0%{left:0;opacity:0}2%{opacity:1}9%{left:100%;opacity:1}12%,to{left:100%;opacity:0}}.flow .term{margin-top:26px;border:1px solid var(--edge);background:var(--panel)}.flow .termbar{padding:9px 12px;border-bottom:1px solid var(--edge);font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}.flow .termbody{padding:14px 16px;min-height:138px;font-size:11.5px;line-height:1.9}.flow .tline{color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;animation:cfLine var(--cycle) ease infinite;animation-delay:var(--d)}.flow .tline:first-child{color:var(--ink)}.flow .tline:last-child{color:var(--G)}@keyframes cfLine{0%,5%{opacity:0;transform:translateY(3px)}10%{opacity:1;transform:translateY(0)}94%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(0)}}@media (max-width:480px){.flow .node{width:clamp(40px,13.5vw,56px);gap:5px}.flow .icon{width:34px;height:34px}.flow .icon svg{width:16px;height:16px}.flow .wire{margin-top:17px;min-width:4px}.flow .nlabel{font-size:9px}.flow .nsub{font-size:7px;letter-spacing:.02em}.flow .termbody{font-size:11px;padding:13px}}.arch{display:flex;flex-direction:column;gap:16px;font-family:var(--mono)}.arch .lane{border-left:1px solid var(--edge-2);padding-left:14px}.arch .lane-label{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.18em;color:var(--faint);margin-bottom:9px}.arch .row{display:flex;align-items:center;flex-wrap:wrap;gap:6px 7px}.arch .node{font-size:10.5px;color:var(--dim);border:1px solid var(--edge);background:var(--ground);padding:6px 10px;white-space:nowrap;letter-spacing:.01em}.arch .node.key{color:var(--ink);border-color:var(--edge-2)}.arch .node.key:before{content:"";display:inline-block;width:5px;height:5px;background:var(--B);margin-right:7px;vertical-align:middle}.arch .arrow{color:var(--faint);font-size:11px;flex-shrink:0}@media (max-width:460px){.arch .node{padding:5px 8px}.arch .arrow,.arch .node{font-size:10px}}.bento.plate{grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,1.2fr);grid-template-areas:"name name name cube" "work about mail cube"}@media (max-width:1000px){.bento.plate{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-areas:"name name" "cube cube" "work about" "mail mail"}}@media (max-width:620px){.bento.plate{grid-template-columns:minmax(0,1fr);grid-template-areas:"name" "cube" "work" "about" "mail"}}.t-name{grid-area:name}.t-cube{grid-area:cube}.t-work{grid-area:work}.t-about{grid-area:about}.t-mail{grid-area:mail}.card.t-name{grid-template-rows:auto 1fr auto;gap:clamp(14px,2.4vh,24px)}.card.t-title{grid-template-rows:auto auto auto;gap:clamp(12px,2vh,20px);min-height:0}.bento.solo{grid-template-columns:minmax(0,1fr)}.bento.solo.spec-w{max-width:74ch;font-family:var(--mono)}.card.t-name .sub,.card.t-title .sub{padding-bottom:0;border-bottom:0;max-width:none;font-size:clamp(11px,1.35vw,14px);line-height:1.4;padding-top:clamp(12px,2vh,18px);border-top:1px solid var(--edge)}.card.t-cube{grid-template-rows:auto 1fr auto;gap:10px;min-height:clamp(300px,40vh,520px)}.t-cube .figure{margin:0}.card .reading{font-family:var(--mono);font-size:9px;line-height:1.4;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);max-width:none;padding-top:12px;border-top:1px solid var(--edge);display:flex;gap:10px;flex-wrap:wrap}.card .reading b{font-weight:400;color:var(--ink)}@media (max-width:1000px){.card.t-cube{min-height:0}.t-cube .figure{height:clamp(240px,56vw,400px)}}.card.drawn{grid-template-rows:auto var(--ill-h) auto 1fr auto;--ill-h:clamp(112px,16vh,170px)}.card .figure{min-height:0;margin:14px 0 6px;display:flex}.ill{display:block;width:100%;height:100%;overflow:visible}.ill .ln{fill:var(--ground)}.ill .ln,.ill .side{stroke:rgba(239,239,245,.72);stroke-width:1.1;stroke-linejoin:round;vector-effect:non-scaling-stroke}.ill .side{fill:var(--panel)}.ill .wire{stroke:rgba(239,239,245,.72);stroke-width:1.1}.ill .dash,.ill .wire{fill:none;vector-effect:non-scaling-stroke}.ill .dash{stroke:var(--faint);stroke-width:1;stroke-dasharray:3 3}.ill .bar{fill:none;stroke:var(--dim);stroke-width:3;vector-effect:non-scaling-stroke}.ill .bar.f{stroke:var(--faint)}.ill .bar.k{stroke:var(--ink)}.ill .cell{stroke:none}.ill .stamp,.ill .tone{fill:var(--tone)}.ill .stamp{stroke:var(--ink);stroke-width:1;stroke-dasharray:2 1.5}.ill .dot,.ill .stamp{vector-effect:non-scaling-stroke}.ill .dot{stroke:rgba(239,239,245,.14);stroke-width:.6}.ill .ax{font-family:var(--mono);font-size:10px;letter-spacing:.1em}.ill .ax.r{fill:var(--R)}.ill .ax.g{fill:var(--G)}.ill .ax.b{fill:var(--B)}.ill .ax.n{fill:var(--faint);font-size:8px}.ill .mark-pt{display:none}.ill .mark-pt.on{display:inline}.ill .drop{fill:none;stroke:var(--dim);stroke-width:1;stroke-dasharray:2 3}.ill .drop,.ill .hit{vector-effect:non-scaling-stroke}.ill .hit{stroke:var(--ink);stroke-width:1.2}.ill .ring{fill:none;stroke:var(--tld,var(--B));stroke-width:1.5;vector-effect:non-scaling-stroke}.ill .hltxt{font-family:var(--mono);font-size:10px;letter-spacing:.12em;fill:var(--ink)}.ill .lift{transition:transform .7s cubic-bezier(.2,.8,.1,1)}.ill .acc{transition:stroke .3s ease}.card.lit .ill .lift.k1,.card:focus-within .ill .lift.k1{transform:translateY(-10px)}.card.lit .ill .lift.k2,.card:focus-within .ill .lift.k2{transform:translateY(-20px)}.card.lit .ill .acc,.card:focus-within .ill .acc{stroke:var(--tld,var(--B))}.mark{display:flex;flex-direction:column;gap:clamp(2px,.5vh,6px);align-self:end;min-width:0}.mark .row{position:relative}@media (max-width:1000px){.mark .ln{font-size:var(--fs,calc((100vw - 96px) / 6.6))}}.mark .ln{display:flex;align-items:baseline;width:max-content;white-space:nowrap;font-size:var(--fs,min(6.4vw,104px));line-height:.86;letter-spacing:-.015em;font-variation-settings:"wdth" 112,"wght" 780;color:transparent;-webkit-text-stroke:1.2px var(--ink)}.mark .ch{display:block;transition:color 1.6s ease}.mark .ch.hot{color:var(--ink);transition:color .1s ease}.mark .tld{-webkit-text-stroke-color:var(--tld,var(--B))}.mark .tld.hot{color:var(--tld,var(--B))}.mark .bl{width:0;height:0;align-self:baseline}.mark .marks{position:absolute;inset:0;pointer-events:none}.guide{left:0;height:0;border-top:1px dashed rgba(239,239,245,.13)}.guide,.guide span{position:absolute;right:0}.guide span{top:-13px;font-family:var(--mono);font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}.guide b{font-weight:400;color:var(--dim)}.vline{position:absolute;width:0;border-left:1px dashed rgba(239,239,245,.08)}.rule{position:relative;height:18px;border-top:1px solid var(--edge-2);margin-top:3px}.rule i{width:1px;height:6px;background:var(--edge-2)}.rule .seg,.rule i{position:absolute;top:-1px}.rule .seg{left:0;width:0;height:1px;background:var(--tld,var(--B))}.rule .tag{position:absolute;top:7px;left:0;font-family:var(--mono);font-size:8.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim);white-space:nowrap}.rule .tag b{font-weight:400;color:var(--ink)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.flow .icon{animation:none;border-color:var(--B);color:var(--B)}.flow .fill{animation:none;transform:scaleX(1);opacity:.5}.flow .dot{display:none}.flow .tline{animation:none;opacity:1;transform:none}.card .go svg{transition:none}}