.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}:root{--background:#050505;--surface:#0b0b0b;--foreground:#f4f4ef;--muted:#a7a7a0;--line:#666662;--faint-line:#242424;--focus:#fff;--page-gutter:clamp(1rem, 3vw, 5rem);--content-max:160rem;--header-height:clamp(4rem, 3vw, 5rem);--section-space:clamp(3.5rem, 7vw, 9rem);--grid-size:clamp(2.5rem, 4vw, 5rem);color-scheme:dark;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + 1rem)}*{box-sizing:border-box}html,body{background:var(--background);min-width:0;color:var(--foreground);margin:0}body{font-family:Space Grotesk,Arial,sans-serif;font-size:clamp(1rem,.95rem + .2vw,1.125rem);line-height:1.6}a{color:inherit;text-decoration:none}a,button,input,select,textarea,summary,#main-content:focus-visible{outline-offset:4px;outline:2px solid #0000}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible,#main-content:focus-visible{outline-color:var(--focus)}p{max-width:68ch;color:var(--muted);margin:0}h1,h2,h3{text-wrap:balance;overflow-wrap:break-word;margin:0;font-weight:500;line-height:1.05}h1{letter-spacing:-.07em;font-size:clamp(3rem,2rem + 5vw,8.5rem)}h2{letter-spacing:-.04em;font-size:clamp(1.4rem,2.5vw,2.25rem)}h3{letter-spacing:-.04em;font-size:clamp(1.25rem,2vw,1.75rem)}ul,ol{margin:0;padding:0;list-style:none}.technical-label,.eyebrow{letter-spacing:.06em;font-family:Space Mono,ui-monospace,SFMono-Regular,Consolas,monospace;font-size:clamp(.65rem,.61rem + .15vw,.78rem);line-height:1.4}.skip-link{z-index:5;background:var(--foreground);min-block-size:44px;color:var(--background);padding:.65rem 1rem;position:fixed;top:.75rem;left:50%;transform:translate(-50%,-200%)}.skip-link:focus{transform:translate(-50%)}.site-header{z-index:4;block-size:var(--header-height);border-bottom:1px solid var(--line);background:#050505f0;position:sticky;top:0}.header-inner,main>*,.site-footer{inline-size:min(calc(100% - var(--page-gutter) - var(--page-gutter)), var(--content-max));margin-inline:auto}.header-inner{justify-content:space-between;align-items:center;gap:.5rem;block-size:100%;display:flex}.brand,nav{align-items:center;min-inline-size:0;display:flex}.brand{letter-spacing:.08em;white-space:nowrap;min-block-size:44px;font-family:Space Mono,ui-monospace,monospace;font-size:.75rem}nav{justify-content:flex-end}nav a{letter-spacing:.04em;white-space:nowrap;place-items:center;min-block-size:44px;padding-inline:clamp(.25rem,1vw,.75rem);font-family:Space Mono,ui-monospace,monospace;font-size:clamp(.62rem,1.5vw,.72rem);display:grid}nav a[aria-current=location]{color:var(--foreground);text-underline-offset:.4em;text-decoration:underline}.brand-short,.nav-short{display:none}main{background-image:linear-gradient(to right, transparent calc(100% - 1px), var(--faint-line) calc(100% - 1px)), linear-gradient(to bottom, transparent calc(100% - 1px), var(--faint-line) calc(100% - 1px));background-size:var(--grid-size) var(--grid-size)}:is(.header-inner,.hero,.project-grid,.card-meta,.project-detail,.timeline-list,.capability-grid,.credential-grid,.site-footer,.project-topline,.project-header,.project-navigation)>*{min-inline-size:0}.hero{min-block-size:calc(100svh - var(--header-height));grid-template-columns:1fr;align-items:center;gap:clamp(2rem,5vw,6rem);padding-block:clamp(3rem,8vw,8rem);display:grid}.hero-copy{gap:clamp(1rem,2vw,1.5rem);display:grid}.hero-role{color:var(--foreground);font-size:clamp(1.25rem,2.5vw,2rem)}.button-link{border:1px solid var(--line);letter-spacing:.04em;place-items:center;min-block-size:44px;inline-size:fit-content;min-inline-size:44px;margin-top:.75rem;padding:.7rem 1rem;font-family:Space Mono,ui-monospace,monospace;font-size:.72rem;display:inline-grid}.button-link:hover{border-color:var(--foreground)}.hero-visual{min-inline-size:0}.hero-schematic{block-size:auto;inline-size:100%;max-inline-size:100%;stroke:var(--foreground);fill:none;stroke-width:2px;display:block;overflow:visible}.schematic-edges path{stroke-dasharray:2400;stroke-dashoffset:2400px;animation:1.2s ease-out forwards draw-edges}.hero-schematic circle,.hero-schematic rect,.hero-schematic [data-depth="5"] path{transform-box:fill-box;transform-origin:50%;animation:.6s ease-out forwards show-node}.hero-label{fill:var(--muted);stroke:none;letter-spacing:.12em;font-family:Space Mono,ui-monospace,monospace;font-size:24px}.hero-node{fill:var(--foreground);stroke:none}.content-section{padding-block:var(--section-space);scroll-margin-top:calc(var(--header-height) + 1rem)}.content-section>h2{margin-bottom:clamp(2rem,4vw,3.5rem)}.project-grid{grid-template-columns:1fr;gap:1rem;display:grid}.project-card{border:1px solid var(--line);background:var(--surface);clip-path:polygon(0 0,calc(100% - 1.25rem) 0,100% 1.25rem,100% 100%,0 100%);gap:1rem;min-inline-size:0;padding:clamp(1rem,3vw,2rem);transition:border-color .25s;display:grid;position:relative}.project-card:after{content:"";pointer-events:none;block-size:1.25rem;inline-size:1.25rem;color:var(--line);background:linear-gradient(to bottom left,#0000 50%,currentColor 50% calc(50% + 1px),#0000 calc(50% + 1px));transition:color .25s;position:absolute;inset-block-start:0;inset-inline-end:0}.project-card h3{transition:transform .25s}.project-card:focus-visible{border-color:var(--foreground)}.project-card:focus-visible:after{color:var(--foreground)}.project-card:focus-visible h3{transform:translate(4px)}.project-card:focus-visible .glyph-flow{animation:.9s linear infinite glyph-flow}.project-card:focus-visible .glyph-pulse{animation:1.2s ease-in-out infinite glyph-pulse}.card-meta,.project-detail,.timeline-list .technical-label,.credential-card .technical-label{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}.project-glyph-frame{border-block:1px solid var(--faint-line)}.project-glyph{fill:none;stroke-width:1.5px;stroke-linecap:square;stroke-linejoin:miter;block-size:auto;inline-size:100%;max-inline-size:100%;display:block}.glyph-structure{stroke:var(--line)}.glyph-accent,.glyph-flow{stroke:var(--foreground);stroke-width:2px}.glyph-node{fill:var(--foreground);stroke:none}.glyph-structure,.glyph-accent,.glyph-flow{vector-effect:non-scaling-stroke}.glyph-flow{stroke-dasharray:5 9;opacity:.75}.glyph-pulse{opacity:.75;transform-box:fill-box;transform-origin:50%}.project-detail{border-top:1px solid var(--faint-line);align-items:end;padding-top:1rem}.project-detail>div{gap:.25rem;display:grid}.project-detail strong{font-size:clamp(1.4rem,1.2rem + .6vw,2rem);font-weight:500}.stack-list{color:var(--muted);flex-wrap:wrap;justify-content:end;gap:.4rem;font-family:Space Mono,ui-monospace,monospace;font-size:.68rem;display:flex}.stack-list li+li:before{content:"/";padding-right:.4rem}.timeline-list{--timeline-gutter:clamp(2.5rem, 5vw, 5rem);--timeline-point:clamp(1.5rem, 3vw, 2rem);grid-template-columns:1fr;gap:1rem;padding-inline-start:var(--timeline-gutter);display:grid;position:relative}.timeline-list>li{border:1px solid var(--line);background:var(--surface);padding:clamp(1rem,3vw,2rem);position:relative}.timeline-list>li:before{content:"";inline-size:calc(var(--timeline-gutter) - .3125rem);border-block-start:1px solid var(--line);pointer-events:none;position:absolute;inset-block-start:var(--timeline-point);inset-inline-start:calc(.3125rem - var(--timeline-gutter))}.timeline-list>li:not(:last-child):before{background:linear-gradient(var(--line), var(--line)) 0 0 / 1px 100% no-repeat;block-size:calc(100% + 1rem)}.timeline-list>li:after{content:"";block-size:.625rem;inline-size:.625rem;border:1px solid var(--foreground);background:var(--background);pointer-events:none;position:absolute;inset-block-start:calc(var(--timeline-point) - .3125rem);inset-inline-start:calc(-1 * var(--timeline-gutter))}.timeline-list h3{margin-block:1rem}.capability-grid,.credential-grid{grid-template-columns:1fr;gap:1rem;display:grid}.capability-grid{margin-top:1rem}.capability-group,.credential-card{border:1px solid var(--line);background:var(--surface);gap:1rem;padding:clamp(1rem,3vw,2rem);display:grid}.credential-card{align-content:start;block-size:100%;transition:border-color .25s}.capability-group li{color:var(--muted)}.capability-group li+li{margin-top:.5rem}.credential-items,.credential-disclosure{display:contents}.credential-items>li{min-inline-size:0}.credential-summary{cursor:pointer;order:1;grid-column:1/-1;margin-top:0;list-style:none}.credential-summary::-webkit-details-marker{display:none}.credential-summary-open,.credential-disclosure[open] .credential-summary-closed{display:none}.credential-disclosure[open] .credential-summary-open{display:inline}.credential-disclosure::details-content{transition:display .25s allow-discrete;display:none}.credential-disclosure[open]::details-content{display:contents}.credential-disclosure .credential-items>li{opacity:0;transition:opacity .25s,transform .25s;animation:.25s reverse credential-item;transform:translateY(-.5rem)}.credential-disclosure[open] .credential-items>li{opacity:1;animation:.25s credential-item;transform:translateY(0)}@starting-style{.credential-disclosure[open] .credential-items>li{opacity:0;transform:translateY(-.5rem)}}@keyframes credential-item{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}.profile-subheading{margin-block:clamp(2rem,4vw,3.5rem) 1rem}.contact-links{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.contact-links .button-link{margin-top:0}.contact-section{min-block-size:40svh}.site-footer{border-top:1px solid var(--line);color:var(--muted);letter-spacing:.04em;flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-block:2rem;font-family:Space Mono,ui-monospace,monospace;font-size:.7rem;display:flex}.project-layer,.not-found{padding-block:clamp(2rem,6vw,6rem)}.project-layer{min-block-size:calc(100svh - var(--header-height));padding-inline:min(var(--page-gutter), 4rem);border-inline:1px solid var(--line);background:var(--surface)}.project-topline,.project-navigation{flex-wrap:wrap;justify-content:space-between;gap:1rem;display:flex}.project-topline{align-items:center;margin-bottom:clamp(2rem,5vw,5rem)}.close-link,.project-navigation a,.return-link{border:1px solid var(--line);letter-spacing:.04em;place-items:center;min-block-size:44px;min-inline-size:44px;padding:.65rem 1rem;font-family:Space Mono,ui-monospace,monospace;font-size:.7rem;display:inline-grid}.project-navigation a{white-space:normal;overflow-wrap:anywhere;text-align:center;flex:0 auto;display:block}.project-header .glyph-flow{animation:.9s linear infinite glyph-flow}.project-header .glyph-pulse{animation:1.2s ease-in-out infinite glyph-pulse}.project-header{grid-template-columns:1fr;align-items:center;gap:clamp(2rem,5vw,6rem);display:grid}.project-header .technical-label{color:var(--muted);flex-wrap:wrap;gap:1rem;margin-bottom:1rem;display:flex}.project-summary{margin-top:1.5rem;font-size:clamp(1rem,.9rem + .35vw,1.25rem)}.project-metric{gap:.25rem;margin-top:1.5rem;display:grid}.project-metric strong{font-size:clamp(2rem,4vw,3rem);font-weight:500}.project-stack{color:var(--muted);flex-wrap:wrap;gap:.5rem;margin-top:1rem;font-family:Space Mono,ui-monospace,monospace;font-size:.72rem;display:flex}.project-stack li{border:1px solid var(--line);padding:.3rem .5rem}.project-body{max-inline-size:68ch;margin-top:clamp(3rem,8vw,7rem)}.project-body h2{margin-top:2.5rem;font-size:1.4rem}.project-body p{margin-top:.75rem}.project-navigation{margin-top:clamp(3rem,8vw,7rem)}.not-found{min-block-size:calc(100svh - var(--header-height));align-content:center;gap:1.5rem;display:grid}.return-link{inline-size:fit-content}@keyframes draw-edges{to{stroke-dashoffset:0}}@keyframes show-node{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes glyph-flow{to{stroke-dashoffset:-28px}}@keyframes glyph-pulse{0%,to{opacity:.75;transform:scale(1)}50%{opacity:.35;transform:scale(.78)}}@supports (animation-timeline:view()){.content-section{animation:linear both section-enter view();animation-range:entry entry 30%}@keyframes section-enter{0%{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:translateY(0)}}}@media (hover:hover) and (pointer:fine){.project-card:hover{border-color:var(--foreground)}.project-card:hover:after{color:var(--foreground)}.project-card:hover h3{transform:translate(4px)}.project-card:hover .glyph-flow{animation:.9s linear infinite glyph-flow}.project-card:hover .glyph-pulse{animation:1.2s ease-in-out infinite glyph-pulse}.credential-card:hover{border-color:var(--foreground)}}@media (width>=48rem){.project-grid,.capability-grid,.credential-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.hero,.project-header{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}.hero-visual{justify-self:center;inline-size:min(100%,56rem)}.project-grid,.capability-grid,.credential-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width>=90rem){.project-grid,.credential-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media (width>=120rem){.project-grid,.credential-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (width<=30rem){.brand-full,.nav-full{display:none}.brand-short,.nav-short{display:inline}nav{flex:1}nav a{flex:1 1 0;padding-inline:0;font-size:.61rem}.stack-list{justify-content:start}.project-topline,.project-navigation{flex-direction:column;align-items:stretch}.project-topline>*,.project-navigation>*{inline-size:100%}}@media (width<=19.999rem){:root{--header-height:7rem}.header-inner{flex-wrap:wrap;align-content:center}.brand,nav{flex-basis:100%}nav{grid-template-columns:repeat(5,minmax(0,1fr));display:grid}}@media (height<=40rem) and (orientation:landscape){.hero{min-block-size:auto;padding-block:2rem}}@media (prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}
