.nav[data-astro-cid-dmqpwcec]{position:sticky;top:0;z-index:10;background:var(--color-bg)}.nav__inner[data-astro-cid-dmqpwcec]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);max-width:var(--content-max);margin-inline:auto;height:var(--nav-height);padding-inline:var(--page-padding-x)}.nav__brand[data-astro-cid-dmqpwcec]{display:inline-flex;align-items:center;color:var(--color-fg);text-decoration:none}.nav__logo[data-astro-cid-dmqpwcec]{height:4rem;width:auto;display:block}.nav__meta[data-astro-cid-dmqpwcec]{margin:0;max-width:none;font-family:var(--font-mono);font-weight:400;font-size:1rem;line-height:1;color:var(--color-fg);letter-spacing:0;display:inline-flex;gap:.4ch;white-space:nowrap}.nav__clock[data-astro-cid-dmqpwcec]{font-variant-numeric:tabular-nums}@media(max-width:480px){.nav__place[data-astro-cid-dmqpwcec]{display:none}}.footer[data-astro-cid-sz7xmlte]{margin-top:var(--space-16)}.footer__inner[data-astro-cid-sz7xmlte]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-5);max-width:var(--content-max);margin-inline:auto;padding:var(--space-6) var(--space-5);flex-wrap:wrap}.footer__copy[data-astro-cid-sz7xmlte]{color:var(--color-muted);font-size:var(--fs-base)}.footer__socials[data-astro-cid-sz7xmlte]{display:flex;gap:var(--space-6);list-style:none;padding:0;margin:0}.footer__socials[data-astro-cid-sz7xmlte] li[data-astro-cid-sz7xmlte]+li[data-astro-cid-sz7xmlte]{margin-top:0}.footer__socials[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{display:inline-flex;align-items:center;justify-content:center;color:var(--color-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}.footer__socials[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{color:var(--color-fg)}.footer__socials[data-astro-cid-sz7xmlte] svg[data-astro-cid-sz7xmlte]{width:1.25rem;height:1.25rem}.intro[data-astro-cid-xdli4msg]{position:fixed;inset:0;z-index:100;background:var(--color-bg);color:var(--color-fg);display:grid;place-items:center;will-change:opacity}.intro__logo[data-astro-cid-xdli4msg]{width:7rem;height:auto;transform-origin:center center;will-change:transform}.intro__logo[data-astro-cid-xdli4msg] svg[data-astro-cid-xdli4msg]{display:block;width:100%;height:auto}@media(prefers-reduced-motion:reduce){.intro[data-astro-cid-xdli4msg]{display:none}}:root{--c-white: #ffffff;--c-paper: #fffcf5;--c-gray-50: #fafafa;--c-gray-100: #f4f4f3;--c-gray-200: #e7e6e4;--c-gray-300: #d1cfcb;--c-gray-500: #807d76;--c-gray-700: #464441;--c-gray-900: #1a1917;--c-black: #000000;--c-mark-green: #51c200;--c-mark-fluor: #dbfb42;--c-mark-blue: #3a91ef}:root{--color-bg: var(--c-paper);--color-fg: var(--c-black);--color-muted: var(--c-gray-500);--color-surface: var(--c-gray-50);--color-border: var(--c-gray-200);--color-accent: var(--c-black);--color-accent-fg: var(--c-paper);--color-mark-green: var(--c-mark-green);--color-mark-fluor: var(--c-mark-fluor);--color-mark-blue: var(--c-mark-blue)}:root{--font-heading: var(--font-serif);--font-body: var(--font-sans);--fs-xs: clamp(.75rem, .72rem + .15vw, .8125rem);--fs-sm: clamp(.875rem, .83rem + .22vw, .9375rem);--fs-base: clamp(1rem, .95rem + .25vw, 1.125rem);--fs-lg: clamp(1.25rem, 1.15rem + .5vw, 1.5rem);--fs-xl: clamp(1.5rem, 1.35rem + .75vw, 1.875rem);--fs-2xl: clamp(2rem, 1.7rem + 1.5vw, 2.75rem);--fs-3xl: clamp(2.5rem, 2rem + 2.5vw, 3.75rem);--fs-4xl: clamp(3.25rem, 2.4rem + 4.25vw, 5.5rem);--fs-hero: clamp(3.5rem, 1.5rem + 9vw, 8rem);--lh-tight: 1.1;--lh-snug: 1.25;--lh-base: 1.6;--lh-loose: 1.75;--tracking-tight: -.02em;--tracking-normal: 0em;--tracking-loose: .01em;--tracking-wide: .08em}:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2.5rem;--space-8: 3rem;--space-10: 4rem;--space-12: 6rem;--space-16: 8rem;--space-24: 12rem}:root{--radius-sm: 4px;--radius-md: 8px;--radius-lg: 16px;--radius-pill: 25px;--radius-full: 9999px}:root{--ease-out: cubic-bezier(.2, 0, 0, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--dur-fast: .15s;--dur-base: .3s;--dur-slow: .6s;--dur-curtain: .9s}:root{--content-max: 75rem;--content-narrow: 40rem;--nav-height: 6.25rem;--page-padding-x: clamp(1.25rem, 6vw, 8rem)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100dvh;line-height:var(--lh-base);font-family:var(--font-body);font-size:var(--fs-base);font-weight:300;color:var(--color-fg);background:var(--color-bg);text-rendering:optimizeLegibility}img,picture,svg,video,canvas{display:block;max-width:100%;height:auto}input,button,textarea,select{font:inherit;color:inherit}button{background:none;border:0;padding:0;cursor:pointer}ul[role=list],ol[role=list]{list-style:none;padding:0}:focus-visible{outline:2px solid var(--color-accent);outline-offset:3px;border-radius:2px}:focus:not(:focus-visible){outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}h1,h2,h3,h4,h5,h6{color:var(--color-fg);text-wrap:balance}h1{font-family:var(--font-heading);font-size:var(--fs-hero);font-weight:700;line-height:1.05;letter-spacing:var(--tracking-tight)}h2{font-family:var(--font-body);font-size:var(--fs-3xl);font-weight:700;line-height:var(--lh-snug);letter-spacing:var(--tracking-loose)}h3{font-family:var(--font-body);font-size:var(--fs-2xl);font-weight:700;line-height:1.3;letter-spacing:var(--tracking-loose)}h4{font-family:var(--font-body);font-size:var(--fs-xl);font-weight:600;line-height:1.3}h5{font-family:var(--font-body);font-size:var(--fs-lg);font-weight:600;line-height:1.4}h6{font-family:var(--font-body);font-size:var(--fs-sm);font-weight:500;line-height:1.2;letter-spacing:var(--tracking-wide);text-transform:uppercase}p{font-size:var(--fs-base);font-weight:300;line-height:var(--lh-base);max-width:65ch;text-wrap:pretty}a{color:inherit;text-decoration:none;text-decoration-thickness:from-font;text-underline-offset:.2em;font-weight:500}a:hover{text-decoration:underline}ul,ol{padding-left:var(--space-5);line-height:var(--lh-base)}:where(ul,ol):not([role=list]) li+li{margin-top:var(--space-1)}blockquote{font-family:var(--font-heading);font-style:italic;font-size:var(--fs-lg);line-height:var(--lh-snug);padding-left:var(--space-4);border-left:2px solid var(--color-accent);color:var(--color-fg)}code,pre,kbd,samp{font-family:var(--font-mono, ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace);font-size:.9em}code{padding:.1em .35em;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm)}pre{padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto;line-height:var(--lh-snug)}pre code{padding:0;background:transparent;border:0}small{font-size:var(--fs-sm);color:var(--color-muted)}hr{border:0;border-top:1px solid var(--color-border);margin-block:var(--space-8)}::selection{background:var(--color-accent);color:var(--color-accent-fg)}.eyebrow{font-family:var(--font-body);font-size:var(--fs-sm);font-weight:400;line-height:1.2;letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-muted)}.lede{font-family:var(--font-body);font-size:clamp(1.25rem,.8rem + 2.2vw,2.5rem);font-weight:300;line-height:1.4;max-width:none}.display-outline{color:transparent;-webkit-text-stroke:1.5px var(--color-fg)}.mark-green{color:var(--color-mark-green)}.mark-fluor{color:var(--color-mark-fluor)}.mark-blue{color:var(--color-mark-blue)}.mono{font-family:var(--font-mono);font-weight:500;letter-spacing:0}.pill{display:inline-flex;align-items:center;gap:var(--space-2);height:32px;padding:0 12px;border:2px solid var(--color-fg);border-radius:var(--radius-pill);background:transparent;color:var(--color-fg);font-family:var(--font-body);font-size:14px;font-weight:400;line-height:1;letter-spacing:var(--tracking-tight);white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);height:72px;min-width:200px;padding:0 24px;border:2px solid var(--color-fg);background:transparent;color:var(--color-fg);font-family:var(--font-body);font-size:1.25rem;font-weight:400;letter-spacing:var(--tracking-tight);text-decoration:none;cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.btn:hover{background:var(--color-fg);color:var(--color-accent-fg);opacity:1}.btn--sm{height:48px;min-width:160px;font-size:1rem}.card{border:2px solid var(--color-fg);background:var(--color-bg)}.case-study{max-width:64rem;margin-inline:auto}.case-study__body:after{content:"";display:block;clear:both}.case-study__body>*+*{margin-top:var(--space-5)}.case-study__body>:first-child{margin-top:0}.case-study__body h2{margin-top:var(--space-12);margin-bottom:var(--space-4);font-family:var(--font-heading);font-weight:700;font-size:var(--fs-2xl);line-height:var(--lh-tight);letter-spacing:var(--tracking-tight)}.case-study__body h2+p,.case-study__body h2+ul,.case-study__body h2+ol{margin-top:0}.case-study__body h3{margin-top:var(--space-8);margin-bottom:var(--space-3);font-family:var(--font-heading);font-weight:700;font-size:var(--fs-xl);line-height:var(--lh-snug);letter-spacing:var(--tracking-tight);text-wrap:pretty}.case-study__body h3+p,.case-study__body h3+ul,.case-study__body h3+ol{margin-top:0}.case-study__body p,.case-study__body ul,.case-study__body ol{font-size:var(--fs-base);line-height:var(--lh-base);color:var(--color-fg)}.case-study__body strong{font-weight:600}.case-study-header{margin-bottom:var(--space-12)}.case-study-header__back{display:inline-flex;align-items:center;gap:var(--space-2);font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--color-muted);text-decoration:none;margin-bottom:var(--space-8)}.case-study-header__back:hover{color:var(--color-fg);text-decoration:none}.case-study-header__title{font-size:var(--fs-3xl);margin:0 0 var(--space-4)}.case-study-header__lede{margin:0 0 var(--space-10);max-width:50ch}.case-study-header__live{margin-top:var(--space-6);font-family:var(--font-mono);font-size:var(--fs-sm)}.case-study-header__live a{display:inline-flex;align-items:center;gap:var(--space-2)}.context-section{display:grid;grid-template-columns:minmax(0,1fr) 16rem;column-gap:var(--space-10);align-items:center}.context-section__text>*+*{margin-top:var(--space-5)}.context-section__text>:first-child{margin-top:0}.case-study-meta{margin:0;padding-left:var(--space-5);border-left:1px solid var(--color-border);display:flex;flex-direction:column;gap:var(--space-6)}@media(max-width:900px){.context-section{grid-template-columns:minmax(0,1fr);row-gap:var(--space-8)}.context-section__aside{order:-1}}.case-study-meta__row{display:flex;flex-direction:column;gap:var(--space-1);min-width:0}.case-study-meta__label{font-family:var(--font-mono);font-size:var(--fs-xs);font-weight:500;letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--color-muted);margin:0}.case-study-meta__value{font-family:var(--font-body);font-size:var(--fs-sm);font-weight:400;line-height:var(--lh-snug);color:var(--color-fg);margin:0}@media(max-width:900px){.case-study-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:var(--space-5);row-gap:var(--space-4);padding-left:0;padding-block:var(--space-5);border-left:0;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}}.figure{margin:var(--space-8) 0}.figure--phone{max-width:340px;margin-inline:0 auto}@media(max-width:640px){.figure--phone{max-width:100%}}.figure img{display:block;width:100%;height:auto;aspect-ratio:4 / 3;object-fit:contain;background:var(--color-surface);border:2px solid #000;border-radius:var(--radius-md)}.figure--phone img{aspect-ratio:auto;object-fit:initial;background:transparent}.figure figcaption{margin-top:var(--space-3);font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--color-muted);text-align:center}.figure-placeholder{display:flex;align-items:center;justify-content:center;aspect-ratio:16 / 9;width:100%;border:2px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--space-5)}.figure-placeholder__label{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--color-muted);text-align:center;max-width:40ch}.image-row{display:grid;gap:var(--space-4);margin:var(--space-8) 0;grid-template-columns:repeat(var(--image-row-cols, 2),minmax(0,1fr));align-items:start}.image-row--3{--image-row-cols: 3}.image-row .figure{margin:0}.image-row:has(.figure--phone){grid-template-columns:repeat(var(--image-row-cols, 2),minmax(0,340px));justify-content:start}.image-row .figure--phone{margin-inline:0;max-width:100%}@media(max-width:640px){.image-row{grid-template-columns:minmax(0,1fr)}}.carousel{margin:var(--space-8) 0;outline:none}.carousel__viewport{overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}.carousel__viewport::-webkit-scrollbar{display:none}.carousel__track{display:flex;gap:var(--space-4)}.carousel__track>*{flex:0 0 100%;scroll-snap-align:start;margin:0}.carousel .figure{margin:0;display:flex;flex-direction:column}.carousel .figure img{width:100%;height:auto;aspect-ratio:4 / 3;object-fit:contain;background:var(--color-surface)}.carousel__controls{display:flex;align-items:center;justify-content:center;gap:var(--space-4);margin-top:var(--space-4)}.carousel__btn{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;border-radius:50%;border:1.5px solid var(--color-fg);background:transparent;color:var(--color-fg);cursor:pointer;transition:background var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.carousel__btn:hover:not(:disabled){background:var(--color-fg);color:var(--color-accent-fg)}.carousel__btn:disabled{opacity:.3;cursor:not-allowed}.carousel__btn [data-icon]{width:18px;height:18px}.carousel__dots{display:flex;align-items:center;gap:var(--space-2)}.carousel__dot{width:8px;height:8px;padding:0;border:1.5px solid var(--color-fg);border-radius:var(--radius-full);background:transparent;cursor:pointer;transition:background var(--dur-fast) var(--ease-out)}.carousel__dot.is-active{background:var(--color-fg)}.page{max-width:var(--content-max);margin-inline:auto;padding-inline:var(--page-padding-x);padding-block:var(--space-10)}
