@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/_astro/schibsted-grotesk-latin-ext-wght-normal.hsMS0n0O.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Schibsted Grotesk Variable;font-style:normal;font-display:swap;font-weight:400 900;src:url(/_astro/schibsted-grotesk-latin-wght-normal.Bb8VGrTG.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:OpenDyslexic;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/opendyslexic-latin-400-normal.nUhe5EwG.woff2) format("woff2"),url(/_astro/opendyslexic-latin-400-normal.Cv3YY6GF.woff) format("woff")}@font-face{font-family:OpenDyslexic;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/opendyslexic-latin-700-normal.Bnmt45Ln.woff2) format("woff2"),url(/_astro/opendyslexic-latin-700-normal.wYUJcbXi.woff) format("woff")}:root{--bg: #f6f1ea;--surface: #fffdf9;--well: #ede6db;--tint: #e4e8fb;--text: #1f1b2e;--muted: #5c576a;--line: #e1d8cb;--accent: #2e46d1;--accent-hover: #2236a8;--go: #1f7a3e;--on-accent: #ffffff;--shadow-sm: 0 1px 2px rgb(31 27 46 / .05), 0 2px 8px rgb(31 27 46 / .04);--shadow-md: 0 2px 4px rgb(31 27 46 / .05), 0 14px 34px rgb(31 27 46 / .1);--radius: 20px;--radius-sm: 12px;--scale: 1;--fs-display: calc(clamp(2.25rem, 1.3rem + 3.6vw, 4.25rem) * var(--scale));--fs-body: calc(clamp(1rem, .96rem + .2vw, 1.125rem) * var(--scale));--fs-label: calc(.875rem * var(--scale));--font: "Schibsted Grotesk Variable", "Helvetica Neue", Arial, sans-serif;--measure: 64ch;--page: 72rem;--gutter: clamp(1rem, 4vw, 2.5rem)}html[data-text=large]{--scale: 1.25}html[data-font=dyslexic]{--font: "OpenDyslexic", "Schibsted Grotesk Variable", Arial, sans-serif}html[data-contrast=high]{--bg: #ffffff;--surface: #ffffff;--well: #ffffff;--tint: #ffffff;--text: #000000;--muted: #2b2b2b;--line: #000000;--accent: #1a2b99;--accent-hover: #000000;--go: #0b5e28;--shadow-sm: none;--shadow-md: none}html[data-contrast=high] :is(.card-media,.case-hero,.tldr,.contact-btn,.tags li,.figure img,.arch,.miles,.prefs,.pref){border:2px solid #000}*,*:before,*:after{box-sizing:border-box}html{font-family:var(--font);line-height:1.6;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;scroll-padding-top:6rem}@media(prefers-reduced-motion:no-preference){html:not([data-motion=reduce]){scroll-behavior:smooth}}body{margin:0;font-size:var(--fs-body);background:var(--bg);overflow-x:hidden}h1,h2,h3,p,ul,ol,dl,figure{margin:0}h1,h2{font-size:var(--fs-display);line-height:1.08;font-weight:650;letter-spacing:-.03em}h3{font-size:var(--fs-body);line-height:1.4;font-weight:650}img{max-width:100%;height:auto;display:block}a{color:var(--accent);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}.label,h2.label{font-size:var(--fs-label);font-weight:650;letter-spacing:.1em;line-height:1.4;text-transform:uppercase;color:var(--muted)}.muted{color:var(--muted)}.prose{max-width:var(--measure)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:1rem;top:-100%;background:var(--accent);color:var(--on-accent);padding:.6rem 1rem;border-radius:999px;z-index:100;font-size:var(--fs-label)}.skip-link:focus{top:.75rem}main:focus{outline:none}.wrap{max-width:var(--page);margin-inline:auto;padding-inline:var(--gutter)}.btn{display:inline-flex;align-items:center;gap:.45rem;min-height:2.75rem;padding:.55rem 1.1rem;border-radius:999px;border:1px solid var(--accent);background:var(--accent);color:var(--on-accent);font:inherit;font-size:var(--fs-label);font-weight:650;text-decoration:none;white-space:nowrap;cursor:pointer}.btn:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{background:var(--surface);color:var(--text);border-color:var(--line)}.btn-ghost:hover{background:var(--tint);border-color:var(--accent)}.btn svg{width:1.15em;height:1.15em}.btn-detail{font-weight:400;opacity:.9}.site-header{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 90%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid transparent}.site-header.is-stuck{border-bottom-color:var(--line)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-block:.85rem}.brand{font-weight:700;color:var(--text);text-decoration:none;letter-spacing:-.01em}.site-menu{display:flex;align-items:center;gap:1.5rem}.site-menu ul{display:flex;gap:.25rem;list-style:none;padding:0}.site-menu nav a{display:block;padding:.5rem .85rem;border-radius:999px;color:var(--text);text-decoration:none;font-size:var(--fs-label);font-weight:600}.site-menu nav a:hover{background:var(--tint)}.site-menu nav a[aria-current=page]{color:var(--accent);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:.4em}.status{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--fs-label);white-space:nowrap}.status-dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--go);box-shadow:0 0 0 3px color-mix(in srgb,var(--go) 20%,transparent);flex:none}@media(prefers-reduced-motion:no-preference){html:not([data-motion=reduce]) .status-dot{animation:pulse 2.4s ease-in-out infinite}}@keyframes pulse{50%{box-shadow:0 0 0 6px color-mix(in srgb,var(--go) 8%,transparent)}}.menu-toggle{display:none}@media(max-width:48rem){html.js .menu-toggle{display:inline-flex}html.js .site-menu{display:none}html.js .site-menu.is-open{display:flex}.header-inner{flex-wrap:wrap}.site-menu{flex-basis:100%;flex-direction:column;align-items:stretch;gap:.75rem;padding:.75rem 0 .5rem}.site-menu ul{flex-direction:column}.site-menu nav a{font-size:var(--fs-body);padding:.7rem .85rem}.site-menu .status{padding-inline:.85rem}.site-menu .btn{justify-content:center}}.hero{padding-block:clamp(4rem,14vh,9rem) clamp(3rem,8vh,5rem)}.hero-title{max-width:18ch}.hero-line{display:block}.hero-mark{position:relative;display:inline-block}.hero-mark:after{content:"";position:absolute;left:0;right:0;bottom:-.04em;height:.09em;border-radius:999px;background:var(--accent);transform-origin:left center}.hero-meta{margin-top:2rem;color:var(--muted)}.hero-cta{margin-top:1.25rem}.hero-cta a{display:inline-flex;align-items:center;gap:.4rem;font-weight:650;text-decoration:none;border-bottom:2px solid currentColor;padding-bottom:.1em}@media(prefers-reduced-motion:no-preference){html:not([data-motion=reduce]) .hero-line-1{animation:overlooked 2.4s ease-in-out both}html:not([data-motion=reduce]) .hero-line-2{animation:appear .8s ease-out 2.2s both}html:not([data-motion=reduce]) .hero-mark:after{animation:underline .7s cubic-bezier(.6,0,.2,1) 2.9s both}html:not([data-motion=reduce]) .hero-meta,html:not([data-motion=reduce]) .hero-cta{animation:appear .7s ease-out 3.2s both}}@keyframes overlooked{0%,35%{color:color-mix(in srgb,var(--text) 18%,var(--bg));filter:blur(3px)}to{color:var(--text);filter:blur(0)}}@keyframes appear{0%{opacity:0;transform:translateY(.3em)}}@keyframes underline{0%{transform:scaleX(0)}}.section{padding-block:clamp(3rem,8vw,5rem)}.section-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;margin-bottom:2rem}.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(2rem,4vw,3rem) clamp(1.25rem,3vw,2rem);list-style:none;padding:0}.work-grid>li:first-child{grid-column:1 / -1}.work-grid>li:first-child .card-media{aspect-ratio:16 / 9}@media(max-width:44rem){.work-grid{grid-template-columns:minmax(0,1fr)}.work-grid>li:first-child .card-media{aspect-ratio:16 / 10}}.card{position:relative;border-radius:var(--radius);transition:translate .35s ease}.card-media{position:relative;aspect-ratio:16 / 10;overflow:hidden;border-radius:var(--radius);background:var(--well);box-shadow:var(--shadow-sm);transition:box-shadow .35s ease}.card-img{position:absolute;inset:0;width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.7,.2,1),opacity .45s ease}.card-img[data-fit=cover]{object-fit:cover;object-position:center}.card-img[data-fit=contain]{object-fit:contain;padding:7%;filter:drop-shadow(0 8px 18px rgb(31 27 46 / .12))}.card-img-alt{opacity:0}.card-body{padding:1rem .25rem 0}.card-title{display:flex;align-items:baseline;gap:.45rem}.card-link{color:var(--text);text-decoration:none}.card-link:after{content:"";position:absolute;inset:0;border-radius:var(--radius)}.card-link:focus-visible{outline:none}.card:has(.card-link:focus-visible){outline:3px solid var(--accent);outline-offset:6px}.card-arrow{display:inline-block;color:var(--accent);transition:transform .3s ease}.tags{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:.6rem 0 .5rem}.tags li{font-size:var(--fs-label);font-weight:550;padding:.15rem .7rem;border-radius:999px;background:var(--tint);color:var(--text)}.card-desc{color:var(--muted);max-width:48ch}.card:is(:hover,:focus-within) .card-img-alt{opacity:1}.card:is(:hover,:focus-within) .card-img:not(.card-img-alt){opacity:0}.card:is(:hover,:focus-within) .card-media{box-shadow:var(--shadow-md)}@media(prefers-reduced-motion:no-preference){html:not([data-motion=reduce]) .card:is(:hover,:focus-within){translate:0 -6px}html:not([data-motion=reduce]) .card:is(:hover,:focus-within) .card-img{transform:scale(1.04)}html:not([data-motion=reduce]) .card:is(:hover,:focus-within) .card-arrow{transform:translate(6px)}html.js:not([data-motion=reduce]) .reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease,translate .35s ease}html.js:not([data-motion=reduce]) .reveal.is-visible{opacity:1;transform:none}}.site-footer{margin-top:clamp(3rem,8vw,6rem);padding-block:clamp(3rem,8vw,5rem) 2rem;border-top:1px solid var(--line)}.footer-line{max-width:16ch}.footer-links{display:flex;flex-wrap:wrap;gap:.75rem;list-style:none;padding:0;margin:2rem 0 3rem}.footer-credit{font-size:var(--fs-label);color:var(--muted)}@media(max-width:30rem){.footer-links .btn{white-space:normal;overflow-wrap:anywhere}}.prefs-toggle{position:fixed;right:max(1rem,env(safe-area-inset-right));bottom:max(1rem,env(safe-area-inset-bottom));z-index:60;box-shadow:var(--shadow-md)}.prefs{width:min(24rem,calc(100vw - 2rem));max-height:calc(100dvh - 2rem);overflow:auto;margin:auto 1rem 1rem auto;padding:1.5rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--text);box-shadow:var(--shadow-md)}.prefs::backdrop{background:#1f1b2e40}.prefs h2{font-size:var(--fs-body);letter-spacing:0;line-height:1.4}.prefs-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.25rem}.prefs fieldset{border:0;padding:0;margin:1rem 0;display:grid;gap:.5rem}.pref{display:grid;grid-template-columns:auto 1fr;gap:.15rem .75rem;align-items:start;padding:.75rem;border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer}.pref:has(input:checked){border-color:var(--accent);background:var(--tint)}.pref input{width:1.2rem;height:1.2rem;margin:.2rem 0 0;accent-color:var(--accent)}.pref-name{font-weight:650}.pref-hint{grid-column:2;font-size:var(--fs-label);color:var(--muted);line-height:1.45}.prefs-foot{display:flex;justify-content:space-between;gap:.75rem}.about-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:clamp(2rem,6vw,5rem);padding-block:clamp(3rem,8vw,5rem) 1rem}.about-hero-text{display:grid;gap:1.5rem}.arch{width:clamp(12rem,26vw,18rem);aspect-ratio:4 / 5;border-radius:999px 999px var(--radius) var(--radius);overflow:hidden;background:var(--tint);box-shadow:var(--shadow-md)}.arch img{width:100%;height:100%;object-fit:cover}.about-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 clamp(2rem,6vw,5rem)}@media(max-width:52rem){.about-grid{grid-template-columns:minmax(0,1fr)}}.about-section{padding-block:clamp(2.5rem,6vw,3.5rem) 0}.about-section h2{margin-bottom:1.25rem}.timeline{list-style:none;padding:0 0 0 1.75rem;position:relative;display:grid;gap:1.5rem;max-width:var(--measure)}.timeline:before{content:"";position:absolute;left:.4rem;top:.5rem;bottom:.5rem;width:2px;background:var(--accent);border-radius:2px}.timeline li{position:relative}.timeline li:before{content:"";position:absolute;left:-1.75rem;top:.45em;width:.9rem;height:.9rem;border-radius:50%;background:var(--bg);border:3px solid var(--accent)}.timeline .role,.rows .role{font-weight:650}.rows{list-style:none;padding:0;display:grid;gap:.75rem;max-width:var(--measure)}.rows li{display:grid;gap:.15rem}.rows .org{color:var(--muted);font-weight:400}.contact-grid{list-style:none;padding:0;display:grid;gap:.75rem}.contact-btn{display:grid;gap:.2rem;height:100%;padding:1rem 1.25rem;border-radius:var(--radius);background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow-sm);color:var(--text);text-decoration:none;transition:border-color .25s ease,box-shadow .25s ease}.contact-btn:hover{border-color:var(--accent);box-shadow:var(--shadow-md)}.contact-label{font-weight:700}.contact-label .arrow{color:var(--accent)}.contact-text{color:var(--muted);overflow-wrap:anywhere}.miles{margin-top:clamp(2.5rem,6vw,3.5rem);padding:clamp(1.5rem,4vw,2.5rem);border-radius:var(--radius);background:var(--tint)}.miles h2{margin-bottom:1rem}.miles-route{display:block;width:100%;height:auto;margin-top:1.5rem;overflow:visible}@media(prefers-reduced-motion:no-preference){html.js:not([data-motion=reduce]) .miles .route-draw{transition:stroke-dashoffset 2.8s ease-in-out}html.js:not([data-motion=reduce]) .miles:not(.is-drawn) .route-draw{stroke-dashoffset:1}html.js:not([data-motion=reduce]) .miles-flag{transition:opacity .4s ease 2.6s}html.js:not([data-motion=reduce]) .miles:not(.is-drawn) .miles-flag{opacity:0}}@media(max-width:40rem){.about-hero{grid-template-columns:minmax(0,1fr)}.about-hero .arch{grid-row:1}}.case-header{padding-block:clamp(3rem,8vw,5rem) 2rem;display:grid;gap:1rem}.case-header h1{max-width:22ch}.case-header .problem{max-width:var(--measure);color:var(--muted)}.case-hero{width:100%;aspect-ratio:16 / 10;object-fit:cover;border-radius:var(--radius);box-shadow:var(--shadow-sm);background:var(--well)}.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(11rem,100%),1fr));gap:1.25rem 2rem;margin:2.5rem 0 0;padding:1.5rem 0;border-block:1px solid var(--line)}.facts dt{font-size:var(--fs-label);font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:.25rem}.facts dd{margin:0}.tldr{margin-top:2rem;padding:clamp(1.25rem,3vw,2rem);border-radius:var(--radius);background:var(--tint)}.tldr h2{font-size:var(--fs-body);letter-spacing:0;line-height:1.4;margin-bottom:.75rem}.tldr ul{margin:0;padding-left:1.2rem}.tldr li+li{margin-top:.4rem}.case-body{counter-reset:section;margin-top:1rem}.case-body>*+*{margin-top:1.1rem}.case-body>:is(p,ul,ol,blockquote){max-width:var(--measure)}.case-body>h2{counter-increment:section;margin-top:clamp(3.5rem,8vw,5.5rem);padding-top:1.25rem;border-top:1px solid var(--line);max-width:22ch}.case-body>h2:before{content:counter(section,decimal-leading-zero);display:block;margin-bottom:.6rem;font-size:var(--fs-label);font-weight:650;letter-spacing:.1em;color:var(--accent)}.case-body>h3{margin-top:2.5rem}.case-body li+li{margin-top:.35rem}.case-body blockquote{margin-inline:0;padding-left:1.25rem;border-left:3px solid var(--accent)}.figure,.placeholder{margin-block:2rem}.figure img{border-radius:var(--radius-sm)}.figure--card img{box-shadow:var(--shadow-sm);background:var(--surface)}.figure--portrait img{max-height:42rem;width:auto}.figure--cutout img{border-radius:0}figcaption{color:var(--muted);font-size:var(--fs-label);margin-top:.6rem;max-width:var(--measure)}.gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(14rem,100%),1fr));gap:1.5rem;align-items:start;margin-block:2rem}.gallery .figure{margin:0}.gallery .figure--portrait img{max-height:32rem}.placeholder-box{border:2px dashed var(--muted);border-radius:var(--radius-sm);padding:3rem 1rem;text-align:center}.swatches{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(6.5rem,100%),1fr));gap:1rem;list-style:none;padding:0;margin-block:2rem}.case-body .swatches li+li{margin-top:0}.swatch-chip{display:block;aspect-ratio:4 / 3;border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px #1f1b2e14;margin-bottom:.5rem}.swatch-name{display:block;font-weight:600}.swatch-hex{display:block;font-size:var(--fs-label);color:var(--muted)}.steps{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(13rem,100%),1fr));gap:.75rem;list-style:none;padding:0;margin-block:2rem;counter-reset:step}.case-body .steps li+li{margin-top:0}.steps li{counter-increment:step;display:flex;gap:.75rem;align-items:baseline;padding:.85rem 1rem;border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-sm);font-weight:550}.steps li:before{content:counter(step,decimal-leading-zero);font-size:var(--fs-label);font-weight:650;color:var(--accent)}.specimen{margin-block:2rem;padding:clamp(1.5rem,4vw,2.5rem);border-radius:var(--radius);background:#34546b;color:#efe2cc}.specimen-label{font-size:var(--fs-label);font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:#e3a476}.specimen-word,.specimen-archivo{font-family:"Archivo Variable",var(--font);font-stretch:125%;font-weight:600}.specimen-word{font-size:var(--fs-display);line-height:1.1;letter-spacing:-.01em;margin-block:.5rem 1.5rem}.specimen dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(16rem,100%),1fr));gap:1rem 2rem}.specimen dt{font-size:var(--fs-label);font-weight:650;letter-spacing:.1em;text-transform:uppercase;color:#e3a476}.specimen dd{margin:.25rem 0 0}html[data-contrast=high] .specimen{background:#000;color:#fff}.case-nav{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-top:5rem}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}html[data-motion=reduce] *,html[data-motion=reduce] *:before,html[data-motion=reduce] *:after{animation:none!important;transition:none!important}
