@import url("https://fonts.googleapis.com/css2?family=Inria+Serif:ital,wght@0,300;0,400;0,700;1,400;1,700&display=swap");@font-face{font-family:Söhne;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/soehne-buch.woff2) format("woff2")}@font-face{font-family:Söhne;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/soehne-buch-kursiv.woff2) format("woff2")}@font-face{font-family:Söhne;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/soehne-kraftig.woff2) format("woff2")}@font-face{font-family:Söhne;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/soehne-dreiviertelfett.woff2) format("woff2")}:root{--bone:#f9e7cf;--almond:#edd2b9;--fog-sage:#c3c9ca;--dusty-sage:#969790;--terracotta:#b95f30;--amber:#d68d56;--cobalt:#205493;--ink-navy:#112d4e;--umber:#7a3b22;--paper:#ffffff;--ink:#000000;--ink-muted:#959595;--tint-fade:#fdeed8;--surface-page:var(--paper);--surface-tint:var(--tint-fade);--text-primary:var(--ink);--text-muted:var(--ink-muted);--accent:var(--terracotta);--accent-strong:var(--umber);--link:var(--cobalt);--link-hover:var(--ink-navy);--hairline:rgba(0,0,0,0.15);--font-serif:"Inria Serif",ui-serif,Georgia,"Times New Roman",serif;--font-sans:"Söhne",ui-sans-serif,system-ui,-apple-system,sans-serif;--text-display:clamp(44px,8.5vw,80px);--text-title:clamp(28px,5vw,40px);--text-lead:clamp(19px,3vw,24px);--text-body:clamp(17px,2.2vw,20px);--text-caption:16px;--lh-tight:100%;--lh-body:155%;--weight-regular:400;--weight-bold:500;--space-1:8px;--space-2:16px;--space-3:20px;--space-4:24px;--space-5:40px;--space-6:70px;--fade-to-tint:linear-gradient(180deg,rgba(253,238,216,0),#fdeed8);--ease-out:cubic-bezier(0.22,1,0.36,1);--duration:240ms}*{box-sizing:border-box;padding:0}*,body{margin:0}body{background:var(--paper);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased}a{color:var(--link);text-decoration:none}a:hover{color:var(--link-hover)}.statement-viewport{position:-webkit-sticky;position:sticky;top:0;height:100svh;display:flex;align-items:center;justify-content:center;padding:0 var(--space-5);box-sizing:border-box}@media (max-width:640px){.statement-viewport{align-items:flex-start;padding-top:12svh}}.work-row{padding:var(--space-4) 0;border-bottom:1px solid var(--hairline);color:var(--text-primary)}.work-link,.work-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4)}.work-link{width:100%}.work-link,.work-link:hover{color:inherit}.work-name{display:flex;align-items:baseline;flex-wrap:wrap;gap:var(--space-2);min-width:0}.work-title{font-size:clamp(26px,4.5vw,36px);font-weight:var(--weight-bold);line-height:110%;transition:color .2s ease}.work-link .work-title{cursor:pointer}.work-soon{flex:none;padding:4px 10px;border-radius:999px;background:rgba(0,0,0,.05);font-size:12px;font-weight:var(--weight-bold);line-height:1.2;letter-spacing:.08em;text-transform:uppercase}.work-role,.work-soon{color:var(--text-muted);white-space:nowrap}.work-role{font-size:var(--text-body);font-weight:var(--weight-regular);text-align:right}li:hover .work-title{color:var(--work-hover)}.resume-link{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--text-muted);opacity:.7;transition:opacity .2s ease,color .2s ease}.resume-link svg{flex:none;transform:translateY(-.5px)}.resume-link:hover{opacity:1;color:var(--text-primary)}@media (max-width:640px){.work-link,.work-row{flex-direction:column;align-items:flex-start;gap:var(--space-1)}.work-role{white-space:normal;text-align:left}}@keyframes bounce-soft{0%{transform:translateY(0)}12%{transform:translateY(16px)}24%{transform:translateY(0)}34%{transform:translateY(8px)}44%{transform:translateY(0)}52%{transform:translateY(3px)}60%{transform:translateY(0)}to{transform:translateY(0)}}.bounce-soft{animation:bounce-soft 2.6s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.bounce-soft{animation:none}}.case-study,.site-header{--surface-page:#ffffff;--surface-tint:#efeff1;--text-primary:#17171a;--hairline:rgba(0,0,0,0.1);--text-muted:color-mix(in srgb,var(--text-primary) 60%,transparent);--accent:#a6216f}.cs-character{--accent:#4b3fd1}.case-study{--vw:calc(100vw - var(--sbw, 0px));padding-top:var(--site-header-h,76px);background:var(--surface-page);color:var(--text-primary);overflow-x:clip}.case-study a,.site-header a{color:inherit;text-decoration:none}.case-study a:hover,.site-header a:hover{color:inherit}.site-header{position:fixed;top:0;left:0;right:0;z-index:50;padding:20px 0;background:color-mix(in srgb,var(--surface-page) 88%,transparent);backdrop-filter:saturate(120%) blur(12px);-webkit-backdrop-filter:saturate(120%) blur(12px);border-bottom:1px solid transparent;transition:transform .34s var(--ease-out),border-color .2s ease}.site-header[data-hidden]{transform:translateY(-100%)}.site-header[data-scrolled]{border-bottom-color:var(--hairline)}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.navlink{display:inline-flex;align-items:center;gap:var(--space-1);font-weight:500;font-size:15px;letter-spacing:.01em;line-height:1.2;color:var(--text-muted);transition:color .18s ease}.site-header .navlink:hover{color:var(--accent)}.projnav{gap:6px}.chip,.projnav{display:flex;align-items:center}.chip{gap:3px;padding:8px 12px;border-radius:10px;background:var(--surface-tint);font-weight:500;letter-spacing:.01em;color:var(--text-muted)}.chip,.chip .num{font-size:15px;line-height:1.2}.chip .num{letter-spacing:0;opacity:.75}.chip.only-num{padding:8px 11px;gap:0;transition:background .2s ease,color .2s ease}.chip.only-num .num{opacity:1}.chip.active{background:transparent;color:var(--text-primary)}.navlink .chip.only-num{margin-left:2px}a.chip.only-num:focus-visible,a.chip.only-num:hover{background:var(--surface-tint);color:var(--text-primary)}.chip-label{display:grid;grid-template-columns:0fr;opacity:0;transition:grid-template-columns .3s var(--ease-out),opacity .18s ease}.chip-label>span{overflow:hidden;white-space:nowrap;min-width:0}a.chip.only-num:focus-visible .chip-label,a.chip.only-num:hover .chip-label{grid-template-columns:1fr;opacity:1}.chip.is-pending{opacity:.45;cursor:default}.case-study .wrap,.site-header .wrap{max-width:1000px;margin:0 auto;padding:0 40px}.case-study .cs-hero{padding:80px 40px 56px;display:flex;flex-direction:column;gap:var(--space-4)}.case-study .cs-section{padding:80px 40px;gap:4px}.case-study .cs-section,.cs-prose{display:flex;flex-direction:column}.cs-prose{gap:20px}.case-study .cs-blocks{padding:80px 40px 0;gap:88px}.case-study .cs-blocks,.cs-block{display:flex;flex-direction:column}.cs-block{gap:80px}.cs-block-head{display:flex;flex-direction:column;gap:4px}.cs-phones{display:flex;justify-content:center;align-items:flex-start;gap:28px;flex-wrap:nowrap}.cs-phones .slot-frame,.cs-phones .slot-frame.media-bg{flex:0 1 300px;min-width:0;width:auto;padding:9px;border:0;border-radius:48px;background:#101216;box-shadow:inset 0 2px 0 rgba(255,255,255,.14),0 26px 60px -26px rgba(16,18,22,.5)}.cs-phones .slot-frame>img,.cs-phones .slot-frame>video{border-radius:39px}.cs-phones .slot-frame.media-bg:before{display:none}.cs-phones.is-framed .slot-frame,.cs-phones.is-framed .slot-frame.media-bg,.cs-window.is-framed .slot-frame,.cs-window.is-framed .slot-frame.media-bg{padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible}.cs-phones.is-framed .slot-frame>img,.cs-phones.is-framed .slot-frame>video,.cs-window.is-framed .slot-frame>img,.cs-window.is-framed .slot-frame>video{border-radius:0}@media (max-width:760px){.cs-phones{flex-wrap:wrap;gap:36px}.cs-phones .slot-frame,.cs-phones .slot-frame.media-bg{flex:0 0 auto;width:min(300px,76vw)}}.cs-window{display:flex;justify-content:center}.cs-window .slot-frame{width:100%;border-radius:22px;box-shadow:0 30px 70px -30px rgba(16,18,22,.34)}.cs-window.is-narrow .slot-frame{width:min(420px,84vw)}.cs-dyeary .cs-blocks{padding-bottom:104px}.cs-duo{align-items:center;gap:44px;flex-wrap:wrap}.cs-duo,.cs-plate{display:flex;justify-content:center}.cs-plate .slot-frame,.cs-plate .slot-frame.media-bg{width:min(425px,88vw);background:transparent;border:0;border-radius:0;box-shadow:none;overflow:visible}.cs-plate .slot-frame.media-bg:before{display:none}.cs-stage{display:flex;justify-content:center;padding:clamp(30px,6vw,104px) clamp(30px,6vw,104px) 0;background-image:url(/dyeary/desktop-bg.webp);background-size:cover;background-position:50%}.cs-stage>.slot-frame,.cs-stage>.slot-frame.media-bg{width:min(1020px,100%);border-radius:12px 12px 0 0;border:0;box-shadow:0 44px 90px -34px rgba(12,10,20,.62)}.case-study .title{margin:0;font-weight:500;font-size:clamp(44px,8.5vw,96px);line-height:1;letter-spacing:-.03em}.case-study .role{font-weight:500;font-size:16px;letter-spacing:.01em;line-height:1.4}.case-study .role .sep{margin:0 10px}.case-study .role .muted,.case-study .role .sep{color:var(--text-muted)}.case-study .lead{font-size:22px;line-height:1.4;letter-spacing:-.01em;color:var(--text-muted)}.case-study .body,.case-study .lead{margin:0;font-weight:400;max-width:640px}.case-study .body{font-size:18px;line-height:1.6;color:var(--text-primary);text-wrap:pretty}.case-study .body em{font-style:italic;font-weight:400}.case-study .proj-title{margin:0;font-weight:500;font-size:clamp(22px,3vw,28px);line-height:1.2;letter-spacing:-.02em}.case-study .caption{font-weight:400;font-size:13px;letter-spacing:.02em;line-height:1.4;color:var(--text-muted)}.case-study .divider{border:0;border-top:1px solid var(--hairline);margin:0}.bleed{width:100%;padding:0}.slot-frame{position:relative;width:100%;border-radius:14px;overflow:hidden;background-color:var(--surface-tint);border:1px solid var(--hairline)}.bleed .slot-frame{border-radius:0;border-left:0;border-right:0}.slot-frame.media-bg{background:var(--slot-ground,#f9f9f9)}.slot-frame.media-bg:before{content:"";position:absolute;inset:0;background:url(/reducto/noise-tile.png) 0 0/100px 100px repeat;opacity:.08;pointer-events:none}.slot-frame>img,.slot-frame>video{position:relative;z-index:1}.slot-frame.bleed-frame{width:var(--vw);margin-left:calc(50% - var(--vw) / 2);border-radius:0;border-left:0;border-right:0}.slot-placeholder{position:absolute;inset:0;z-index:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:14px;letter-spacing:.02em}.proto-link{position:relative;display:flex;flex-direction:column;gap:80px;cursor:pointer}.proto-veil{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;background:rgba(23,23,23,0);opacity:0;transition:opacity .26s ease,background .26s ease}.proto-link:focus-visible .proto-veil,.proto-link:hover .proto-veil{opacity:1;background:rgba(23,23,23,.38)}.proto-cta{display:flex;align-items:center;gap:10px;padding:15px 26px;border-radius:999px;background:#fff;color:#17171a;font-weight:500;font-size:16px;letter-spacing:.01em;transform:translateY(10px);transition:transform .3s var(--ease-out);box-shadow:0 10px 30px -10px rgba(0,0,0,.35)}.proto-link:focus-visible .proto-cta,.proto-link:hover .proto-cta{transform:translateY(0)}.gate{--surface-page:#ffffff;--surface-tint:#efeff1;--text-primary:#17171a;--text-muted:color-mix(in srgb,var(--text-primary) 60%,transparent);--hairline:rgba(0,0,0,0.1);--accent:#a6216f;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:var(--space-5) var(--space-4);background:var(--surface-page);color:var(--text-primary)}.gate-card{width:100%;max-width:380px;gap:var(--space-4)}.gate-card,.gate-head{display:flex;flex-direction:column}.gate-head{gap:var(--space-1)}.gate-title{margin:0;font-weight:500;font-size:clamp(28px,5vw,34px);line-height:1.15;letter-spacing:-.02em}.gate-copy{margin:0;font-weight:400;font-size:17px;line-height:1.5;color:var(--text-muted)}.gate-field{display:flex;flex-direction:column;gap:var(--space-1)}.gate-label{font-size:13px;font-weight:500;letter-spacing:.02em;color:var(--text-muted)}.gate-input{width:100%;padding:14px 16px;border:1px solid var(--hairline);border-radius:12px;background:var(--surface-page);font-family:inherit;font-size:16px;color:var(--text-primary);transition:border-color .18s ease,box-shadow .18s ease}.gate-input:focus{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.gate-input:focus,.gate-input[aria-invalid=true]{border-color:var(--accent)}.gate-error{margin:0;font-size:13px;line-height:1.4;color:var(--accent)}.gate-submit{padding:14px 20px;border:0;border-radius:999px;background:var(--text-primary);color:#fff;font-family:inherit;font-size:16px;font-weight:500;letter-spacing:.01em;cursor:pointer;transition:opacity .18s ease}.gate-submit:hover{opacity:.85}.gate-ask{margin:0;text-align:center;font-size:14px;line-height:1.5;color:var(--text-muted)}.gate-ask-link{color:var(--accent);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:opacity .18s ease}.gate-ask-link:hover{color:var(--accent);opacity:.75}.gate-back{align-self:center;font-size:14px;color:var(--text-muted);transition:color .18s ease}.gate-back:hover,.proto-shell{color:var(--text-primary)}.proto-shell{--surface-page:#ffffff;--text-primary:#17171a;--text-muted:color-mix(in srgb,var(--text-primary) 60%,transparent);--hairline:rgba(0,0,0,0.1);--accent:#a6216f;height:100svh;display:flex;flex-direction:column;background:var(--surface-page)}.proto-bar{flex:0 0 auto;justify-content:space-between;gap:var(--space-4);padding:18px 28px;border-bottom:1px solid var(--hairline)}.proto-back,.proto-bar{display:flex;align-items:center}.proto-back{gap:9px;font-size:15px;font-weight:500;letter-spacing:.01em;color:inherit;transition:color .18s ease}.proto-back:hover{color:var(--accent)}.proto-back svg{flex:none}.proto-meta{display:flex;align-items:baseline;gap:10px;min-width:0}.proto-name{font-size:15px;font-weight:500;letter-spacing:-.01em;white-space:nowrap}.proto-hint{font-size:13px;letter-spacing:.02em;color:var(--text-muted);white-space:nowrap}.proto-stage{flex:1 1;min-height:0;width:100%;border:0;display:block}@media (max-width:720px){.proto-bar{padding:14px 18px}.proto-hint{display:none}}.cs-pager{border-top:1px solid var(--hairline)}.case-study .cs-pager-inner{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);padding-top:48px;padding-bottom:64px}.cs-pager-end{display:flex;flex-direction:column;gap:var(--space-1)}.cs-pager-prev{align-items:flex-start}.cs-pager-next{align-items:flex-end;text-align:right}.cs-pager-title{font-weight:500;font-size:clamp(22px,3vw,28px);letter-spacing:-.02em;line-height:1.2;color:var(--text-primary)}.case-study a.cs-pager-end:hover .cs-pager-title{color:var(--accent)}.cs-pager-end.is-pending{opacity:.4;cursor:default}.reveal>*{opacity:0;transform:translateY(36px);transition:opacity .72s ease,transform .72s var(--ease-out)}.reveal.in>*{opacity:1;transform:translateY(0)}.reveal.in>:first-child{transition-delay:0s}.reveal.in>:nth-child(2){transition-delay:.09s}.reveal.in>:nth-child(3){transition-delay:.18s}.reveal.in>:nth-child(4){transition-delay:.27s}.reveal.in>:nth-child(5){transition-delay:.36s}@media (max-width:640px){.case-study .cs-blocks,.case-study .cs-hero,.case-study .cs-section,.case-study .wrap,.site-header .wrap{padding-left:var(--space-4);padding-right:var(--space-4)}.case-study .cs-blocks{gap:64px}.cs-block{gap:40px}}@media (prefers-reduced-motion:reduce){.chip-label,.chip.only-num,.proto-cta,.proto-veil,.site-header{transition:none}.proto-cta{transform:none}.reveal>*{opacity:1!important;transform:none!important;transition:none!important}}.cs-links{display:flex;flex-wrap:wrap;gap:14px}.cs-link{display:inline-flex;align-items:center;gap:10px;padding:14px 22px 14px 20px;background:var(--tint,transparent);border:1px solid var(--tint,var(--hairline));border-radius:999px;font-weight:500;font-size:15.5px;letter-spacing:.01em;color:var(--text-primary);transition:border-color .18s ease,background .18s ease,transform .18s var(--ease-out)}.case-study a.cs-link:hover{filter:saturate(1.08) brightness(.95);transform:translateY(-2px);box-shadow:0 12px 26px -12px color-mix(in srgb,var(--tint) 70%,transparent)}.cs-link svg{flex:none;opacity:.65;transition:opacity .18s ease,transform .18s var(--ease-out)}.case-study a.cs-link:hover svg{opacity:1;transform:translate(2px,-2px)}