:root{color-scheme:light;--canvas:#f8f8fa;--surface:#fff;--surface-raised:#f0eff5;--ink:#191920;--muted:#62626f;--line:#dedee6;--line-strong:#a5a4b4;--accent:#5943ce;--accent-fill:#604bdd;--accent-on:#fff;--accent-wash:#efebfd;--portrait-surface:#d7cdf4;--grid:#5943ce0e;--header:#f8f8faf7;--font-display:"Clash Display", "Arial", sans-serif;--font-body:"Satoshi", "Arial", sans-serif;--font-mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--page-width:1200px;--gutter:32px;--section-space:104px;--ease:cubic-bezier(.16, 1, .3, 1)}:root[data-theme=dark]{color-scheme:dark;--canvas:#090a0d;--surface:#0f1015;--surface-raised:#181921;--ink:#f3f2f7;--muted:#a1a1af;--line:#272831;--line-strong:#5e5b72;--accent:#a99bff;--accent-fill:#7058e8;--accent-on:#fff;--accent-wash:#1d1833;--portrait-surface:#77708b;--grid:#a99bff0e;--header:#090a0df7}@media (width<=1023px){:root{--gutter:24px;--section-space:80px}}@media (width<=767px){:root{--gutter:16px;--section-space:64px}}@font-face{font-family:Clash Display;src:url(/fonts/clash-display-600.woff2)format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/satoshi-400.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/satoshi-500.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Satoshi;src:url(/fonts/satoshi-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}*{box-sizing:border-box}html{background:var(--canvas);scroll-padding-top:88px}body{color:var(--ink);background:var(--canvas);font:400 16px/1.65 var(--font-body);-webkit-font-smoothing:antialiased;margin:0}button,input{font:inherit}button,summary,a{-webkit-tap-highlight-color:transparent;touch-action:manipulation}a{color:inherit;text-decoration:none}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}button,summary{color:inherit}img{max-width:100%;height:auto;display:block}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-family:var(--font-body);font-weight:700}h1{letter-spacing:-.035em;font-size:clamp(54px,5.75vw,82px);line-height:1.06}h2{letter-spacing:-.03em;font-size:clamp(40px,3.7vw,52px);line-height:1.08}h3{letter-spacing:-.02em;font-size:26px;line-height:1.15}p{text-wrap:pretty}[hidden]{display:none!important}::selection{color:var(--accent-on);background:var(--accent-fill)}:focus-visible{outline:2px solid var(--accent);outline-offset:5px}main:focus{outline:none}.sr-only,.skip-link:not(:focus){clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link:focus{z-index:50;background:var(--surface);color:var(--ink);padding:12px 24px;position:fixed;inset:12px auto auto 12px}.icon{vertical-align:middle;flex:none;width:20px;height:20px;display:inline-flex}.icon svg{fill:currentColor;width:100%;height:100%}.mono{font-family:var(--font-mono);font-size:12px;line-height:1.55}.accent{color:var(--accent)}.muted{color:var(--muted)}.frame{max-width:var(--page-width);border-inline:1px solid var(--line);margin-inline:auto;position:relative}.frame:before,.frame:after{content:"";border:1px solid var(--line-strong);background:var(--canvas);z-index:1;pointer-events:none;width:9px;height:9px;position:absolute;top:-5px}.frame:before{left:-5px}.frame:after{right:-5px}.section{padding:var(--section-space) 48px;border-top:1px solid var(--line)}.section-heading{margin-bottom:52px}.section-heading-block>p:not(.section-tag){color:var(--muted);max-width:480px;margin-top:22px;font-size:16px;line-height:1.65}.section-tag{width:fit-content;font:500 12px/1.5 var(--font-mono);letter-spacing:.08em;color:var(--muted);align-items:baseline;gap:10px;margin-bottom:26px;display:inline-flex}.section-tag-mark{color:var(--accent);letter-spacing:-.12em;font-size:12px}.section-tag-label{white-space:nowrap}.button{background:var(--accent-fill);min-height:50px;color:var(--accent-on);white-space:nowrap;transition:background .2s, transform .2s var(--ease), border-color .2s, color .2s;border:1px solid #0000;border-radius:0;justify-content:center;align-items:center;gap:16px;padding:14px 24px;font-size:14px;font-weight:700;line-height:1.3;display:inline-flex}.button:hover{background:var(--accent)}[data-theme=dark] .button:hover{color:#17131f}@media (prefers-reduced-motion:no-preference){.button:active{transform:translateY(1px)scale(.985)}.button:focus-visible{outline-offset:6px}}.button .icon,.text-link .icon{width:17px;height:17px;transition:transform .25s var(--ease)}.button:hover .icon,.text-link:hover .icon{transform:translate(2px,-2px)}.button-outline{color:var(--ink);border-color:var(--line-strong);background:0 0}.button-outline:hover,[data-theme=dark] .button-outline:hover{background:var(--surface-raised);color:var(--ink);border-color:var(--ink)}.button-small{gap:10px;min-height:44px;padding:11px 18px;font-size:14px}.icon-button{border:1px solid var(--line);width:44px;height:44px;transition:border-color .2s, background .2s, transform .15s var(--ease), color .2s, box-shadow .2s var(--ease);background:0 0;border-radius:0;place-items:center;display:inline-grid}.icon-button:hover{border-color:var(--accent);background:var(--accent-wash);color:var(--accent)}@media (prefers-reduced-motion:no-preference){.icon-button:active{transform:scale(.92)}}.text-link{min-height:44px;transition:color .2s var(--ease);align-items:center;gap:14px;font-size:14px;font-weight:700;display:inline-flex}.text-link:hover{color:var(--accent)}.site-header{z-index:20;background:var(--header);border-bottom:1px solid var(--line);position:sticky;top:0}.header-inner{max-width:var(--page-width);justify-content:space-between;align-items:center;gap:24px;min-height:72px;margin:auto;padding-inline:32px;display:flex}.brand{flex:none;align-items:center;min-height:44px;display:inline-flex}.brand-mark{font-family:var(--font-display);letter-spacing:normal;align-items:baseline;gap:4px;font-size:31px;line-height:.95;display:inline-flex}.brand-letters{letter-spacing:.015em}.brand-accent{background:var(--accent);width:11px;height:3px;transition:width .25s var(--ease);flex:none;align-self:flex-end;margin-bottom:3px;position:relative}.brand:hover .brand-accent,.brand:focus-visible .brand-accent{width:16px}.desktop-nav{align-items:center;gap:26px;margin-left:auto;display:flex}.desktop-nav a{min-height:44px;color:var(--muted);align-items:center;font-size:14px;transition:color .2s;display:grid;position:relative}.desktop-nav a:hover,.desktop-nav a[aria-current]{color:var(--ink)}.desktop-nav a:after{content:"";background:var(--accent);transform-origin:0;width:100%;height:2px;transition:transform .25s var(--ease);position:absolute;bottom:3px;left:0;transform:scaleX(0)}.desktop-nav a:hover:after,.desktop-nav a[aria-current]:after{transform:scaleX(1)}.header-actions{align-items:center;gap:16px;display:flex}.availability-banner{border-bottom:1px solid var(--line);background:var(--surface);align-items:center;gap:12px;min-height:48px;padding-inline:48px;display:flex}.availability-banner:before,.availability-banner:after{display:none}.availability-mark{background:var(--accent);flex:0 0 7px;width:7px;height:7px;position:relative}.availability-mark:after{content:"";border:1px solid var(--accent);opacity:0;animation:2.2s ease-out infinite availability-pulse;position:absolute;inset:-4px}.availability-banner p{color:var(--ink);font-size:14px;font-weight:500}.availability-banner p span{color:var(--muted);padding-inline:4px}.availability-mobile-link{display:none!important}.availability-banner a{min-height:44px;color:var(--accent);white-space:nowrap;align-items:center;gap:8px;margin-left:auto;font-size:14px;font-weight:700;display:inline-flex}.availability-banner a .icon{width:15px;height:15px;transition:transform .25s var(--ease)}.availability-banner a:hover .icon{transform:translate(2px,-2px)}.theme-toggle{background:var(--surface);color:var(--muted);border-radius:0;position:relative;overflow:hidden}.theme-toggle:focus-visible{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);outline:none}.theme-toggle .theme-sun,.theme-toggle .theme-moon{transition:opacity .25s var(--ease), transform .35s var(--ease);place-items:center;display:grid;position:absolute;inset:0}.theme-toggle .icon{width:20px;height:20px;margin:0;position:static}.theme-sun,.theme-moon{place-items:center;display:grid}.theme-moon{opacity:1;transform:rotate(0)scale(1)}.theme-sun{opacity:0;transform:rotate(-90deg)scale(.5)}[data-theme=dark] .theme-moon{opacity:0;transform:rotate(90deg)scale(.5)}[data-theme=dark] .theme-sun{opacity:1;transform:rotate(0)scale(1)}.mobile-menu{display:none}.mobile-menu summary .icon{transition:transform .25s var(--ease)}.mobile-menu[open] summary .icon{transform:rotate(90deg)}.mobile-menu>nav{transform-origin:top}@media (prefers-reduced-motion:no-preference){.mobile-menu[open]>nav{animation:mobile-menu-in .25s var(--ease) both}}@keyframes mobile-menu-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.hero{grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);align-items:center;gap:38px;min-height:614px;padding:62px 48px;display:grid}.hero-grid,.contact-grid{background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);pointer-events:none;background-size:80px 80px;position:absolute;inset:0;mask-image:linear-gradient(#000 20%,#0000 95%)}.hero-copy,.profile-panel{position:relative}.hero-copy h1>span:first-of-type{color:var(--accent)}.headline-cursor{color:var(--accent);margin-left:4px;display:inline-block}.hero-description{max-width:425px;color:var(--muted);margin-top:26px;font-size:17px;line-height:1.7}.hero-actions{flex-wrap:wrap;align-items:center;gap:12px;margin-top:32px;display:flex}.profile-panel{border:1px solid var(--line-strong);background:var(--surface);min-width:0;transition:border-color .25s var(--ease), box-shadow .35s var(--ease)}@media (prefers-reduced-motion:no-preference){.profile-panel:hover{border-color:var(--accent);box-shadow:0 12px 40px -16px color-mix(in srgb, var(--accent) 35%, transparent)}}.panel-bar{border-bottom:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;padding:10px 16px;display:flex}.panel-bar .icon{width:16px;height:16px}.panel-bar>span:first-child{align-items:center;gap:10px;display:flex}.terminal-identity{background:var(--accent-wash);border-bottom:1px solid var(--line);align-items:center;gap:16px;padding:25px 22px;display:flex}.terminal-identity img{object-fit:cover;filter:grayscale();border-radius:50%;width:54px;height:54px}.terminal-identity strong{font-size:15px;font-weight:700;display:block}.terminal-identity div>span{color:var(--muted);margin-top:3px;font-size:13px;line-height:1.5;display:block}.profile-terminal{font-family:var(--font-mono);padding:22px 22px 0;font-size:12px}.terminal-path{color:var(--muted);margin-bottom:12px;font-size:12px}.terminal-command{color:var(--ink);align-items:center;gap:9px;height:18px;margin-bottom:13px;display:flex}.terminal-command>span:first-child{color:var(--accent)}.typing-cursor{background:var(--accent);width:6px;height:13px;margin-left:-5px;display:inline-block}.terminal-stage{min-height:176px}.terminal-output{color:var(--ink);flex-direction:column;gap:8px;font-size:12px;line-height:1.75;display:flex}.terminal-output em{width:67px;color:var(--muted);font-style:normal;display:inline-block}.terminal-output.is-typing{visibility:hidden}.stack-section{border-top:1px solid var(--line);grid-template-columns:minmax(0,1fr);display:grid}.stack-window{align-items:center;padding:12px 24px;display:flex;overflow:hidden;mask-image:linear-gradient(90deg,#0000,#000 4% 96%,#0000)}.stack-track{width:max-content;display:flex}.stack-group{flex-shrink:0;align-items:center;gap:14px;padding:20px 14px;display:flex}.stack-group span{color:var(--muted);white-space:nowrap;align-items:center;gap:14px;font-size:13px;font-weight:500;line-height:1.5;display:inline-flex}.stack-group span:not(:last-child):after{content:"";background:var(--line-strong);border-radius:50%;flex:0 0 3px;width:3px;height:3px;margin-inline:2px}.services-section{display:block}.services-intro{margin-bottom:48px}.services-board{border:1px solid var(--line);background:var(--canvas);grid-template-columns:repeat(3,minmax(0,1fr));display:grid}.service-panel{min-width:0;min-height:340px;transition:background .25s var(--ease), border-color .25s var(--ease);flex-direction:column;padding:30px;display:flex}.service-panel+.service-panel{border-left:1px solid var(--line)}@media (prefers-reduced-motion:no-preference){.service-panel:not(.service-featured):hover{background:var(--surface-raised)}.service-panel:not(.service-featured):hover+.service-panel,.service-panel:not(.service-featured):has(+.service-panel:hover){border-left-color:#0000}}.service-featured{border-top:2px solid var(--accent);min-height:340px;padding:30px}.service-panel-meta{justify-content:space-between;align-items:center;gap:20px;display:flex}.service-number{color:var(--muted);letter-spacing:.06em;font-size:12px}.service-icon{width:24px;height:24px;color:var(--accent);transition:transform .25s var(--ease);place-items:center;display:grid}.service-panel:hover .service-icon{transform:translateY(-2px)}.service-panel-copy,.service-featured .service-panel-copy{margin-top:30px}.service-panel h3,.service-featured h3{font-size:27px}.service-panel-copy p{max-width:48ch;color:var(--muted);margin-top:14px;font-size:16px;line-height:1.7}.service-featured .service-panel-copy p{max-width:43ch;font-size:16px}.service-capabilities{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;gap:7px 0;margin:auto 0 0;padding:18px 0 0;font-size:12px;line-height:1.6;list-style:none;display:flex}.service-capabilities li{align-items:center;display:inline-flex}.service-capabilities li:not(:last-child):after{content:"";background:var(--accent);border-radius:50%;flex:0 0 3px;width:3px;height:3px;margin-inline:12px}.work-section{background:var(--surface)}.project{background:var(--canvas);border:1px solid var(--line);min-width:0;transition:border-color .25s var(--ease);flex-direction:column;display:flex}.project-copy{flex-direction:column;align-items:flex-start;padding:32px;display:flex}.project h3{font-size:clamp(28px,2.8vw,32px)}.project-description{color:var(--ink);max-width:35ch;margin-top:16px;font-size:18px;line-height:1.5}.project-detail{color:var(--muted);max-width:43ch;margin-top:12px;font-size:16px;line-height:1.65}.project-role{color:var(--muted);margin-top:24px;font-size:14px;line-height:1.5}.project-stack{font-family:var(--font-mono);color:var(--muted);flex-wrap:wrap;gap:8px 14px;margin-top:12px;font-size:12px;line-height:1.6;display:flex}.project .text-link{margin-top:20px}.project-media{background:var(--accent-wash);align-items:center;padding:36px 24px;display:flex;position:relative;overflow:hidden}.project-media img{border:1px solid var(--line-strong);width:100%;height:auto;transition:transform .6s var(--ease)}@media (prefers-reduced-motion:no-preference){.project-media:hover img{transform:scale(1.025)}}.media-open{background:var(--surface);color:var(--ink);border:1px solid var(--line-strong);opacity:0;width:36px;height:36px;transition:opacity .25s var(--ease), transform .25s var(--ease), border-color .2s, color .2s;place-items:center;display:grid;position:absolute;bottom:14px;right:14px;transform:translateY(6px)}.project-media:hover .media-open,.project-media:focus-visible .media-open{opacity:1;border-color:var(--accent);color:var(--accent);transform:translateY(0)}.project-featured{grid-template-columns:minmax(300px,.82fr) minmax(0,1.18fr);display:grid;overflow:hidden}.project-featured .project-copy{padding:clamp(28px,4vw,52px)}.project-featured .project-media{border-left:1px solid var(--line);min-height:480px;padding:32px}.secondary-projects{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:24px;margin-top:24px;display:grid}.secondary-projects .project{height:100%}.secondary-projects .project-copy{flex:1}.secondary-projects .project-links{align-items:center;margin-top:auto}.secondary-projects .project .text-link{margin-top:0;padding-top:0}.secondary-projects .project-media{aspect-ratio:1.58;border-bottom:1px solid var(--line);order:-1;padding:22px}.secondary-projects .project-media img{object-fit:contain;width:100%;height:100%}.project-cover-media,.project-featured .project-cover-media,.secondary-projects .project-cover-media{aspect-ratio:1.6;background:var(--surface-raised);min-height:0;padding:0}.project-cover-media .project-cover-image{object-fit:cover;border:0;width:100%;height:100%}.project-cover-media .project-cover-image-dark,:root[data-theme=dark] .project-cover-media .project-cover-image-light{display:none}:root[data-theme=dark] .project-cover-media .project-cover-image-dark{display:block}.project-links{flex-wrap:wrap;align-items:center;gap:4px 22px;margin-top:20px;display:flex}.project-links .text-link{margin-top:0}.project-live-link{min-height:44px;color:var(--muted);align-items:center;gap:8px;font-size:14px;font-weight:500;display:inline-flex}.project-live-link:hover{color:var(--accent)}.project-live-link .icon{width:15px;height:15px;transition:transform .25s var(--ease)}.project-live-link:hover .icon{transform:translate(2px,-2px)}@media (width>=1024px){.work-section .project-featured .project-links .text-link{display:none}.work-section .project-featured .project-live-link{color:var(--ink);font-weight:700}}.portfolio-all-link{border:1px solid var(--line);background:var(--canvas);justify-content:center;width:100%;margin-top:24px;padding:16px}.portfolio-all-link:hover{border-color:var(--accent)}.portfolio-intro{grid-template-columns:minmax(0,1fr);align-items:end;min-height:370px;display:grid}.portfolio-page>.portfolio-intro,.blog-page>.blog-intro{min-height:0;padding-block:64px}.portfolio-intro .section-tag{margin-bottom:24px}.portfolio-intro h1{font-size:clamp(50px,6.4vw,78px)}.portfolio-intro-copy>p{max-width:52ch;color:var(--muted);margin-top:24px;font-size:18px;line-height:1.65}.portfolio-results{background:var(--surface)}.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:clamp(20px,2.5vw,30px);display:grid}.portfolio-card{border:1px solid var(--line);background:var(--canvas);min-width:0;transition:border-color .25s var(--ease), transform .35s var(--ease), box-shadow .35s var(--ease);grid-template-columns:minmax(0,1fr);display:grid}@media (prefers-reduced-motion:no-preference){.portfolio-card:hover{border-color:var(--accent);box-shadow:0 18px 40px -28px color-mix(in srgb, var(--accent) 35%, transparent);transform:translateY(-3px)}}.portfolio-card-media{aspect-ratio:1.62;border-bottom:1px solid var(--line);background:var(--accent-wash);justify-content:center;align-items:center;min-width:0;padding:clamp(20px,3vw,34px);display:flex;position:relative;overflow:hidden}.portfolio-card-media img{object-fit:contain;border:1px solid var(--line-strong);width:100%;height:100%;transition:transform .55s var(--ease)}@media (prefers-reduced-motion:no-preference){.portfolio-card-media:hover img{transform:scale(1.03)}}.portfolio-card-cover{aspect-ratio:1.6;background:var(--surface-raised);padding:0;display:block}.portfolio-card-media .portfolio-cover-image{object-fit:cover;width:100%;height:100%;transition:transform .55s var(--ease);border:0}.portfolio-card-media .portfolio-cover-image-dark,:root[data-theme=dark] .portfolio-card-media .portfolio-cover-image-light{display:none}:root[data-theme=dark] .portfolio-card-media .portfolio-cover-image-dark{display:block}.portfolio-card-open{border:1px solid var(--line-strong);background:var(--surface);width:38px;height:38px;color:var(--accent);opacity:0;transition:opacity .25s var(--ease), transform .25s var(--ease), border-color .2s;place-items:center;display:grid;position:absolute;bottom:14px;right:14px;transform:translateY(6px)}.portfolio-card-media:hover .portfolio-card-open,.portfolio-card-media:focus-visible .portfolio-card-open{opacity:1;transform:translateY(0)}.portfolio-card-copy{flex-direction:column;align-items:flex-start;min-width:0;padding:clamp(24px,3vw,34px);display:flex}.portfolio-card-copy h2{letter-spacing:-.03em;font-size:clamp(28px,2.8vw,32px);line-height:1.1}.portfolio-card-copy h2 a:hover{color:var(--accent)}.portfolio-card-description{color:var(--ink);margin-top:14px;font-size:17px;line-height:1.55}.portfolio-card-detail{color:var(--muted);margin-top:9px;font-size:15px;line-height:1.65}.portfolio-card-links{align-items:center;width:100%;margin-top:auto;padding-top:24px}.portfolio-card-copy .text-link{margin-top:0;padding-top:0}@media (width>=1024px){.portfolio-card-description{min-height:4.7em}}.case-hero{grid-template-columns:minmax(0,1fr);padding-top:48px;display:grid}.case-page>.case-hero{padding-top:56px}.case-back{width:fit-content;color:var(--muted);gap:10px;margin-bottom:34px;font-weight:500;display:flex}.case-back:hover{color:var(--accent)}.case-back .icon{width:16px;height:16px;transition:transform .2s var(--ease)}.case-back:hover .icon{transform:translate(-3px)}.case-hero h1{font-size:clamp(54px,7vw,86px)}.case-role{color:var(--accent);margin-top:12px;font-size:17px;font-weight:700}.case-description{max-width:52ch;color:var(--muted);margin-top:20px;font-size:18px;line-height:1.65}.case-actions{flex-wrap:wrap;align-items:center;gap:12px 22px;margin-top:28px;display:flex}.case-actions .text-link{font-weight:500}.case-visual{background:var(--surface);border-top:1px solid var(--line);padding-top:24px;padding-bottom:40px}.case-visual-meta{color:var(--muted);letter-spacing:.06em;justify-content:space-between;gap:20px;margin-bottom:16px;font-size:11px;display:flex}.case-visual img{object-fit:contain;border:1px solid var(--line-strong);background:var(--surface);width:100%;max-height:680px;margin-inline:auto}.case-section{border-top:1px solid var(--line);grid-template-columns:minmax(220px,.72fr) minmax(0,1.28fr);gap:clamp(36px,8vw,110px);display:grid}.case-section-heading>.mono{color:var(--accent);letter-spacing:.06em;margin-bottom:18px;font-size:11px;display:block}.case-section-heading h2{max-width:12ch;font-size:clamp(30px,3.1vw,42px);line-height:1.12}.case-prose{max-width:68ch}.case-prose p,.case-decision p,.case-feature p{color:var(--muted);font-size:16px;line-height:1.75}.case-prose p+p{margin-top:18px}.case-feature-list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:28px;display:grid}.case-feature{border-top:1px solid var(--line);grid-template-columns:30px minmax(0,1fr);gap:14px;padding:20px 0;display:grid}.case-feature>.mono,.case-decision>.mono{color:var(--accent);padding-top:4px;font-size:11px}.case-feature h3,.case-decision h3{letter-spacing:-.01em;font-size:19px;line-height:1.35}.case-feature p,.case-decision p{margin-top:8px;font-size:15px;line-height:1.7}.case-decision-list{border-top:1px solid var(--line)}.case-decision{border-bottom:1px solid var(--line);grid-template-columns:30px minmax(0,1fr);gap:14px;padding:20px 0;display:grid}.case-next{background:var(--accent-wash);border:1px solid var(--line);border-top:2px solid var(--accent);grid-template-columns:minmax(0,1fr) minmax(260px,.56fr);align-items:center;gap:clamp(36px,7vw,88px);padding:clamp(40px,6vw,64px);display:grid}.case-next h2{font-size:clamp(38px,4vw,52px);line-height:1.08}.case-next-actions{justify-items:start;gap:12px;max-width:320px;display:grid}.case-next-actions>p{color:var(--muted);margin-bottom:6px;font-size:16px;line-height:1.65}.case-next-actions .button{min-width:190px}.case-next-actions .text-link{min-height:40px;color:var(--muted);font-weight:500}.case-next-actions .text-link:hover{color:var(--accent)}.case-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 24px;display:grid}.case-gallery-grid figure{min-width:0}.case-gallery-trigger{width:100%;color:inherit;cursor:zoom-in;text-align:left;background:0 0;border:0;padding:0;display:block}.case-gallery-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.case-gallery-grid img{border:1px solid var(--line-strong);background:var(--surface);width:100%;transition:border-color .2s var(--ease), transform .4s var(--ease);display:block}.case-gallery-trigger:hover img{border-color:var(--accent);transform:scale(1.012)}.case-gallery-grid figcaption{color:var(--muted);margin-top:10px;font-size:14px;line-height:1.6}.gallery-dialog{background:var(--canvas);width:100%;max-width:none;height:100%;max-height:none;color:var(--ink);border:0;margin:0;padding:clamp(18px,3vw,40px)}.gallery-dialog::backdrop{backdrop-filter:blur(6px);background:#090a0de0}.gallery-dialog-shell{grid-template-rows:auto minmax(0,1fr) auto;width:min(100%,1440px);height:100%;margin:auto;display:grid}.gallery-dialog-header,.gallery-dialog-footer{justify-content:space-between;align-items:center;gap:20px;display:flex}.gallery-dialog-header{border-bottom:1px solid var(--line);padding-bottom:18px}.gallery-dialog-header p,.gallery-dialog-footer{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:11px}.gallery-dialog-close{border:1px solid var(--line-strong);width:40px;height:40px;color:var(--ink);place-items:center;display:grid}.gallery-dialog-close:hover{border-color:var(--accent);color:var(--accent)}.gallery-dialog-close .icon{width:20px;height:20px;transform:rotate(45deg)}.gallery-dialog-stage{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:clamp(12px,3vw,40px);min-height:0;padding:clamp(24px,5vw,64px) 0;display:grid}.gallery-dialog-figure{gap:14px;min-width:0;max-width:1180px;max-height:100%;margin:auto;display:grid}.gallery-dialog-figure img{object-fit:contain;border:1px solid var(--line-strong);background:var(--surface);width:auto;max-width:100%;max-height:calc(100dvh - 220px);margin:auto;display:block}.gallery-dialog-figure figcaption{max-width:70ch;color:var(--muted);font-size:14px;line-height:1.6}.gallery-dialog-control{border:1px solid var(--line-strong);background:var(--surface);width:48px;height:48px;color:var(--ink);place-items:center;display:grid}.gallery-dialog-control:hover{border-color:var(--accent);color:var(--accent)}.gallery-dialog-control:last-child .icon{transform:rotate(180deg)}.gallery-dialog-control .icon{width:20px;height:20px}.gallery-dialog-footer{padding-top:18px}body.gallery-is-open{overflow:hidden}.blog-intro{min-height:0}.blog-listing{border-top:1px solid var(--line);background:var(--surface)}.blog-tools{gap:18px;margin-bottom:30px;display:grid}.blog-search{border:1px solid var(--line-strong);background:var(--canvas);width:min(100%,520px);min-height:48px;color:var(--muted);align-items:center;gap:12px;padding-inline:14px;display:flex}.blog-search .icon{width:18px;height:18px}.blog-search input{width:100%;min-width:0;color:var(--ink);font:inherit;background:0 0;border:0;outline:0;font-size:15px}.blog-search:focus-within{border-color:var(--accent);outline:2px solid color-mix(in srgb, var(--accent) 20%, transparent)}.blog-filters{flex-wrap:wrap;gap:8px;display:flex}.blog-filters button{border:1px solid var(--line);min-height:40px;color:var(--muted);padding:8px 12px;font-size:13px;transition:border-color .2s,color .2s,background .2s}.blog-filters button:hover,.blog-filters button.is-active{border-color:var(--accent);color:var(--ink)}.blog-filters button.is-active{background:var(--accent-wash)}.blog-result-count{color:var(--muted);letter-spacing:.07em;margin-bottom:14px;font-size:11px}.blog-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.blog-card{border:1px solid var(--line);background:var(--canvas);flex-direction:column;min-width:0;display:flex}.blog-card[hidden],.blog-empty[hidden]{display:none}.blog-card-image{aspect-ratio:1.9;border-bottom:1px solid var(--line);background:var(--accent-wash);place-items:center;padding:0;display:grid;position:relative;overflow:hidden}.blog-card-image img{object-fit:cover;width:100%;height:100%;transition:transform .5s var(--ease);border:0}.blog-card-image:hover img{transform:scale(1.02)}.blog-image-placeholder{width:100%;height:100%;color:var(--accent);place-items:center;display:grid}.blog-image-placeholder .icon{width:36px;height:36px}.blog-card-open{border:1px solid var(--line-strong);background:var(--surface);width:38px;height:38px;color:var(--accent);opacity:0;place-items:center;transition:opacity .2s,transform .2s;display:grid;position:absolute;bottom:12px;right:12px;transform:translateY(4px)}.blog-card-image:hover .blog-card-open,.blog-card-image:focus-visible .blog-card-open{opacity:1;transform:translateY(0)}.blog-card-copy{flex-direction:column;flex:1;align-items:flex-start;padding:24px;display:flex}.blog-card-meta{width:100%;color:var(--muted);text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:11px;display:flex}.blog-card-meta>span{color:var(--accent)}.blog-card-copy h2{letter-spacing:-.025em;margin-top:20px;font-size:clamp(24px,2.6vw,32px);line-height:1.14}.blog-card-copy h2 a:hover{color:var(--accent)}.blog-card-copy>p{color:var(--muted);margin-top:12px;font-size:16px;line-height:1.65}.blog-card-copy .text-link{margin-top:auto;padding-top:24px}.blog-empty{color:var(--muted);padding:48px 0}.blog-empty .mono{color:var(--accent);font-size:11px}.blog-empty p{margin-top:10px;font-size:16px}.article-shell{max-width:900px;margin-inline:auto}.article-shell>.section-tag{margin-top:22px}.article-page>.article-shell{padding-top:64px}.article-shell h1,.start-intro h1,.thanks-intro h1{letter-spacing:-.04em;font-size:clamp(42px,6.5vw,74px);line-height:1.04}.article-description{max-width:66ch;color:var(--muted);margin-top:20px;font-size:20px;line-height:1.6}.article-byline{border-bottom:1px solid var(--line);align-items:center;gap:12px;margin-top:26px;padding-bottom:22px;display:flex}.article-byline img{object-fit:cover;border-radius:50%;width:44px;height:44px}.article-byline div{gap:3px;display:grid}.article-byline strong{font-size:14px;font-weight:600}.article-byline time{color:var(--muted);font-family:var(--font-mono);font-size:12px}.article-tags{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.article-tags a{border:1px solid var(--line);color:var(--muted);padding:6px 9px;font-size:12px}.article-tags a:hover{border-color:var(--accent);color:var(--accent)}.article-hero-image{margin-top:28px}.article-hero-image img{border:1px solid var(--line-strong);background:var(--surface);width:100%}.article-content{max-width:72ch;color:var(--muted);margin:34px auto 0;font-size:17px;line-height:1.8}.article-content>*+*{margin-top:1.2em}.article-content h2,.article-content h3{color:var(--ink);letter-spacing:-.025em;margin-top:2em;font-size:28px;line-height:1.2}.article-content h3{font-size:22px}.article-content strong{color:var(--ink);font-weight:600}.article-content a{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.article-content ul,.article-content ol{padding-left:1.5em}.article-content li+li{margin-top:.55em}.article-content blockquote{border-left:2px solid var(--accent);padding:4px 0 4px 20px}.article-content img{border:1px solid var(--line-strong);width:100%}.article-content code{background:var(--surface-raised);color:var(--ink);font-family:var(--font-mono);padding:2px 5px;font-size:.88em}.article-content pre{background:var(--surface-raised);color:var(--ink);padding:18px;overflow-x:auto}.article-related{border-top:1px solid var(--line);grid-template-columns:minmax(190px,.55fr) minmax(0,1fr);gap:34px;display:grid}.article-related .case-section-heading h2{font-size:clamp(28px,3vw,36px)}.article-related-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.article-related-grid>a{border:1px solid var(--line);padding:18px}.article-related-grid>a:hover{border-color:var(--accent)}.article-related-grid .mono{color:var(--accent);font-size:11px}.article-related-grid h3{margin-top:12px;font-size:18px;line-height:1.3}.article-related-grid p{color:var(--muted);margin-top:8px;font-size:14px;line-height:1.55}.article-newsletter{padding-top:0;padding-bottom:clamp(40px,5vw,60px)}.newsletter-form{border:1px solid var(--line);border-left:2px solid var(--accent);background:var(--surface);grid-template-columns:minmax(0,1fr) minmax(300px,.8fr);align-items:center;gap:clamp(28px,5vw,56px);padding:clamp(24px,4vw,40px);display:grid}.newsletter-copy h2{letter-spacing:-.025em;font-size:clamp(24px,2.5vw,30px);line-height:1.2}.newsletter-copy p{max-width:48ch;color:var(--muted);margin-top:10px;font-size:16px;line-height:1.6}.newsletter-controls{grid-template-columns:minmax(0,1fr) auto;align-self:center;gap:10px;display:grid}.newsletter-controls input{border:1px solid var(--line-strong);background:var(--canvas);min-width:0;min-height:50px;color:var(--ink);font:inherit;padding:12px;font-size:15px}.newsletter-controls input:focus{outline:2px solid color-mix(in srgb, var(--accent) 25%, transparent);border-color:var(--accent)}.newsletter-controls .button{min-height:50px;padding:12px 16px}.newsletter-message{color:var(--muted);transition:color .2s var(--ease);grid-column:1/-1;font-size:14px;line-height:1.45}.newsletter-form .button[aria-busy=true]{opacity:1}.newsletter-form .button[aria-busy=true] .icon{opacity:0;transform:translate(-6px)}.newsletter-form .button:after{content:"";border:1.5px solid color-mix(in srgb, var(--accent-on) 35%, transparent);border-top-color:var(--accent-on);opacity:0;width:16px;height:16px;transition:opacity .2s var(--ease), transform .2s var(--ease);pointer-events:none;border-radius:50%;margin-top:-8px;position:absolute;top:50%;right:18px;transform:scale(.5)}.newsletter-form .button[aria-busy=true]:after{opacity:1;animation:.8s linear infinite spinner;transform:scale(1)}.newsletter-form .button{position:relative}.newsletter-form .button .icon{transition:opacity .2s var(--ease), transform .2s var(--ease)}.newsletter-message[data-state=success]{color:var(--accent);animation:rise-in .35s var(--ease) both}.newsletter-message[data-state=error]{color:#b42318;animation:rise-in .35s var(--ease) both}.start-page,.thanks-page{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);align-items:start;column-gap:clamp(40px,8vw,100px);display:grid}.thanks-page{align-items:stretch}.start-page.frame{border-inline:1px solid var(--line)}.start-page.frame:before,.start-page.frame:after,.thanks-page.frame:before,.thanks-page.frame:after{display:none}.start-page>.section:first-child{border-top:0}.start-page>.start-intro{padding-top:64px}.contact-page{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);align-items:start;column-gap:clamp(40px,7vw,88px);display:grid}.contact-page.frame:before,.contact-page.frame:after{display:none}.contact-page>.section:first-child{border-top:0}.contact-page>.contact-page-intro{padding-top:64px}.role-fit-list{border-block:1px solid var(--line);color:var(--muted);gap:11px;margin:26px 0 0;padding:18px 0;font-size:14px;line-height:1.5;list-style:none;display:grid}.role-fit-list li{align-items:baseline;gap:11px;display:flex}.role-fit-list li:before{background:var(--accent);content:"";flex:0 0 6px;width:6px;height:6px}.role-page .role-employment-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.role-employment-options .stage-option span{background:color-mix(in srgb, var(--canvas) 82%, var(--accent-wash));min-height:58px;color:var(--ink);justify-content:space-between;padding:12px 14px;font-size:14px;font-weight:500;transition:border-color .18s,background-color .18s,color .18s}.role-employment-options .stage-option span:after{border:1px solid var(--line-strong);background:var(--canvas);content:"";border-radius:50%;flex:0 0 14px;width:14px;height:14px}.role-employment-options .stage-option:hover span{border-color:var(--accent)}.role-employment-options .stage-option input:checked+span{border-color:var(--accent);background:var(--accent-wash)}.role-employment-options .stage-option input:checked+span:after{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3px var(--canvas)}.portfolio-page.frame:before,.portfolio-page.frame:after,.case-page.frame:before,.case-page.frame:after,.blog-page.frame:before,.blog-page.frame:after,.article-page.frame:before,.article-page.frame:after{display:none}.contact-page-intro{position:sticky;top:100px}.contact-page-intro>.section-tag{margin-top:36px}.contact-page-intro h1{letter-spacing:-.04em;font-size:clamp(48px,6vw,76px);line-height:1.04}.contact-page-intro>p{max-width:43ch;color:var(--muted);margin-top:18px;font-size:17px;line-height:1.65}.contact-page-direct{border-top:1px solid var(--line);gap:8px;margin-top:34px;padding-top:18px;display:grid}.role-page .contact-page-direct{border-top:0;padding-top:0}.contact-page-direct>.mono,.contact-form-heading>.mono{color:var(--muted);letter-spacing:.06em;font-size:12px}.contact-page-direct>a{overflow-wrap:anywhere;align-items:center;gap:10px;width:fit-content;font-size:17px;display:inline-flex}.contact-page-direct>a:hover{color:var(--accent)}.contact-page-direct .icon{width:15px;height:15px}.contact-project-link{color:var(--muted);flex-wrap:wrap;justify-content:flex-start;gap:2px 8px;margin-top:22px;font-size:13px;display:flex}.contact-project-link span{color:var(--ink)}.contact-project-link .icon{margin-left:2px}.contact-page-form{border-left:1px solid var(--line);min-width:0}.contact-form-heading{gap:9px;margin-bottom:26px;display:grid}.contact-form-heading>p{letter-spacing:-.02em;font-size:21px;font-weight:600}.contact-form{gap:20px}.contact-form textarea{min-height:190px}.contact-form .form-message[data-state=success]{color:var(--accent)}.contact-trap{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.start-intro,.thanks-intro{position:sticky;top:100px}.thanks-page>.thanks-intro{padding-top:64px}.start-intro>.section-tag,.thanks-intro>.section-tag{margin-top:36px}.start-intro>p,.thanks-intro>p{max-width:48ch;color:var(--muted);margin-top:18px;font-size:17px;line-height:1.65}.start-form-section,.thanks-timeline{border-left:1px solid var(--line)}.thanks-right{border-left:1px solid var(--line);min-width:0;height:100%}.thanks-right .thanks-timeline{border-left:0}.enquiry-form{gap:22px;display:grid}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.form-field{gap:8px;min-width:0;display:grid}.form-field label,.form-field legend{color:var(--ink);font-size:14px;font-weight:600}.form-field label span{color:var(--muted);font-weight:400}.form-field input:not([type=radio]),.form-field textarea,.form-field select{border:1px solid var(--line-strong);background:var(--canvas);width:100%;min-height:48px;color:var(--ink);font:inherit;transition:border-color .2s var(--ease), background-color .2s var(--ease);border-radius:0;padding:12px 14px;font-size:15px}.form-field textarea{resize:vertical;min-height:144px}.form-field input:focus,.form-field textarea:focus,.form-field select:focus{outline:2px solid color-mix(in srgb, var(--accent) 25%, transparent);border-color:var(--accent)}.form-field input::placeholder,.form-field textarea::placeholder{color:var(--muted);opacity:.8}.form-field[aria-invalid=true] input:not([type=hidden]),.form-field[aria-invalid=true] textarea,.form-field[aria-invalid=true] select,.form-field.is-invalid input:not([type=hidden]),.form-field.is-invalid textarea,.form-field.is-invalid select{background:color-mix(in srgb, #b42318 4%, var(--canvas));border-color:#b42318}.form-field.is-invalid .form-field-error{color:#b42318;margin-top:6px;font-size:13px;line-height:1.45;display:block}.form-field-error,.form-field-error[hidden]{display:none}.form-field.is-invalid .stage-options{border:1px solid #b42318;margin:-8px;padding:8px}.form-field fieldset,fieldset.form-field{border:0;min-width:0;padding:0}.stage-options{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.stage-option{cursor:pointer;position:relative}.stage-option input{opacity:0;width:1px;height:1px;position:absolute}.stage-option span{border:1px solid var(--line);height:100%;min-height:46px;color:var(--muted);transition:border-color .2s var(--ease), background .2s var(--ease), color .2s var(--ease);align-items:center;padding:9px 11px;font-size:13px;line-height:1.35;display:flex}.stage-option:hover span{border-color:color-mix(in srgb, var(--accent) 50%, var(--line))}.stage-option input:checked+span{border-color:var(--accent);background:var(--accent-wash);color:var(--ink)}.stage-option input:focus-visible+span{outline:2px solid var(--accent);outline-offset:2px}.enquiry-submit{justify-self:start;min-width:190px;position:relative}.enquiry-submit:disabled{opacity:.65;cursor:wait}.enquiry-submit[aria-busy=true]{opacity:1}.enquiry-submit[aria-busy=true] .icon{opacity:0;transform:translate(-6px)}.enquiry-submit:after{content:"";border:1.5px solid color-mix(in srgb, var(--accent-on) 35%, transparent);border-top-color:var(--accent-on);opacity:0;width:16px;height:16px;transition:opacity .2s var(--ease), transform .2s var(--ease);pointer-events:none;border-radius:50%;margin-top:-8px;position:absolute;top:50%;right:22px;transform:scale(.5)}.enquiry-submit[aria-busy=true]:after{opacity:1;animation:.8s linear infinite spinner;transform:scale(1)}.enquiry-submit .icon{transition:opacity .2s var(--ease), transform .2s var(--ease)}@keyframes spinner{to{transform:rotate(360deg)}}.form-message{color:var(--muted);transition:color .2s var(--ease);font-size:14px;line-height:1.5}.form-message[data-state=success],.form-message[data-state=error]{animation:rise-in .3s var(--ease) both}.form-message[data-state=error]{color:#b42318}.start-email{border-top:1px solid var(--line);color:var(--muted);margin-top:28px;padding-top:18px;font-size:14px}.start-email a,.thanks-email a{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.start-email a:hover,.thanks-email a:hover{color:var(--accent)}.thanks-intro{position:static}.thanks-check{border:1px solid var(--accent);background:var(--accent-wash);width:56px;height:56px;color:var(--accent);place-items:center;margin-bottom:24px;display:grid}.thanks-check .icon{width:26px;height:26px}.thanks-timeline ol{width:min(100%,520px);margin:0 auto;padding:0;list-style:none}.thanks-timeline li{grid-template-columns:36px minmax(0,1fr);gap:16px;padding-bottom:28px;display:grid;position:relative}.thanks-timeline li:not(:last-child):before{background:var(--line);content:"";width:1px;position:absolute;top:36px;bottom:0;left:17px}.thanks-step-mark{z-index:1;border:1px solid var(--line-strong);background:var(--canvas);width:36px;height:36px;color:var(--muted);place-items:center;display:grid}.thanks-step-mark .icon{width:17px;height:17px}.thanks-timeline .is-done .thanks-step-mark{border-color:var(--accent);background:var(--accent);color:var(--accent-on)}.thanks-timeline h2{font-size:16px;line-height:1.4}.thanks-timeline p{color:var(--muted);margin-top:6px;font-size:14px;line-height:1.6}.thanks-next{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.thanks-next>p:first-child{width:100%;color:var(--muted);font-size:14px}.thanks-email{border-top:1px solid var(--line);width:100%;color:var(--muted);padding-top:18px;font-size:14px}.form-privacy-note{color:var(--muted);font-size:12px;line-height:1.5}.legal-page{grid-template-columns:minmax(240px,.7fr) minmax(0,1.3fr);align-items:start;gap:clamp(40px,8vw,100px);display:grid}.legal-page.frame:before,.legal-page.frame:after{display:none}.legal-page>.legal-intro{border-top:0}.legal-intro{position:sticky;top:100px}.legal-page>.legal-intro{padding-top:64px}.legal-intro .section-tag{margin-bottom:24px}.legal-intro h1,.not-found h1{letter-spacing:-.04em;font-size:clamp(46px,7vw,76px);line-height:1.02}.legal-intro>p{color:var(--muted);margin-top:18px;font-size:14px}.legal-sections{border-left:1px solid var(--line)}.legal-sections>section{border-top:1px solid var(--line);padding:20px 0}.legal-sections h2{font-size:20px}.legal-sections>section>div{color:var(--muted);gap:12px;margin-top:12px;font-size:15px;line-height:1.7;display:grid}.legal-contact{border-top:1px solid var(--line);color:var(--muted);padding:18px 0;font-size:14px}.legal-contact a{color:var(--ink);text-underline-offset:3px;text-decoration:underline}.not-found{align-items:center;min-height:62vh;display:grid}.not-found .section{width:min(100%,760px)}.not-found>.section{padding-top:64px}.not-found h1{margin-top:18px}.not-found p{color:var(--muted);margin-top:18px;font-size:17px}.not-found .button{margin-top:28px}.about-section{grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);align-items:start;gap:clamp(44px,7vw,88px);display:grid}.about-section .section-heading{margin-bottom:0}.about-story{min-width:0}.about-principle{border:1px solid var(--line);border-left:3px solid var(--accent);background:var(--accent-wash);grid-template-columns:1fr;gap:18px;padding:24px 28px 28px;display:grid}.about-principle-label{color:var(--muted);letter-spacing:.08em;align-items:center;gap:12px;font-size:12px;display:flex}.about-principle-label>span{color:var(--accent)}.about-principle>p{max-width:28ch;color:var(--ink);letter-spacing:-.025em;font-size:clamp(24px,2.7vw,32px);font-weight:500;line-height:1.22}.about-copy{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 32px;margin-top:28px;display:grid}.about-copy>p{color:var(--muted);max-width:52ch;font-size:16px;line-height:1.7}.reviews-section{background:var(--surface)}.reviews-grid{border:1px solid var(--line);grid-template-columns:1fr 1fr;display:grid}.review{flex-direction:column;min-width:0;padding:32px;display:flex}.review-featured{background:var(--accent-wash);border-bottom:1px solid var(--line);grid-column:1/-1;padding:40px}.review:last-child{border-left:1px solid var(--line)}.quote-mark{font:600 56px/1 var(--font-display);color:var(--accent);height:38px;display:block}.review blockquote{letter-spacing:-.02em;max-width:46ch;margin:12px 0 28px;font-size:18px;line-height:1.6}.review-featured blockquote{max-width:52ch;font-size:clamp(21px,2.1vw,26px);line-height:1.5}.review figcaption{align-items:center;gap:12px;margin-top:auto;display:flex}.review figcaption img{object-fit:cover;filter:grayscale();border-radius:0;width:40px;height:40px}.review figcaption strong,.review figcaption span{display:block}.review figcaption strong{font-size:13px;font-weight:700}.review figcaption span{color:var(--muted);margin-top:2px;font-size:13px;line-height:1.5}.faq-section{grid-template-columns:.8fr 1.25fr;gap:64px;display:grid}.faq-heading>p{color:var(--muted);max-width:240px;margin-top:22px;font-size:16px;line-height:1.65}.faq-prompt{color:var(--muted);margin-top:44px;display:inline-block}.faq-prompt span{color:var(--accent)}.faq{border-bottom:1px solid var(--line)}.faq:first-child{border-top:1px solid var(--line)}.faq summary{cursor:pointer;min-height:72px;transition:color .2s var(--ease);justify-content:space-between;align-items:center;gap:24px;padding:22px 0;font-size:16px;font-weight:500;display:flex}summary{list-style:none}summary::-webkit-details-marker{display:none}.faq summary .icon{color:var(--muted);width:16px;height:16px;transition:transform .25s var(--ease)}details[open]>summary .icon{transform:rotate(45deg)}.faq.is-closing>summary .icon{transform:rotate(0)}.faq[open] summary{color:var(--accent)}.faq.is-closing>summary{color:var(--ink)}.faq-answer{overflow:hidden}.faq-answer>p{color:var(--muted);padding:0 24px 26px 0;font-size:16px;line-height:1.75}.contact-section{background:var(--surface);grid-template-columns:1.2fr 1fr;align-items:center;gap:42px;display:grid}.contact-grid{background-size:64px 64px;mask-image:linear-gradient(90deg,#0000,#000)}.contact-heading,.contact-address{position:relative}.contact-heading>p:not(.section-tag){color:var(--muted);max-width:360px;margin-top:24px;font-size:16px;line-height:1.7}.contact-heading>.button{margin-top:32px}.contact-address>.mono{color:var(--muted);letter-spacing:.06em;font-size:12px}.email-row{border-bottom:1px solid var(--line-strong);align-items:center;gap:12px;margin-top:12px;padding-bottom:10px;display:flex}.email-row>a{letter-spacing:-.03em;overflow-wrap:anywhere;min-width:0;transition:color .2s var(--ease);font-size:clamp(17px,1.8vw,24px)}.email-row>a:hover{color:var(--accent)}.email-row .icon-button{border:0;flex-shrink:0}.email-row .icon{width:18px;height:18px}.copy-feedback{min-height:24px;color:var(--accent);opacity:0;transition:opacity .25s var(--ease), transform .25s var(--ease);padding-top:4px;font-size:12px;display:block;transform:translateY(-4px)}.copy-feedback:not(:empty){opacity:1;transform:translateY(0)}[data-copy-email].is-copied{background:var(--accent-wash);color:var(--accent);animation:copy-pulse .55s var(--ease);border-color:var(--accent)!important}@keyframes copy-pulse{0%{transform:scale(1)}40%{transform:scale(1.15)}to{transform:scale(1)}}.contact-address>.text-link{color:var(--muted);margin-top:8px;font-size:14px}.site-footer{border-top:1px solid var(--line);padding:36px 48px 20px}.footer-top{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:clamp(24px,4vw,48px);padding-bottom:36px;display:grid}.footer-brand{flex-direction:column;align-items:flex-start;gap:16px;min-width:0;display:flex}.footer-brand>p{min-width:0;color:var(--ink);letter-spacing:-.02em;font-size:clamp(16px,1.6vw,20px);line-height:1.4}.footer-top nav{border:1px solid var(--line);min-width:0;display:flex}.footer-top nav a{justify-content:space-between;align-items:center;gap:18px;min-height:44px;padding:0 14px;font-size:14px;display:flex}.footer-top nav a+a{border-left:1px solid var(--line)}.footer-top nav a:hover{color:var(--accent)}.footer-top nav .icon{width:14px;height:14px}.footer-legal{border-top:1px solid var(--line);justify-content:flex-end;padding-top:12px;display:flex}.footer-legal a{color:var(--muted);font-size:12px}.footer-legal a:hover{color:var(--accent)}.will-reveal{opacity:0}@keyframes rise-in{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes cursor-blink{0%,45%{opacity:1}46%,to{opacity:0}}@keyframes marquee{to{transform:translate(-50%)}}@keyframes availability-pulse{0%{opacity:.55;transform:scale(.7)}to{opacity:0;transform:scale(1.7)}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}.hero-copy>*{animation:rise-in .65s var(--ease) both}.hero-copy>:nth-child(2){animation-delay:60ms}.hero-copy>:nth-child(3){animation-delay:.12s}.hero-copy>:nth-child(4){animation-delay:.18s}.profile-panel{animation:rise-in .7s .18s var(--ease) both}.headline-cursor,.typing-cursor{animation:.9s step-end 5 cursor-blink}.stack-track{animation:48s linear infinite marquee}.faq[open]>p{animation:rise-in .3s var(--ease)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.will-reveal{opacity:1}.stack-window{mask-image:none}.stack-track{width:100%}.stack-group{flex-wrap:wrap;flex:0 0 100%;gap:12px 24px;min-width:0}.stack-group[aria-hidden]{display:none}.availability-mark:after{opacity:.35;animation:none;transform:none}.theme-toggle .icon{opacity:1;position:static;transform:none}.theme-sun{display:none}[data-theme=dark] .theme-sun{display:inline-flex}[data-theme=dark] .theme-moon{display:none}.copy-feedback{opacity:1;transform:none}.enquiry-submit[aria-busy=true]:after,.newsletter-form .button[aria-busy=true]:after{opacity:1;animation:none;transform:scale(1)}.enquiry-submit[aria-busy=true] .icon,.newsletter-form .button[aria-busy=true] .icon{opacity:1;transform:none}}@media (width<=1263px){.frame{margin-inline:var(--gutter)}.header-inner{padding-inline:calc(var(--gutter) + 24px)}.hero{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:28px;padding-inline:32px}h1{font-size:clamp(52px,5.7vw,72px)}.section{padding-inline:32px}}@media (width<=1023px){.header-inner{gap:16px;min-height:68px}.availability-banner{padding-inline:32px}.desktop-nav{gap:20px}.header-actions{gap:8px}.hero{grid-template-columns:1.2fr 1fr;gap:24px;min-height:580px;padding:48px 24px}h1{font-size:44px}.hero-description{font-size:16px}.hero-actions{gap:10px}.hero-actions .button{gap:10px;min-height:46px;padding:13px 16px;font-size:14px}.profile-terminal{padding-inline:12px}.services-board{grid-template-columns:repeat(2,minmax(0,1fr))}.service-featured{grid-column:1/-1;min-height:0}.service-panel:nth-child(2){border-left:0;border-top:1px solid var(--line)}.service-panel:nth-child(3){border-top:1px solid var(--line)}.service-panel{padding:26px}.project-featured{grid-template-columns:1fr}.project-featured .project-media{aspect-ratio:1.65;border-left:0;border-top:1px solid var(--line);order:-1;min-height:0;padding:32px}.project-featured .project-cover-media{aspect-ratio:1.6;padding:0}.project-featured .project-detail,.project-featured .project-description{max-width:54ch}.project-copy{padding:24px}.project-media{padding:24px 16px}.project h3{font-size:30px}.about-section{grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:42px}.about-copy{column-gap:24px}.review{padding:26px}.review blockquote{font-size:17px}.review-featured blockquote{font-size:23px}.faq-section{grid-template-columns:.75fr 1.2fr;gap:36px}.contact-section{grid-template-columns:1fr;gap:48px}.contact-address{max-width:440px}.email-row>a{font-size:24px}.site-footer{padding-inline:32px}.footer-top{grid-template-columns:minmax(0,1fr) auto;gap:24px}.portfolio-intro{min-height:330px}.portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.case-section{grid-template-columns:minmax(190px,.65fr) minmax(0,1.35fr);gap:40px}}@media (width<=767px){html{scroll-padding-top:80px}.header-inner{min-height:64px;padding-inline:20px}.availability-banner{grid-template-columns:7px minmax(0,1fr);align-items:center;column-gap:9px;min-height:56px;padding:6px 20px;display:grid}.availability-mark{grid-column:1;align-self:center;margin-top:0}.availability-banner p,.availability-banner>a:not(.availability-mobile-link){display:none}.availability-banner>.availability-mobile-link{width:fit-content;min-height:44px;color:var(--accent);text-underline-offset:4px;grid-column:2;justify-self:start;align-items:center;margin-left:0;font-size:14px;font-weight:600;text-decoration:underline #0000;transition:text-decoration-color .2s;display:inline-flex!important}.availability-banner>.availability-mobile-link:hover{text-decoration-color:currentColor}.desktop-nav,.header-cta{display:none}.header-actions{gap:8px}.theme-toggle,.mobile-menu summary{width:40px;height:40px}.mobile-menu{display:block}.mobile-menu summary{cursor:pointer;place-items:center;width:40px;height:40px;display:grid}.mobile-menu nav{z-index:30;border-block:1px solid var(--line);background:var(--surface);width:100%;padding:16px 24px;position:absolute;top:100%;left:0}.mobile-menu nav a{min-height:48px;transition:color .2s var(--ease), padding-left .2s var(--ease);justify-content:space-between;align-items:center;padding:13px 0;font-size:16px;display:flex}.mobile-menu nav a:hover{color:var(--accent);padding-left:4px}.frame:before,.frame:after{width:7px;height:7px;top:-4px}.frame:before{left:-4px}.frame:after{right:-4px}.hero{flex-direction:column;align-items:stretch;gap:44px;min-height:0;padding:48px 20px 32px;display:flex}.hero-copy h1{font-size:clamp(32px,9.2vw,64px)}.hero-description{max-width:400px;margin-top:22px;font-size:16px}.hero-actions{gap:12px;margin-top:28px}.hero-actions .button{min-height:46px;padding:13px 16px;font-size:14px}.profile-panel{width:100%;max-width:480px;margin-inline:auto}.profile-terminal{padding:18px}.terminal-output{font-size:12px}.stack-section{grid-template-columns:1fr}.stack-window{padding:18px 20px}.stack-group{gap:12px;padding:18px 12px}.stack-group span{gap:12px;font-size:12px}.section{padding-inline:20px}.section-heading{margin-bottom:36px}h2{font-size:clamp(36px,9vw,48px)}.section-tag{margin-bottom:22px}.services-intro{margin-bottom:36px}.services-board{display:block}.service-panel,.service-featured{min-height:0;padding:24px 20px}.service-panel:nth-child(2),.service-panel:nth-child(3){border-left:0;border-top:1px solid var(--line)}.service-panel h3,.service-featured h3{font-size:27px}.service-panel-copy p,.service-featured .service-panel-copy p{font-size:16px}.service-panel-copy,.service-featured .service-panel-copy{margin-top:30px}.work-section{padding-inline:0}.work-section>.section-heading{padding-inline:20px}.project{border-inline:none}.project-featured .project-copy,.project-copy{padding:26px 20px}.project-featured .project-media,.project-media{padding:26px 16px}.project h3{font-size:28px}.secondary-projects{grid-template-columns:1fr;gap:24px}.secondary-projects .project-media{aspect-ratio:1.55}.project-featured .project-cover-media,.secondary-projects .project-cover-media{aspect-ratio:1.6;padding:0}.about-section{grid-template-columns:1fr;gap:32px}.about-principle{padding:22px 20px 24px}.about-principle>p{font-size:clamp(25px,7vw,31px)}.about-copy{grid-template-columns:1fr;gap:14px;margin-top:22px}.reviews-grid{grid-template-columns:1fr}.review,.review-featured{padding:26px 20px}.review:last-child{border-left:0;border-top:1px solid var(--line)}.review-featured{grid-column:auto}.review blockquote,.review-featured blockquote{font-size:18px;line-height:1.55}.review figcaption span{font-size:13px}.faq-section{grid-template-columns:1fr;gap:36px}.faq-prompt{display:none}.faq-heading>p{max-width:100%}.faq summary{gap:16px;font-size:16px}.faq-answer>p{padding-right:0;font-size:16px}.contact-section{gap:40px}.email-row{gap:4px}.email-row>a{font-size:clamp(16px,4.6vw,24px)}.contact-address{min-width:0;max-width:100%}.site-footer{padding:32px 20px 16px}.footer-top{grid-template-columns:1fr;gap:24px;padding-bottom:28px}.footer-brand{gap:14px}.footer-brand>p{font-size:16px}.footer-top>nav{grid-area:auto/1;width:100%}.footer-top nav a{flex:1;gap:12px;min-width:0;padding-inline:12px}.portfolio-intro{gap:0;min-height:0;padding-top:64px;padding-bottom:56px}.portfolio-page>.portfolio-intro,.blog-page>.blog-intro{padding-block:44px}.portfolio-intro h1{font-size:clamp(42px,10.4vw,64px)}.portfolio-intro-copy>p{font-size:16px}.portfolio-results{padding-top:36px}.portfolio-grid{grid-template-columns:1fr;gap:18px}.portfolio-card-media{aspect-ratio:1.52;border-bottom:1px solid var(--line);padding:20px 14px}.portfolio-card-cover{aspect-ratio:1.6;padding:0}.portfolio-card-copy{padding:22px 20px}.portfolio-card-copy h2{font-size:28px}.portfolio-card-description{font-size:16px}.portfolio-card-detail{font-size:15px}.case-hero,.case-page>.case-hero{padding-top:36px}.case-back{margin-bottom:28px}.case-hero h1{font-size:clamp(46px,12vw,68px)}.case-description{font-size:17px}.case-visual{padding-top:20px;padding-bottom:28px}.case-visual-meta{font-size:10px}.case-section{grid-template-columns:1fr;gap:24px}.case-gallery-grid{grid-template-columns:1fr}.gallery-dialog{padding:16px}.gallery-dialog-stage{gap:8px;padding-block:22px}.gallery-dialog-control{width:40px;height:40px}.gallery-dialog-figure img{max-height:calc(100dvh - 190px)}.gallery-dialog-figure figcaption{font-size:13px}.gallery-dialog-footer{gap:12px}.case-section-heading h2{max-width:none;font-size:34px}.case-feature-list{grid-template-columns:1fr}.case-next{grid-template-columns:1fr;gap:24px;padding:28px 20px}.case-next-actions{gap:10px;width:100%}.blog-intro{min-height:0}.blog-grid{grid-template-columns:1fr;gap:18px}.blog-card-copy{padding:22px 20px}.blog-card-copy h2{font-size:28px}.article-shell h1,.start-intro h1,.thanks-intro h1{font-size:clamp(38px,10vw,60px)}.article-page>.article-shell{padding-top:40px}.start-intro h1{font-size:clamp(32px,9vw,50px)}.article-description{font-size:17px}.article-content{font-size:16px}.article-related{grid-template-columns:1fr;gap:24px}.article-related-grid{grid-template-columns:1fr}.newsletter-form{grid-template-columns:1fr;gap:20px}.newsletter-controls{grid-template-columns:1fr}.newsletter-controls .button{justify-self:stretch}.newsletter-message{grid-column:1}.start-page,.thanks-page,.contact-page{grid-template-columns:1fr}.contact-page-intro{position:static}.contact-page-intro>.section-tag{margin-top:28px}.contact-page-intro h1{font-size:clamp(42px,10vw,60px)}.contact-page-intro>p{font-size:16px}.contact-page-direct{margin-top:26px}.contact-page-form{border-left:0;border-top:1px solid var(--line)}.contact-form .form-grid{grid-template-columns:1fr}.legal-page{grid-template-columns:1fr;gap:0}.legal-intro{position:static}.legal-sections{border-left:0;border-top:1px solid var(--line)}.start-intro,.thanks-intro{position:static}.start-page>.start-intro,.contact-page>.contact-page-intro,.thanks-page>.thanks-intro,.legal-page>.legal-intro,.not-found>.section{padding-top:40px}.thanks-right{border-left:0}.start-form-section,.thanks-timeline{border-left:0;border-top:1px solid var(--line)}.start-intro,.thanks-intro{padding-bottom:30px}.form-grid,.stage-options{grid-template-columns:1fr}.enquiry-submit{width:100%}.thanks-next{padding-top:0}}@media (width<=374px){.availability-banner{column-gap:8px;padding-inline:16px}.availability-banner p{font-size:13px}.hero{padding-top:36px}.hero-copy h1{font-size:32px}.hero-actions{flex-direction:column;align-items:stretch;gap:10px}.hero-actions .button{width:100%}.hero-description{font-size:16px}.reviews-section{padding-inline:14px}}
