:root{--bg:#111110;--bg-deep:#0b0b0a;--panel:#191917;--panel-soft:#ffffff09;--text:#f2f0eb;--muted:#aaa7a0;--faint:#aaa69e;--line:#ffffff1f;--accent:#b74b4b;--accent-bright:#d26a66;--accent-wash:#b74b4b24}:root[data-theme=light]{--bg:#eeece6;--bg-deep:#e4e1da;--panel:#f8f6f0;--panel-soft:#0f0f0e09;--text:#171715;--muted:#5e5b56;--faint:#66615a;--line:#0f0f0e24;--accent:#9d3538;--accent-bright:#aa4144;--accent-wash:#9d35381a}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:7rem}body{background:var(--bg);color:var(--text);margin:0;font-family:Helvetica Neue,Arial,sans-serif;line-height:1.6;transition:background .3s,color .3s}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit}svg{fill:none;stroke:currentColor;stroke-width:1.8px;stroke-linecap:round;stroke-linejoin:round;width:1.15rem;height:1.15rem}.rail-links a:first-child svg{fill:currentColor;stroke:none}.page-noise{z-index:-2;pointer-events:none;opacity:.7;background-image:radial-gradient(circle,#ffffff21 .7px,#0000 .8px);background-size:22px 22px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000 0 44rem,#0000 80rem);mask-image:linear-gradient(#000 0 44rem,#0000 80rem)}:root[data-theme=light] .page-noise{opacity:.25;background-image:radial-gradient(circle,#0003 .7px,#0000 .8px)}body:before{content:"";z-index:-3;pointer-events:none;background:radial-gradient(circle at 40% -10%, #ffffff0d, transparent 32rem), radial-gradient(circle at 85% 35%, var(--accent-wash), transparent 28rem);position:fixed;inset:0}.skip-link{z-index:200;background:var(--text);color:var(--bg);border-radius:.5rem;padding:.75rem 1rem;position:fixed;top:-5rem;left:1rem}.skip-link:focus{top:1rem}:focus-visible{outline:2px solid var(--accent-bright);outline-offset:4px}.shell{width:min(1120px,100% - 12rem);margin-inline:auto}.site-header{z-index:100;background:linear-gradient(to bottom, color-mix(in srgb, var(--bg) 90%, transparent), transparent);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);grid-template-columns:1fr auto 1fr;align-items:center;padding:1.25rem 2rem;display:grid;position:fixed;top:0;left:0;right:0}.wordmark{letter-spacing:-.07em;width:max-content;font-family:Georgia,Times New Roman,serif;font-size:2rem;font-style:italic}.wordmark span{color:var(--accent-bright)}.nav-pill{border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 88%, transparent);box-shadow:none;border-radius:999px;align-items:center;gap:.2rem;padding:.35rem;display:flex}.nav-pill a{color:var(--muted);border-radius:999px;padding:.65rem .9rem;font-size:.86rem;transition:all .2s}.nav-pill a:hover{color:var(--text);background:var(--panel-soft)}.mobile-theme{display:none}.menu-toggle{border:1px solid var(--line);background:var(--panel);cursor:pointer;border-radius:50%;justify-self:end;place-items:center;width:2.7rem;height:2.7rem;display:none}.social-rail{z-index:90;border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 88%, transparent);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);border-radius:1.2rem;width:9.9rem;position:fixed;top:50%;right:1.5rem;overflow:hidden;transform:translateY(-50%);box-shadow:0 20px 60px #0003}.rail-links{gap:.1rem;padding:.7rem;display:grid}.rail-links a,.theme-toggle{width:100%;color:var(--muted);align-items:center;gap:.75rem;padding:.7rem .65rem;font-size:.84rem;transition:all .2s;display:flex}.rail-links a:hover,.theme-toggle:hover{color:var(--text);background:var(--panel-soft);border-radius:.65rem}.theme-toggle{border:0;border-top:1px solid var(--line);cursor:pointer;background:0 0;padding:.9rem 1.35rem}.hero{flex-direction:column;justify-content:center;align-items:flex-start;min-height:92vh;padding-top:10.5rem;padding-bottom:7rem;display:flex}.portrait-wrap{width:max-content;margin-bottom:2.7rem;position:relative}.portrait-ring{border:1px solid var(--line);background:linear-gradient(145deg, var(--panel), var(--bg-deep));width:8.5rem;height:8.5rem;box-shadow:0 0 0 .35rem color-mix(in srgb, var(--bg) 60%, transparent), 0 25px 70px #00000052;border-radius:50%;place-items:center;padding:.45rem;display:grid;position:relative}.portrait-ring:before{content:"";border-radius:inherit;background:radial-gradient(circle at 32% 25%, #ffffff2e, transparent 25%), linear-gradient(140deg, var(--accent), #251819 72%);opacity:.82;position:absolute;inset:.5rem}.portrait-ring span{z-index:1;letter-spacing:-.08em;color:#fff;font-family:Georgia,serif;font-size:2.75rem;position:relative}.portrait-photo{z-index:2;object-fit:cover;filter:grayscale()contrast(1.03);border-radius:50%;width:calc(100% - .9rem);height:calc(100% - .9rem);position:absolute;inset:.45rem}.hero{min-height:min(850px,100svh)}.hero-intro{grid-template-columns:minmax(0,1.45fr) minmax(245px,.7fr);align-items:center;gap:clamp(2rem,5vw,5rem);width:100%;display:grid}.hero-text{min-width:0}.hero h1{font-size:clamp(3.3rem,5.5vw,6.5rem)}.hero-copy{max-width:700px;margin-top:2rem}.portrait-wrap{aspect-ratio:1;isolation:isolate;place-items:center;width:100%;margin:0;display:grid}.portrait-orbit{border:1px solid var(--muted);opacity:.75;border-radius:46% 54% 58% 42%/42% 55% 45% 58%;animation:18s linear infinite portrait-orbit;position:absolute;inset:2%}.portrait-orbit:after{content:"";background:var(--accent-bright);width:.6rem;height:.6rem;box-shadow:0 0 0 .4rem var(--accent-wash);border-radius:50%;position:absolute;top:5%;left:24%}.portrait-ring{border:5px solid var(--panel);width:68%;height:68%;padding:0;overflow:hidden}.portrait-ring:before{display:none}.portrait-photo{object-position:center 19%;filter:grayscale()contrast(1.07);width:100%;height:100%;inset:0}.portrait-caption{color:var(--faint);text-transform:uppercase;letter-spacing:.15em;font-size:.7rem;position:absolute;bottom:-1.25rem;right:0}.resume-link{border:1px solid var(--line);border-radius:999px;align-items:center;gap:.65rem;padding:.85rem 1.15rem;font-size:.875rem;font-weight:600;transition:all .2s;display:inline-flex}.resume-link:hover{background:var(--panel);border-color:var(--accent);transform:translateY(-2px)}.resume-link span{color:var(--accent-bright)}.background-resume{margin-top:1.6rem}.stack-section{border-top:1px solid var(--line);margin-top:5rem;padding-top:2.5rem}.stack-heading{justify-content:space-between;align-items:end;gap:2rem;margin-bottom:1.5rem;display:flex}.stack-heading h3{letter-spacing:-.045em;margin:0;font-size:clamp(2rem,3.5vw,3rem);font-weight:520}.stack-heading p{max-width:24rem;color:var(--muted);margin:0;line-height:1.6}.stack-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;display:grid}.stack-group{border:1px solid var(--line);background:var(--panel);border-radius:.75rem;padding:1.5rem}.stack-group h4{color:var(--accent-bright);text-transform:uppercase;letter-spacing:.12em;margin:0 0 1.5rem;font-size:.8rem}.stack-group>div{flex-wrap:wrap;gap:.5rem;display:flex}.stack-group span{border:1px solid var(--line);color:var(--text);border-radius:.35rem;padding:.5rem .7rem;font-size:.875rem}@keyframes portrait-orbit{to{transform:rotate(360deg)}}.availability-dot{border:3px solid var(--bg);background:#71c58b;border-radius:50%;width:1rem;height:1rem;position:absolute;bottom:.5rem;right:.4rem;box-shadow:0 0 0 1px #71c58b40}.eyebrow{color:var(--muted);text-transform:uppercase;letter-spacing:.14em;align-items:center;gap:.65rem;margin:0 0 1.2rem;font-size:.7rem;font-weight:650;display:flex}.eyebrow span{background:var(--accent-bright);width:1.9rem;height:1px}.hero h1{letter-spacing:-.05em;max-width:930px;margin:0;font-size:clamp(2.6rem,4.8vw,4.75rem);font-weight:520;line-height:1.08}.hero h1 em,.about-layout h2 em{font-style:normal;font-weight:inherit;color:var(--muted)}.hero-copy{max-width:760px;color:var(--muted);letter-spacing:-.015em;text-wrap:pretty;margin:3rem 0 0;font-size:clamp(1.05rem,1.55vw,1.28rem);line-height:1.75}.hero-copy.secondary{color:var(--faint);margin-top:.6rem}.role-line{color:var(--faint);text-transform:uppercase;letter-spacing:.06em;flex-wrap:wrap;gap:.5rem .9rem;margin-top:1.35rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.66rem;display:flex}.role-line span+span:before{content:"/";color:var(--accent-bright);margin-right:.9rem}.hero-actions{align-items:center;gap:1.5rem;margin-top:2.25rem;display:flex}.primary-link{border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:999px;align-items:center;gap:.8rem;min-height:44px;padding:.88rem 1.2rem;font-size:.84rem;font-weight:650;transition:all .2s;display:inline-flex}.primary-link:hover{background:color-mix(in srgb, var(--accent) 85%, #000);transform:translateY(-2px)}.primary-link svg{width:1rem}.text-link{color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:.25rem;font-size:.84rem}.text-link:hover{color:var(--text)}.now-line{color:var(--faint);align-items:center;gap:.55rem;margin-top:1.5rem;font-size:.76rem;display:flex}.status-pulse{background:#71c58b;border-radius:50%;width:.43rem;height:.43rem;box-shadow:0 0 0 4px #71c58b1a}.proof-strip{border-block:1px solid var(--line);grid-template-columns:repeat(3,1fr);width:min(1120px,100% - 12rem);margin:0 auto;display:grid}.proof-strip div{border-right:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.4rem 1rem;padding:1.45rem 1.5rem;display:flex}.proof-strip div:last-child{border-right:0}.proof-strip strong{color:var(--text);font-size:1rem;font-weight:600}.proof-strip span{color:var(--muted);font-size:.875rem}.section{padding-block:clamp(3.5rem,6vw,5.5rem)}.section-kicker{color:var(--muted);align-items:center;gap:.8rem;margin-bottom:3rem;display:flex}.section-kicker span{border:1px solid var(--line);width:1.8rem;height:1.8rem;color:var(--accent-bright);border-radius:50%;place-items:center;font-family:Georgia,serif;font-size:.72rem;display:grid}.section-kicker p{text-transform:uppercase;letter-spacing:.15em;margin:0;font-size:.7rem;font-weight:650}.about-layout{grid-template-columns:.95fr 1.05fr;gap:clamp(3rem,8vw,8rem);display:grid}.about-layout h2,.section-heading h2{letter-spacing:-.05em;margin:0;font-size:clamp(2rem,3.4vw,3.25rem);font-weight:520;line-height:1.06}.body-copy{padding-top:.4rem}.body-copy>p{color:var(--muted);text-wrap:pretty;margin:0 0 1.3rem;font-size:1rem;line-height:1.78}.body-copy blockquote{border-left:2px solid var(--accent);color:var(--text);margin:2.2rem 0 0;padding:1rem 0 1rem 1.4rem;font-family:Georgia,serif;font-size:1.25rem;font-style:italic;line-height:1.5}.section-heading{grid-template-columns:1fr .7fr;align-items:end;gap:3rem;margin-bottom:3.5rem;display:grid}.section-heading>p{color:var(--muted);margin:0;line-height:1.65}.skills-list{border-top:1px solid var(--line)}.skill-row{border-bottom:1px solid var(--line);grid-template-columns:.22fr .8fr 1.2fr 1fr;align-items:start;gap:2rem;padding:2rem 0;display:grid}.skill-index{color:var(--accent-bright);font-family:Georgia,serif;font-size:.8rem}.skill-row h3{letter-spacing:-.02em;margin:0;font-size:1.08rem;font-weight:550}.skill-row>p{color:var(--muted);margin:0;font-size:.88rem;line-height:1.6}.tool-list{flex-wrap:wrap;justify-content:flex-end;gap:.4rem;display:flex}.tool-list span{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.45rem .65rem;font-size:.7rem}.projects-section{background:color-mix(in srgb, var(--bg-deep) 68%, transparent);border-block:1px solid var(--line);padding-bottom:2rem}.project-heading{margin-bottom:2.5rem}.featured-work{gap:1.25rem;margin-bottom:3rem;display:grid}.featured-project{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:center;gap:2rem;padding-block:1.25rem;display:grid}.featured-project>img{aspect-ratio:16/10;object-fit:cover;object-position:top;border:1px solid var(--line);border-radius:.4rem;width:100%;display:block}.featured-type{aspect-ratio:16/10;background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:.4rem;flex-direction:column;justify-content:space-between;gap:1.5rem;padding:clamp(1.25rem,3vw,2rem);display:flex}.featured-type>span,.featured-type>small{color:var(--muted);letter-spacing:.06em;font-size:.8rem}.featured-type>strong{letter-spacing:-.035em;font-size:clamp(1.5rem,3vw,2.5rem);font-weight:550;line-height:1.12}.featured-label{color:var(--accent-bright);font-size:.8rem}.featured-copy h3{letter-spacing:-.04em;margin:.8rem 0;font-size:clamp(1.6rem,2.8vw,2.25rem);font-weight:550}.featured-copy p{max-width:30rem;color:var(--muted);margin:0 0 1.25rem;line-height:1.7}.featured-action{min-height:44px;color:var(--text);align-items:center;gap:.6rem;font-size:.875rem;display:inline-flex}.featured-action svg{width:1rem;height:1rem;transition:transform .2s}.featured-project:hover .featured-action{color:var(--accent-bright)}.featured-project:hover .featured-action svg{transform:translate(2px,-2px)}.archive-label{color:var(--muted);margin:0 0 1rem;font-size:.875rem}.project-role{color:var(--muted);flex-wrap:wrap;gap:.5rem 1.25rem;margin:0 0 1.5rem 12%;font-size:.875rem;line-height:1.6;display:flex}.project-role>span{color:var(--text);font-weight:600}.projects-list{border-top:1px solid var(--line)}.project{border-bottom:1px solid var(--line);padding-block:3.5rem}.project-top{grid-template-columns:.12fr 1fr auto;align-items:start;gap:2rem;display:grid}.project-number{color:var(--accent-bright);padding-top:.5rem;font-family:Georgia,serif;font-size:1rem}.project-title-wrap h3{letter-spacing:-.055em;max-width:780px;margin:.9rem 0 0;font-size:clamp(1.8rem,3vw,2.75rem);font-weight:520;line-height:1.02}.project-tags{flex-wrap:wrap;gap:.45rem;display:flex}.project-tags span{color:var(--faint);text-transform:uppercase;letter-spacing:.1em;font-size:.66rem}.project-tags span+span:before{content:"·";color:var(--accent-bright);margin-right:.45rem}.project-status{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap;border:1px solid var(--line);border-radius:999px;align-items:center;gap:.45rem;padding:.55rem .75rem;font-size:.7rem;display:inline-flex}.project-status i{background:currentColor;border-radius:50%;width:.38rem;height:.38rem}.why-note{border-block:1px solid var(--line);grid-template-columns:.35fr 1fr;gap:2rem;max-width:950px;margin:2rem 0 2rem 12%;padding:1.5rem 0;display:grid}.why-note>span,.project-notes span,.project-outcome>span{color:var(--accent-bright);text-transform:uppercase;letter-spacing:.13em;font-size:.66rem;font-weight:650}.why-note p{color:var(--text);text-wrap:pretty;margin:0;font-family:Georgia,serif;font-size:clamp(1.15rem,1.9vw,1.45rem);font-style:italic;line-height:1.55}.project-notes{border-top:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin-left:12%;display:grid}.project-notes>div{border-right:1px solid var(--line);padding:1.8rem 1.8rem 1.8rem 0}.project-notes>div+div{padding-left:1.8rem}.project-notes>div:last-child{border-right:0}.project-notes p{color:var(--muted);text-wrap:pretty;margin:.9rem 0 0;font-size:.88rem;line-height:1.7}.project-outcome{border-block:1px solid var(--line);grid-template-columns:.35fr 1fr;gap:2rem;margin:0 0 0 12%;padding:1.25rem 0;display:grid}.project-outcome p{color:var(--muted);margin:0;font-size:.84rem;line-height:1.6}.project-footer{grid-template-columns:1fr auto;align-items:center;gap:2rem;margin:1.7rem 0 0 12%;display:grid}.tech-list{flex-wrap:wrap;gap:.42rem;display:flex}.tech-list span{background:var(--panel-soft);color:var(--faint);border-radius:.3rem;padding:.4rem .58rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.65rem}.project-links{flex-wrap:wrap;gap:.65rem;display:flex}.project-links a{border:1px solid var(--line);min-height:44px;color:var(--text);border-radius:999px;align-items:center;gap:.5rem;padding:.7rem .85rem;font-size:.76rem;transition:all .2s;display:inline-flex}.project-links a:hover{border-color:var(--accent);background:var(--accent-wash)}.project-links svg{width:.85rem;height:.85rem}.background-grid{grid-template-columns:.75fr 1.25fr;gap:clamp(3rem,8vw,8rem);display:grid}.services-layout{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(2rem,6vw,5rem);display:grid}.services-intro h2{letter-spacing:-.05em;margin:0;font-size:clamp(2rem,3.4vw,3.25rem);font-weight:520;line-height:1.08}.services-intro>p{color:var(--muted);margin:1.5rem 0;line-height:1.75}.services-intro .team-note{font-size:.875rem}.team-note a{color:var(--text);text-underline-offset:.2rem;text-decoration:underline}.services-list{border-top:1px solid var(--line)}.services-list article{border-bottom:1px solid var(--line);padding:1.5rem 0}.services-list h3{letter-spacing:-.025em;margin:0;font-size:1.2rem;font-weight:550}.services-list p{color:var(--muted);margin:.8rem 0 .5rem;line-height:1.7}.service-example{min-height:44px;color:var(--accent-bright);align-items:center;gap:.6rem;font-size:.875rem;display:inline-flex}.service-example:hover{text-underline-offset:.25rem;text-decoration:underline}.contact-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.contact-actions svg{width:1rem;height:1rem}.background-heading{align-self:start;position:sticky;top:8rem}.background-heading h2{letter-spacing:-.05em;margin:0;font-size:clamp(2rem,3.4vw,3.25rem);font-weight:520;line-height:1.05}.background-heading>p{max-width:25rem;color:var(--muted);margin:1.5rem 0 0;line-height:1.7}.timeline{border-top:1px solid var(--line)}.timeline-item{border-bottom:1px solid var(--line);grid-template-columns:8rem 1fr;gap:1.5rem;padding:2.5rem 0;display:grid}.timeline-year{color:var(--accent-bright);font-family:Georgia,serif;font-size:.83rem}.timeline-type{text-transform:uppercase;letter-spacing:.13em;color:var(--faint)!important;margin:0 0 .55rem!important;font-size:.66rem!important}.timeline-item h3{letter-spacing:-.02em;margin:0 0 1rem;font-size:1.3rem;font-weight:550}.timeline-item p,.timeline-item li{color:var(--muted);font-size:.88rem;line-height:1.65}.timeline-item p{margin:0 0 .8rem}.timeline-item ul{margin:1rem 0 0;padding-left:1rem}.timeline-item li{margin-bottom:.4rem;padding-left:.3rem}.timeline-item li::marker{color:var(--accent-bright)}.contact-section{background:var(--panel);border-top:1px solid var(--line);padding:5rem 0 2rem}.contact-layout{grid-template-columns:1.25fr .75fr;align-items:end;gap:clamp(3rem,8vw,8rem);display:grid}.contact-layout h2{letter-spacing:-.06em;max-width:780px;margin:0;font-size:clamp(2.1rem,3.6vw,3.5rem);font-weight:520;line-height:1}.contact-copy p{color:var(--muted);margin:0 0 2rem;line-height:1.75}.contact-cards{border-block:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin-top:3rem;display:grid}.contact-cards>*{border-right:1px solid var(--line);flex-direction:column;gap:.65rem;min-width:0;padding:1.5rem;display:flex}.contact-cards>:last-child{border-right:0}.contact-cards span{color:var(--faint);text-transform:uppercase;letter-spacing:.12em;font-size:.65rem}.contact-cards strong{overflow-wrap:anywhere;font-size:.82rem;font-weight:500}.contact-cards a:hover strong{color:var(--accent-bright)}.site-footer{color:var(--faint);grid-template-columns:1fr auto 1fr;align-items:center;gap:2rem;padding-block:2rem;font-size:.7rem;display:grid}.site-footer p{margin:0}.site-footer a{color:var(--muted);justify-self:end}@media (width<=1280px){.shell,.proof-strip{width:min(970px,100% - 8rem);margin-left:4rem}.social-rail{right:1rem}}@media (width<=1040px){.social-rail{display:none}.mobile-theme{min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;padding:.65rem .9rem;display:block}.shell,.proof-strip{width:min(920px,100% - 4rem);margin-inline:auto}.project-notes,.why-note,.project-outcome,.project-footer,.project-role{margin-left:0}.hero-intro{grid-template-columns:minmax(0,1.2fr) minmax(210px,.7fr);gap:2rem}}@media (width<=760px){.site-header{grid-template-columns:1fr auto;padding:1rem 1.25rem}.menu-toggle{display:grid}.nav-pill{border-radius:1rem;flex-direction:column;align-items:stretch;min-width:12rem;padding:.5rem;display:none;position:absolute;top:4.5rem;right:1.25rem}.nav-pill.is-open{display:flex}.nav-pill a{padding:.8rem 1rem}.mobile-theme{border:0;border-top:1px solid var(--line);color:var(--muted);text-align:left;cursor:pointer;background:0 0;margin-top:.25rem;padding:.8rem 1rem;font-size:.86rem;display:block}.shell,.proof-strip{width:calc(100% - 2.5rem)}.hero{min-height:auto;padding-top:8.5rem;padding-bottom:5rem}.hero-intro{flex-direction:column;align-items:flex-start;gap:2.5rem;display:flex}.portrait-wrap{align-self:center;width:min(13rem,58vw)}.portrait-caption{bottom:-.4rem}.stack-heading{display:block}.stack-heading p{margin-top:.75rem}.stack-grid{grid-template-columns:1fr}.portrait-ring{width:68%;height:68%}.hero h1{font-size:clamp(2.3rem,9.5vw,3.75rem)}.hero-copy{margin-top:1.5rem;font-size:1rem}.hero-actions{flex-wrap:wrap;align-items:center;gap:.75rem}.proof-strip{grid-template-columns:1fr}.proof-strip div{border-right:0;border-bottom:1px solid var(--line)}.proof-strip div:last-child{border-bottom:0}.section{padding-block:3.5rem}.about-layout,.section-heading,.services-layout,.featured-project{grid-template-columns:1fr;gap:2rem}.featured-project{gap:1.25rem;padding-block:1.5rem}.featured-type{aspect-ratio:auto;min-height:15rem}.skill-row{grid-template-columns:2rem 1fr;gap:.8rem 1rem}.skill-row>p,.skill-row .tool-list{grid-column:2}.tool-list{justify-content:flex-start}.project-top{grid-template-columns:2rem 1fr;gap:1rem}.project-status{white-space:normal;grid-column:2;justify-self:start;max-width:100%;line-height:1.5}.why-note,.project-outcome{grid-template-columns:1fr;gap:.8rem}.project-notes{grid-template-columns:1fr}.project-notes>div,.project-notes>div+div{border-right:0;border-bottom:1px solid var(--line);padding:1.5rem 0}.project-notes>div:last-child{border-bottom:0}.project-footer{grid-template-columns:1fr}.project-links{margin-top:.4rem}.background-grid,.contact-layout{grid-template-columns:1fr}.background-heading{position:static}.timeline-item{grid-template-columns:1fr;gap:.8rem}.contact-cards{grid-template-columns:1fr}.contact-cards>*{border-right:0;border-bottom:1px solid var(--line)}.contact-cards>:last-child{border-bottom:0}.site-footer{grid-template-columns:1fr;gap:.6rem}.site-footer a{justify-self:start}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.project-index{flex-wrap:wrap;gap:.65rem;margin-bottom:3rem;display:flex}.project-index a{border:1px solid var(--line);border-radius:999px;align-items:center;gap:.65rem;padding:.75rem 1rem;font-size:.875rem;display:flex}.project-index a:hover{border-color:var(--accent);background:var(--accent-wash)}.project-index a span{color:var(--accent-bright);font-variant-numeric:tabular-nums}.project{scroll-margin-top:8rem}.project-top{grid-template-columns:2rem minmax(0,1fr);gap:1rem}.project-status{white-space:normal;grid-column:2;justify-self:start;line-height:1.5}.project-status i{display:none}.project-preview{margin:2rem 0 0 12%}.project-preview>button{background:var(--panel);border:1px solid var(--line);cursor:zoom-in;border-radius:.8rem;width:100%;padding:0;display:block;position:relative;overflow:hidden}.project-preview img{aspect-ratio:16/10;object-fit:cover;object-position:top;width:100%;height:auto;max-height:30rem;transition:transform .25s;display:block}.project-preview button:hover img{transform:scale(1.015)}.preview-open{color:#f2f0eb;background:#111110;border:1px solid #aaa7a0;border-radius:999px;padding:.65rem .9rem;font-size:.875rem;position:absolute;bottom:1rem;right:1rem}.project-preview figcaption{color:var(--muted);margin-top:.7rem;font-size:.8rem}.preview-note{border:1px solid var(--line);background:var(--panel);border-radius:.8rem;margin:2rem 0 0 12%;padding:1.5rem}.preview-note>span{color:var(--text);font-size:1.1rem}.preview-note p{color:var(--muted);margin-bottom:0;line-height:1.65}.project-details{border-top:1px solid var(--line);margin-left:12%}.project-details summary{cursor:pointer;color:var(--text);padding:1.2rem 0;font-size:1rem}.project-details summary>span{color:var(--muted);margin-left:1rem;font-size:.875rem}.project-details .project-notes,.project-details .project-outcome{margin-left:0}.project-notes p,.project-outcome p{font-size:1rem}.project-tags span,.tech-list span,.project-status,.why-note>span,.project-notes span,.project-outcome>span{font-size:.8rem}.project-links a,.nav-pill a,.role-line,.eyebrow,.now-line,.primary-link,.text-link{font-size:.875rem}.companion-project{border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--panel);border-radius:.5rem;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:1.5rem;margin:2rem 0 0 12%;padding:1.5rem;display:grid}.companion-preview{border:1px solid var(--line);background:var(--bg);cursor:zoom-in;border-radius:.4rem;align-self:start;width:100%;padding:0;display:block;overflow:hidden}.companion-preview img{width:100%;height:auto;display:block}.companion-label{color:var(--accent-bright);text-transform:uppercase;letter-spacing:.08em;margin:0 0 .6rem;font-size:.8rem}.companion-project h4{letter-spacing:-.035em;margin:0;font-size:1.6rem;font-weight:500}.companion-project h4+p{color:var(--muted);line-height:1.65}.screenshot-dialog{color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:.8rem;width:min(1200px,94vw);max-height:92dvh;padding:0}.screenshot-dialog::backdrop{background:#000c}.screenshot-dialog>img{width:100%;height:auto;display:block}.dialog-header{background:var(--panel);justify-content:space-between;align-items:center;gap:1rem;padding:1rem;display:flex;position:sticky;top:0}.dialog-header h2{margin:0;font-size:1rem}.dialog-header button{border:1px solid var(--line);background:var(--bg);cursor:pointer;border-radius:50%;flex-shrink:0;place-items:center;width:44px;height:44px;display:grid}@media (width>=1281px){.shell,.proof-strip{width:min(1080px,100% - 20rem);margin-left:max(5rem,50% - 660px)}}@media (width<=1040px){.project-preview,.preview-note,.project-details,.companion-project{margin-left:0}}@media (width<=760px){.project-index{gap:.5rem}.project-index a{overflow-wrap:anywhere;max-width:100%;padding:.65rem .8rem;font-size:.8rem}.project-details summary>span{margin:.5rem 0 0;display:block}.companion-project{grid-template-columns:1fr;padding:1rem}.preview-open{font-size:.8rem;bottom:.6rem;right:.6rem}.project-preview img{aspect-ratio:16/10}.project-title-wrap h3{overflow-wrap:anywhere;font-size:clamp(1.8rem,7vw,3rem);line-height:1.1}.hero-copy,.contact-cards strong{overflow-wrap:anywhere}}@media (prefers-reduced-motion:reduce){.project-preview img{transition:none}}@media (width>=761px) and (width<=960px){.site-header{grid-template-columns:1fr auto}.menu-toggle{display:grid}.nav-pill{border-radius:1rem;flex-direction:column;align-items:stretch;min-width:12rem;padding:.5rem;display:none;position:absolute;top:4.5rem;right:1.25rem}.nav-pill.is-open{display:flex}.nav-pill a,.mobile-theme{text-align:left;min-height:44px;padding:.8rem 1rem}}@media (prefers-reduced-motion:reduce){.featured-action svg{transition:none}.featured-project:hover .featured-action svg{transform:none}}
