:root{color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;--color-background:#101722;--color-surface:#182333;--color-surface-raised:#1c2a3d;--color-accent:#287fe5;--color-accent-light:#81b5ff;--color-text:#f4f7fc;--color-secondary:#aab8ca;--color-subtle:#718198;--color-border:#aab8ca26;--container-width:1160px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--color-background);scroll-padding-top:6.5rem}body{background:var(--color-background);min-width:320px;color:var(--color-text);margin:0;font-size:1rem;line-height:1.65}::selection{background:var(--color-accent);color:#fff}a{color:inherit}a:focus-visible{outline:2px solid var(--color-accent-light);outline-offset:5px;border-radius:2px}.container{width:min(var(--container-width), calc(100% - 3rem));margin-inline:auto}.skip-link{z-index:20;background:var(--color-text);color:var(--color-background);border-radius:.25rem;padding:.7rem 1rem;font-weight:700;position:fixed;top:1rem;left:1rem;transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-header{z-index:5;border-bottom:1px solid var(--color-border);background:#101722c7;position:absolute;inset:0 0 auto}.header-inner{justify-content:space-between;align-items:center;gap:2rem;min-height:5.75rem;display:flex}.wordmark{flex-direction:column;flex:none;justify-content:center;min-height:2.75rem;text-decoration:none;display:flex}.wordmark-name{letter-spacing:.19em;font-size:.95rem;font-weight:750;line-height:1.3}.wordmark-role{color:var(--color-subtle);letter-spacing:.2em;font-size:.55rem;font-weight:650}.nav-list{align-items:center;gap:clamp(1rem,2.5vw,2.2rem);margin:0;padding:0;list-style:none;display:flex}.nav-list a{min-height:2.75rem;color:var(--color-secondary);align-items:center;font-size:.8rem;text-decoration:none;transition:color .16s;display:inline-flex}.nav-list a:hover,.footer-inner a:hover{color:var(--color-text)}.nav-list .nav-contact{min-height:2.5rem;color:var(--color-text);border:1px solid #81b5ff85;border-radius:.25rem;align-items:center;gap:.6rem;padding:.5rem .9rem;display:inline-flex}.nav-contact span,.inline-link span,.project-link span,.contact-links span{color:var(--color-accent-light)}.hero{background:radial-gradient(at 79% 43%,#287fe51f,#0000 33%),linear-gradient(112deg,#101722 40%,#131e2d 100%);align-items:center;min-height:min(850px,100svh);padding:9.5rem 0 7rem;display:flex;position:relative;overflow:hidden}.hero-grid{opacity:.3;background-image:linear-gradient(#aab8ca0d 1px,#0000 1px),linear-gradient(90deg,#aab8ca0d 1px,#0000 1px);background-size:56px 56px;position:absolute;inset:0 0 0 52%;mask-image:linear-gradient(90deg,#0000,#000 38%,#000)}.hero-orbit{aspect-ratio:1;pointer-events:none;border:1px solid #81b5ff1a;border-radius:50%;width:min(52vw,640px);position:absolute;top:46%;left:76%;transform:translate(-50%,-50%)}.hero-orbit:before,.hero-orbit:after{content:"";border:1px solid #81b5ff1a;border-radius:50%;position:absolute;inset:13%}.hero-orbit:after{inset:28%}.hero-orbit-two{border-color:#287fe530;width:min(36vw,440px)}.hero-layout{z-index:1;grid-template-columns:minmax(0,1.15fr) minmax(270px,.85fr);align-items:center;gap:clamp(2rem,6vw,6rem);display:grid;position:relative}.hero-copy{max-width:700px}.eyebrow,.section-kicker{color:var(--color-accent-light);letter-spacing:.17em;text-transform:uppercase;font-size:.72rem;font-weight:700}.eyebrow{color:var(--color-secondary);letter-spacing:.11em;align-items:center;gap:.65rem;margin:0 0 1.75rem;display:flex}.eyebrow-line{background:var(--color-accent-light);width:1.6rem;height:1px}.eyebrow-divider{color:var(--color-subtle)}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.065em;max-width:740px;margin-bottom:1.5rem;font-size:clamp(3.3rem,6.7vw,6.3rem);font-weight:540;line-height:1.01}h1 span{color:var(--color-secondary)}.hero-intro{max-width:34rem;color:var(--color-secondary);margin-bottom:2rem;font-size:clamp(1.05rem,1.6vw,1.2rem)}.hero-actions{flex-wrap:wrap;align-items:center;gap:.85rem;display:flex}.button{border:1px solid #0000;border-radius:.25rem;justify-content:center;align-items:center;gap:1.25rem;min-height:3.1rem;padding:.75rem 1.1rem;font-size:.85rem;font-weight:650;text-decoration:none;transition:background-color .16s,border-color .16s,transform .16s;display:inline-flex}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--color-accent);color:#fff}.button-primary:hover{background:#3b8cec}.button-quiet{border-color:var(--color-border);color:var(--color-text)}.button-quiet:hover{background:#182333b8;border-color:#81b5ff8f}.hero-slogan{color:var(--color-subtle);letter-spacing:.035em;margin:2.2rem 0 0;font-size:.78rem}.hero-art{justify-self:end;width:100%;max-width:410px;padding:1.75rem 1rem;position:relative}.art-frame{background:linear-gradient(145deg,#182333c2,#101722b8);border:1px solid #aab8ca38;flex-direction:column;justify-content:space-between;min-height:390px;padding:1.2rem;display:flex;position:relative;box-shadow:0 28px 90px #0003}.art-frame:before{aspect-ratio:1;content:"";border:1px solid #287fe538;border-radius:50%;width:76%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.art-frame:after{aspect-ratio:1;content:"";border:1px solid #81b5ff1f;border-radius:50%;width:55%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.art-topline,.art-bottomline{z-index:1;color:var(--color-subtle);letter-spacing:.13em;justify-content:space-between;align-items:center;font-size:.59rem;font-weight:650;display:flex;position:relative}.art-center{z-index:1;flex-direction:column;align-items:center;display:flex;position:relative}.art-monogram{letter-spacing:-.14em;font-size:clamp(5rem,11vw,8rem);font-weight:600;line-height:1}.art-monogram span{color:var(--color-accent-light)}.art-caption{color:var(--color-secondary);letter-spacing:.12em;text-transform:uppercase;margin-top:1rem;font-size:.75rem}.art-pulse{background:var(--color-accent-light);border-radius:50%;width:.45rem;height:.45rem;box-shadow:0 0 12px #287fe5b8}.art-coordinate{color:var(--color-subtle);letter-spacing:.16em;writing-mode:vertical-rl;font-size:.58rem;position:absolute}.art-coordinate-top{top:0;right:0}.art-coordinate-bottom{bottom:0;left:0;transform:rotate(180deg)}.scroll-cue{right:max(1.5rem, calc((100vw - var(--container-width)) / 2));min-height:2.75rem;color:var(--color-subtle);letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:1rem;font-size:.68rem;text-decoration:none;display:flex;position:absolute;bottom:2rem}.scroll-cue span:last-child{color:var(--color-accent-light)}.section{border-top:1px solid var(--color-border);padding-block:clamp(5rem,10vw,9rem)}.section-layout{grid-template-columns:minmax(160px,.7fr) minmax(0,1.6fr);gap:clamp(2rem,8vw,8rem);display:grid}.section-aside{align-items:flex-start;gap:1rem;padding-top:.45rem;display:flex}.section-index,.section-label,.expertise-index{color:var(--color-subtle);letter-spacing:.12em;text-transform:uppercase;font-size:.68rem;font-weight:650}.section-index{color:var(--color-accent-light)}.section-main{max-width:780px}.section-kicker{margin-bottom:1rem}.section-main h2,.section-heading-row h2,.contact-layout h2{letter-spacing:-.065em;margin-bottom:1.6rem;font-size:clamp(2.5rem,5.4vw,4.5rem);font-weight:520;line-height:1.07}.about-copy{max-width:670px}.about-copy p,.section-intro,.contact-copy{color:var(--color-secondary);font-size:1.04rem}.about-copy p+p{margin-top:1rem}.inline-link{min-height:2.75rem;color:var(--color-text);align-items:center;gap:.8rem;margin-top:1.35rem;font-size:.85rem;font-weight:650;text-decoration:none;display:inline-flex}.inline-link:hover,.project-link:hover,.contact-links a:hover{color:var(--color-accent-light)}.section-expertise{background:linear-gradient(180deg, var(--color-background), #121c2a)}.section-heading-row{justify-content:space-between;align-items:flex-end;gap:3rem;margin-bottom:3.2rem;display:flex}.section-heading-row h2{margin-bottom:0}.section-intro{max-width:390px;margin-bottom:.35rem;font-size:.94rem}.expertise-list{border-top:1px solid var(--color-border)}.expertise-row{border-bottom:1px solid var(--color-border);grid-template-columns:3rem minmax(190px,.7fr) minmax(0,1.6fr);align-items:start;gap:1.5rem;padding:1.55rem 0;display:grid}.expertise-index{padding-top:.35rem}.expertise-row h3{margin:0;font-size:.98rem;font-weight:600}.expertise-row-primary h3{color:var(--color-accent-light)}.skill-list,.contact-links{flex-wrap:wrap;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.skill-list li{color:var(--color-secondary);border:1px solid #aab8ca30;border-radius:999px;padding:.28rem .65rem;font-size:.73rem;line-height:1.5}.expertise-row-primary .skill-list li:first-child,.expertise-row-primary .skill-list li:nth-child(2){color:var(--color-text);border-color:#81b5ff70}.section-projects{background:#121b28}.projects-heading{margin-bottom:2.7rem}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:1rem;display:grid}.project-card{border:1px solid var(--color-border);background:linear-gradient(145deg,#182333eb,#141e2cd1);grid-template-rows:auto auto 1fr auto;align-content:start;min-width:0;padding:clamp(1.4rem,3vw,2.1rem);transition:border-color .18s;display:grid}.project-card:hover{border-color:#81b5ff78}.project-card-featured{background:radial-gradient(at 90% 28%,#287fe52e,#0000 42%),linear-gradient(145deg,#1b2a3d,#152131);grid-column:1/-1;grid-template-rows:auto 1fr auto;grid-template-columns:minmax(230px,.78fr) minmax(0,1.22fr);column-gap:clamp(1.5rem,4vw,3rem)}.project-visual{background:radial-gradient(at 50% 55%,#287fe521,#0000 60%),repeating-linear-gradient(0deg,#0000 0 27px,#aab8ca0a 28px),repeating-linear-gradient(90deg,#0000 0 27px,#aab8ca0a 28px),#121c2a;border:1px solid #aab8ca21;place-items:center;min-width:0;min-height:clamp(150px,20vw,210px);display:grid;position:relative;overflow:hidden}.project-card-featured .project-visual{grid-area:1/1/-1}.project-card-featured .project-card-top,.project-card-featured .project-card-content,.project-card-featured .project-card-bottom{grid-column:2}.route-illustration{width:min(88%,400px);overflow:visible}.route-line{stroke-linecap:round;stroke-linejoin:round;stroke-width:2px}.route-line-muted{stroke:#81b5ff40;stroke-dasharray:3 8;stroke-width:8px}.route-line-accent{stroke:var(--color-accent-light)}.route-point{fill:var(--color-surface);stroke:var(--color-accent-light);stroke-width:2px}.route-point-start{fill:var(--color-accent)}.route-point-core{fill:var(--color-text);stroke:none}.flow-illustration{border-bottom:1px solid #81b5ff4d;justify-content:center;align-items:center;gap:clamp(.5rem,2vw,1.2rem);width:min(72%,330px);height:112px;display:flex}.flow-illustration span{background:linear-gradient(#287fe5c2,#287fe52b);border:1px solid #81b5ff8a;border-radius:999px;width:clamp(.8rem,2vw,1.35rem);height:38%}.flow-illustration span:nth-child(2),.flow-illustration span:nth-child(6){height:62%}.flow-illustration span:nth-child(3),.flow-illustration span:nth-child(5){height:82%}.flow-illustration span:nth-child(4){background:linear-gradient(180deg, var(--color-accent-light), #287fe533);height:100%}.band-illustration{justify-content:center;align-items:center;gap:clamp(.4rem,1.5vw,.8rem);height:110px;display:flex}.band-illustration span{background:var(--color-accent-light);opacity:.75;border-radius:99px;width:3px;height:24%}.band-illustration span:nth-child(3n+1){height:70%}.band-illustration span:nth-child(3n+2){height:42%}.band-illustration span:nth-child(4n){background:var(--color-accent);height:92%}.project-card-top,.project-card-bottom{justify-content:space-between;align-items:center;gap:.75rem;min-width:0;display:flex}.project-card-top{flex-wrap:wrap;padding-top:1rem}.project-category{color:var(--color-secondary);letter-spacing:.09em;text-transform:uppercase;font-size:.68rem}.project-card-content{min-width:0;padding-top:1.35rem}.project-card h3{letter-spacing:-.04em;overflow-wrap:anywhere;margin-bottom:.65rem;font-size:clamp(1.5rem,3vw,2.1rem);font-weight:550}.project-card-content>p{max-width:30rem;color:var(--color-secondary);overflow-wrap:anywhere;margin-bottom:1rem;font-size:.92rem}.project-status{min-height:2rem;color:var(--color-text);align-items:center;gap:.55rem;font-size:.72rem;font-weight:600;display:inline-flex}.status-mark{background:var(--color-accent-light);border-radius:50%;flex:0 0 .45rem;width:.45rem;height:.45rem}.project-status-published .status-mark{background:#79c7a3}.project-contribution{border-left:2px solid var(--color-accent);background:#1017226b;padding:.95rem 1rem}.project-label{color:var(--color-accent-light);letter-spacing:.12em;text-transform:uppercase;margin-bottom:.25rem;font-size:.64rem;font-weight:700;display:block}.project-contribution p,.project-approach p{color:var(--color-secondary);overflow-wrap:anywhere;margin:0;font-size:.82rem}.project-detail-grid{grid-template-columns:minmax(0,1.15fr) minmax(130px,.85fr);gap:1.2rem;margin-top:1.3rem;display:grid}.project-card-content h4{color:var(--color-text);margin:0 0 .55rem;font-size:.73rem;font-weight:650}.project-feature-list{color:var(--color-secondary);gap:.42rem;margin:0;padding-left:1rem;font-size:.77rem;display:grid}.project-feature-list li::marker{color:var(--color-accent-light)}.project-stack{margin-top:1.3rem}.project-tags{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.project-tags li{max-width:100%;color:var(--color-secondary);overflow-wrap:anywhere;border:1px solid #aab8ca30;border-radius:999px;padding:.24rem .55rem;font-size:.69rem;line-height:1.5}.project-card-bottom{padding-top:1.2rem}.project-link{min-height:2.75rem;color:var(--color-text);align-items:center;font-size:.78rem;font-weight:600;text-decoration:none;display:inline-flex}.experience-list{gap:0;margin:2.7rem 0 0;padding:0;list-style:none;display:grid;position:relative}.experience-list:before{background:linear-gradient(var(--color-accent), var(--color-border) 82%);content:"";width:1px;position:absolute;top:.4rem;bottom:.4rem;left:.34rem}.experience-item{padding:0 0 2.35rem 2rem;position:relative}.experience-item:before{border:2px solid var(--color-accent-light);background:var(--color-background);content:"";border-radius:50%;width:.7rem;height:.7rem;position:absolute;top:.42rem;left:0}.experience-header{justify-content:space-between;align-items:flex-start;gap:1rem 2rem;display:flex}.experience-header h3{letter-spacing:-.02em;margin-bottom:.15rem;font-size:1.18rem;font-weight:620}.experience-header>div{min-width:0}.experience-organisation,.experience-period{color:var(--color-accent-light);font-size:.79rem}.experience-organisation{overflow-wrap:anywhere;margin:0}.experience-period{color:var(--color-secondary);text-align:right;flex:none;padding-top:.25rem}.experience-summary{color:var(--color-secondary);margin:.85rem 0 0;font-size:.91rem}.experience-highlights{color:var(--color-secondary);gap:.5rem;margin:.9rem 0 0;padding-left:1.1rem;font-size:.85rem;display:grid}.experience-highlights li::marker{color:var(--color-accent-light)}.experience-technologies{margin-top:1rem}.experience-technologies summary{width:fit-content;min-height:2.75rem;color:var(--color-accent-light);cursor:pointer;align-items:center;padding-block:.35rem;font-size:.76rem;font-weight:600;display:inline-flex}.technology-list{flex-wrap:wrap;gap:.45rem;margin:.75rem 0 0;padding:0;list-style:none;display:flex}.technology-list li{border:1px solid var(--color-border);color:var(--color-secondary);border-radius:999px;padding:.22rem .55rem;font-size:.69rem}.earlier-experience{border-top:1px solid var(--color-border);margin:.75rem 0 0 2rem;padding-top:1.6rem}.earlier-experience>h3{margin:0 0 1.1rem;font-size:1.08rem;font-weight:600}.earlier-list{gap:.95rem;margin:0;padding:0;list-style:none;display:grid}.earlier-heading{color:var(--color-text);flex-wrap:wrap;justify-content:space-between;gap:.25rem 1rem;font-size:.82rem;display:flex}.earlier-heading strong{overflow-wrap:anywhere}.earlier-heading span{color:var(--color-secondary);font-size:.76rem}.earlier-list p,.pending-note{color:var(--color-secondary);margin-bottom:0;font-size:.81rem}.earlier-list p{margin-top:.15rem}.pending-note{border-left:2px solid var(--color-accent);background:#182333a8;max-width:40rem;padding:1.15rem 1.2rem;font-size:.9rem}.section-contact{background:radial-gradient(at 87%,#287fe529,#0000 37%),#121b28;position:relative;overflow:hidden}.contact-layout{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:end;gap:clamp(2rem,6vw,5rem);display:grid}.contact-layout h2{margin-bottom:1.25rem;font-size:clamp(3rem,7vw,6rem)}.contact-layout h2 span{color:var(--color-accent-light)}.contact-copy{max-width:32rem;margin-bottom:0}.contact-details{padding-bottom:.35rem}.contact-form{gap:1.1rem;min-width:0;display:grid}.form-field-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.form-field{gap:.45rem;min-width:0;display:grid}.form-field label{color:var(--color-text);font-size:.8rem;font-weight:600}.form-field label span,.form-required-note span{color:var(--color-accent-light)}.form-field input,.form-field textarea{width:100%;min-width:0;color:var(--color-text);font:inherit;background:#101722a3;border:1px solid #aab8ca47;border-radius:.25rem;padding:.8rem .9rem;font-size:.88rem}.form-field input{min-height:3rem}.form-field textarea{resize:vertical;min-height:10rem}.form-field input:hover,.form-field textarea:hover{border-color:#81b5ff8f}.form-field input:focus-visible,.form-field textarea:focus-visible{outline:2px solid var(--color-accent-light);outline-offset:2px;border-color:var(--color-accent-light)}.form-field input::placeholder,.form-field textarea::placeholder{color:var(--color-subtle)}.form-honeypot{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.form-submit-row{flex-wrap:wrap;align-items:center;gap:.75rem 1.1rem;display:flex}.form-submit-row .button{cursor:pointer}.form-submit-row .button:disabled{cursor:wait;opacity:.7}.form-required-note{color:var(--color-subtle);margin:0;font-size:.72rem}.form-status{min-height:1.6rem;color:var(--color-secondary);margin:0;font-size:.84rem}.form-status[data-state=success]{color:#89d3ae}.form-status[data-state=error]{color:#ffb7b7}.contact-links{flex-direction:column;gap:.8rem}.contact-links a{border-bottom:1px solid var(--color-border);overflow-wrap:anywhere;justify-content:space-between;align-items:center;gap:1.5rem;min-height:2.75rem;padding-bottom:.75rem;text-decoration:none;display:flex}.site-footer{border-top:1px solid var(--color-border);background:var(--color-background);padding-block:1.5rem}.footer-inner{color:var(--color-subtle);justify-content:space-between;align-items:center;gap:1.5rem;font-size:.72rem;display:flex}.footer-inner p{margin:0}.footer-slogan{color:var(--color-secondary)}.footer-inner a{min-height:2.75rem;color:var(--color-secondary);align-items:center;text-decoration:none;display:inline-flex}@media (width<=900px){.hero-layout{grid-template-columns:minmax(0,1.2fr) minmax(220px,.8fr);gap:2rem}.art-frame{min-height:330px}.section-layout{grid-template-columns:150px minmax(0,1fr);gap:2.5rem}.expertise-row{grid-template-columns:2rem minmax(160px,.65fr) minmax(0,1.35fr);gap:1rem}}@media (width<=700px){.container{width:min(var(--container-width), calc(100% - 2.25rem))}.site-header{position:relative}.header-inner{flex-direction:column;align-items:flex-start;gap:1rem;min-height:auto;padding-block:1rem}.site-nav{width:100%}.nav-list{flex-wrap:wrap;justify-content:flex-start;gap:.2rem .55rem;width:100%;min-width:0;padding:0}.nav-list a{white-space:nowrap;font-size:.72rem}.nav-list .nav-contact{padding:.25rem .55rem}.footer-inner{flex-wrap:wrap;gap:.35rem 1.25rem}.hero{min-height:auto;padding:5.5rem 0 6rem}.hero-layout{grid-template-columns:1fr}.hero-copy{max-width:650px}.hero-art{display:none}.hero-grid{inset:0;mask-image:linear-gradient(#0000,#000 50%,#0000)}.hero-orbit{opacity:.55;width:72vw;top:66%;left:88%}.scroll-cue{bottom:1.5rem;right:1.15rem}.section-layout{grid-template-columns:1fr;gap:1.7rem}.section-heading-row{flex-direction:column;align-items:flex-start;gap:1.2rem}.section-intro{max-width:34rem}.expertise-row{grid-template-columns:2rem minmax(0,1fr)}.expertise-row h3{align-self:center}.skill-list{grid-column:2}.project-grid{grid-template-columns:1fr}.project-card,.project-card-featured{grid-row:auto;min-height:285px}.project-card-featured{grid-column:auto;grid-template-rows:auto auto 1fr auto;grid-template-columns:minmax(0,1fr)}.project-card-featured .project-visual,.project-card-featured .project-card-top,.project-card-featured .project-card-content,.project-card-featured .project-card-bottom{grid-area:auto/1}.contact-layout{grid-template-columns:1fr;gap:2.5rem}.experience-header{flex-direction:column;align-items:flex-start;gap:.25rem}.experience-period{text-align:left;padding-top:0}}@media (width<=540px){.form-field-row{grid-template-columns:minmax(0,1fr)}}@media (width<=440px){.eyebrow{flex-wrap:wrap;row-gap:.25rem;font-size:.62rem}h1{font-size:clamp(3rem,13vw,4rem)}.hero-actions{flex-direction:column;align-items:stretch}.button{justify-content:space-between}.project-card-bottom{flex-wrap:wrap;align-items:flex-start}.footer-inner{flex-direction:column;align-items:flex-start;gap:.45rem}}@media (width<=540px){.project-detail-grid{grid-template-columns:minmax(0,1fr);gap:1rem}}@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}}
