:root{--bg: #f6f7f9;--bg-2: #eef0f4;--surface: #ffffff;--ink: #121417;--ink-2: #5a616d;--rule: #e1e4ea;--rule-2: #c9ced8;--deep: #121417;--deep-fg: #f3f4f6;--deep-2: #a3a9b4;--deep-rule: #2a2e35;--ok: #1f8a5b;--err: #c2410c;--shadow: 0 1px 2px rgba(18,20,23,.04), 0 14px 34px -18px rgba(18,20,23,.22);--l-mobile: #e0516b;--l-interface: #2f78bd;--l-api: #6d4ee6;--l-data: #c97a1a;--l-cloud: #1f8f69;--l-practice: #5a616d;--sans: "Schibsted Grotesk", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Consolas, monospace;--wrap: 1200px;--gutter: clamp(16px, 4vw, 40px);--radius: 14px;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0f1115;--bg-2: #13161b;--surface: #181b21;--ink: #eceef2;--ink-2: #9aa2ae;--rule: #262a31;--rule-2: #353a43;--deep: #1b1f26;--deep-fg: #eceef2;--deep-2: #9aa2ae;--deep-rule: #2c313a;--ok: #4cc38a;--err: #fb923c;--shadow: 0 1px 2px rgba(0,0,0,.3), 0 18px 40px -18px rgba(0,0,0,.7);--l-mobile: #ff7d93;--l-interface: #62a8ec;--l-api: #a08bff;--l-data: #f0a849;--l-cloud: #43c398;--l-practice: #9aa2ae;color-scheme:dark}}:root[data-theme=dark]{--bg: #0f1115;--bg-2: #13161b;--surface: #181b21;--ink: #eceef2;--ink-2: #9aa2ae;--rule: #262a31;--rule-2: #353a43;--deep: #1b1f26;--deep-fg: #eceef2;--deep-2: #9aa2ae;--deep-rule: #2c313a;--ok: #4cc38a;--err: #fb923c;--shadow: 0 1px 2px rgba(0,0,0,.3), 0 18px 40px -18px rgba(0,0,0,.7);--l-mobile: #ff7d93;--l-interface: #62a8ec;--l-api: #a08bff;--l-data: #f0a849;--l-cloud: #43c398;--l-practice: #9aa2ae;color-scheme:dark}.l-mobile{--c: var(--l-mobile)}.l-interface{--c: var(--l-interface)}.l-api{--c: var(--l-api)}.l-data{--c: var(--l-data)}.l-cloud{--c: var(--l-cloud)}.l-practice{--c: var(--l-practice)}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:84px}body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.65 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:clip}img{max-width:100%;height:auto;display:block}a{color:inherit;text-decoration-color:var(--rule-2);text-underline-offset:3px}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--l-interface);outline-offset:3px;border-radius:4px}::selection{background:var(--ink);color:var(--bg)}h1,h2,h3,h4{margin:0;line-height:1.15}p{margin:0 0 1em}ul,ol,dl,dd{margin:0;padding:0}ul,ol{list-style:none}button{font:inherit}.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding-inline:var(--gutter)}.narrow{max-width:860px}.mono{font-family:var(--mono);font-size:.78rem;letter-spacing:.02em}.muted{color:var(--ink-2);font-weight:400}.skip{position:absolute;left:-999px;top:8px;background:var(--ink);color:var(--bg);padding:8px 14px;border-radius:8px;z-index:100}.skip:focus{left:8px}.eyebrow{font:500 .76rem/1 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2);margin:0 0 14px}.display{font-weight:800;font-size:clamp(2.5rem,6.4vw,4.6rem);line-height:1;letter-spacing:-.04em;margin-bottom:22px;text-wrap:balance}.display em{font-style:normal;background:linear-gradient(90deg,var(--l-mobile),var(--l-interface) 30%,var(--l-api) 55%,var(--l-data) 78%,var(--l-cloud));-webkit-background-clip:text;background-clip:text;color:transparent}.display--md{font-size:clamp(1.8rem,3.6vw,2.6rem);letter-spacing:-.03em}.display--page{font-size:clamp(2.2rem,5.4vw,4rem);max-width:20ch}.h2{font-weight:700;font-size:clamp(1.8rem,3.6vw,2.6rem);letter-spacing:-.03em;text-wrap:balance}.h2--xl{font-size:clamp(2.4rem,6vw,4rem);font-weight:800;letter-spacing:-.04em;margin-bottom:16px}.lede{font-size:clamp(1.05rem,1.5vw,1.18rem);color:var(--ink-2);max-width:54ch}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:13px 20px;border-radius:10px;background:var(--ink);color:var(--bg);border:1.5px solid var(--ink);font:600 .95rem/1 var(--sans);text-decoration:none;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,background .18s,color .18s}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.btn--ghost{background:transparent;color:var(--ink)}.btn--ghost:hover{background:var(--surface)}.btn--small{padding:9px 14px;font-size:.85rem}.btn--block{width:100%}.icon-btn{display:inline-grid;place-items:center;width:38px;height:38px;background:transparent;color:var(--ink);border:1px solid var(--rule);border-radius:10px;cursor:pointer}.icon-btn:hover{border-color:var(--rule-2);background:var(--surface)}.link-arrow{font-weight:600;text-decoration:none;border-bottom:1.5px solid var(--rule-2)}.link-arrow:hover{border-color:var(--ink)}.nav{position:sticky;top:0;z-index:50;background:var(--bg);border-bottom:1px solid transparent;transition:border-color .3s}.nav.is-scrolled{border-bottom-color:var(--rule)}.nav__inner{display:flex;align-items:center;justify-content:space-between;gap:16px;height:68px}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:700;letter-spacing:-.01em}.brand__mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:var(--ink);color:var(--bg);font:700 .85rem/1 var(--sans);position:relative;overflow:hidden}.brand__mark:after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--l-mobile) 0 20%,var(--l-interface) 20% 40%,var(--l-api) 40% 60%,var(--l-data) 60% 80%,var(--l-cloud) 80%)}.nav__links{display:none;gap:26px;font-size:.93rem}.nav__links a{text-decoration:none;color:var(--ink-2)}.nav__links a:hover,.nav__links a[aria-current=true]{color:var(--ink)}.nav__actions{display:flex;align-items:center;gap:8px}@media(max-width:859px){.brand__name{display:none}.nav__links.is-open{display:flex;flex-direction:column;gap:0;position:absolute;top:68px;left:0;right:0;background:var(--bg);border-bottom:1px solid var(--rule);padding:6px var(--gutter) 14px}.nav__links.is-open a{padding:12px 0;border-bottom:1px solid var(--rule);color:var(--ink)}}@media(min-width:860px){.nav__links{display:flex}.nav__menu{display:none}}.hero{padding-block:clamp(40px,7vw,88px) 24px}.hero__grid{display:grid;gap:44px;align-items:center}@media(min-width:1000px){.hero__grid{grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:64px}}.hero__copy{min-width:0}.who{display:flex;align-items:center;gap:14px;margin-bottom:26px}.who__photo{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:none}.who__photo--initials{font-size:1.05rem}.who__photo--initials{display:grid;place-items:center;background:var(--ink);color:var(--bg);font-weight:700}.who p{margin:0;font-size:.92rem;color:var(--ink-2);line-height:1.45}.who strong{color:var(--ink);font-size:1rem}.who__status{display:inline-flex;align-items:center;gap:7px;margin-left:4px;color:var(--ok);font-weight:500}.pulse{position:relative;width:7px;height:7px;border-radius:50%;background:currentColor}.pulse:after{content:"";position:absolute;inset:0;border-radius:50%;background:currentColor;animation:pulse 2.4s ease-out infinite}@keyframes pulse{0%{transform:scale(1);opacity:.55}70%,to{transform:scale(3);opacity:0}}.cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}.social{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:24px;font-size:.9rem;color:var(--ink-2)}.social a{text-decoration:none}.social a:hover{color:var(--ink)}.stackmap{display:grid;gap:8px;min-width:0}.stackmap__cap{color:var(--ink-2);margin:0 0 4px;text-transform:uppercase;letter-spacing:.1em;font-size:.72rem}.layer{position:relative;display:grid;gap:8px;background:var(--surface);border:1px solid var(--rule);border-radius:12px;padding:12px 14px 12px 18px;transition:transform .25s ease,border-color .25s,box-shadow .25s}@media(min-width:560px){.layer{grid-template-columns:116px minmax(0,1fr);align-items:center}}.layer:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:4px;border-radius:0 4px 4px 0;background:var(--c)}.layer:hover{transform:translate(4px);border-color:color-mix(in srgb,var(--c) 45%,var(--rule));box-shadow:var(--shadow)}.layer b{font:500 .72rem/1.2 var(--mono);text-transform:uppercase;letter-spacing:.09em;color:var(--c)}.layer ul{display:flex;flex-wrap:wrap;gap:5px}.layer li{font-size:.84rem;padding:4px 9px;border-radius:7px;background:color-mix(in srgb,var(--c) 9%,var(--bg))}.stats{display:grid;gap:1px;margin-top:clamp(44px,7vw,80px);background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}@media(min-width:720px){.stats{grid-template-columns:repeat(3,1fr)}}.stats li{background:var(--bg);padding:22px 24px;display:flex;flex-direction:column;gap:4px}.stats strong{font-size:clamp(1.8rem,3.4vw,2.4rem);font-weight:800;letter-spacing:-.03em;line-height:1.1}.stats span{color:var(--ink-2);font-size:.92rem}.section{padding-block:clamp(72px,10vw,128px)}.section--alt{background:var(--bg-2);border-block:1px solid var(--rule)}.section__head{margin-bottom:clamp(32px,5vw,56px);max-width:60ch}.section__intro{color:var(--ink-2);margin:12px 0 0;font-size:1.05rem}.about{display:grid;gap:40px}@media(min-width:960px){.about{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:72px;align-items:start}}.prose p{font-size:clamp(1.04rem,1.5vw,1.15rem);line-height:1.75;max-width:64ch}.prose p:first-child{font-size:clamp(1.2rem,2vw,1.4rem);line-height:1.55;color:var(--ink);font-weight:500;letter-spacing:-.01em}.facts{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:8px 22px 22px}@media(min-width:960px){.facts{margin-top:76px}}.facts dl div{display:grid;gap:2px;padding:14px 0;border-bottom:1px solid var(--rule)}.facts dt{font:500 .72rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-2)}.facts dd{font-size:.95rem}.facts__h{margin:18px 0 10px;color:var(--ink-2);text-transform:uppercase;letter-spacing:.1em;font-size:.72rem}.chips{display:flex;flex-wrap:wrap;gap:6px}.chips li{font:400 .78rem/1 var(--mono);padding:7px 10px;border:1px solid var(--rule);border-radius:7px;color:var(--ink-2);background:var(--surface)}.filter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:28px}.filter button{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;border:1px solid var(--rule-2);background:var(--surface);color:var(--ink-2);font-size:.88rem;cursor:pointer;transition:color .2s,background-color .2s,border-color .2s}.filter button i{width:8px;height:8px;border-radius:50%;background:var(--c)}.filter button:hover{color:var(--ink);border-color:var(--ink-2)}.filter button.is-on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.work{display:grid;gap:16px}@media(min-width:720px){.work{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1040px){.work{grid-template-columns:repeat(3,minmax(0,1fr))}}.proj{display:flex;flex-direction:column;gap:10px;background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:22px;text-decoration:none;min-width:0;transition:transform .25s ease,box-shadow .25s ease,border-color .25s}a.proj:hover,.proj--big:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--rule-2)}.proj[hidden]{display:none}.proj strong,.proj h3{font-size:1.22rem;font-weight:700;letter-spacing:-.02em;line-height:1.2}.proj h3 a{text-decoration:none}.proj h3 a:hover{text-decoration:underline}.proj p,.proj__text{color:var(--ink-2);font-size:.94rem;margin:0}.proj .dots{margin-top:auto;padding-top:6px}.proj__meta{display:flex;flex-wrap:wrap;gap:6px 12px;margin:0;font:500 .72rem var(--mono);text-transform:uppercase;letter-spacing:.09em;color:var(--ink-2)}.proj__meta span+span:before{content:"·";margin-right:12px}.proj--big{padding:0;overflow:hidden}.proj__media{display:block;aspect-ratio:16 / 10;overflow:hidden;border-bottom:1px solid var(--rule);background:var(--bg-2);max-width:100%}.proj__media img,.proj__media .cover{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}.proj--big:hover .proj__media img,.proj--big:hover .proj__media .cover{transform:scale(1.04)}.proj__body{padding:20px 22px 22px;display:flex;flex-direction:column;gap:10px;flex:1}@media(min-width:1040px){.proj--big:first-child{grid-column:span 2;grid-row:span 2}.proj--big:first-child .proj__media{aspect-ratio:auto;flex:1;min-height:300px}.proj--big:first-child .proj__body{flex:none}.proj--big:first-child h3{font-size:1.6rem}.proj--big:first-child .cover__title{font-size:clamp(3rem,5vw,4.6rem)}.proj--big:first-child .cover{justify-content:center;align-items:flex-start}}.work__empty{margin-top:20px}.dots{display:inline-flex;flex-wrap:wrap;align-items:center;gap:5px;font:400 .74rem var(--mono);color:var(--ink-2)}.dots i{width:9px;height:9px;border-radius:50%;background:var(--c);display:inline-block}.dots span{margin-left:4px}.pfacts .dots{gap:6px 14px}.dots__item{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;color:var(--ink);font:400 .92rem var(--sans)}.cover{position:relative;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;padding:clamp(18px,3vw,32px);background:radial-gradient(90% 80% at 100% 0%,color-mix(in srgb,var(--l-api) 14%,transparent),transparent 70%),linear-gradient(160deg,var(--surface),var(--bg-2))}.cover__cat{font:500 .72rem var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2)}.cover__title{font-size:clamp(1.8rem,4vw,3rem);font-weight:800;letter-spacing:-.04em;line-height:1}.cover__bars{display:flex;gap:4px}.cover__bars i{height:5px;flex:1;max-width:56px;border-radius:3px;background:var(--c)}.timeline{border-top:1px solid var(--rule)}.job{display:grid;gap:12px;padding-block:36px;border-bottom:1px solid var(--rule)}@media(min-width:860px){.job{grid-template-columns:220px minmax(0,1fr);gap:48px}}.job__side p{color:var(--ink-2);margin-bottom:10px}.job h3{font-size:clamp(1.35rem,2.4vw,1.7rem);font-weight:700;letter-spacing:-.02em}.job__co{color:var(--ink-2);margin:4px 0 14px}.job__summary{font-size:1.04rem}.ticks{display:grid;gap:9px;margin:16px 0 22px}.ticks li{position:relative;padding-left:20px;color:var(--ink-2)}.ticks li:before{content:"";position:absolute;left:0;top:.7em;width:8px;height:8px;border-radius:2px;border:1.5px solid var(--rule-2)}@media(min-width:760px){.ticks--cols{grid-template-columns:1fr 1fr;column-gap:32px}}.tag{display:inline-block;font:500 .7rem/1 var(--mono);text-transform:uppercase;letter-spacing:.1em;padding:6px 9px;border-radius:6px;background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}.services{display:grid;gap:14px}@media(min-width:720px){.services{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1040px){.services{grid-template-columns:repeat(3,minmax(0,1fr))}}.service{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:24px}.service h3{font-size:1.15rem;font-weight:700;letter-spacing:-.01em;margin-bottom:8px}.service p{color:var(--ink-2);margin:0;font-size:.95rem}.edu{display:grid;gap:56px}@media(min-width:900px){.edu{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:72px}}.edu__item{padding-block:20px;border-top:1px solid var(--rule);display:grid;gap:4px}.edu__item strong{font-size:1.2rem;letter-spacing:-.01em}.edu__item span{color:var(--ink-2)}.edu__item p{margin:8px 0 0;color:var(--ink-2)}.certs li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 16px;padding-block:14px;border-top:1px solid var(--rule)}.certs a{text-decoration:none}.certs em{font-style:normal;color:var(--ink-2)}.section--ink{background:var(--deep);color:var(--deep-fg)}.section--ink .eyebrow,.section--ink .lede{color:var(--deep-2)}.contact{display:grid;gap:48px}@media(min-width:960px){.contact{grid-template-columns:1fr 1fr;gap:72px;align-items:start}}.contact__list{margin-top:32px;border-top:1px solid var(--deep-rule)}.contact__list li{display:grid;grid-template-columns:96px minmax(0,1fr);gap:12px;padding-block:13px;border-bottom:1px solid var(--deep-rule);align-items:baseline}.contact__list .mono{color:var(--deep-2);text-transform:uppercase;letter-spacing:.08em;font-size:.7rem}.contact__list a{text-decoration:none;overflow-wrap:anywhere}.contact__list a:hover{text-decoration:underline}.section--ink .form{background:var(--surface);color:var(--ink);border-radius:var(--radius);padding:clamp(20px,3vw,32px)}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--radius);padding:clamp(20px,3vw,28px)}.form,.form__row{display:grid;gap:16px}@media(min-width:560px){.form__row{grid-template-columns:1fr 1fr}}.form label{display:grid;gap:7px;font-size:.88rem;font-weight:600}.form .err{color:var(--err);font-size:.82rem;font-weight:500}.form [aria-invalid=true]{border-color:var(--err)}.form input,.form textarea,.form select{width:100%;font:400 1rem/1.4 var(--sans);color:var(--ink);background:var(--bg);border:1px solid var(--rule-2);border-radius:10px;padding:12px 14px;transition:border-color .2s,box-shadow .2s}.form textarea{resize:vertical;min-height:140px}.form input:focus,.form textarea:focus,.form select:focus{outline:none;border-color:var(--l-interface);box-shadow:0 0 0 3px color-mix(in srgb,var(--l-interface) 20%,transparent)}.hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.alert{padding:12px 14px;border-radius:10px;font-size:.92rem;margin:0}.alert--ok{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}.alert--err{background:color-mix(in srgb,var(--err) 12%,transparent);color:var(--err)}.project__head{padding-top:clamp(32px,6vw,72px)}.back{display:inline-block;color:var(--ink-2);text-decoration:none;margin-bottom:32px}.back:hover{color:var(--ink)}.pfacts{display:grid;gap:1px;margin-top:36px;background:var(--rule);border:1px solid var(--rule);border-radius:var(--radius);overflow:hidden}@media(min-width:760px){.pfacts{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}}.pfacts div{background:var(--surface);padding:16px 18px}.pfacts dt{font:500 .7rem var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-2);margin-bottom:6px}.pfacts dd{font-size:.95rem}.project__media{margin:clamp(36px,5vw,64px) 0 0;border-radius:var(--radius);overflow:hidden;border:1px solid var(--rule);aspect-ratio:16 / 9;max-width:100%}.project__media img,.project__media .cover{width:100%;height:100%;object-fit:cover}.project__body{padding-block:clamp(48px,7vw,88px) 32px}.story{padding-block:28px;border-top:1px solid var(--rule);display:grid;gap:8px}@media(min-width:760px){.story{grid-template-columns:170px minmax(0,1fr);gap:32px}}.story .prose p:first-child{font-size:1.1rem;font-weight:400}.story .ticks{margin:0}.next{display:flex;flex-direction:column;gap:8px;margin-block:32px clamp(64px,9vw,112px);padding:clamp(24px,4vw,40px);border:1px solid var(--rule);border-radius:var(--radius);background:var(--surface);text-decoration:none;transition:box-shadow .25s,transform .25s}.next:hover{box-shadow:var(--shadow);transform:translateY(-2px)}.next .mono{color:var(--ink-2)}.next strong{font-size:clamp(1.5rem,3.2vw,2.2rem);font-weight:800;letter-spacing:-.03em;line-height:1.1}.footer{border-top:1px solid var(--rule);padding-block:26px;color:var(--ink-2);font-size:.88rem}@media(max-width:720px){.footer{padding-bottom:84px}}.footer__inner{display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between}.footer a{text-decoration:none}.footer a:hover{color:var(--ink)}.to-top{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:40;display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--ink);color:var(--bg);box-shadow:var(--shadow);opacity:0;transform:translateY(12px);pointer-events:none;transition:opacity .25s ease,transform .25s ease}.to-top.is-on{opacity:1;transform:none;pointer-events:auto}.to-top:hover{transform:translateY(-2px)}.rise{animation:rise .55s cubic-bezier(.2,.7,.2,1) both}.hero__copy .rise:nth-child(2){animation-delay:.05s}.hero__copy .rise:nth-child(3){animation-delay:.1s}.hero__copy .rise:nth-child(4){animation-delay:.15s}.hero__copy .rise:nth-child(5){animation-delay:.2s}.stackmap.rise{animation-delay:.12s}.stats .rise{animation-delay:.2s}@keyframes rise{0%{opacity:0;transform:translateY(10px)}}.js .reveal{opacity:0;transform:translateY(10px);transition:opacity .45s cubic-bezier(.2,.7,.2,1),transform .45s cubic-bezier(.2,.7,.2,1)}.js .reveal.is-in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js .reveal{opacity:1;transform:none;transition:none}.rise,.pulse:after{animation:none}*,*:before,*:after{transition-duration:0s!important}}@media print{.js .reveal{opacity:1;transform:none}.to-top,.nav{display:none}}.proj__media picture,.project__media picture{display:block;width:100%;height:100%}.proj__media picture img,.project__media picture img{width:100%;height:100%;object-fit:cover}.mock{position:relative;width:100%;height:100%;display:flex;flex-direction:column;justify-content:flex-end;gap:10px;padding:clamp(18px,3vw,32px);overflow:hidden;background:radial-gradient(80% 70% at 100% 0%,color-mix(in srgb,var(--c1) 22%,transparent),transparent 70%),radial-gradient(70% 60% at 0% 100%,color-mix(in srgb,var(--c2) 16%,transparent),transparent 70%),linear-gradient(160deg,var(--surface),var(--bg-2))}.mock__win{position:absolute;top:9%;right:-6%;width:78%;aspect-ratio:16 / 10;border-radius:12px;border:1px solid var(--rule-2);background:var(--bg);box-shadow:var(--shadow);transform:rotate(-4deg);transform-origin:top right;transition:transform .6s cubic-bezier(.2,.7,.2,1)}.proj--big:hover .mock__win{transform:rotate(-2deg) translateY(-6px)}.mock__win svg{width:100%;height:100%;display:block;border-radius:inherit}.mock__cat{position:relative;font:500 .72rem var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-2)}.mock__title{position:relative;font-size:clamp(1.8rem,4vw,3rem);font-weight:800;letter-spacing:-.04em;line-height:1;max-width:12ch}.mock__title,.mock__cat{text-shadow:0 1px 14px color-mix(in srgb,var(--bg) 60%,transparent)}.project__media .mock__win{width:62%;right:4%;top:12%}@media(min-width:1040px){.proj--big:first-child .mock__title{font-size:clamp(3rem,5vw,4.6rem)}}.contact__list button.copy{margin-left:10px;font:500 .7rem var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--deep-2);background:none;border:1px solid var(--deep-rule);border-radius:6px;padding:3px 7px;cursor:pointer}.contact__list button.copy:hover{color:var(--deep-fg);border-color:var(--deep-2)}.sent{display:grid;gap:10px;place-items:start;padding:clamp(8px,2vw,16px) 0}.sent__icon{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.sent h3{font-size:1.4rem;letter-spacing:-.02em}.sent p{color:var(--ink-2);margin:0}.btn[disabled]{opacity:.6;cursor:progress;transform:none}.project{animation:rise .45s cubic-bezier(.2,.7,.2,1) both}.story .ticks li{color:var(--ink)}.pfacts .stack{display:flex;flex-wrap:wrap;gap:4px 6px}.pfacts .stack span{font-size:.9rem}.pfacts .stack span+span:before{content:"·";margin-right:6px;color:var(--ink-2)}.notfound{min-height:60vh;display:grid;align-content:center;gap:12px}
