@font-face{font-family:Manrope;src:url(/fonts/manrope-variable.ttf)format("truetype");font-style:normal;font-weight:200 800;font-display:swap}:root{color:var(--color-text);background:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--brand-navy:#0b3b62;--brand-cyan:#00aeef;--color-bg:var(--color-surface);--color-surface:#fff;--color-surface-subtle:#f8f9fb;--color-surface-muted:#eef2f6;--color-surface-accent:#e9f2f7;--color-surface-brand:#cce5f2;--color-section-content:var(--color-surface);--color-section-services:var(--color-surface-muted);--color-section-about:var(--brand-navy);--color-section-projects:var(--color-surface-brand);--color-section-contact:var(--color-surface-subtle);--color-section-footer:var(--brand-navy);--color-text:var(--brand-navy);--color-text-muted:#526579;--color-line:#ccd6df;--color-control-border:#75899a;--color-primary:var(--brand-navy);--color-primary-hover:#164a70;--color-on-primary:#fff;--color-accent:#00718f;--color-accent-hover:#005b75;--color-accent-bright:var(--brand-cyan);--color-focus:var(--color-accent);--color-error:#a3293e;--color-error-surface:#fff3f4;--color-selection-bg:#bce9f7;--color-selection-text:var(--brand-navy);--color-on-dark:#f8f9fb;--color-muted-on-dark:#c4d3df;--color-line-on-dark:#6f8fa7;--color-accent-on-dark:#5ed2f6;--color-accent-hover-on-dark:#bce9f7;--color-control-border-on-dark:#8fa9bd;--color-focus-on-dark:var(--color-accent-on-dark);--color-surface-hover-on-dark:#164a70;--color-accent-on-tint:var(--color-accent-hover);--color-accent-hover-on-tint:var(--brand-navy);--color-header:#fffffff2;--color-caption:#fffffff2;--color-caption-text:var(--color-text-muted);--color-overlay:#06233dcc;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--radius-round:50%;--border-width:1px;--border-width-strong:2px;--focus-width:3px;--shadow-sm:0 4px 8px #0b3b6210;--shadow-md:0 10px 20px #0b3b6224;--shadow-lg:0 18px 40px #0b3b621a;--shadow-accent:0 0 0 4px #00aeef18;--type-caption:.75rem;--type-label:.875rem;--type-body:1rem;--type-intro:clamp(1rem, .4vw + .9rem, 1.125rem);--type-h1:clamp(2.75rem, 1rem + 3vw, 3.75rem);--type-h2:clamp(2rem, 3.2vw, 3.15rem);--type-h3:clamp(1.25rem, 1.4vw, 1.65rem);--type-h2-compact:clamp(2rem, 2.8vw, 2.5rem);--type-h2-feature:clamp(2.5rem, 5vw, 4.3rem);--type-h3-feature:clamp(1.625rem, 2.2vw, 2rem);--type-dialog-title:clamp(1.75rem, 1.3rem + 2vw, 2.5rem);--type-contact-link:clamp(1.125rem, 1.65vw, 1.4375rem);--weight-regular:450;--weight-medium:550;--weight-semibold:650;--weight-bold:700;--leading-body:1.65;--leading-display:1.08;--leading-heading:1.14;--leading-subheading:1.25;--leading-control:1.45;--leading-caption:1.55;--tracking-heading:-.025em;--tracking-label:.08em;--tracking-caption:.06em;--measure:70ch;font-family:Manrope,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:112px}body{min-width:320px;font-size:var(--type-body);font-weight:var(--weight-regular);line-height:var(--leading-body);margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button,summary,select{cursor:pointer}a{color:inherit;text-decoration:none}button{color:inherit}button:disabled{cursor:wait}svg{display:block}::selection{background:var(--color-selection-bg);color:var(--color-selection-text)}:focus-visible{outline:var(--focus-width) solid var(--color-focus);outline-offset:5px}h1,h2,h3,p{margin-top:0}h1,h2,h3{text-wrap:balance;letter-spacing:var(--tracking-heading)}p{text-wrap:pretty;max-inline-size:var(--measure)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--section-space:clamp(56px, 8vw, 96px);--layout-gap:clamp(24px, 4vw, 48px)}.container{width:min(1280px,100% - 112px);margin-inline:auto}.section{padding-block:var(--section-space)}.arrow{flex-shrink:0;width:22px;height:22px}.eyebrow{align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);font-size:var(--type-caption);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);line-height:1.5;display:flex}.button{border-radius:var(--radius-md);border:var(--border-width) solid transparent;min-height:58px;font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);justify-content:space-between;align-items:center;gap:25px;padding:18px 23px;transition:background .2s,transform .2s;display:inline-flex}.button--dark{background:var(--color-primary);color:var(--color-on-primary)}.button--dark:hover{background:var(--color-primary-hover)}.button--dark:active{background:var(--color-primary);transform:translateY(0)}.button .arrow{width:19px;height:19px}.text-link{font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);border-bottom:var(--border-width) solid var(--color-control-border);color:var(--color-accent);align-items:center;gap:22px;padding-bottom:9px;display:inline-flex}.text-link:hover,.contact-email:hover,.hero-secondary:hover,.back-top:hover{color:var(--color-accent-hover)}.text-link:active,.contact-email:active,.hero-secondary:active,.back-top:active{color:var(--color-accent)}.text-link:hover .arrow{transform:translate(2px)}.text-link .arrow{width:18px;height:18px;transition:transform .2s}.skip-link{z-index:100;background:var(--color-primary);color:var(--color-on-primary);padding:15px 24px;position:fixed;top:-100px;left:20px}.skip-link:focus{top:15px}.site-header{z-index:20;background:var(--color-header);border-bottom:var(--border-width) solid var(--color-line);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:30px;min-height:95px;padding-block:12px;display:flex}.brand{flex-shrink:0;align-items:center;gap:12px;min-height:44px;display:inline-flex}.brand-symbol,.brand-logo{flex-shrink:0;height:auto}.brand-symbol{width:50px}.brand-logo{width:244px;max-width:100%}.brand--footer{max-width:100%;padding:var(--space-3);border-radius:var(--radius-md);background:var(--color-surface)}.brand-name{color:var(--brand-navy);white-space:nowrap}.brand-name>strong{letter-spacing:-.05em;font-size:24px;font-weight:800;line-height:1.1;display:block}.brand-name>strong>span{color:var(--brand-cyan)}.brand-name>span{font-size:var(--type-caption);font-weight:var(--weight-medium);letter-spacing:var(--tracking-caption);margin-top:4px;display:block}.navigation{align-items:center;gap:clamp(17px,2.2vw,36px);display:flex}.navigation>a{font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);transition:color .15s}.navigation>a:hover{color:var(--color-accent-hover)}.navigation>a:active{color:var(--color-accent)}.navigation>.nav-contact{border:var(--border-width) solid var(--color-control-border);border-radius:var(--radius-md);align-items:center;gap:20px;padding:13px 16px;display:flex}.nav-contact .arrow{width:17px;height:17px}.menu-toggle{display:none}.hero{align-items:center;column-gap:var(--space-7);padding-block:var(--space-7);grid-template-columns:1.05fr 1fr;display:grid}.hero,.journey{background:var(--color-section-content)}.hero .eyebrow{margin-bottom:var(--space-5)}.hero h1{font-size:var(--type-h1);line-height:var(--leading-display);letter-spacing:var(--tracking-heading);font-weight:var(--weight-medium);max-inline-size:20ch;margin-bottom:var(--space-5)}.hero h1>span{color:var(--color-accent)}.hero-description{color:var(--color-text-muted);font-size:var(--type-intro);font-weight:var(--weight-regular);line-height:var(--leading-body);max-width:min(100%,55ch);margin-bottom:var(--space-5)}.hero-actions{align-items:center;gap:var(--space-4) var(--space-5);flex-wrap:wrap;display:flex}.hero-secondary{font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);align-items:center;gap:var(--space-3);min-height:var(--space-7);white-space:nowrap;display:inline-flex}.hero-secondary span{font-size:19px;font-weight:400}.about-image,.contact-vignette{border:var(--border-width) solid var(--color-line);border-radius:var(--radius-lg);background:var(--color-surface-muted);margin:0;overflow:hidden}.about-image picture,.contact-vignette picture{min-height:0;display:block}.about-image picture{height:100%}.about-image img,.contact-vignette img{object-fit:cover;width:100%;height:100%;display:block}.about-image figcaption,.contact-vignette figcaption{font-size:var(--type-caption);line-height:var(--leading-control);letter-spacing:var(--tracking-caption);color:var(--color-text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.section-heading{justify-content:space-between;align-items:flex-end;gap:var(--layout-gap);margin-bottom:var(--space-7);display:flex}.section-heading>div{min-width:0}h2{font-size:var(--type-h2);line-height:var(--leading-heading);letter-spacing:var(--tracking-heading);font-weight:var(--weight-medium);margin-bottom:0}.section-heading>p{font-size:var(--type-intro);font-weight:var(--weight-regular);line-height:var(--leading-body);width:min(100%,55ch);max-width:36%;color:var(--color-text-muted);margin-bottom:4px}.services{background:var(--color-section-services);color:var(--color-text)}.services .eyebrow,.services .eyebrow>span{color:var(--color-text-muted)}.services h2>span{color:var(--color-accent)}.services .section-heading>p{color:var(--color-text-muted)}.services-grid{border-top:var(--border-width) solid var(--color-line);grid-template-columns:repeat(4,1fr);display:grid}.service{border-right:var(--border-width) solid var(--color-line);flex-direction:column;padding:28px 24px 0;display:flex}.service:focus-within{background:var(--color-surface)}.service:first-child{padding-left:0}.service:last-child{border-right:0;padding-right:0}.service-top{justify-content:space-between;align-items:center;margin-bottom:28px;display:flex}.service-top>span{color:var(--color-text-muted);font-size:var(--type-caption)}.service-top>svg{width:26px;height:26px;color:var(--color-accent)}.service h3{font-size:var(--type-h3);line-height:var(--leading-subheading);font-weight:var(--weight-medium);letter-spacing:var(--tracking-heading);margin-bottom:var(--space-4)}.service>p{color:var(--color-text-muted);font-size:var(--type-body);font-weight:var(--weight-regular);line-height:var(--leading-body);margin-bottom:var(--space-4)}.service>ul{font-size:var(--type-body);font-weight:var(--weight-regular);line-height:var(--leading-body);color:var(--color-text-muted);margin:0 0 var(--space-5);padding:0;list-style:none}.service li{gap:8px;margin-bottom:6px;display:flex}.service li:before{content:"+";color:var(--color-accent)}.service-link{min-height:44px;font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);padding-top:var(--space-4);border-top:var(--border-width) solid var(--color-line);justify-content:space-between;align-items:center;gap:14px;margin-top:auto;display:flex}.service-link:hover{color:var(--color-accent-hover)}.service-link:active{color:var(--color-accent)}.service-link .arrow{color:var(--color-accent);width:18px;height:18px;transition:transform .2s}.service-link:hover .arrow{transform:translate(1px,-1px)}.services{padding-block:96px}.services .eyebrow{margin-bottom:var(--space-5)}.services .eyebrow>span{margin-right:5px}.services .section-heading{gap:var(--space-7);margin-bottom:var(--space-7)}.small-label{font-size:var(--type-caption);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);color:var(--color-accent);line-height:1.5}.hero-project{justify-self:end;width:100%;min-width:0;max-width:460px}.hero-project-kicker{font-size:var(--type-caption);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);color:var(--color-accent);flex-wrap:wrap;justify-content:space-between;gap:10px;margin-bottom:12px;display:flex}.hero-project-kicker>span{color:var(--color-text-muted)}.hero-project-link{font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);justify-content:space-between;align-items:center;gap:18px;padding-block:15px 4px;display:flex}.hero-project-link:hover{color:var(--color-accent-hover)}.project-screenshot{border:var(--border-width) solid var(--color-line);border-radius:var(--radius-md);background:var(--color-surface);margin:0;overflow:hidden}.project-image-label{font-size:var(--type-caption);font-weight:var(--weight-semibold);line-height:var(--leading-control);border-bottom:var(--border-width) solid var(--color-line);background:var(--color-surface-muted);flex-wrap:wrap;align-items:center;gap:8px 12px;padding:10px 14px;display:flex}.project-image-label .demo-label{margin-left:auto}.browser-dots{align-items:center;gap:4px;display:flex}.browser-dots i{border-radius:var(--radius-round);background:var(--color-control-border);width:5px;height:5px}.demo-label{color:var(--color-text-muted);font-weight:var(--weight-regular)}.project-screenshot img{width:100%;height:auto;display:block}.project-screenshot figcaption{border-top:var(--border-width) solid var(--color-line);color:var(--color-text-muted);font-size:var(--type-caption);line-height:var(--leading-caption);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:0 12px;padding:4px 14px;display:flex}.project-screenshot figcaption button{min-height:44px;color:var(--color-accent);font-weight:var(--weight-semibold);text-align:left;background:0 0;border:0;align-items:center;gap:5px;padding:0;display:inline-flex}.project-screenshot figcaption button:hover{color:var(--color-accent-hover);text-underline-offset:3px;text-decoration:underline}.project-screenshot figcaption button:focus-visible{outline-offset:2px}.project-screenshot figcaption .arrow{width:14px;height:14px}.project-device-stage{padding:var(--space-5);background:var(--color-surface-muted);justify-content:center;display:flex}.project-phone{background:var(--color-primary);min-width:0;box-shadow:var(--shadow-md);border-radius:28px;flex:0 248px;padding:8px}.project-phone img{border-radius:20px}.project-benefit{margin:var(--space-5) 0;border-left:3px solid var(--color-accent);color:var(--color-text);font-weight:var(--weight-semibold);line-height:var(--leading-control);padding:8px 0 8px 14px}.featured-project-copy .project-benefit{margin-top:calc(-1 * var(--space-3))}.projects{--color-accent:var(--color-accent-on-tint);--color-accent-hover:var(--color-accent-hover-on-tint);--color-focus:var(--color-accent-on-tint);background:var(--color-section-projects)}.projects h2{font-size:var(--type-h2-feature)}.featured-project{align-items:center;gap:var(--space-7);grid-template-columns:1.05fr 1fr;display:grid}.project-preview,.featured-project-copy{min-width:0}.featured-project-copy>.small-label{margin-bottom:var(--space-3)}.featured-project h3{font-size:var(--type-h3-feature);font-weight:var(--weight-medium);line-height:var(--leading-subheading);margin:0 0 var(--space-5)}.project-story{gap:var(--space-5);display:grid}.projects h4{font-size:var(--type-label);line-height:var(--leading-control);font-weight:var(--weight-bold);margin:0 0 6px}.project-story p,.project-context p,.project-summary{color:var(--color-text-muted);margin:0}.project-story ul,.project-context ul{color:var(--color-text-muted);margin:0;padding-left:18px}.project-story li+li,.project-context li+li{margin-top:4px}.project-story li::marker{color:var(--color-accent)}.project-context li::marker{color:var(--color-accent)}.further-projects{border-top:var(--border-width) solid var(--color-line);margin-top:var(--space-7);grid-template-columns:1fr 1fr;display:grid}.further-project{padding-top:var(--space-6);min-width:0}.further-project:first-child{border-right:var(--border-width) solid var(--color-line);padding-right:32px}.further-project:last-child{padding-left:32px}.project-heading{margin-bottom:var(--space-4)}.project-heading .small-label{margin:0}.project-heading .small-label>span{color:var(--color-text-muted);letter-spacing:0;font-weight:var(--weight-regular);margin-top:4px;display:block}.further-project h3{font-size:var(--type-h3);font-weight:var(--weight-medium);line-height:var(--leading-subheading);margin:0 0 12px}.project-details{margin-top:12px}.project-details summary{width:fit-content;min-height:44px;font-size:var(--type-label);font-weight:var(--weight-semibold);color:var(--color-accent);align-items:center;gap:16px;list-style:none;display:flex}.project-details summary::-webkit-details-marker{display:none}.project-details summary:hover{color:var(--color-accent-hover)}.project-details summary>span{font-size:20px;line-height:1;font-weight:var(--weight-regular)}.project-details[open] summary>span{transform:rotate(45deg)}.project-details-content{padding-block:8px 0}.project-context+.project-context{margin-top:16px}.project-note{color:var(--color-text-muted);font-size:var(--type-caption);line-height:var(--leading-caption);border-left:var(--border-width-strong) solid var(--color-line);margin:18px 0 0;padding-left:12px}.project-contact{border-top:var(--border-width) solid var(--color-line);margin-top:var(--space-6);padding-top:var(--space-5);justify-content:space-between;align-items:center;gap:var(--space-5);display:flex}.project-contact>p{margin:0}.project-contact>a{flex-shrink:0}.journey-grid{gap:var(--space-6);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;padding:0;list-style:none;display:grid}.journey-number{border-top:var(--border-width) solid var(--color-line);padding-top:var(--space-4);margin-bottom:var(--space-5);justify-content:space-between;align-items:center;display:flex}.journey-number>span{font-size:var(--type-caption);color:var(--color-accent)}.journey-number>.arrow{width:17px;color:var(--color-accent)}.journey-grid h3{font-size:var(--type-h3);font-weight:var(--weight-medium);line-height:var(--leading-subheading);letter-spacing:var(--tracking-heading);margin-bottom:var(--space-4)}.journey-grid p{font-size:var(--type-body);font-weight:var(--weight-regular);line-height:var(--leading-body);color:var(--color-text-muted);margin-bottom:0}.journey-result{font-size:var(--type-body);font-weight:var(--weight-semibold);border-left:var(--border-width-strong) solid var(--color-accent);padding-left:var(--space-3);margin-top:var(--space-5);line-height:1.5;display:block}.about{background:var(--color-section-about)}.about-layout{align-items:center;gap:var(--space-8);grid-template-columns:.9fr 1fr;display:grid}.about-image{grid-template-rows:minmax(0,1fr) auto;height:clamp(460px,40vw,500px);display:grid}.about-image img{object-position:center}.about-image figcaption{background:var(--color-caption);color:var(--color-caption-text);border-top:var(--border-width) solid var(--color-line);padding:12px 15px}.about-copy h2{font-size:var(--type-h2-compact);line-height:var(--leading-heading);letter-spacing:var(--tracking-heading);margin-bottom:var(--space-5)}.about-copy>p:not(.eyebrow){font-size:var(--type-intro);font-weight:var(--weight-regular);line-height:var(--leading-body);color:var(--color-text-muted);max-width:min(100%, var(--measure))}.faq{margin-top:var(--space-8);padding-top:var(--space-7);border-top:var(--border-width) solid var(--color-line)}.faq-layout{gap:var(--layout-gap);grid-template-columns:.75fr 1.25fr;display:grid}.faq-layout h3{font-size:var(--type-h3-feature);font-weight:var(--weight-medium);line-height:var(--leading-subheading);margin:0}.faq-list>details:first-child summary{padding-top:0}.faq-list>details{border-bottom:var(--border-width) solid var(--color-line)}.faq-list summary{align-items:center;gap:var(--space-4);padding:var(--space-5) 0;font-size:var(--type-body);font-weight:var(--weight-semibold);line-height:var(--leading-body);list-style:none;display:flex}.faq-list summary:hover{color:var(--color-accent-hover)}.faq-list summary:active{color:var(--color-accent)}.faq-list summary::-webkit-details-marker{display:none}.faq-plus{flex-shrink:0;margin-left:auto;font-size:23px;font-weight:350;line-height:1;transition:transform .2s}.faq-list details[open] .faq-plus{transform:rotate(45deg)}.faq-list details>p{font-size:var(--type-body);font-weight:var(--weight-regular);line-height:var(--leading-body);color:var(--color-text-muted);padding:var(--space-2) var(--space-6) var(--space-5) 0;margin:0}.contact{background:var(--color-section-contact);border-top:var(--border-width) solid var(--color-line)}.contact-layout{gap:var(--space-8);grid-template-columns:.95fr 1fr;align-items:start;display:grid}.contact h2{font-size:var(--type-h2-compact);line-height:var(--leading-heading);letter-spacing:var(--tracking-heading);margin-bottom:var(--space-5)}.contact-copy>p:not(.eyebrow){max-width:min(100%,55ch);font-size:var(--type-intro);font-weight:var(--weight-regular);line-height:var(--leading-body);color:var(--color-text-muted)}.contact-email{font-size:var(--type-contact-link);font-weight:var(--weight-medium);letter-spacing:var(--tracking-heading);border-bottom:var(--border-width) solid var(--color-control-border);margin-top:var(--space-5);color:var(--color-accent);align-items:center;gap:28px;padding-bottom:12px;line-height:1.35;display:inline-flex}.contact-vignette{width:min(100%,340px);margin-top:var(--space-6)}.contact-vignette picture{height:160px}.contact-vignette img{object-position:center}.contact-vignette figcaption{background:var(--color-surface);padding:10px 13px}.contact-vignette figcaption>span:last-child{font-size:var(--type-caption);letter-spacing:var(--tracking-caption);color:var(--color-text-muted)}.contact-form{border-radius:var(--radius-lg);background:var(--color-surface);border:0;padding:33px}.form-fields{border:0;min-width:0;margin:0;padding:0}.form-group{gap:var(--space-4);border:0;min-width:0;margin:0;padding:0;display:grid}.form-group+.form-group{margin-top:var(--space-5)}.form-group>legend{width:100%;padding:0 0 var(--space-3);font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);margin:0;display:block}.form-group+.form-group>legend{padding-top:var(--space-4);border-top:var(--border-width) solid var(--color-line)}.form-fields:disabled{opacity:.7}.form-fields:disabled .form-submit{cursor:wait}.form-trap,.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.form-heading{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;gap:10px;display:flex}.form-heading h3{font-size:var(--type-h3);font-weight:var(--weight-semibold);line-height:var(--leading-subheading);letter-spacing:var(--tracking-heading);margin:0}.form-heading>span{color:var(--color-text-muted);font-size:var(--type-caption);line-height:var(--leading-control);flex-shrink:0}.contact-form label{font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);flex-direction:column;gap:8px;display:flex}.form-row{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.contact-form input,.contact-form select,.contact-form textarea{background:var(--color-surface);border:var(--border-width) solid var(--color-control-border);border-radius:var(--radius-sm);width:100%;min-width:0;font-size:var(--type-body);line-height:1.5;font-weight:var(--weight-regular);color:var(--color-text);min-height:48px;padding:12px 13px}.contact-form input:hover,.contact-form select:hover,.contact-form textarea:hover{border-color:var(--color-accent)}.contact-form input:focus-visible,.contact-form select:focus-visible,.contact-form textarea:focus-visible{border-color:var(--color-focus);outline-offset:3px}.contact-form :is(input,select,textarea):is(:user-invalid,[aria-invalid=true]){border-color:var(--color-error);background:var(--color-error-surface)}.contact-form textarea{resize:vertical}.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--color-text-muted);opacity:1}.form-note{color:var(--color-text-muted);font-size:var(--type-caption);line-height:var(--leading-caption);margin:var(--space-4) 0 19px}.form-submit{width:100%;min-height:51px;font-size:var(--type-label);padding:14px 18px}.form-privacy{color:inherit;font:inherit;text-underline-offset:3px;background:0 0;border:0;padding:0;text-decoration:underline}.form-privacy:hover,.footer-bottom a:hover,.legal-content a:hover{color:var(--color-accent-hover)}.form-privacy:active,.footer-bottom a:active,.legal-content a:active{color:var(--color-accent)}.form-js-note{color:var(--color-text-muted);font-size:var(--type-caption);margin:var(--space-3) 0 0}.form-status{border-top:var(--border-width) solid var(--color-line);font-size:var(--type-body);line-height:var(--leading-body);overflow-wrap:anywhere;margin-top:20px;padding-top:20px}.form-status p{margin:6px 0 0}.form-status--success strong{color:var(--color-accent)}.form-status--error{color:var(--color-error)}.form-status--error a{text-underline-offset:3px;margin-top:10px;text-decoration:underline;display:inline-block}.about,.site-footer{--color-text:var(--color-on-dark);--color-text-muted:var(--color-muted-on-dark);--color-line:var(--color-line-on-dark);--color-control-border:var(--color-control-border-on-dark);--color-accent:var(--color-accent-on-dark);--color-accent-hover:var(--color-accent-hover-on-dark);--color-focus:var(--color-focus-on-dark);color:var(--color-text)}.site-footer{background:var(--color-section-footer);padding-top:48px}.footer-top{justify-content:space-between;align-items:center;gap:30px;padding-bottom:44px;display:flex}.footer-top>p{font-size:var(--type-body);font-weight:var(--weight-regular);line-height:var(--leading-body);letter-spacing:0;margin:0 0 0 auto}.back-top{font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);align-items:center;gap:23px;margin-left:70px;display:flex}.back-top>span{border:var(--border-width) solid var(--color-control-border);border-radius:var(--radius-round);place-items:center;width:38px;height:38px;font-size:17px;display:grid}.back-top:hover,.footer-bottom a:hover{text-underline-offset:4px;text-decoration:underline}.footer-bottom{border-top:var(--border-width) solid var(--color-line);font-size:var(--type-caption);line-height:var(--leading-caption);color:var(--color-text-muted);justify-content:space-between;align-items:center;gap:20px;padding-block:17px;display:flex}.footer-bottom>div{gap:var(--space-5);display:flex}.footer-bottom a{font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);color:var(--color-text-muted);padding:12px 0}.legal-dialog{border:var(--border-width) solid var(--color-line);border-radius:var(--radius-lg);background:var(--color-surface);width:calc(100% - 32px);max-width:700px;max-height:calc(100dvh - 60px);color:var(--color-text);padding:0}.legal-dialog::backdrop{background:var(--color-overlay);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.project-image-dialog{border:var(--border-width) solid var(--color-line);border-radius:var(--radius-lg);width:min(1200px,100% - 32px);max-width:none;height:min(940px,100dvh - 32px);max-height:none;color:var(--color-text);background:var(--color-surface);padding:0;overflow:hidden}.project-image-dialog[open]{flex-direction:column;display:flex}.project-image-dialog::backdrop{background:var(--color-overlay)}.image-viewer-header{justify-content:space-between;align-items:flex-start;gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:var(--border-width) solid var(--color-line);display:flex}.image-viewer-header>div{min-width:0}.image-viewer-header h2{font-size:var(--type-h3);line-height:var(--leading-subheading);margin:0 0 6px}.image-viewer-header p{color:var(--color-text-muted);font-size:var(--type-caption);margin:0}.image-viewer-header .demo-label{color:var(--color-accent);font-weight:var(--weight-semibold);display:block}.image-viewer-control{border:var(--border-width) solid var(--color-control-border);border-radius:var(--radius-sm);background:var(--color-surface);min-height:44px;color:var(--color-accent);font-size:var(--type-label);font-weight:var(--weight-semibold);line-height:var(--leading-control);padding:8px 12px}.image-viewer-control:hover{background:var(--color-surface-accent)}.image-viewer-control:disabled{color:var(--color-text-muted)}.image-viewer-close{color:var(--color-text);flex-shrink:0;align-items:center;gap:12px;display:inline-flex}.image-viewer-close span{font-size:22px;line-height:1}.image-viewer-toolbar{padding:12px var(--space-5);flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.image-viewer-toolbar p{font-size:var(--type-caption);color:var(--color-text-muted);flex:220px;margin:0}.image-viewer-viewport{overscroll-behavior:contain;background:var(--color-surface-muted);flex:1;min-width:0;min-height:0;position:relative;overflow:auto}.image-viewer-viewport:focus-visible{outline-offset:-4px}.image-viewer-viewport img{object-fit:contain;width:100%;height:100%;display:block}.image-viewer-viewport.is-zoomed img{max-width:none;max-height:none;margin-inline:auto}.image-viewer-status{background:var(--color-surface);border-radius:var(--radius-sm);width:fit-content;margin:0;padding:12px;position:absolute;inset:16px 16px auto}.legal-content{-webkit-hyphens:auto;hyphens:auto;padding:45px;position:relative}.dialog-close{border-radius:var(--radius-round);background:var(--color-surface-muted);border:0;width:40px;height:40px;font-size:25px;position:absolute;top:14px;right:14px}.dialog-close:hover{background:var(--color-surface-accent);color:var(--color-accent-hover)}.dialog-close:active{background:var(--color-surface-muted);color:var(--color-accent)}.legal-content h2{font-size:var(--type-dialog-title);line-height:var(--leading-heading);letter-spacing:var(--tracking-heading);margin-bottom:29px}.legal-content h3,.legal-page .legal-content h2{font-size:var(--type-h3);font-weight:var(--weight-medium);line-height:var(--leading-subheading);letter-spacing:var(--tracking-heading);margin-top:24px;margin-bottom:0}.legal-content p:not(.eyebrow),.legal-content li{font-size:var(--type-body);font-weight:var(--weight-regular);line-height:var(--leading-body);color:var(--color-text-muted)}.legal-content a{text-decoration:underline}.legal-pending{background:var(--color-surface-accent);border-left:var(--border-width-strong) solid var(--color-accent);padding:17px}.legal-page{background:var(--color-surface-subtle);min-height:calc(100vh - 190px)}.legal-page .legal-content{background:var(--color-surface);border:var(--border-width) solid var(--color-line);border-radius:var(--radius-lg);max-width:850px}.legal-page .legal-content h1{font-size:var(--type-dialog-title);line-height:var(--leading-heading);letter-spacing:var(--tracking-heading);margin-bottom:29px}.legal-page-header{justify-content:space-between}.legal-page-footer{padding-top:0}.not-found{min-height:100vh;padding-block:var(--space-8);flex-direction:column;justify-content:center;align-items:flex-start;display:flex}.not-found h1{max-width:18ch;font-size:var(--type-h1);line-height:var(--leading-display)}.not-found>p:not(.eyebrow){color:var(--color-text-muted);font-size:var(--type-intro);margin-bottom:var(--space-5)}@media (width>=1600px){.hero{padding-block:var(--space-8)}}@media (width<=1150px){.services{padding-block:85px}.service{padding-inline:18px}.container{width:calc(100% - 72px)}.header-inner{min-height:84px}.brand-name{display:none}.hero{gap:var(--space-6)}.journey-grid{gap:var(--space-5)}.about-layout,.contact-layout{gap:var(--space-7)}.contact-form{padding:25px}.back-top{margin-left:30px}}@media (width<=900px){.services{padding-block:64px}.services-grid{grid-template-columns:1fr 1fr;gap:38px 0}.service:nth-child(odd){padding-left:0;padding-right:25px}.service:nth-child(2n){border-right:0;padding-left:25px;padding-right:0}.service-top{margin-bottom:var(--space-5)}.services .section-heading{gap:var(--space-6);margin-bottom:var(--space-6)}html{scroll-padding-top:88px}.container{width:calc(100% - 48px)}.header-inner{min-height:75px}.brand-name{display:block}.brand-symbol{width:43px}.brand-name>strong{font-size:22px}.menu-toggle{border:var(--border-width) solid var(--color-line);border-radius:var(--radius-md);background:0 0;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:44px;height:44px;display:flex}.menu-toggle:hover{border-color:var(--color-accent);color:var(--color-accent-hover)}.menu-toggle:active{background:var(--color-surface-muted);color:var(--color-accent)}.menu-toggle>span{background:currentColor;width:19px;height:1px;transition:transform .2s}.menu-toggle.is-open>span:first-child{transform:translateY(3.5px)rotate(45deg)}.menu-toggle.is-open>span:last-child{transform:translateY(-3.5px)rotate(-45deg)}.navigation{background:var(--color-surface);border-bottom:var(--border-width) solid var(--color-line);box-shadow:var(--shadow-md);align-items:stretch;padding:18px 24px 26px;display:none;position:absolute;top:100%;left:0;right:0}.navigation.is-open{flex-direction:column;gap:0;display:flex}.navigation>a{padding:14px 0}.navigation>.nav-contact{justify-content:space-between;margin-top:12px;padding:15px}.hero{padding-block:var(--space-7) var(--space-6);gap:var(--space-6);grid-template-columns:1fr}.hero-description{max-width:490px}.section-heading{margin-bottom:var(--space-6)}.section-heading>p{max-width:40%}.journey-grid{gap:var(--space-6);grid-template-columns:1fr 1fr}.journey-grid>li:nth-child(2) .arrow{transform:rotate(90deg)}.journey-grid p{min-height:auto}.about-layout{gap:var(--space-6);grid-template-columns:.8fr 1fr}.about-image{height:430px}.faq-layout{grid-template-columns:1fr}.contact-layout{gap:var(--space-6);grid-template-columns:1fr}.contact-copy>p:not(.eyebrow){max-width:475px}.contact-vignette{display:none}.contact-form{padding:30px}.footer-top>p{display:none}.footer-bottom{flex-wrap:wrap}.footer-bottom>span:nth-child(2){display:none}}@media (width<=600px),(width>=901px) and (width<=1150px){.form-row{grid-template-columns:1fr}}@media (width<=480px){.services{padding-block:var(--section-space)}.services-grid{grid-template-columns:1fr;gap:0}.service,.service:nth-child(odd),.service:nth-child(2n){padding:var(--space-5) 0;border-right:0;border-bottom:var(--border-width) solid var(--color-line)}.service:last-child{border-bottom:0;padding-bottom:0}.service-top{margin-bottom:var(--space-4)}.service h3{max-width:300px}.service ul{margin-bottom:var(--space-3)}.service-link{padding-top:var(--space-2);border-top:0}.services .eyebrow{margin-bottom:var(--space-4);gap:9px}.container{width:calc(100% - 40px)}.hero{padding-top:var(--space-6)}.button{min-height:54px;padding:16px 18px}.hero-secondary{gap:var(--space-2);white-space:normal}.section-heading{display:block}.section-heading>p{width:auto;max-width:none;margin-top:var(--space-5)}.about-layout{gap:var(--space-6);grid-template-columns:1fr}.about-image{height:min(126vw,460px)}.faq-list details>p{padding-right:0}.contact-email{gap:20px}.contact-form{padding:25px 20px}.form-heading{flex-direction:column;align-items:flex-start;gap:7px}.site-footer{padding-top:30px}.footer-top{flex-wrap:wrap;gap:24px;padding-bottom:25px}.brand-logo{width:228px}.back-top{gap:15px;margin-left:0}.footer-bottom{gap:9px}.footer-bottom>div{gap:16px}.legal-content{padding:40px 25px 25px}}@media (width<=900px){.hero-project{justify-self:center;margin-top:6px}.featured-project{gap:var(--space-6);grid-template-columns:1fr}.project-preview{justify-self:center;width:100%;max-width:600px}.project-story{gap:var(--space-5);grid-template-columns:1fr 1fr 1fr}.further-project:first-child{padding-right:24px}.further-project:last-child{padding-left:24px}}@media (width<=600px){.journey-grid{grid-template-columns:1fr;gap:0}.journey-grid>li{padding:0 0 var(--space-5) 48px;position:relative}.journey-grid>li:last-child{padding-bottom:0}.journey-number{border-radius:var(--radius-round);background:var(--color-primary);width:32px;height:32px;color:var(--color-on-primary);border:0;justify-content:center;margin:0;padding:0;position:absolute;top:0;left:0}.journey-number>span{color:inherit;font-weight:var(--weight-semibold)}.journey-number>.arrow{display:none}.journey-grid>li:not(:last-child):before{top:32px;bottom:0;right:auto;left:calc(16px - var(--border-width) / 2);width:var(--border-width);background:var(--color-line);content:"";position:absolute}.journey-grid h3{min-height:32px;margin-bottom:var(--space-2);align-items:center;display:flex}.journey-result{margin-top:var(--space-3)}.faq{margin-top:var(--space-6);padding-top:var(--space-5)}.project-story{gap:var(--space-4);grid-template-columns:1fr}.project-image-label{padding:10px 12px}.project-screenshot figcaption{padding-inline:12px}.project-image-dialog{border-radius:var(--radius-md);width:calc(100% - 16px);height:calc(100dvh - 16px)}.image-viewer-header{flex-wrap:wrap;gap:12px;padding:12px}.image-viewer-header>div{flex:180px}.image-viewer-header h2{font-size:var(--type-label)}.image-viewer-toolbar{padding:12px}.image-viewer-close{margin-left:auto}.further-projects{margin-top:var(--space-6);grid-template-columns:1fr}.further-project:first-child{padding:var(--space-5) 0;border-right:0;border-bottom:var(--border-width) solid var(--color-line)}.further-project:last-child{padding:var(--space-5) 0 0}.project-contact{flex-direction:column;align-items:flex-start;gap:16px}}:root{--motion-ease:cubic-bezier(.25, .1, .25, 1);--motion-duration:.6s;--motion-duration-short:.32s}@media print{[data-reveal]{opacity:1!important;transition:none!important;transform:none!important}}@media (prefers-reduced-motion:no-preference){[data-reveal][data-reveal-state=pending]{opacity:0;transform:translateY(4px)}[data-reveal][data-reveal-state=visible]{opacity:1;transition:opacity var(--motion-duration) var(--motion-ease) var(--reveal-delay,0s), transform var(--motion-duration) var(--motion-ease) var(--reveal-delay,0s);transform:translateY(0)}[data-reveal=hero][data-reveal-state=pending]{opacity:1;transform:translateY(2px)}[data-reveal=hero-visual][data-reveal-state=pending],[data-reveal=image][data-reveal-state=pending]{opacity:0;transform:translateY(4px)}[data-reveal][data-reveal-immediate]{transition-duration:0s!important;transition-delay:0s!important}.navigation>a:not(.nav-contact){position:relative}.navigation>a:not(.nav-contact):after{height:var(--border-width);background:var(--color-accent);content:"";opacity:0;transition:opacity var(--motion-duration-short) var(--motion-ease);position:absolute;bottom:-7px;left:0;right:0}.navigation>a:not(.nav-contact):focus-visible:after{opacity:1}.button,.button .arrow,.text-link .arrow,.hero-secondary span,.contact-email .arrow,.service-link .arrow,.nav-contact .arrow,.hero-project-link .arrow,.project-screenshot figcaption button .arrow,.back-top>span,.menu-toggle>span,.project-details summary>span,.faq-plus{transition-property:transform;transition-duration:var(--motion-duration-short);transition-timing-function:var(--motion-ease)}.button{transition-property:background}.button:not(:disabled):focus-visible .arrow{transform:translate(1px,-1px)}:is(.text-link,.contact-email,.hero-project-link,.project-screenshot figcaption button):focus-visible .arrow{transform:translate(2px)}.hero-secondary:focus-visible span{transform:translateY(1px)}.nav-contact:focus-visible .arrow{transform:translate(1px,-1px)}.service{transition:background var(--motion-duration-short) var(--motion-ease)}.project-details summary>span,.faq-plus{transition-property:transform}.project-details[open] summary>span,.faq-list details[open] .faq-plus{transform:rotate(45deg)}.faq-list details[open]>p,.project-details[open] .project-details-content{animation:details-content-enter var(--motion-duration-short) var(--motion-ease) both}@keyframes details-content-enter{0%{opacity:0}to{opacity:1}}.legal-dialog[open],.project-image-dialog[open]{animation:dialog-enter var(--motion-duration-short) var(--motion-ease) both}.legal-dialog[open]::backdrop,.project-image-dialog[open]::backdrop{animation:backdrop-enter var(--motion-duration-short) ease-out both}@keyframes dialog-enter{0%{opacity:0}to{opacity:1}}@keyframes backdrop-enter{0%{opacity:0}to{opacity:1}}@media (hover:hover) and (pointer:fine){.navigation>a:not(.nav-contact):hover:after{opacity:1}.button:not(:disabled):hover .arrow,.nav-contact:hover .arrow{transform:translate(1px,-1px)}:is(.text-link,.contact-email,.hero-project-link,.project-screenshot figcaption button):hover .arrow{transform:translate(2px)}.hero-secondary:hover span{transform:translateY(1px)}.service:hover{background:var(--color-surface)}.back-top:hover>span{transform:translateY(-1px)}}.button:not(:disabled):active{box-shadow:none;transform:translateY(0)}.button:disabled{box-shadow:none;transform:none}.button--dark:disabled{background:var(--color-primary)}.button:not(:disabled):active .arrow,:is(.text-link,.contact-email,.hero-project-link,.project-screenshot figcaption button,.service-link,.nav-contact):active .arrow{transform:none}@media (width<=800px){.navigation.is-open{transform-origin:top;animation:navigation-enter var(--motion-duration-short) var(--motion-ease) both}@keyframes navigation-enter{0%{opacity:0}to{opacity:1}}}}
