:root{--pg1:#2747d4;--pg2:#0e8f99;--pg-soft:#2747d41a}:root[data-theme=dark]{--pg1:#8098ff;--pg2:#39d0d8;--pg-soft:#8098ff21}@media (prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]){--pg1:#8098ff;--pg2:#39d0d8;--pg-soft:#8098ff21}}.projects-hero{padding-bottom:16px;position:relative}.hero-glow{pointer-events:none;z-index:0;background:radial-gradient(closest-side,var(--pg-soft),transparent 72%);filter:blur(8px);width:70%;height:150%;position:absolute;top:-28%;left:-10%}.projects-hero .wrap{z-index:1;position:relative}.lp-dot{background:var(--pg2);width:7px;height:7px;box-shadow:0 0 8px var(--pg2);border-radius:50%;flex-shrink:0;position:relative}.lp-dot:after{content:"";border:1px solid var(--pg2);border-radius:50%;position:absolute;inset:-4px}.projects-metrics{margin-top:26px;position:relative}.projects-metrics .metric{position:relative;overflow:hidden}.projects-metrics .metric:after{content:"";background:linear-gradient(90deg,var(--pg1),var(--pg2));opacity:.42;height:2px;position:absolute;top:0;left:0;right:0}.metric-lit .v{background:linear-gradient(96deg,var(--pg1),var(--pg2));color:#0000;-webkit-background-clip:text;background-clip:text}.projects-metrics .metric-lit:after{opacity:1}.projects-metrics .metric .k{letter-spacing:.06em;font-size:10px}.projects-hero .lede{max-width:760px}.hero-note{max-width:760px;font-family:var(--mono);letter-spacing:.02em;color:var(--ink-faint);margin:14px 0 0;font-size:12px;line-height:1.6}.projects-metrics{margin-top:38px}.projects-overview,.project-system,.project-capabilities{padding-top:64px}.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.project-card{border:1px solid var(--line);background:var(--card);border-radius:14px;flex-direction:column;min-height:272px;padding:28px 28px 25px;transition:border-color .2s,transform .2s,background .2s;display:flex;position:relative;overflow:hidden}.project-card:before{content:"";background:linear-gradient(90deg,var(--pg1),var(--pg2));opacity:.55;height:2px;transition:opacity .2s;position:absolute;top:0;left:0;right:0}.project-card:after{content:"";background:radial-gradient(circle,var(--pg-soft),transparent 70%);opacity:.7;pointer-events:none;border-radius:50%;width:180px;height:180px;transition:opacity .25s;position:absolute;top:-60px;right:-60px}.project-card:hover{border-color:var(--accent-line);background:var(--card-hi);transform:translateY(-3px)}.project-card:hover:before,.project-card:hover:after{opacity:1}.project-card>*{position:relative}.pc-top{justify-content:space-between;align-items:center;gap:16px;display:flex}.project-card .brand{height:21px}.pc-live{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);flex-shrink:0;align-items:center;gap:7px;font-size:10px;display:inline-flex}.project-card p{max-width:48ch;color:var(--ink-soft);margin-top:20px;margin-bottom:20px;font-size:15px;line-height:1.62}.project-meta{border-top:1px solid var(--line-soft);grid-template-columns:1fr 1fr;gap:14px 24px;margin-top:auto;padding-top:18px;display:grid}.project-meta dt{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);font-size:10.5px}.project-meta dd{color:var(--ink);margin:5px 0 0;font-size:13.5px;line-height:1.4}.project-actions{flex-wrap:wrap;gap:18px;padding-top:20px;display:flex}.project-actions a{font-family:var(--mono);letter-spacing:.02em;color:var(--accent-deep);font-size:12px}.project-actions a:hover{color:var(--accent)}.project-actions span{font-size:14px}.system-lede{max-width:68ch;margin-top:0}.sys-panel{--p-bg:#0b0d14;--p-ink-rgb:241,237,229;--p-line:rgba(var(--p-ink-rgb),.09);--p-line-hi:rgba(var(--p-ink-rgb),.16);--p-ink:#f1ede5;--p-soft:rgba(var(--p-ink-rgb),.62);--p-faint:rgba(var(--p-ink-rgb),.55);--p-ac:#8098ff;--p-ac2:#39d0d8;--p-ac2-rgb:57,208,216;background:radial-gradient(120% 90% at 8% -10%, #8098ff33, transparent 60%), radial-gradient(90% 80% at 100% 108%, rgba(var(--p-ac2-rgb),.14), transparent 62%), var(--p-bg);border:1px solid rgba(var(--p-ink-rgb),.1);box-shadow:0 1px 0 rgba(var(--p-ink-rgb),.06) inset, 0 26px 60px -30px #000000e6;color:var(--p-ink);border-radius:18px;margin-top:32px;padding:26px 30px 24px;position:relative;overflow:hidden}@supports (overflow:clip){.sys-panel{overflow:clip}}:root[data-theme=dark] .sys-panel{--p-bg:#171b2a;--p-line:rgba(var(--p-ink-rgb),.1);--p-line-hi:rgba(var(--p-ink-rgb),.19);border-color:rgba(var(--p-ink-rgb),.15);box-shadow:0 1px 0 rgba(var(--p-ink-rgb),.08) inset, 0 22px 48px -34px #000}@media (prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]) .sys-panel{--p-bg:#171b2a;--p-line:rgba(var(--p-ink-rgb),.1);--p-line-hi:rgba(var(--p-ink-rgb),.19);border-color:rgba(var(--p-ink-rgb),.15);box-shadow:0 1px 0 rgba(var(--p-ink-rgb),.08) inset, 0 22px 48px -34px #000}}.sp-grid{pointer-events:none;opacity:.5;background-image:linear-gradient(var(--p-line) 1px,transparent 1px), linear-gradient(90deg,var(--p-line) 1px,transparent 1px);background-size:34px 34px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(80% 60% at 50% 40%,#000 30%,#0000 100%);mask-image:radial-gradient(80% 60% at 50% 40%,#000 30%,#0000 100%)}.sp-head{border-bottom:1px solid var(--p-line);flex-wrap:wrap;align-items:center;gap:11px;margin-bottom:26px;padding-bottom:18px;display:flex;position:relative}.sp-dot{background:var(--p-ac2);width:7px;height:7px;box-shadow:0 0 0 3px rgba(var(--p-ac2-rgb),.16),0 0 12px var(--p-ac2);border-radius:50%;flex-shrink:0}.sp-title{font-family:var(--mono);letter-spacing:.2em;text-transform:uppercase;color:var(--p-ink);font-size:11.5px}.sp-meta{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--p-faint);margin-left:auto;font-size:10.5px}@media (prefers-reduced-motion:reduce){.g-particles{display:none}}@keyframes stageIn{0%{opacity:0;translate:0 8px}}@keyframes edgeDraw{0%{stroke-dashoffset:1px;opacity:0;marker-end:none}1%{opacity:1}94%{marker-end:none}to{stroke-dashoffset:0}}@keyframes livePulse{0%{opacity:.8;transform:scale(.7)}to{opacity:0;transform:scale(2.1)}}.panel-note{border-top:1px solid var(--line-soft);max-width:96ch;color:var(--ink-faint);margin:16px 0 0;padding-top:16px;font-size:13px;line-height:1.6}.stack-lede{max-width:68ch;margin-top:0;margin-bottom:26px}.project-stack{padding-top:64px}.stack-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;display:grid}.stack-card{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:24px 22px 22px;transition:border-color .2s,transform .2s,background .2s;position:relative;overflow:hidden}.stack-card:after{content:"";background:linear-gradient(90deg,transparent,var(--accent),transparent);opacity:.5;height:1px;transition:opacity .25s;position:absolute;top:0;left:0;right:0}.stack-card:before{content:"";background:radial-gradient(circle,var(--accent-tint),transparent 70%);opacity:.55;pointer-events:none;border-radius:50%;width:120px;height:120px;transition:opacity .25s;position:absolute;top:-40px;right:-40px}.stack-card:hover:before{opacity:1}.stack-card:hover{border-color:var(--ink-faint);background:var(--card-hi);transform:translateY(-2px)}.stack-card:hover:after{opacity:1}.stack-card>*{position:relative}.stack-idx{font-family:var(--mono);letter-spacing:.16em;color:var(--accent-deep);font-size:10.5px;display:block}.stack-card h3{font-family:var(--serif);color:var(--ink);margin-top:13px;font-size:21px;font-weight:500;line-height:1.12}.stack-card p{color:var(--ink-soft);margin-top:11px;font-size:13.5px;line-height:1.56}.capability-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.capability-grid article{border:1px solid var(--line);background:var(--card);background-clip:padding-box;border-left:2px solid #0000;border-radius:12px;padding:24px 24px 23px 62px;transition:border-color .2s,background .2s;position:relative}.capability-grid article:before{content:"";background:linear-gradient(180deg,var(--pg1),var(--pg2));border-radius:2px;width:2px;position:absolute;top:-1px;bottom:-1px;left:-2px}.capability-grid article:hover{border-color:var(--accent-line);background:var(--card-hi)}.cg-mark{border:1px solid var(--accent-line);background:var(--pg-soft);border-radius:50%;place-items:center;width:26px;height:26px;display:grid;position:absolute;top:24px;left:22px}.cg-mark svg{fill:none;width:14px;height:14px;stroke:var(--pg1);stroke-width:2.1px;stroke-linecap:round;stroke-linejoin:round}.capability-grid h3{font-family:var(--serif);color:var(--ink);font-size:22px;font-weight:500;line-height:1.12}.capability-grid p{color:var(--ink-soft);margin-top:12px;font-size:14px;line-height:1.58}.projects-contact{padding-top:64px;padding-bottom:96px}@media (width<=720px){.projects-metrics{margin-top:30px}.projects-overview,.project-system,.project-capabilities,.project-stack,.projects-contact{padding-top:48px}.projects-grid,.capability-grid,.stack-grid{grid-template-columns:1fr}.project-card{min-height:0;padding:25px 22px 22px}.project-card p{margin-top:18px}.capability-grid article{padding:21px 18px 20px 54px}.cg-mark{width:24px;height:24px;top:21px;left:16px}.lp-dot{margin-top:5px}}.graph-wrap{position:relative;overflow:auto hidden}.graph-hint{display:none}@media (width<=720px){.graph-wrap{-webkit-mask-image:linear-gradient(90deg,#000 88%,#0000 100%);mask-image:linear-gradient(90deg,#000 88%,#0000 100%)}.graph-hint{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--p-faint);margin-top:10px;font-size:10px;display:block}}.graph{width:100%;min-width:700px;height:auto;display:block}.g-sub rect{fill:rgba(var(--p-ink-rgb),.018);stroke:var(--p-line);stroke-width:1px}.g-pill rect{fill:rgba(var(--p-ink-rgb),.045);stroke:var(--p-line-hi);stroke-width:1px}.g-pill-t{font-family:var(--mono);letter-spacing:.06em;fill:var(--p-soft);text-anchor:middle;font-size:16px}.g-mini line{stroke:url(#edgeGrad);stroke-width:1.4px}.g-fork path{stroke:url(#edgeGrad);stroke-width:1.6px;fill:none}.g-gate-node rect{fill:rgba(var(--p-ink-rgb),.03);stroke:var(--p-ac2);stroke-width:1px;stroke-dasharray:5 5}.g-node.g-node-gate rect{stroke:var(--p-ac);stroke-width:1.4px}.g-node-gate .g-edge-lit{fill:var(--p-ac)}.g-inline-gate rect{fill:var(--p-bg);stroke:var(--p-ac2);stroke-width:1.2px}.g-inline-gate-t{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;fill:var(--p-ac2);text-anchor:middle;font-size:13px}.g-sub-t{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;fill:var(--p-soft);text-anchor:middle;font-size:11px}.g-gate-t{font-family:var(--mono);letter-spacing:.16em;text-transform:uppercase;fill:var(--p-ac);text-anchor:middle;font-size:11px}.g-rail rect{fill:rgba(var(--p-ink-rgb),.018);stroke:var(--p-line);stroke-width:1px}.g-rail-t{font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;fill:var(--p-faint);font-size:14px}.g-tick line{stroke:var(--p-line-hi);stroke-width:1.2px}.g-edges line{stroke:url(#edgeGrad);stroke-width:1.6px}.g-arrow{fill:var(--p-ac2)}.g-arrow-dim{fill:rgba(var(--p-ink-rgb),.45)}.grad-a{stop-color:var(--p-ac)}.grad-b{stop-color:var(--p-ac2)}.g-src circle{fill:var(--p-ac2);filter:drop-shadow(0 0 5px var(--p-ac2))}.g-src path{stroke:var(--p-line-hi);stroke-width:1.2px;fill:none}.g-reject-edge line{stroke:rgba(var(--p-ink-rgb),.34);stroke-width:1.4px}.g-dash path{stroke:rgba(var(--p-ink-rgb),.34);stroke-width:1.3px;fill:none;stroke-dasharray:5 5}.g-loop path{stroke:var(--p-ac2);opacity:.75}.g-elabel text{font-family:var(--mono);letter-spacing:.04em;fill:var(--p-ink);text-anchor:start;font-size:16px}.g-cap{font-family:var(--mono);letter-spacing:.13em;text-transform:uppercase;fill:var(--p-faint);font-size:13px}.g-cap-mid{text-anchor:middle}.g-cap-end{text-anchor:end}.g-node rect{fill:rgba(var(--p-ink-rgb),.045);stroke:var(--p-line-hi);stroke-width:1px}.g-node .g-edge-lit{fill:var(--p-ac);stroke:none;filter:drop-shadow(0 0 6px var(--p-ac))}.g-node-out .g-edge-lit{fill:var(--p-ac2);filter:drop-shadow(0 0 7px var(--p-ac2))}.g-num{font-family:var(--mono);letter-spacing:.12em;fill:var(--p-ac2);font-size:13px}.g-name{font-family:var(--serif);fill:var(--p-ink);font-size:24px;font-weight:500}.g-name-sm{font-family:var(--serif);fill:var(--p-ink);text-anchor:middle;font-size:20px;font-weight:500}.g-live{fill:var(--p-ac2);filter:drop-shadow(0 0 6px var(--p-ac2))}.g-sink rect{fill:rgba(var(--p-ink-rgb),.022);stroke:rgba(var(--p-ink-rgb),.14);stroke-width:1px}.g-sink-v{font-family:var(--serif);fill:var(--p-soft);font-size:21px;font-weight:500}.g-sink-k{font-family:var(--mono);letter-spacing:.1em;text-transform:uppercase;fill:var(--p-faint);font-size:12px}.pk{fill:var(--p-ac2);opacity:.85;filter:drop-shadow(0 0 6px var(--p-ac2))}.pk-out{fill:#fff;opacity:1;filter:drop-shadow(0 0 8px var(--p-ac2))}.graph-legend{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:22px 0 0;padding:0;list-style:none;display:grid;position:relative}.graph-legend li{border-top:1px solid var(--p-line);flex-direction:column;gap:5px;padding-top:12px;display:flex}.gl-n{font-family:var(--mono);letter-spacing:.14em;color:var(--p-ac2);font-size:10px}.gl-t{font-family:var(--serif);color:var(--p-ink);font-size:15px;font-weight:500}.gl-d{color:var(--p-faint);font-size:12px;line-height:1.5}@media (width<=720px){.sys-panel{border-radius:14px;padding:20px 16px 18px}.graph-legend{grid-template-columns:1fr;gap:10px}.sp-meta{width:100%;margin-left:0}}@media (width>=1441px){.sys-panel,.panel-note{--sp-out:clamp(0px,(100vw - var(--rail) - 128px - 100%) / 2,180px);margin-left:calc(-1 * var(--sp-out))}.sys-panel{margin-right:calc(-1 * var(--sp-out))}}@media screen and (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.project-system .sys-panel{animation-range:entry entry 35%}.graph-wrap{view-timeline:--pipe block;container-type:inline-size}.graph{--k:max(.1cqw,.7px)}.graph .rv,.graph .rv-draw{animation-timing-function:linear;animation-fill-mode:both;animation-timeline:--pipe;animation-range:cover calc(var(--y) * var(--k) + 12vh) cover calc(var(--y) * var(--k) + 24vh)}.graph .rv{animation-name:stageIn}.graph .rv-draw{stroke-dasharray:1;animation-name:edgeDraw}}}
