:root{--ink:#243b40;--ink-soft:#466064;--paper:#f4f7f7;--mist:#dde9ed;--sky:#a9cedd;--foliage:#566957;--sun:#7c4f6a;--sun-soft:#a56b8c;--green:#4e8c68;--yellow:#bd8741;--red:#ad5b52;--blue:#527f91;--serif:"Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace}*,:before,:after{box-sizing:border-box}::selection{color:var(--paper);background:#56695799}html{scroll-behavior:smooth;background:var(--mist)}html:has(.boot-veil:not(.is-gone)){overflow:hidden}body{background:linear-gradient(180deg, var(--sky) 0%, var(--mist) 56%, var(--paper) 100%);min-width:320px;min-height:100%;color:var(--ink);font-family:var(--sans);text-rendering:optimizelegibility;margin:0;overflow-x:hidden}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}button,input,textarea,select{font:inherit}img{max-width:100%}#sky,#sky-bird{width:100%;height:100%;display:block;position:fixed;inset:0}#sky{z-index:0}#sky-bird{z-index:2;pointer-events:none}#content{z-index:3;min-height:100svh;position:relative}#sky[hidden],#sky-bird[hidden]{display:none}.boot-veil{z-index:20;background:linear-gradient(180deg, var(--sky) 0%, var(--mist) 56%, var(--paper) 100%);color:var(--ink);place-items:center;transition:opacity .7s,visibility .7s;display:grid;position:fixed;inset:0}.boot-veil.is-gone,html[data-app-ready] .boot-veil{opacity:0;visibility:hidden;pointer-events:none}.boot-veil-inner{flex-direction:column;align-items:center;gap:1.15rem;display:flex}.boot-veil-mark{object-fit:contain;width:3rem;height:3rem;animation:1.8s ease-in-out infinite alternate boot-breathe;display:block}.boot-veil-line{opacity:.35;transform-origin:50%;background:currentColor;width:2.6rem;height:1px;animation:2.1s ease-in-out infinite boot-line;display:block}.boot-veil-label{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@keyframes boot-breathe{0%{opacity:.5}to{opacity:1}}@keyframes boot-line{0%,to{opacity:.18;transform:scaleX(.4)}50%{opacity:.5;transform:scaleX(1)}}.site-nav{z-index:6;color:var(--ink);opacity:0;justify-content:space-between;align-items:center;gap:2rem;padding:1.1rem clamp(1.15rem,4vw,3.8rem);transition:opacity .8s;display:flex;position:absolute;inset:0 0 auto}html[data-app-ready] .site-nav{opacity:1}.site-logo{justify-content:center;align-items:center;width:3rem;height:3rem;transition:transform .18s;display:inline-flex}.site-logo:hover,.site-logo:focus-visible{transform:translateY(-2px)}.site-logo img{object-fit:contain;width:2.7rem;height:2.7rem;display:block}.nav-link-container ul{align-items:center;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.nav-button,.hero-btn,.about-link,.project-link,.contact-top-link{text-decoration:none}.nav-button{letter-spacing:.02em;border-bottom:1px solid #0000;padding:.55rem .7rem;font-size:.83rem;transition:border-color .18s,color .18s;display:inline-block}.nav-button:hover,.nav-button:focus-visible{color:var(--sun-soft);border-color:currentColor}.nav-button[href=\#contact]{color:var(--sun-soft)}html[data-sky-phase=night] .site-nav:not(.menu-open),html[data-sky-phase=night] .site-nav:not(.menu-open) .nav-button,html[data-sky-phase=night] .site-nav:not(.menu-open) .nav-button[href=\#contact],html[data-sky-phase=night] .site-nav:not(.menu-open) .nav-button:hover,html[data-sky-phase=night] .site-nav:not(.menu-open) .nav-button:focus-visible,html[data-sky-phase=night] .hero-eyebrow,html[data-sky-phase=night] .hero-eyebrow span,html[data-sky-phase=night] .hero-content h1,html[data-sky-phase=night] .hero-role{color:var(--paper)}html[data-sky-phase=night] .hero-tagline{color:var(--mist)}html[data-sky-phase=night] .hero-btn.btn-secondary{color:var(--paper);border-color:#f4f7f7a3}html[data-sky-phase=night] .hero-btn.btn-secondary:hover,html[data-sky-phase=night] .hero-btn.btn-secondary:focus-visible{border-color:var(--paper);color:var(--paper)}html[data-sky-phase=night] .site-nav.menu-open .nav-link-container,html[data-sky-phase=night] .site-nav.menu-open .nav-button,html[data-sky-phase=night] .site-nav.menu-open .nav-button[href=\#contact]{color:var(--ink)}html[data-sky-phase=night] .site-nav.menu-open .nav-toggle{border-color:var(--ink);color:var(--ink)}.nav-toggle{width:2.8rem;height:2.8rem;color:var(--ink);cursor:pointer;background:0 0;border:1px solid #243b4094;border-radius:.2rem;padding:.7rem;display:none}.nav-toggle span{background:currentColor;height:1px;margin:.25rem 0;transition:transform .18s,opacity .18s;display:block}.hero-section{align-items:center;min-height:100svh;padding:7rem clamp(1.25rem,8vw,8rem) 5rem;display:grid;position:relative}.hero-content{width:min(100%,70rem);margin:0 auto}.hero-eyebrow,.hero-role,.hero-tagline,.hero-content h1{font-family:var(--serif);color:var(--ink);margin:0;font-weight:400}.hero-eyebrow{color:var(--ink-soft);font-family:var(--sans);letter-spacing:.08em;margin-bottom:1.15rem;font-size:clamp(.72rem,1.1vw,.86rem)}.hero-eyebrow-suffix{color:var(--ink-soft);margin-left:.65em}.hero-content h1{letter-spacing:-.055em;max-width:11ch;font-size:clamp(2.8rem,7.2vw,6.7rem);line-height:.96}.hero-rise{vertical-align:bottom;display:inline-block;overflow:hidden}.hero-content h1 .hero-rise,.hero-tagline .hero-rise,.hero-role .hero-rise{display:block}@keyframes hero-copy-rise{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:none}}.hero-rise-inner{opacity:0;display:block}html[data-app-ready] .hero-rise-inner{animation:hero-copy-rise .72s cubic-bezier(.16, 1, .3, 1) var(--hero-rise-delay,0s) both}@keyframes hero-btn-rise{0%{opacity:0;transform:translateY(1.4rem)}to{opacity:1;transform:none}}.hero-role{color:var(--ink);font-family:var(--sans);margin-top:1.35rem;font-size:clamp(1rem,1.8vw,1.25rem)}.hero-role strong{font-weight:600}.hero-tagline{max-width:58ch;color:var(--ink-soft);font-family:var(--sans);text-align:justify;margin-top:1.25rem;font-size:clamp(.9rem,1.35vw,1.05rem);line-height:1.62}.hero-buttons{flex-wrap:wrap;justify-content:flex-start;gap:.7rem 1.4rem;margin-top:2.2rem;display:flex}.hero-btn-rise{opacity:0;display:inline-flex;overflow:hidden;transform:translateY(1.4rem)}html[data-app-ready] .hero-buttons.is-in .hero-btn-rise{animation:hero-btn-rise .72s cubic-bezier(.16, 1, .3, 1) var(--hero-rise-delay,0s) forwards}.hero-btn{min-height:2.8rem;color:var(--ink);border-bottom:1px solid #243b408a;justify-content:center;align-items:center;gap:.55rem;padding:.7rem .15rem;font-size:.86rem;transition:border-color .18s,color .18s,transform .18s;display:inline-flex}.hero-btn:hover,.hero-btn:focus-visible{border-color:var(--sun);color:var(--sun);transform:translateY(-2px)}.btn-primary{border-color:var(--foliage);color:var(--paper);background:#566957eb;padding-left:.7rem;padding-right:.7rem}.btn-primary:hover,.btn-primary:focus-visible{background:#566957f5}.page-section,.site-footer{padding:clamp(6rem,12vw,12rem) clamp(1rem,7vw,8rem)}.about-section{background:linear-gradient(#dde9ed00,#dde9ed33 3.5rem,#dde9ed61 30%,#f4f7f78f calc(100% - 6rem),#f4f7f700 100%)}.projects-section{background:linear-gradient(#f4f7f700,#f4f7f72e 3.5rem,#f4f7f757 30%,#dde9ed3d calc(100% - 6rem),#dde9ed00 100%);padding-top:clamp(7rem,14vw,14rem)}.section-container{width:min(100%,76rem);margin:0 auto}.section-kicker,.contact-kicker{color:var(--foliage);letter-spacing:.12em;margin:0;font-size:.7rem;line-height:1.4}.about-grid{grid-template-columns:minmax(0,1.15fr) minmax(17rem,.85fr);align-items:start;gap:clamp(3rem,9vw,9rem);margin-top:2.2rem;display:grid}.about-copy{padding-left:clamp(0rem,4vw,4.3rem)}.about-copy h2,.projects-heading h2,.contact-heading h2{max-width:16ch;color:var(--ink);font-family:var(--serif);letter-spacing:-.05em;margin:0 0 1.7rem;font-size:clamp(2.55rem,5vw,4.8rem);font-weight:400;line-height:.94}.about-copy h2 span,.contact-heading h2 span{color:var(--foliage)}.about-copy p,.contact-heading>p:last-child,.contact-primary p,.about-card p,.project-card p{max-width:68ch;color:var(--ink-soft);text-align:justify;margin:0 0 1rem;font-size:.98rem;line-height:1.78}.about-actions{flex-wrap:wrap;gap:1rem 1.4rem;margin-top:1.9rem;display:flex}.about-link{color:var(--foliage);font-size:.88rem;font-weight:650}.about-link:after,.project-link:not(.project-link-disabled):after{content:"↗";margin-left:.45rem;transition:transform .18s;display:inline-block}.about-link:hover:after,.about-link:focus-visible:after,.project-link:hover:after,.project-link:focus-visible:after{transform:translate(2px,-2px)}.about-link-muted{color:var(--ink-soft)}.about-terminal{background:#f4f7f77a;border:1px solid #243b4033;border-radius:.3rem;min-height:18rem;overflow:hidden;box-shadow:0 1.5rem 4rem #4660641a}.terminal-topbar{border-bottom:1px solid #243b4029;gap:.45rem;padding:.75rem .9rem;display:flex}.terminal-topbar span{background:var(--sun);border-radius:50%;width:.55rem;height:.55rem}.terminal-topbar span:nth-child(2){background:var(--yellow)}.terminal-topbar span:nth-child(3){background:var(--green)}.terminal-body{min-height:15rem;color:var(--ink);font-family:var(--mono);padding:1rem 1.15rem 1.2rem;font-size:.73rem;line-height:1.6;overflow:auto}.terminal-line,.terminal-output{overflow-wrap:anywhere;margin:0 0 .35rem}.terminal-line{color:var(--ink)}.terminal-line span{color:var(--foliage)}.terminal-output{color:var(--ink-soft);padding-left:1rem}.terminal-caret:after{vertical-align:-.15em;background:var(--sun);content:"";width:.45em;height:1em;margin-left:.28em;animation:1s steps(2,start) infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.stack-showcase{margin-top:clamp(5rem,10vw,9rem)}.stack-showcase-header h3{color:var(--ink);font-family:var(--serif);letter-spacing:-.035em;margin:.65rem 0 0;font-size:clamp(1.8rem,3.2vw,2.8rem);font-weight:400}.stack-carousel{width:100%;margin-top:1.8rem;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 6% 94%,#0000);mask-image:linear-gradient(90deg,#0000,#000 6% 94%,#0000)}.stack-track{width:max-content;animation:48s linear infinite stack-loop;display:flex}@keyframes stack-loop{to{transform:translate(-50%)}}.stack-item{width:7.4rem;color:var(--ink-soft);flex-direction:column;flex:0 0 7.4rem;align-items:center;gap:.6rem;font-size:.74rem;display:flex}.stack-item img{object-fit:contain;width:2rem;height:2rem}.stack-icon-inverted{filter:brightness(0)saturate()invert(23%)sepia(12%)saturate(634%)hue-rotate(143deg)brightness(89%);opacity:.86}.about-focus-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1.5rem,5vw,5rem);margin-top:clamp(5rem,10vw,9rem);display:grid}.about-card{border-top:1px solid #243b4057;padding-top:1.25rem}.about-card-number,.project-number{color:var(--foliage);font-family:var(--mono);letter-spacing:.09em;font-size:.7rem;display:block}.about-card h3{color:var(--ink);font-family:var(--serif);margin:.8rem 0 .5rem;font-size:1.65rem;font-weight:400}.about-card p{margin-bottom:0;font-size:.9rem}.projects-heading{margin-bottom:clamp(3.5rem,8vw,7rem)}.projects-heading h2{max-width:19ch;margin-top:.75rem;margin-bottom:0}.projects-list{gap:clamp(5rem,12vw,12rem);display:grid}.project-row{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);align-items:center;gap:clamp(2rem,6vw,6rem);display:grid}.project-visual{aspect-ratio:5/3;background:#56695733;border-radius:clamp(.5rem,1vw,.85rem);position:relative;overflow:hidden}.project-visual:after{border-radius:inherit;content:"";pointer-events:none;border:1px solid #243b4038;position:absolute;inset:0}.project-visual img{object-fit:contain;width:100%;height:100%;transition:transform .65s;display:block}.project-row:hover .project-visual img{transform:scale(1.025)}.project-card{flex-direction:column;justify-content:center;min-height:20rem;padding:1rem 0;display:flex}.project-card h3{color:var(--ink);font-family:var(--serif);letter-spacing:-.05em;margin:.8rem 0 .7rem;font-size:clamp(2.35rem,4.5vw,4rem);font-weight:400;line-height:.95}.project-card p{margin-bottom:1.5rem}.project-stack-tags{flex-wrap:wrap;gap:.35rem .8rem;margin-top:auto;display:flex}.project-stack-tag{color:var(--ink-soft);font-family:var(--mono);border-bottom:1px solid #243b4038;padding:.2rem 0;font-size:.64rem}.project-card-footer{border-top:1px solid #243b403d;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.5rem;padding-top:1.25rem;display:flex}.project-link{color:var(--sun);border-bottom:1px solid #7c4f6a9e;padding:.5rem .05rem;font-size:.82rem;font-weight:650;transition:background .18s,border-color .18s,transform .18s;display:inline-block}.project-link:hover,.project-link:focus-visible{border-color:var(--sun);background:#7c4f6a1a;transform:translateY(-2px)}.project-link-disabled,.project-link-disabled:hover,.project-link-disabled:focus-visible{color:#4660649e;cursor:default;background:0 0;border-color:#243b4033;transform:none}.status-badge{color:var(--ink-soft);font-family:var(--mono);align-items:center;gap:.45rem;font-size:.65rem;display:inline-flex}.status-dot{border-radius:50%;width:.5rem;height:.5rem;box-shadow:0 0 .8rem}.dot-green{color:var(--green);background:var(--green)}.dot-yellow{color:var(--yellow);background:var(--yellow)}.dot-red{color:var(--red);background:var(--red)}.dot-blue{color:var(--blue);background:var(--blue)}.projects-actions{text-align:center;margin-top:3rem}.reveal{opacity:0;transition:opacity .6s ease var(--reveal-delay,0s), transform .6s ease var(--reveal-delay,0s);transform:translateY(1.1rem)}.reveal-visible{opacity:1;transform:none}.site-footer{background:linear-gradient(#dde9ed00,#dde9ed2e 3.5rem,#dde9ed3d 30%,#f4f7f76b calc(100% - 3rem),#f4f7f700 100%);padding-top:clamp(8rem,15vw,15rem);padding-bottom:2rem}.contact-heading h2{max-width:15ch;margin-top:.7rem;margin-bottom:1.25rem;font-size:clamp(2.8rem,6.3vw,6rem);line-height:.91}.contact-heading>p:last-child{max-width:61ch;margin-bottom:0}.contact-layout{grid-template-columns:minmax(0,1.1fr) minmax(16rem,.9fr);gap:clamp(2rem,8vw,8rem);margin-top:clamp(3.5rem,8vw,7rem);display:grid}.contact-primary{border-top:1px solid #243b4057;min-height:17rem;padding:1.5rem 0;position:relative;overflow:hidden}.contact-circle-mark{display:none}.contact-label{color:var(--foliage);font-family:var(--mono);letter-spacing:.1em;font-size:.68rem;display:block}.contact-email{color:var(--ink);font-family:var(--serif);overflow-wrap:anywhere;align-items:center;gap:.6rem;margin:1.5rem 0 1rem;font-size:clamp(1.3rem,2.7vw,2.2rem);text-decoration:none;display:inline-flex}.contact-email:hover,.contact-email:focus-visible{color:var(--sun)}.contact-primary p{max-width:48ch;margin-bottom:0;font-size:.88rem}.contact-methods{align-content:start;gap:0;display:grid}.contact-method{min-height:4.5rem;color:var(--ink);border-bottom:1px solid #243b4038;align-items:center;gap:.9rem;padding:.9rem 0;text-decoration:none;transition:color .18s,padding .18s;display:flex}.contact-method:hover,.contact-method:focus-visible{color:var(--sun);padding-left:.35rem;padding-right:.35rem}.contact-method>svg{color:var(--foliage);flex:none}.contact-method span{gap:.25rem;display:grid}.contact-method strong{font-family:var(--serif);font-size:1.2rem;font-weight:400}.contact-method small{color:var(--ink-soft);font-size:.77rem}.contact-bottom{border-top:1px solid #243b403d;justify-content:space-between;align-items:end;gap:2rem;margin-top:4rem;padding-top:2.5rem;display:flex}.contact-legal p{color:#466064b8;margin:.3rem 0;font-size:.72rem}.contact-top-link{color:var(--foliage);align-items:center;gap:.55rem;font-size:.78rem;font-weight:650;display:inline-flex}a:focus-visible,button:focus-visible{outline:2px solid var(--sun);outline-offset:4px}@media (max-width:760px){.site-nav{gap:1rem}.nav-toggle{display:block}.nav-link-container{color:var(--ink);text-shadow:none;background:#f4f7f7f2;border:1px solid #243b403d;border-radius:.2rem;padding:.6rem;display:none;position:absolute;top:calc(100% + .5rem);left:1rem;right:1rem;box-shadow:0 1.5rem 3rem #243b4024}.site-nav.menu-open .nav-link-container{display:block}.nav-link-container ul{gap:.2rem;display:grid}.nav-button{padding:.85rem .9rem;display:block}.nav-button[href=\#contact]{color:var(--sun)}.site-nav.menu-open .nav-toggle{border-color:var(--ink);color:var(--ink)}.site-nav.menu-open .nav-toggle span:first-child{transform:translateY(.35rem)rotate(45deg)}.site-nav.menu-open .nav-toggle span:nth-child(2){opacity:0}.site-nav.menu-open .nav-toggle span:nth-child(3){transform:translateY(-.35rem)rotate(-45deg)}.hero-section{padding-top:6.5rem}.hero-content h1{max-width:9ch}.hero-eyebrow-suffix{margin:.55rem 0 0;display:block}.hero-buttons{max-width:25rem}.hero-btn{flex:11rem}.about-grid,.contact-layout{grid-template-columns:1fr}.about-copy{padding-left:0}.about-focus-grid{grid-template-columns:1fr;gap:2rem}.about-terminal{order:-1}.project-row{grid-template-columns:1fr}.project-visual{aspect-ratio:5/3}.project-card{min-height:0}.contact-bottom{flex-direction:column;align-items:start}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.reveal{opacity:1;transform:none}.hero-content h1,.hero-content p{text-shadow:none}.hero-rise-inner,.hero-btn-rise,.site-nav,.boot-veil-mark,.boot-veil-line{opacity:1;animation:none;transform:none}.stack-track{animation:none}}
