/*
! tailwindcss v3.2.6 | MIT License | https://tailwindcss.com
*/*,:after,:before{border:0 solid #e5e7eb;box-sizing:border-box}:after,:before{--tw-content:""}html{-webkit-text-size-adjust:100%;-webkit-font-feature-settings:normal;font-feature-settings:normal;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5;tab-size:4}body{line-height:inherit}hr{border-top-width:1px;color:inherit;height:0}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{border-collapse:collapse;border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{color:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}@font-face{font-display:swap;font-family:Futura Local;font-style:normal;font-weight:400 700;src:local("Futura"),local("Futura LT"),url(/static/media/FuturaLT.c040c21acc6871b7e540.woff2) format("woff2"),url(/static/media/FuturaLT.c7143ff2162a1e1bcc82.woff) format("woff")}html{background:#fff;min-height:100%;overscroll-behavior:none;scroll-behavior:smooth}*{box-sizing:border-box}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#141312;font-family:Futura Local,Futura,Trebuchet MS,Arial,sans-serif;margin:0;min-height:100%;overscroll-behavior:none}#root,body{background:#fff}#root{min-height:100vh}a,button,input,textarea{font:inherit}img{display:block;max-width:100%}::selection{background:rgba(255,90,31,.22);color:#141312}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::-webkit-backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.block{display:block}.hidden{display:none}.blur{--tw-blur:blur(8px)}.blur,.filter{-webkit-filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--bg:#fff;--ink:#000;--ink-soft:rgba(0,0,0,.64);--ink-faint:rgba(0,0,0,.44);--line:rgba(0,0,0,.14);--line-strong:rgba(0,0,0,.32);--accent:#ff5a1f;--accent-soft:rgba(255,90,31,.12);--term-bg:#121110;--term-line:hsla(0,0%,100%,.14);--term-text:hsla(48,20%,95%,.94);--term-muted:hsla(48,20%,95%,.5);--font-mono:ui-monospace,"SF Mono","JetBrains Mono","Fira Code",Menlo,Consolas,"Liberation Mono",monospace}.portfolio-shell{background:#fff;background:var(--bg);color:#000;color:var(--ink);min-height:100vh}.portfolio-shell,.site-header,main{position:relative}.site-header{align-items:center;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);background:hsla(0,0%,100%,.92);border-bottom:1px solid rgba(0,0,0,.14);border-bottom:1px solid var(--line);display:flex;gap:1.5rem;justify-content:space-between;left:0;padding:1.3rem min(2.5rem,4vw);position:fixed;right:0;top:0;z-index:100}main{z-index:1}.brand-mark,.contact-inline a,.contact-links a,.footer-links a,.resume-link,.site-nav a,.text-link{text-decoration:none}.brand-mark{color:#000;color:var(--ink);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.94rem;font-weight:600}.brand-at{color:#ff5a1f;color:var(--accent)}.site-nav{display:flex;flex-wrap:wrap;gap:1.75rem;justify-content:center}.resume-link,.site-nav a{color:rgba(0,0,0,.64);color:var(--ink-soft);font-size:.85rem;font-weight:500;letter-spacing:.02em;position:relative;transition:color .18s ease}.contact-inline a:focus-visible,.contact-inline a:hover,.contact-links a:focus-visible,.contact-links a:hover,.resume-link:focus-visible,.resume-link:hover,.site-nav a:focus-visible,.site-nav a:hover{color:#ff5a1f;color:var(--accent)}.resume-link{align-items:center;color:#000;color:var(--ink);display:inline-flex;font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.8rem;font-weight:600;gap:.5rem}.site-nav a:after{background:#ff5a1f;background:var(--accent);bottom:-.4rem;content:"";height:1px;left:0;opacity:0;position:absolute;right:0;-webkit-transform:scaleX(.4);transform:scaleX(.4);transition:opacity .18s ease,-webkit-transform .18s ease;transition:opacity .18s ease,transform .18s ease;transition:opacity .18s ease,transform .18s ease,-webkit-transform .18s ease}.site-nav a.is-active{color:#000;color:var(--ink);font-weight:700}.site-nav a.is-active:after,.site-nav a:focus-visible:after,.site-nav a:hover:after{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}.hamburger-button{background:transparent;border:0;cursor:pointer;display:none;height:2.75rem;padding:0;position:relative;width:2.75rem;z-index:110}.hamburger-button span{background:#000;background:var(--ink);display:block;height:1px;margin:.32rem auto;transition:opacity .26s ease,-webkit-transform .26s ease;transition:opacity .26s ease,transform .26s ease;transition:opacity .26s ease,transform .26s ease,-webkit-transform .26s ease;width:1.6rem}.hamburger-button.is-open span:first-child{-webkit-transform:translateY(6px) rotate(45deg);transform:translateY(6px) rotate(45deg)}.hamburger-button.is-open span:nth-child(2){opacity:0}.hamburger-button.is-open span:last-child{-webkit-transform:translateY(-6px) rotate(-45deg);transform:translateY(-6px) rotate(-45deg)}.mobile-menu{background:#fff;background:var(--bg);display:none;inset:0;min-height:100vh;padding:7.5rem 1.75rem 2rem;pointer-events:none;position:fixed;-webkit-transform:translateY(-100%);transform:translateY(-100%);transition:-webkit-transform .5s ease;transition:transform .5s ease;transition:transform .5s ease,-webkit-transform .5s ease;z-index:90}.mobile-menu.is-open{pointer-events:auto;-webkit-transform:translateY(0);transform:translateY(0)}.mobile-menu-inner{display:flex;flex-direction:column;gap:1.5rem;justify-content:center;min-height:calc(100vh - 9.5rem)}.mobile-menu a{color:#000;color:var(--ink);text-decoration:none}.mobile-menu-inner>a:not(.mobile-resume-link){color:#000;color:var(--ink);font-size:2.6rem;font-weight:800;line-height:.98;text-transform:uppercase;transition:color .22s ease}.mobile-menu-inner>a.is-active,.mobile-menu-inner>a:focus-visible,.mobile-menu-inner>a:hover{color:#ff5a1f;color:var(--accent)}.mobile-menu-divider{background:rgba(0,0,0,.14);background:var(--line);height:1px;margin:.75rem 0;width:100%}.mobile-resume-link{align-items:center;background:#000;background:var(--ink);color:#fff!important;color:var(--bg)!important;display:inline-flex;font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.85rem;font-weight:700;gap:.7rem;justify-content:center;padding:1.15rem;width:100%}main{margin:0 auto;padding:6.5rem 0 4rem;width:min(1200px,calc(100% - 3rem))}section[id]{scroll-margin-top:5.6rem}.hero-section{grid-gap:3rem;align-items:center;border-bottom:1px solid rgba(0,0,0,.14);border-bottom:1px solid var(--line);display:grid;gap:3rem;grid-template-columns:1.2fr .9fr;min-height:calc(100vh - 8rem);padding:1.5rem 0 3rem}.eyebrow{color:#ff5a1f;color:var(--accent);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.8rem;font-weight:600;letter-spacing:.02em;margin:0 0 1.1rem}.hero-copy h1{font-size:clamp(2.9rem,6.4vw,4.6rem);font-weight:700;letter-spacing:-.01em;line-height:1}.hero-copy h1,.section-heading h2{margin:0}.hero-copy h1,.hero-titleline,.section-heading h2{color:#000;color:var(--ink);font-family:Futura Local,Futura,Trebuchet MS,Arial,sans-serif}.hero-titleline{font-size:1.4rem;font-weight:500;line-height:1.3;margin:1.4rem 0 0;max-width:620px}.hero-text{color:rgba(0,0,0,.64);color:var(--ink-soft);font-size:.98rem;line-height:1.8;margin:1.4rem 0 0;max-width:50ch}.hero-actions{align-items:center;display:flex;flex-wrap:wrap;gap:1.6rem;margin:2rem 0}.primary-button,.text-link{align-items:center;display:inline-flex;font-size:.92rem;font-weight:600;gap:.55rem;text-decoration:none;transition:background .18s ease,color .18s ease,border-color .18s ease,-webkit-transform .18s ease;transition:transform .18s ease,background .18s ease,color .18s ease,border-color .18s ease;transition:transform .18s ease,background .18s ease,color .18s ease,border-color .18s ease,-webkit-transform .18s ease}.primary-button{background:#000;background:var(--ink);border:1px solid #000;border:1px solid var(--ink);border-radius:0;color:#fff;color:var(--bg);cursor:pointer;font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);padding:.95rem 1.5rem}.primary-button .field-prompt{color:#ff5a1f;color:var(--accent)}.primary-button:focus-visible,.primary-button:hover{background:#ff5a1f;background:var(--accent);border-color:#ff5a1f;border-color:var(--accent);color:#fff;color:var(--bg)}.primary-button:focus-visible .field-prompt,.primary-button:hover .field-prompt{color:#fff;color:var(--bg)}.primary-button:disabled{background:#000;background:var(--ink);border-color:#000;border-color:var(--ink);cursor:not-allowed;opacity:.5}.text-link{border-bottom:1px solid #000;border-bottom:1px solid var(--ink);color:#000;color:var(--ink);padding-bottom:.2rem}.text-link:focus-visible,.text-link:hover{border-color:#ff5a1f;border-color:var(--accent);color:#ff5a1f;color:var(--accent)}.contact-inline{color:rgba(0,0,0,.64);color:var(--ink-soft);display:flex;flex-wrap:wrap;gap:.9rem 1.5rem;list-style:none;margin:0;padding:0}.contact-inline li{align-items:center;display:inline-flex;gap:.55rem}.contact-inline a{color:inherit}.terminal-window{background:#121110;background:var(--term-bg);border:1px solid #000;box-shadow:10px 10px 0 #000;box-shadow:10px 10px 0 var(--ink);transition:box-shadow .28s ease,-webkit-transform .28s ease;transition:transform .28s ease,box-shadow .28s ease;transition:transform .28s ease,box-shadow .28s ease,-webkit-transform .28s ease}.terminal-window:hover{box-shadow:15px 15px 0 #000;box-shadow:15px 15px 0 var(--ink);-webkit-transform:translate(-4px,-4px);transform:translate(-4px,-4px)}.terminal-bar{align-items:center;border-bottom:1px solid hsla(0,0%,100%,.14);border-bottom:1px solid var(--term-line);display:flex;gap:.5rem;padding:.7rem .9rem}.terminal-dot{background:hsla(48,20%,95%,.5);background:var(--term-muted);border-radius:50%;height:.55rem;width:.55rem}.terminal-title{color:hsla(48,20%,95%,.5);color:var(--term-muted);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.74rem;margin-left:.6rem}.terminal-body{min-height:220px;padding:1.4rem 1.1rem}.terminal-line+.terminal-line{margin-top:.9rem}.terminal-output,.terminal-prompt{font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.86rem;line-height:1.6;margin:0;word-break:break-word}.terminal-prompt{color:hsla(48,20%,95%,.94);color:var(--term-text)}.terminal-symbol{color:#ff5a1f;color:var(--accent);margin-right:.5rem}.terminal-path{margin-right:.5rem}.terminal-output,.terminal-path{color:hsla(48,20%,95%,.5);color:var(--term-muted)}.terminal-output{margin-top:.35rem;padding-left:1.6rem}.terminal-prompt--idle{margin-top:.9rem}.cursor-blink{-webkit-animation:blink .9s steps(1) infinite;animation:blink .9s steps(1) infinite;background:#ff5a1f;background:var(--accent);display:inline-block;height:1em;margin-left:.15em;vertical-align:-.15em;width:.5em}.content-section{border-bottom:1px solid rgba(0,0,0,.14);border-bottom:1px solid var(--line);padding:3.5rem 0}.content-section:last-of-type{border-bottom:none}.reveal-item{opacity:0;-webkit-transform:translateY(20px);transform:translateY(20px);transition:opacity .62s ease var(--reveal-delay),-webkit-transform .62s ease var(--reveal-delay);transition:opacity .62s ease var(--reveal-delay),transform .62s ease var(--reveal-delay);transition:opacity .62s ease var(--reveal-delay),transform .62s ease var(--reveal-delay),-webkit-transform .62s ease var(--reveal-delay)}.reveal-item.is-visible{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}.about-layout,.contact-layout{grid-gap:2.5rem;display:grid;gap:2.5rem}.about-layout{align-items:start;grid-template-columns:.9fr 1.1fr}.contact-layout{grid-template-columns:repeat(2,minmax(0,1fr))}.section-heading{margin-bottom:2rem}.section-heading h2{font-size:2.1rem;line-height:1.16;max-width:720px}.prose-block p{color:rgba(0,0,0,.64);color:var(--ink-soft);font-size:1.02rem;line-height:1.85}.prose-block p+p{margin-top:1.1rem}.capability-list{border-top:1px solid rgba(0,0,0,.14);border-top:1px solid var(--line);display:flex;flex-direction:column}.capability-row{grid-gap:1rem;align-items:start;border-bottom:1px solid rgba(0,0,0,.14);border-bottom:1px solid var(--line);display:grid;gap:1rem;grid-template-columns:2.2rem 1.5rem 1fr;padding:1.3rem 0}.capability-index{color:#ff5a1f;color:var(--accent);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.8rem;font-weight:700}.capability-row svg{color:#000;color:var(--ink);height:1.05rem;margin-top:.2rem;width:1.05rem}.capability-row h3{color:#000;color:var(--ink);font-family:Futura Local,Futura,Trebuchet MS,Arial,sans-serif;font-size:1.05rem;margin:0 0 .4rem}.capability-row p{color:rgba(0,0,0,.64);color:var(--ink-soft);font-size:.92rem;line-height:1.6;margin:0}.commit-log{padding-left:2rem;position:relative}.commit-log:before{background:rgba(0,0,0,.32);background:var(--line-strong);bottom:.5rem;content:"";left:.28rem;position:absolute;top:.5rem;width:1px}.commit-row{padding-bottom:2.6rem;position:relative}.commit-row:last-child{padding-bottom:0}.commit-row:before{background:#ff5a1f;background:var(--accent);border-radius:50%;box-shadow:0 0 0 4px #fff;box-shadow:0 0 0 4px var(--bg);content:"";height:.55rem;left:-2rem;position:absolute;top:.4rem;width:.55rem}.commit-row--current:before{-webkit-animation:commitDotBlink 1.6s ease-in-out infinite;animation:commitDotBlink 1.6s ease-in-out infinite}.commit-meta{align-items:center;display:flex;gap:.85rem;margin-bottom:.6rem}.commit-hash{background:#000;background:var(--ink);color:#fff;color:var(--bg);padding:.15rem .5rem}.commit-current,.commit-hash{font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.02em}.commit-current{align-items:center;color:#ff5a1f;color:var(--accent);display:inline-flex}.commit-date{color:rgba(0,0,0,.44);color:var(--ink-faint);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.78rem}.commit-row h3{color:#000;color:var(--ink);font-family:Futura Local,Futura,Trebuchet MS,Arial,sans-serif;font-size:1.2rem;margin:0}.commit-company{color:rgba(0,0,0,.64);color:var(--ink-soft);font-weight:500}.diff-list{list-style:none;margin:.9rem 0 0;padding:0}.diff-list li{color:rgba(0,0,0,.64);color:var(--ink-soft);line-height:1.7;margin-top:.55rem;padding-left:1.3rem;position:relative}.diff-plus{color:#ff5a1f;color:var(--accent);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-weight:700;left:0;position:absolute}.repo-grid{grid-gap:1.25rem;display:grid;gap:1.25rem;grid-template-columns:repeat(2,minmax(0,1fr))}.repo-card{border:1px solid rgba(0,0,0,.14);border:1px solid var(--line);padding:1.6rem;transition:border-color .22s ease,-webkit-transform .22s ease;transition:border-color .22s ease,transform .22s ease;transition:border-color .22s ease,transform .22s ease,-webkit-transform .22s ease}.repo-card:hover{border-color:#000;border-color:var(--ink);-webkit-transform:translateY(-4px);transform:translateY(-4px)}.repo-path{color:rgba(0,0,0,.44);color:var(--ink-faint);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.76rem;margin:0 0 .7rem}.repo-card h3{color:#000;color:var(--ink);font-family:Futura Local,Futura,Trebuchet MS,Arial,sans-serif;font-size:1.2rem;margin:0}.repo-summary{color:rgba(0,0,0,.64);color:var(--ink-soft);line-height:1.7;margin:.75rem 0 0}.repo-meta{align-items:center;border-top:1px solid rgba(0,0,0,.14);border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:1.1rem;margin-top:1.2rem;padding-top:1rem}.repo-lang{align-items:center;color:rgba(0,0,0,.64);color:var(--ink-soft);display:inline-flex;font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.78rem;gap:.4rem}.repo-dot{background:#ff5a1f;background:var(--accent);border-radius:50%;height:.5rem;width:.5rem}.tag-list{display:flex;flex-wrap:wrap;gap:.3rem .7rem;list-style:none;margin:0;padding:0}.tag-list li{color:rgba(0,0,0,.44);color:var(--ink-faint);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.74rem}.repo-card:hover .tag-list li{color:rgba(0,0,0,.64);color:var(--ink-soft)}.code-block{background:#121110;background:var(--term-bg);border:1px solid #000;box-shadow:10px 10px 0 #000;box-shadow:10px 10px 0 var(--ink);overflow-x:auto;transition:box-shadow .28s ease,-webkit-transform .28s ease;transition:transform .28s ease,box-shadow .28s ease;transition:transform .28s ease,box-shadow .28s ease,-webkit-transform .28s ease}.code-block:hover{box-shadow:15px 15px 0 #000;box-shadow:15px 15px 0 var(--ink);-webkit-transform:translate(-4px,-4px);transform:translate(-4px,-4px)}.code-block-head{align-items:center;border-bottom:1px solid hsla(0,0%,100%,.14);border-bottom:1px solid var(--term-line);display:flex;gap:.6rem;padding:.7rem .9rem}.code-block-head .terminal-dot{background:#ff5a1f;background:var(--accent)}.code-filename{color:hsla(48,20%,95%,.5);color:var(--term-muted);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.76rem}.code-block-body{margin:0;overflow-x:auto;padding:1.4rem 1.1rem}.code-block-body code{display:block;font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.86rem;line-height:1.85;white-space:pre-wrap}.code-line{display:block}.code-ln{color:hsla(48,20%,95%,.28);display:inline-block;margin-right:1rem;text-align:right;-webkit-user-select:none;user-select:none;width:1.6rem}.code-indent{white-space:pre}.code-kw{color:#ff5a1f;color:var(--accent)}.code-key{color:hsla(48,20%,95%,.94);color:var(--term-text);font-weight:600}.code-str{color:hsla(48,20%,95%,.5);color:var(--term-muted)}.contact-copy{display:flex;flex-direction:column;gap:1.5rem;justify-content:space-between}.contact-copy p{color:rgba(0,0,0,.64);color:var(--ink-soft);font-size:1.02rem;line-height:1.85;max-width:46ch}.contact-links{display:flex;flex-wrap:wrap;gap:1.5rem}.contact-links a{align-items:center;border-bottom:1px solid rgba(0,0,0,.32);border-bottom:1px solid var(--line-strong);color:#000;color:var(--ink);display:inline-flex;font-weight:600;gap:.5rem;padding-bottom:.2rem;transition:color .18s ease,border-color .18s ease}.contact-links a:focus-visible,.contact-links a:hover{border-color:#ff5a1f;border-color:var(--accent);color:#ff5a1f;color:var(--accent)}.contact-form{grid-gap:1.1rem;display:grid;gap:1.1rem}.field-prompt{color:#ff5a1f;color:var(--accent);font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);margin-right:.4rem}.contact-form label{align-items:center;color:rgba(0,0,0,.64);color:var(--ink-soft);display:flex;font-size:.85rem}.contact-form label span:not(.field-prompt){color:#ff5a1f;color:var(--accent);margin-left:.3rem}.contact-form input,.contact-form textarea{background:transparent;border:none;border-bottom:1px solid rgba(0,0,0,.32);border-bottom:1px solid var(--line-strong);border-radius:0;color:#000;color:var(--ink);font:inherit;padding:.7rem 0;width:100%}.contact-form input::-webkit-input-placeholder,.contact-form textarea::-webkit-input-placeholder{color:rgba(0,0,0,.44);color:var(--ink-faint)}.contact-form input::placeholder,.contact-form textarea::placeholder{color:rgba(0,0,0,.44);color:var(--ink-faint)}.contact-form input:focus,.contact-form textarea:focus{border-color:#ff5a1f;border-color:var(--accent);outline:none}.contact-form input:disabled,.contact-form textarea:disabled{cursor:wait;opacity:.6}.form-button{justify-content:center;margin-top:.5rem;text-transform:lowercase}.form-status{align-items:baseline;color:#000;color:var(--ink);display:flex;font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.85rem;margin:.3rem 0 0}.scroll-controls{grid-gap:.6rem;bottom:1.5rem;display:grid;gap:.6rem;position:fixed;right:1.5rem;z-index:45}.scroll-controls button{align-items:center;background:#fff;background:var(--bg);border:1px solid rgba(0,0,0,.32);border:1px solid var(--line-strong);border-radius:0;color:#000;color:var(--ink);cursor:pointer;display:inline-flex;height:2.75rem;justify-content:center;transition:color .18s ease,opacity .18s ease,border-color .18s ease;width:2.75rem}.scroll-controls button:focus-visible,.scroll-controls button:hover{border-color:#ff5a1f;border-color:var(--accent);color:#ff5a1f;color:var(--accent)}.scroll-controls button:disabled{cursor:default;opacity:.35}.site-footer{align-items:center;color:rgba(0,0,0,.44);color:var(--ink-faint);display:flex;flex-wrap:wrap;font-family:ui-monospace,SF Mono,JetBrains Mono,Fira Code,Menlo,Consolas,Liberation Mono,monospace;font-family:var(--font-mono);font-size:.82rem;gap:1rem;justify-content:space-between;margin:0 auto 2.5rem;padding:1.6rem 0 0;width:min(1200px,calc(100% - 3rem))}.footer-links{display:flex;gap:1.5rem}.footer-links a{color:rgba(0,0,0,.64);color:var(--ink-soft);transition:color .18s ease}.footer-links a:focus-visible,.footer-links a:hover{color:#ff5a1f;color:var(--accent)}@-webkit-keyframes blink{50%{opacity:0}}@keyframes blink{50%{opacity:0}}@-webkit-keyframes commitDotBlink{0%,to{box-shadow:0 0 0 4px #fff;box-shadow:0 0 0 4px var(--bg);opacity:1}50%{box-shadow:0 0 0 4px #fff,0 0 0 7px rgba(255,90,31,.12);box-shadow:0 0 0 4px var(--bg),0 0 0 7px var(--accent-soft);opacity:.35}}@keyframes commitDotBlink{0%,to{box-shadow:0 0 0 4px #fff;box-shadow:0 0 0 4px var(--bg);opacity:1}50%{box-shadow:0 0 0 4px #fff,0 0 0 7px rgba(255,90,31,.12);box-shadow:0 0 0 4px var(--bg),0 0 0 7px var(--accent-soft);opacity:.35}}@media (prefers-reduced-motion:reduce){*,:after,:before{-webkit-animation-duration:.001ms!important;animation-duration:.001ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}.reveal-item{opacity:1;-webkit-transform:none;transform:none}}@media (max-width:1080px){.about-layout,.contact-layout,.hero-section{grid-template-columns:1fr}.hero-section{align-items:start;gap:2.5rem;min-height:auto}.repo-grid{grid-template-columns:1fr}.hero-copy h1{font-size:clamp(2.4rem,9vw,3.6rem)}.hero-titleline{font-size:1.25rem;max-width:100%}main{padding-top:6rem}}@media (max-width:760px){.site-header{padding:1rem 1.25rem}.resume-link,.site-nav{display:none}.hamburger-button,.mobile-menu{display:block}main{padding-top:5.5rem;width:calc(100% - 2.5rem)}.hero-section{min-height:auto;padding-top:.5rem}.code-block,.terminal-window{box-shadow:6px 6px 0 #000;box-shadow:6px 6px 0 var(--ink)}.section-heading h2{font-size:1.65rem;line-height:1.18;max-width:100%}.capability-row{gap:.4rem;grid-template-columns:1fr}.capability-row svg{display:none}.commit-log{padding-left:1.4rem}.commit-row:before{left:-1.4rem}.site-footer{align-items:flex-start;flex-direction:column}}@media (max-width:420px){.mobile-menu-inner>a:not(.mobile-resume-link){font-size:2.2rem}}
/*# sourceMappingURL=main.94a1cd2a.css.map*/