:root{--ink: #07120f;--ink-2: #0c1a16;--ink-3: #12241e;--paper: #efeae0;--muted: #9aada6;--text: #e8efe9;--signal: #5ee4c3;--signal-2: #2a9d82;--copper: #d4a574;--line: rgba(94, 228, 195, .14);--line-strong: rgba(94, 228, 195, .32);--font-display: "Bricolage Grotesque", "Segoe UI", sans-serif;--font-body: "Figtree", "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--max: 1120px;--gutter: clamp(1.1rem, 4vw, 2.5rem);--radius: 2px;--nav-h: 4.25rem}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}html,body{margin:0;min-height:100%;background:var(--ink);color:var(--text);font-family:var(--font-body);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased}img,svg,canvas{max-width:100%;height:auto;display:block}a{color:var(--signal);text-decoration-thickness:1px;text-underline-offset:.22em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.skip{position:absolute;left:1rem;top:-4rem;z-index:80;background:var(--signal);color:var(--ink);padding:.5rem .8rem}.skip:focus{top:1rem}.noise{pointer-events:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E");mix-blend-mode:overlay}.nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;height:var(--nav-h);padding:0 var(--gutter);background:color-mix(in srgb,var(--ink) 78%,transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.nav.is-solid{background:color-mix(in srgb,var(--ink) 94%,transparent)}.nav-mark{display:inline-flex;align-items:center;gap:.55rem;color:var(--paper);font-family:var(--font-display);font-weight:800;letter-spacing:-.03em;text-decoration:none}.nav-signal{width:.55rem;height:.55rem;border-radius:50%;background:var(--signal);box-shadow:0 0 0 4px color-mix(in srgb,var(--signal) 22%,transparent);animation:pulse 2.8s ease-in-out infinite}.nav-links{display:flex;gap:1.15rem}.nav-links a{color:var(--muted);text-decoration:none;font-size:.86rem;letter-spacing:.02em}.nav-links a:hover,.nav-links a:focus-visible{color:var(--paper)}.nav-toggle{display:none;width:2.4rem;height:2.4rem;border:1px solid var(--line-strong);background:transparent;cursor:pointer}.nav-toggle span{display:block;height:1px;margin:6px;background:var(--paper)}.kicker{display:flex;align-items:center;gap:.7rem;margin:0 0 1rem;color:var(--copper);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.18em;text-transform:uppercase}.kicker span{color:var(--signal)}h1,h2,h3{font-family:var(--font-display);font-weight:800;letter-spacing:-.04em;line-height:1.08;color:var(--paper)}h1{font-size:clamp(2.2rem,6vw,4.4rem);max-width:14ch;margin:0 0 1.2rem}h1 em{font-style:normal;color:var(--signal)}h2{font-size:clamp(1.7rem,3.6vw,2.7rem);max-width:18ch;margin:0 0 .8rem}h3{font-size:1.35rem;margin:0 0 .55rem}.lede,.section-lead{max-width:46ch;color:var(--muted);margin:0}.hero{position:relative;min-height:calc(100vh - var(--nav-h));display:grid;align-items:center;padding:3rem var(--gutter) 4rem;overflow:hidden}.hero-stage{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.hero-canvas,.hero-fallback{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.hero-canvas{opacity:.72}.hero-fallback{opacity:.55}.hero.has-canvas .hero-fallback{opacity:0}.hero-fallback .pkt-a{offset-path:path("M860 160 Q880 240 920 312");animation:pkt-flow 2.8s linear infinite}.hero-fallback .pkt-b{offset-path:path("M860 360 Q740 430 640 500");animation:pkt-flow 3.4s linear infinite .4s}.hero-fallback .pkt-c{offset-path:path("M920 380 Q920 520 920 660");animation:pkt-flow 3.1s linear infinite .9s}.hero-fallback .pkt-d{offset-path:path("M1140 530 Q1100 590 1060 650");animation:pkt-flow 2.6s linear infinite 1.2s}@keyframes pkt-flow{0%{offset-distance:0%}to{offset-distance:100%}}.hero-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(ellipse at 70% 40%,#000 20%,transparent 72%);mask-image:radial-gradient(ellipse at 70% 40%,#000 20%,transparent 72%)}.hero-copy{position:relative;z-index:1;max-width:720px}.hero-name{margin:0 0 .4rem;font-family:var(--font-mono);font-size:.8rem;color:var(--signal);letter-spacing:.16em;text-transform:uppercase}.pillars{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:1.6rem 0 1.8rem}.pillars li,.chips li{border:1px solid var(--line-strong);padding:.28rem .62rem;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;color:var(--paper)}.hero-actions{display:flex;flex-wrap:wrap;gap:.75rem}.btn{display:inline-flex;align-items:center;justify-content:center;min-height:2.7rem;padding:0 1.1rem;border-radius:var(--radius);font-family:var(--font-mono);font-size:.78rem;letter-spacing:.06em;text-decoration:none;text-transform:uppercase}.btn-signal{background:var(--signal);color:var(--ink)}.btn-signal:hover{background:#7ff0d4}.btn-ghost{border:1px solid var(--line-strong);color:var(--paper)}.btn-ghost:hover{border-color:var(--copper);color:var(--copper)}.section{padding:5.5rem var(--gutter);content-visibility:auto;contain-intrinsic-size:1px 800px}.section-head{max-width:var(--max);margin:0 auto 3rem}.timeline,.skill-grid,.project-list,.pm-board,.support-flow{max-width:var(--max);margin:0 auto}.timeline{list-style:none;margin:0 auto;padding:0;position:relative}.timeline:before{content:"";position:absolute;left:31px;top:0;bottom:0;width:1px;background:linear-gradient(var(--signal),var(--copper));opacity:.35}.tl-item{display:grid;grid-template-columns:64px 1fr;gap:1.4rem;margin-bottom:1.6rem;align-items:start}.tl-icon{color:var(--muted);background:var(--ink-2);border:1px solid var(--line);padding:8px}.tl-card{background:var(--ink-2);border:1px solid var(--line);padding:1.25rem 1.35rem 1.3rem;transition:border-color .3s ease,transform .3s ease}.tl-item:hover .tl-card,.tl-item:focus-within .tl-card{border-color:var(--line-strong);transform:translateY(-2px)}.tl-meta{margin:0 0 .35rem;font-family:var(--font-mono);font-size:.72rem;color:var(--copper);letter-spacing:.12em;text-transform:uppercase}.tl-meta span{color:var(--signal)}.tl-card p{margin:0 0 .9rem;color:var(--muted)}.chips{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:0}.section-skills,.section-health{background:var(--ink-2);border-block:1px solid var(--line)}.sol-grid{max-width:var(--max);margin:0 auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.9rem}.sol-card{background:var(--ink);border:1px solid var(--line);padding:1.15rem 1.2rem 1.25rem;transition:border-color .25s ease,transform .25s ease}.sol-card:hover{border-color:var(--line-strong);transform:translateY(-3px)}.sol-code{margin:0 0 .45rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.16em;color:var(--signal)}.sol-card h3{font-size:1.2rem}.sol-card p{margin:0;color:var(--muted);font-size:.95rem}.chips-health{max-width:var(--max);margin:1.4rem auto 0}.skill-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.1rem}.skill-panel{background:var(--ink);border:1px solid var(--line);padding:1.2rem 1.25rem 1.4rem;transition:border-color .25s ease,transform .25s ease}.skill-panel:hover{border-color:var(--line-strong);transform:translateY(-3px)}.skill-art{color:var(--muted);margin-bottom:.9rem;width:100%;height:auto}.skill-panel p{color:var(--muted);margin:0 0 .9rem}.skill-panel ul{margin:0;padding:0;list-style:none}.skill-panel li{position:relative;padding:.35rem 0 .35rem 1rem;border-top:1px solid var(--line);font-size:.95rem}.skill-panel li:before{content:"";position:absolute;left:0;top:.85rem;width:.4rem;height:1px;background:var(--signal)}.draw{stroke-dasharray:240;stroke-dashoffset:240}.is-in .draw{animation:draw-line 1.4s ease forwards}.pulse-node{transform-origin:140px 80px}.is-in .pulse-node{animation:pulse 2.2s ease-in-out infinite}.skill-float{transform-origin:226px 80px}.is-in .skill-float{animation:float-soft 4.5s ease-in-out infinite}.project{display:grid;grid-template-columns:1.05fr .95fr;gap:0;margin-bottom:1.5rem;border:1px solid var(--line);background:var(--ink-2);overflow:hidden;transition:border-color .3s ease}.project:hover{border-color:var(--line-strong)}.project-alt{grid-template-columns:.95fr 1.05fr}.project-alt .project-art{order:2}.project-art svg{width:100%;height:auto;aspect-ratio:16 / 9;object-fit:cover}.project-body{padding:1.5rem 1.5rem 1.6rem}.project-type{margin:0 0 .4rem;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--signal)}.project-body p{color:var(--muted)}.project-role{font-size:.92rem}.project-role span{display:inline-block;margin-right:.45rem;color:var(--copper);font-family:var(--font-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase}.ring{transform-origin:320px 180px}.is-in .ring{animation:spin-slow 28s linear infinite}.wave{stroke-dasharray:8 10}.is-in .wave{animation:dash 6s linear infinite}.pm-board{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.85rem}.pm-col{border:1px solid var(--line);background:var(--ink-2);padding:1rem .9rem 1.1rem}.pm-col h3{font-size:.95rem;font-family:var(--font-mono);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--copper)}.pm-col ul{list-style:none;margin:0;padding:0}.pm-col li{margin-top:.55rem;padding:.55rem .65rem;background:var(--ink);border:1px solid var(--line);font-size:.92rem;opacity:0;transform:translateY(8px)}.is-in .pm-col:nth-child(1) li{animation:rise .5s ease forwards}.is-in .pm-col:nth-child(1) li:nth-child(1){animation-delay:.05s}.is-in .pm-col:nth-child(1) li:nth-child(2){animation-delay:.12s}.is-in .pm-col:nth-child(1) li:nth-child(3){animation-delay:.19s}.is-in .pm-col:nth-child(2) li{animation:rise .5s ease forwards}.is-in .pm-col:nth-child(2) li:nth-child(1){animation-delay:.16s}.is-in .pm-col:nth-child(2) li:nth-child(2){animation-delay:.23s}.is-in .pm-col:nth-child(2) li:nth-child(3){animation-delay:.3s}.is-in .pm-col:nth-child(3) li{animation:rise .5s ease forwards}.is-in .pm-col:nth-child(3) li:nth-child(1){animation-delay:.27s}.is-in .pm-col:nth-child(3) li:nth-child(2){animation-delay:.34s}.is-in .pm-col:nth-child(3) li:nth-child(3){animation-delay:.41s}.is-in .pm-col:nth-child(4) li{animation:rise .5s ease forwards}.is-in .pm-col:nth-child(4) li:nth-child(1){animation-delay:.38s}.is-in .pm-col:nth-child(4) li:nth-child(2){animation-delay:.45s}.is-in .pm-col:nth-child(4) li:nth-child(3){animation-delay:.52s}.pm-flow{display:none}.pm-note{max-width:var(--max);margin:1.4rem auto 0;color:var(--muted);font-size:.95rem}.support-flow{list-style:none;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.7rem;padding:0;counter-reset:none}.support-flow li{position:relative;padding:1.1rem 1rem 1.2rem;background:var(--ink-2);border:1px solid var(--line)}.support-flow li:after{content:"";position:absolute;right:-.55rem;top:50%;width:.7rem;height:1px;background:var(--signal)}.support-flow li:last-child:after{display:none}.sf-index{display:block;margin-bottom:.55rem;font-family:var(--font-mono);font-size:.7rem;color:var(--signal);letter-spacing:.14em}.support-flow strong{display:block;font-family:var(--font-display);font-size:1.05rem;color:var(--paper)}.support-flow span:last-child{display:block;margin-top:.35rem;color:var(--muted);font-size:.88rem}.section-end{text-align:left;border-top:1px solid var(--line)}.section-end .hero-actions{max-width:var(--max);margin:0 auto}.site-foot{padding:1.4rem var(--gutter) 2.2rem;color:var(--muted);font-size:.78rem;font-family:var(--font-mono)}.site-foot p{margin:.2rem 0}[data-reveal]{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s ease}[data-reveal].is-in{opacity:1;transform:none}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.86)}}@keyframes draw-line{to{stroke-dashoffset:0}}@keyframes rise{to{opacity:1;transform:none}}@keyframes spin-slow{to{transform:rotate(360deg)}}@keyframes dash{to{stroke-dashoffset:-120}}@keyframes float-soft{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@media (hover: hover) and (pointer: fine){.project-art svg{transition:transform .6s ease}.project:hover .project-art svg{transform:scale(1.03)}}@media (max-width: 1100px){.sol-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 900px){.skill-grid,.sol-grid,.project,.project-alt,.pm-board,.support-flow{grid-template-columns:1fr}.project-alt .project-art{order:0}.support-flow li:after{right:auto;left:1.2rem;top:auto;bottom:-.55rem;width:1px;height:.7rem}.nav-toggle{display:block}.nav-links{display:none;position:absolute;top:var(--nav-h);left:0;right:0;flex-direction:column;padding:1rem var(--gutter) 1.2rem;background:var(--ink);border-bottom:1px solid var(--line)}.nav.is-open .nav-links{display:flex}}@media (max-width: 768px){.hero{display:flex;flex-direction:column;min-height:auto;padding-top:.5rem;padding-bottom:1.5rem}.hero-stage{order:0;position:relative;inset:auto;height:min(100vw,420px);margin:0 0 .75rem}.hero-canvas,.hero-fallback{opacity:1;object-fit:fill;object-position:center;max-width:none;width:100%;height:100%!important;left:0;right:0}.hero-copy{order:1;z-index:2;max-width:none}.hero.has-canvas .hero-fallback{opacity:0}.hero-grid{-webkit-mask-image:radial-gradient(ellipse at 50% 45%,#000 28%,transparent 78%);mask-image:radial-gradient(ellipse at 50% 45%,#000 28%,transparent 78%)}}@media (max-width: 640px){body{font-size:16px}.tl-item{grid-template-columns:48px 1fr}.timeline:before{left:23px}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}[data-reveal]{opacity:1;transform:none}.hero-canvas,.hero-fallback .pkt{display:none}.draw{stroke-dashoffset:0}.pm-col li{opacity:1;transform:none}.nav-signal{animation:none}}
