@font-face{font-family:Anton;src:url('/files/bangemann/fonts/anton.ttf');font-display:swap}@font-face{font-family:Space;src:url('/files/bangemann/fonts/space-regular.ttf');font-display:swap}@font-face{font-family:Space;src:url('/files/bangemann/fonts/space-medium.ttf');font-weight:500;font-display:swap}@font-face{font-family:Space;src:url('/files/bangemann/fonts/space-bold.ttf');font-weight:700;font-display:swap}@font-face{font-family:Mono;src:url('/files/bangemann/fonts/mono.ttf');font-display:swap}
:root{--portfolio-red:#e45335;--portfolio-paper:#f3f1ea;--portfolio-ink:#1c1c1a;--portfolio-muted:#66665e;--portfolio-line:#c9c7be;--portfolio-ease:cubic-bezier(.22,1,.36,1)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:var(--portfolio-paper);color:var(--portfolio-ink);font-family:Space,Arial,sans-serif;-webkit-font-smoothing:antialiased}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid currentColor;outline-offset:7px}.wrap{max-width:1440px;padding-inline:48px;margin:auto}.mono{font:9px/1.7 Mono,monospace;letter-spacing:.015em}.section-space{padding-block:96px}.skip{position:absolute;top:-100px;left:20px;z-index:20;background:var(--portfolio-paper);padding:12px}.skip:focus{top:20px}.red{background:var(--portfolio-red)}.wordmark{font:14px/1.2 Mono,monospace;letter-spacing:-.025em}.nav{height:96px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #b7402b}.nav nav{display:flex;gap:36px;font-size:12px}.nav nav a{position:relative}.nav nav a:after{content:'';position:absolute;left:0;right:0;bottom:-5px;height:1px;background:var(--portfolio-ink);transform:scaleX(0);transform-origin:left;transition:transform .3s var(--portfolio-ease)}.nav nav a:hover:after{transform:scaleX(1)}.menu{display:none}.mobile-nav{padding-block:20px;border-bottom:1px solid #b7402b}.mobile-nav a{display:block;padding:12px 0;font-size:24px}
.hero-meta{display:flex;justify-content:space-between;align-items:start;padding-top:25px}.hero-meta p{font-size:12px;line-height:1.5}.hero-meta>.mono{padding-top:2px}.hero-stage{position:relative;isolation:isolate;min-height:clamp(610px,46vw,720px);margin-top:18px}.hero h1{position:relative;z-index:2;pointer-events:none;font-family:Anton,Impact,sans-serif;line-height:.98;letter-spacing:-.02em}.hero h1 span{display:block;white-space:nowrap}.hero h1 span:first-child{font-size:clamp(150px,16.8vw,242px)}.hero h1 span:last-child{font-size:clamp(110px,12.7vw,183px);color:var(--portfolio-paper);margin-top:4px}.portrait{position:absolute;right:-10px;top:-34px;width:490px;height:620px;z-index:1;overflow:hidden;transition:transform .8s var(--portfolio-ease)}.portrait img{width:100%;height:auto;display:block}.portrait figcaption{position:absolute;bottom:9px;right:0;background:var(--portfolio-paper);padding:5px 9px;font-size:7px}.hero-intro{position:absolute;bottom:42px;left:0;z-index:3;width:330px}.hero-intro p{font-size:25px;line-height:1.32;letter-spacing:-.035em}.line-link{display:inline-flex;align-items:center;justify-content:space-between;gap:70px;border-bottom:1px solid currentColor;padding-block:12px;font-size:12px;margin-top:17px}.line-link span{font-size:23px;line-height:1;transition:transform .4s var(--portfolio-ease)}.line-link:hover span{transform:translate(4px,-4px)}.hero-foot{display:flex;justify-content:space-between;gap:30px;padding-block:23px 27px;border-top:1px solid #b7402b}
.section-kicker{margin-bottom:45px}h2{font-size:clamp(48px,5.3vw,76px);font-weight:500;letter-spacing:-.06em;line-height:1.05}.about-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:110px}.about h2{max-width:650px}.about-copy{padding-top:6px;max-width:430px}.about-copy p{font-size:17px;line-height:1.65;letter-spacing:-.025em}.about-copy p+p{margin-top:22px;color:var(--portfolio-muted)}.about-facts{display:flex;flex-direction:column;gap:12px;margin-top:37px;padding-top:21px;border-top:1px solid var(--portfolio-line);font-size:8px}
.services-section{padding-top:25px}.services-grid{display:grid;grid-template-columns:1fr 1.35fr;gap:95px}.services-intro{position:sticky;top:35px;align-self:start}.services-intro .section-kicker{margin-bottom:25px}.services h3{font-size:clamp(25px,2.7vw,39px);font-weight:500;letter-spacing:-.045em;transition:transform .4s var(--portfolio-ease)}.services{border-top:1px solid var(--portfolio-ink)}.services details{padding-block:28px;border-bottom:1px solid var(--portfolio-line)}.services summary{display:grid;grid-template-columns:1fr 30px;gap:20px;align-items:center;cursor:pointer;list-style:none}.services summary::-webkit-details-marker{display:none}.toggle{font-size:29px;font-weight:400;line-height:1;text-align:right;transition:transform .4s var(--portfolio-ease)}.services details[open] .toggle{transform:rotate(45deg)}.services summary:is(:hover,:focus-visible) h3{transform:translateX(5px)}.service-body{padding-top:19px}.service-body p{font-size:14px;line-height:1.65;color:var(--portfolio-muted);max-width:450px}.service-body .mono{display:block;margin-top:20px;font-size:7px;color:var(--portfolio-muted)}
.notes{background:var(--portfolio-ink);color:var(--portfolio-paper)}.notes-heading{display:grid;grid-template-columns:1.35fr 1fr;align-items:end;gap:110px;margin-bottom:60px}.notes .section-kicker{color:#b5b6aa;margin-bottom:30px}.notes h2{font-family:Anton,Impact,sans-serif;font-weight:400;letter-spacing:-.025em;font-size:clamp(62px,6.4vw,92px);line-height:1.03}.notes-heading>p{font-size:14px;line-height:1.7;color:#b5b6aa;padding-bottom:4px}.notes .line-link{color:var(--portfolio-paper);margin-top:18px;gap:110px}.posts{border-top:1px solid #616258}.post{display:grid;grid-template-columns:160px 1fr 70px;gap:28px;align-items:center;padding-block:35px;border-bottom:1px solid #45463f}.chapter{font-size:8px;color:#b5b6aa}.post h3{font-size:clamp(29px,3.2vw,46px);font-weight:500;letter-spacing:-.045em;line-height:1.2;transition:transform .45s var(--portfolio-ease)}.post p{font-size:13px;line-height:1.6;color:#b5b6aa;margin-top:14px}.post-arrow{font-size:43px;text-align:right;transition:transform .45s var(--portfolio-ease),color .3s}.post:is(:hover,:focus-visible) h3{transform:translateX(7px)}.post:is(:hover,:focus-visible) .post-arrow{transform:translate(4px,-4px);color:var(--portfolio-red)}
.contact-top{display:flex;justify-content:space-between;align-items:start;gap:50px}.contact-top p:last-child{font-size:14px;line-height:1.65;margin-bottom:45px;max-width:350px;width:350px}.contact-link{display:flex;justify-content:space-between;align-items:center;gap:40px;border-bottom:2px solid var(--portfolio-ink);padding-bottom:35px}.contact-link h2{font-family:Anton,Impact,sans-serif;font-weight:400;letter-spacing:-.025em;font-size:clamp(90px,14.7vw,212px);line-height:1;transition:color .4s}.contact-link>span{font-size:clamp(60px,10vw,144px);line-height:1;font-weight:400;transition:transform .6s var(--portfolio-ease)}.contact-link:is(:hover,:focus-visible) h2{color:var(--portfolio-red)}.contact-link:is(:hover,:focus-visible)>span{transform:rotate(45deg)}footer{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:37px}.socials{display:flex;justify-content:end;gap:30px;font-size:12px}.legal{grid-column:1/-1;display:flex;justify-content:space-between;gap:30px;font-size:8px;color:var(--portfolio-muted);margin-top:14px}.legal>div{display:flex;gap:24px}.contact .section-space{padding-bottom:32px}
[data-motion=on] .hero h1 span{animation:name-in 1s var(--portfolio-ease) both}[data-motion=on] .hero h1 span:nth-child(2){animation-delay:.12s}[data-motion=on] .portrait img{animation:photo-in 1.1s .12s var(--portfolio-ease) both}[data-motion=on] .hero-intro{animation:fade-up .8s .3s var(--portfolio-ease) both}[data-motion=on] [data-reveal]{opacity:0;transform:translateY(20px);transition:opacity .7s var(--delay,0ms),transform .85s var(--delay,0ms) var(--portfolio-ease)}[data-motion=on] [data-reveal].is-in{opacity:1;transform:translateY(0)}@media(hover:hover) and (pointer:fine){[data-motion=on] .portrait{transform:translate(var(--photo-x,0px),var(--photo-y,0px))}}
@keyframes name-in{from{clip-path:inset(100% 0 0);transform:translateY(25px)}to{clip-path:inset(0);transform:translateY(0)}}@keyframes photo-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-up{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1600px){.hero-stage{min-height:720px}.portrait{width:570px;height:720px}.hero-intro{bottom:70px}}
@media(max-width:1100px) and (min-width:701px){.wrap{padding-inline:32px}.portrait{width:410px;height:580px;top:-5px;right:-15px}.hero-stage{min-height:590px}.hero h1 span:first-child{font-size:16.7vw}.hero h1 span:last-child{font-size:12.5vw}.hero-intro{bottom:36px}.hero-intro p{font-size:22px}.about-grid,.notes-heading{gap:65px}.services-grid{gap:60px}.post{grid-template-columns:100px 1fr 50px;gap:25px}.services h3{font-size:28px}.legal{font-size:7px}}
@media(max-width:700px){.wrap{padding-inline:22px}.section-space{padding-block:65px}.nav{height:80px}.wordmark{font-size:12px}.nav nav{display:none}.menu{display:flex;flex-direction:column;gap:6px;border:0;background:none;padding:12px 0 12px 16px}.menu span{height:1px;width:24px;background:var(--portfolio-ink);transition:transform .25s}.menu[aria-expanded=true] span:first-child{transform:translateY(3.5px) rotate(45deg)}.menu[aria-expanded=true] span:last-child{transform:translateY(-3.5px) rotate(-45deg)}.hero-meta{padding-top:20px}.hero-meta p{font-size:10px}.hero-meta>.mono{font-size:7px}.hero-stage{margin-top:25px;min-height:760px}.hero h1{z-index:3}.hero h1 span:first-child{font-size:23.5vw;letter-spacing:-.02em}.hero h1 span:last-child{font-size:12.7vw;letter-spacing:0;margin-top:9px;color:var(--portfolio-ink)}.portrait{width:335px;height:443px;top:164px;right:calc(50% - 167.5px)}.portrait figcaption{font-size:6px;bottom:0}.hero-intro{bottom:27px;width:100%}.hero-intro p{font-size:22px;line-height:1.25}.hero-intro .line-link{width:100%;margin-top:10px;padding-block:12px;font-size:12px}.hero-foot{padding-block:19px 23px;gap:25px}.hero-foot .mono{font-size:6px}.section-kicker{font-size:7px;margin-bottom:30px}h2{font-size:44px;line-height:1.04}.about-grid{grid-template-columns:1fr;gap:32px}.about-copy{padding:0;max-width:none}.about-copy p{font-size:15px;line-height:1.65}.about-facts{font-size:7px;gap:10px;margin-top:28px}.services-section{padding-top:0}.services-grid{grid-template-columns:1fr;gap:32px}.services-intro{position:static}.services-intro .section-kicker{margin-bottom:25px}.services-intro h2{font-size:43px}.services details{padding-block:25px}.services h3{font-size:26px}.toggle{font-size:25px}.service-body p{font-size:13px}.service-body .mono{font-size:6px}.notes-heading{grid-template-columns:1fr;gap:26px;margin-bottom:38px}.notes .section-kicker{margin-bottom:25px}.notes h2{font-size:64px}.notes-heading>p{font-size:13px}.notes-heading br{display:none}.notes .line-link{display:flex;width:100%;margin-top:15px}.post{grid-template-columns:1fr 28px;gap:12px;padding-block:27px}.chapter{grid-column:1/-1;font-size:7px}.post h3{font-size:26px;line-height:1.15}.post p{font-size:12px;line-height:1.6;margin-top:12px;max-width:260px}.post-arrow{font-size:28px;align-self:start;margin-top:0}.contact-top{gap:30px}.contact-top .section-kicker{margin-bottom:35px}.contact-top p:last-child{font-size:11px;width:auto;max-width:150px;text-align:right;margin-bottom:35px}.contact-link{gap:15px;padding-bottom:25px;border-bottom-width:1px}.contact-link h2{font-size:18.2vw;white-space:nowrap}.contact-link>span{font-size:12vw}.contact footer{grid-template-columns:1fr;gap:26px;margin-top:27px}.socials{justify-content:start;gap:25px;font-size:11px}.legal{grid-column:auto;flex-direction:column;gap:16px;margin-top:6px;font-size:6px}.legal>div{gap:25px}.contact .section-space{padding-bottom:28px}}
@media(max-width:700px){.notes-heading h2 br{display:revert}.hero-stage{min-height:800px}}
html[data-motion=off]{scroll-behavior:auto}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}[data-reveal]{opacity:1!important;transform:none!important}.post:is(:hover,:focus-visible) h3,.services summary:is(:hover,:focus-visible) h3{transform:none}}


/* Personal narrative and interaction layer. */
:root{--portfolio-ghost:#bab7ac;--portfolio-dark-ghost:#4c4b45}.paper{position:relative;background:var(--portfolio-paper)}.paper:before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 150'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E")}.paper>.wrap{position:relative}.wordmark{display:flex;align-items:center;gap:15px}.logo{width:43px;height:30px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:square;overflow:visible}.logo path{stroke-dasharray:1;stroke-dashoffset:0}.wordmark:hover .logo-m{transform:translateY(-2px)}.wordmark:hover .logo-b{transform:translateY(2px)}.logo path{transition:transform .45s var(--portfolio-ease)}[data-motion=on] .logo path{animation:logo-draw 1.3s .2s var(--portfolio-ease) both}.hero{position:relative}.hero:after{content:'';position:absolute;left:0;right:0;bottom:0;height:4px;background:var(--portfolio-ink);transform:scaleX(var(--edge,0));transform-origin:left;pointer-events:none}.hello{padding-block:125px}.hello-copy{font-size:clamp(38px,5.4vw,78px);line-height:1.13;font-weight:500;letter-spacing:-.055em;max-width:1220px}.fill-copy .word{position:relative;display:inline-block}.fill-copy .word:after{content:attr(data-word);position:absolute;left:0;top:0;white-space:nowrap;overflow:hidden;width:var(--fill,100%);color:var(--portfolio-ink);pointer-events:none}.fill-copy .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.hello-meta{display:flex;justify-content:space-between;gap:40px;padding-top:32px;margin-top:44px;border-top:1px solid var(--portfolio-line);font-size:8px}.services-section{background:var(--portfolio-ink);color:var(--portfolio-paper);padding-top:100px;position:relative;isolation:isolate;clip-path:inset(0)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:60px;margin-bottom:65px}.section-heading .section-kicker{margin-bottom:25px}.section-heading>p{font-size:14px;line-height:1.65;max-width:430px}.services-section .section-heading>p{color:#b5b6aa}.service-cards{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid #505148}.service-card{border-right:1px solid #505148;min-width:0;align-self:start}.service-card:last-child{border-right:0}.service-card summary{padding:20px 21px 25px;cursor:pointer;list-style:none}.service-card summary::-webkit-details-marker{display:none}.service-card h3{font-size:25px;font-weight:500;letter-spacing:-.045em;margin:26px 0 16px}.service-card summary>p{font-size:13px;line-height:1.65;color:#b5b6aa;min-height:66px;max-width:250px}.more{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-top:25px}.more b{font-size:27px;font-weight:400;transition:transform .5s var(--portfolio-ease),color .3s}.open-label{display:none}.service-card[open] .open-label{display:inline}.service-card[open] .closed-label{display:none}.service-card[open] .more b{transform:rotate(90deg)}.service-card:is(:hover,:focus-within) .more b{color:var(--portfolio-red);transform:translate(4px,-4px)}.service-card .service-body{padding:0 21px 25px}.service-card .service-body p{color:#b5b6aa;font-size:12px;line-height:1.6}.service-card .service-body .mono{color:#b5b6aa;font-size:6px;line-height:1.9;white-space:normal}.teaser{height:170px;border-bottom:1px solid #505148;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;padding-bottom:20px;user-select:none}.mini-browser{width:86%;border:1px solid #838479;transform:rotate(-3deg);transition:transform .7s var(--portfolio-ease)}.mini-bar{height:21px;display:flex;align-items:center;gap:5px;padding-left:8px;border-bottom:1px solid #838479}.mini-bar i{width:3px;height:3px;border-radius:50%;background:#838479}.mini-code{display:flex;flex-direction:column;padding:12px 14px;gap:4px}.mini-code span{font:8px/1.2 Mono,monospace;color:#838479}.mini-code b{font:55px/.95 Anton,sans-serif;letter-spacing:-.02em;color:var(--portfolio-red);transition:letter-spacing .6s var(--portfolio-ease)}.service-card:hover .mini-browser{transform:rotate(2deg)}.service-card:hover .mini-code b{letter-spacing:.05em}.type-sample{font:100px/1 Space,sans-serif;letter-spacing:-.07em;position:relative;margin-top:-12px;transition:font-weight .3s,transform .6s var(--portfolio-ease)}.type-sample span{position:absolute;inset:5px -9px -5px;border:1px dashed #838479;transition:inset .6s var(--portfolio-ease)}.swatches{position:absolute;bottom:15px;display:flex;gap:7px}.swatches i{height:12px;width:12px;background:var(--portfolio-paper)}.swatches i:nth-child(2){background:var(--portfolio-red)}.swatches i:nth-child(3){background:#838479}.service-card:hover .type-sample{transform:scale(.9)}.service-card:hover .type-sample span{inset:-5px -20px -8px}.journey-teaser svg{width:100%;height:100%;fill:var(--portfolio-ink);stroke:#838479;stroke-width:1.5}.journey-line{stroke:var(--portfolio-red);stroke-width:2;stroke-dasharray:1;stroke-dashoffset:.6;transition:stroke-dashoffset 1s var(--portfolio-ease)}.service-card:is(:hover,:focus-within) .journey-line{stroke-dashoffset:0}.version-teaser{gap:10px;font:52px/1 Space,sans-serif;letter-spacing:-.06em}.v-one{color:#838479;transform:rotate(-8deg);transition:transform .6s var(--portfolio-ease)}.v-arrow{font-size:32px;color:var(--portfolio-red);transition:transform .6s var(--portfolio-ease)}.v-two{transform:rotate(7deg);transition:transform .6s var(--portfolio-ease)}.version-teaser small{position:absolute;bottom:22px;font:6px/1.5 Mono,monospace;letter-spacing:0;color:#838479}.service-card:hover .v-one,.service-card:hover .v-two{transform:rotate(0)}.service-card:hover .v-arrow{transform:translateX(4px)}
.skills{margin-top:105px}.skill-window{overflow:hidden}.skill-row{display:flex;align-items:center;justify-content:space-between;gap:30px;padding-block:24px;border-top:1px solid #505148;font-size:clamp(35px,4.3vw,62px);line-height:1.1;letter-spacing:-.045em}.skill-row b{font-size:35px;font-weight:400}.brands{justify-content:start;gap:60px;font-size:46px;padding-block:35px;flex-wrap:wrap}.wordpress{font-family:Georgia,serif;font-size:40px;letter-spacing:-.06em}.brands small{margin-left:auto;font-size:7px;max-width:210px;color:#b5b6aa;letter-spacing:0}
.story-heading{border-bottom:1px solid var(--portfolio-line)}.story-heading h2{font:clamp(65px,7.5vw,108px)/1 Anton,sans-serif;letter-spacing:-.025em}.draft-note{display:inline-block;border-left:2px solid var(--portfolio-red);padding-left:12px;color:var(--portfolio-muted);font-size:7px;margin-top:30px}.story-chapter{display:grid;grid-template-columns:.65fr 1.5fr;gap:130px;align-items:start;min-height:86vh;padding-block:100px;border-bottom:1px solid var(--portfolio-line)}.chapter-label{position:sticky;top:130px}.chapter-label>.mono{font-size:8px;color:var(--portfolio-muted)}.chapter-label h3{font-size:31px;line-height:1.12;letter-spacing:-.045em;margin-top:20px;font-weight:500}.story-chapter .fill-copy{font-size:clamp(35px,4.15vw,60px);font-weight:500;letter-spacing:-.05em;line-height:1.14}.chapter-foot{font-size:7px;color:var(--portfolio-muted);margin-top:38px;max-width:500px}.life-heading{display:flex;justify-content:space-between;align-items:end;gap:60px;padding-top:90px;margin-bottom:48px}.life-heading h3{font-size:64px;font-weight:500;letter-spacing:-.055em;line-height:1.05}.life-heading p{font-size:14px;line-height:1.7}.life-heading .mono{display:block;font-size:7px;color:var(--portfolio-muted);margin-top:22px}.life-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;align-items:start}.life-grid figure:nth-child(2){padding-top:65px}.life-grid figure:nth-child(3){padding-top:15px}.life-image{display:block;width:100%;aspect-ratio:4/5;background-image:url('assets/life-samples.png');background-size:300% 100%;border:0;padding:0;position:relative;overflow:hidden;cursor:pointer}.life-one{background-position:0 0}.life-two{background-position:50% 0}.life-three{background-position:100% 0}.photo-arrow{position:absolute;right:0;bottom:0;background:var(--portfolio-paper);width:51px;height:51px;display:grid;place-content:center;font-size:26px;transition:background .3s,color .3s,transform .4s var(--portfolio-ease)}.life-image:hover .photo-arrow{background:var(--portfolio-red);color:var(--portfolio-paper)}.life-grid figcaption{display:flex;justify-content:space-between;gap:15px;font-size:12px;line-height:1.4;padding-top:15px}.life-grid figcaption .mono{font-size:6px;color:var(--portfolio-muted);white-space:nowrap}.client-slots{padding-block:75px 85px;margin-top:40px}.client-slots>.mono{font-size:7px;color:var(--portfolio-muted)}.client-slots>div{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:32px;border-block:1px solid var(--portfolio-line);padding-block:27px}.client-slots>div>span{font-size:27px;letter-spacing:-.04em;color:#8c8d83}
.work{background:var(--portfolio-ink);color:var(--portfolio-paper);position:relative}.work .section-heading>p{color:#b5b6aa}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:35px}.project{min-width:0}.project-open{display:block;border:0;width:100%;padding:0;position:relative;aspect-ratio:1.3;background:var(--portfolio-paper);overflow:hidden;cursor:pointer}.project-open img{width:100%;height:100%;object-fit:cover;object-position:35% 50%;display:block}.project-arrow{position:absolute;right:0;bottom:0;width:85px;height:85px;display:grid;place-content:center;background:var(--portfolio-paper);color:var(--portfolio-ink);font:43px/1 Space,sans-serif;transition:background .3s,color .3s}.project-empty{display:flex;flex-direction:column;justify-content:space-between;align-items:start;background:#d9d6cb;color:var(--portfolio-ink);padding:35px;text-align:left}.project-empty>.mono{font-size:8px}.empty-title{font:clamp(44px,4.5vw,65px)/1.05 Space,sans-serif;letter-spacing:-.065em;margin-bottom:80px;max-width:420px}.project-caption{display:flex;justify-content:space-between;align-items:center;gap:25px;margin-top:24px}.project-caption h3{font-size:27px;font-weight:500;letter-spacing:-.045em}.project-caption .mono{font-size:7px;color:#b5b6aa;text-align:right}.project>p{font-size:13px;color:#b5b6aa;margin-top:14px;line-height:1.6}.work .section-space{padding-bottom:110px}.contact{isolation:isolate}.contact footer{display:block}.footer-head{display:flex;justify-content:space-between;align-items:center;gap:30px}.footer-head>.mono{font-size:8px;color:var(--portfolio-muted)}.footer-big{display:grid;grid-template-columns:repeat(3,1fr);gap:35px;margin-top:60px;margin-bottom:65px}.footer-big a{display:flex;justify-content:space-between;align-items:center;font-size:clamp(30px,3.5vw,50px);line-height:1.2;letter-spacing:-.055em;border-bottom:1px solid var(--portfolio-line);padding-bottom:15px;transition:color .3s}.footer-big a span{font-size:29px;transition:transform .45s var(--portfolio-ease)}.footer-big a:hover{color:var(--portfolio-red)}.footer-big a:hover span{transform:translate(4px,-4px)}
.viewer{background:var(--portfolio-paper);color:var(--portfolio-ink);border:0;padding:28px;width:min(960px,90vw);max-height:90vh;overflow:auto}.viewer::backdrop{background:#101010d9;backdrop-filter:blur(4px)}.viewer-head{display:flex;justify-content:space-between;align-items:center;gap:30px;margin-bottom:25px}.viewer-head h2{font-size:30px;letter-spacing:-.045em}.viewer-close{border:0;border-bottom:1px solid var(--portfolio-ink);background:none;padding:8px 0;font-size:12px;cursor:pointer}.viewer-image{height:min(55vh,540px);background-size:300% 100%;background-position:0 0;background-repeat:no-repeat;background-color:#dedbd0}.viewer-image.is-project{background-size:contain;background-position:center}.viewer-image.is-empty{display:grid;place-content:center;padding:35px;font-size:35px;line-height:1.1;letter-spacing:-.045em;text-align:center}.viewer-copy{font-size:15px;line-height:1.7;max-width:760px;margin-top:24px}.viewer-note{display:block;font-size:7px;color:var(--portfolio-muted);margin-top:15px}
.cursor{position:fixed;top:0;left:0;pointer-events:none;z-index:10000;display:none;transform:translate(-100px,-100px)}.cursor>span{display:grid;place-content:center;transform:translate(-50%,-50%);width:10px;height:10px;border-radius:50%;border:1px solid var(--portfolio-ink);background:var(--portfolio-ink);font:8px/1.25 Mono,monospace;text-align:center;white-space:pre-line;color:var(--portfolio-paper);transition:width .25s,height .25s,background .25s,color .25s;border-color:transparent}.cursor.is-active>span{width:72px;height:72px;background:var(--portfolio-red);padding:8px}.cursor.is-dark>span{border:1px solid #f3f1ea70}.cursor.is-reading>span{background:transparent;color:var(--portfolio-ink);border:1px solid #1c1c1a80;width:55px;height:55px;font-size:7px}.cursor.is-dark.is-reading>span{color:var(--portfolio-paper);border-color:#f3f1ea80}
[data-motion=on] .fill-copy .word{color:var(--portfolio-ghost)}[data-motion=on] .fill-copy .word:after{width:var(--fill,0%)}[data-motion=on] .skill-row{opacity:0;transform:translateX(95px);transition:opacity .8s var(--delay,0ms),transform 1.1s var(--delay,0ms) var(--portfolio-ease)}[data-motion=on] .skill-row.is-in{opacity:1;transform:translateX(0)}[data-motion=on] .section-heading,[data-motion=on] .story-heading,[data-motion=on] .life-heading,[data-motion=on] .life-grid figure,[data-motion=on] .project,[data-motion=on] .service-card{opacity:0;transform:translateY(25px);transition:opacity .8s var(--delay,0ms),transform 1s var(--delay,0ms) var(--portfolio-ease)}[data-motion=on] .is-in{opacity:1;transform:translateY(0)}[data-motion=on] .service-cards .is-in{opacity:1;transform:translateY(0)}[data-motion=on] .project-grid .is-in,[data-motion=on] .life-grid .is-in{opacity:1;transform:translateY(0)}[data-motion=on] .section-heading.is-in,[data-motion=on] .story-heading.is-in,[data-motion=on] .life-heading.is-in{opacity:1;transform:translateY(0)}[data-motion=on] .work{clip-path:inset(var(--section-inset,0px) 0 0)}
@keyframes logo-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}@media(hover:hover) and (pointer:fine){html.has-cursor,html.has-cursor a,html.has-cursor button,html.has-cursor summary{cursor:none}.has-cursor .cursor{display:block}}
@media(max-width:1100px) and (min-width:701px){.service-cards{grid-template-columns:1fr 1fr}.service-card:nth-child(2){border-right:0}.service-card:nth-child(-n+2){border-bottom:1px solid #505148}.teaser{height:185px}.service-card h3{font-size:28px}.story-chapter{gap:60px;grid-template-columns:.6fr 1.5fr}.life-grid{gap:20px}.life-grid figcaption{flex-direction:column;gap:6px}.section-heading{gap:40px}.brands{font-size:38px;gap:35px}.wordpress{font-size:32px}.brands small{margin-left:0}.project-caption{flex-direction:column;align-items:start;gap:10px}.empty-title{font-size:43px}.project-empty{padding:25px}.footer-big{gap:25px}.footer-big a{font-size:31px}.footer-big a span{font-size:22px}}
@media(max-width:700px){.wordmark{gap:10px}.logo{width:32px;height:24px}.hello{padding-block:65px}.hello-copy{font-size:35px;line-height:1.14}.hello-meta{font-size:6px;gap:25px;margin-top:28px;padding-top:22px}.hello-meta a{max-width:160px;text-align:right}.section-heading{display:block;margin-bottom:38px}.section-heading h2{font-size:43px}.section-heading>p{font-size:13px;margin-top:26px;max-width:300px}.service-cards{grid-template-columns:1fr}.service-card{border-right:0;border-bottom:1px solid #505148}.service-card:last-child{border-bottom:0}.service-card summary{padding:20px 22px 24px}.service-card h3{font-size:29px;margin-top:23px}.service-card summary>p{min-height:0;max-width:280px}.teaser{height:170px;max-width:100%;padding-bottom:20px}.mini-browser{width:70%;max-width:260px}.mini-code b{font-size:55px}.service-card .service-body{padding:0 22px 24px}.more{margin-top:20px}.type-sample{font-size:97px}.journey-teaser svg{max-width:240px}.version-teaser{font-size:57px;gap:18px}.skills{margin-top:60px}.skill-row{font-size:31px;padding-block:20px;gap:20px;line-height:1.1}.skill-row b{font-size:23px}.brands{font-size:32px;gap:26px;padding-block:26px}.wordpress{font-size:28px}.brands small{margin-left:0;max-width:250px;font-size:6px;width:100%}.story-heading h2{font-size:64px}.draft-note{font-size:6px;line-height:1.6;max-width:280px;margin-top:24px}.story-chapter{grid-template-columns:1fr;gap:32px;min-height:0;padding-block:65px}.chapter-label{position:static;display:flex;justify-content:space-between;gap:25px;align-items:start}.chapter-label>.mono{font-size:7px}.chapter-label h3{font-size:24px;line-height:1.05;margin:0;max-width:180px;width:180px}.story-chapter .fill-copy{font-size:34px;line-height:1.14}.chapter-foot{font-size:6px;margin-top:27px;max-width:280px}.life-heading{display:block;padding-top:65px;margin-bottom:32px}.life-heading h3{font-size:46px}.life-heading>div{margin-top:25px}.life-heading p{font-size:13px}.life-heading .mono{font-size:6px;line-height:1.7;max-width:285px;margin-top:18px}.life-grid{grid-template-columns:1fr;gap:36px}.life-grid figure:nth-child(2),.life-grid figure:nth-child(3){padding-top:0}.life-grid figcaption{font-size:12px}.life-grid figcaption .mono{font-size:6px}.life-image{aspect-ratio:4/4.6}.client-slots{padding-block:50px 65px;margin-top:10px}.client-slots>.mono{font-size:6px;max-width:280px}.client-slots>div{grid-template-columns:1fr;gap:22px;margin-top:23px;padding-block:24px}.client-slots>div>span{font-size:25px}.project-grid{grid-template-columns:1fr;gap:45px}.project-open{aspect-ratio:1.05}.project-arrow{width:65px;height:65px;font-size:33px}.project-caption{flex-direction:column;align-items:start;gap:12px;margin-top:19px}.project-caption h3{font-size:26px}.project-caption .mono{font-size:6px}.project>p{font-size:12px;margin-top:12px}.project-empty{padding:25px}.project-empty>.mono{font-size:7px}.empty-title{font-size:45px;margin-bottom:65px;max-width:290px}.footer-head{display:block}.footer-head>.mono{display:block;font-size:6px;margin-top:20px}.footer-big{grid-template-columns:1fr;gap:25px;margin-top:40px;margin-bottom:38px}.footer-big a{font-size:37px;padding-bottom:12px}.footer-big a span{font-size:25px}.viewer{padding:22px;width:92vw;max-height:90vh}.viewer-head{gap:20px;margin-bottom:20px}.viewer-head h2{font-size:24px}.viewer-close{font-size:11px;white-space:nowrap}.viewer-image{height:48vh}.viewer-copy{font-size:13px;line-height:1.7;margin-top:20px}.viewer-image.is-empty{font-size:29px;padding:20px}.viewer-note{font-size:6px}}
.viewer-image.is-photo{width:min(100%,432px,44vh);height:auto;aspect-ratio:4/5;margin-inline:auto}
html{scrollbar-gutter:stable}html.viewer-open{overflow:hidden}
@media(max-width:700px){.life-image{aspect-ratio:4/5}}
@media(prefers-reduced-motion:reduce){.fill-copy .word{color:var(--portfolio-ink)!important}.fill-copy .word:after{width:100%!important}.skill-row,.section-heading,.story-heading,.life-heading,.life-grid figure,.service-card,.project{opacity:1!important;transform:none!important}.work{clip-path:none!important}.cursor{display:none!important}html.has-cursor,html.has-cursor a,html.has-cursor button,html.has-cursor summary{cursor:auto}.hero:after{transform:scaleX(1)}}
.portrait img{mix-blend-mode:multiply}.portrait figcaption{color:var(--portfolio-ink)}
.teaser{flex-direction:column;gap:14px}.teaser-symbol{font:82px/1 Anton,sans-serif;color:var(--portfolio-red)}.teaser.type-teaser .teaser-symbol{font-family:Space,sans-serif}.teaser.journey-teaser .teaser-symbol{font-family:Mono,monospace;font-size:38px}.teaser.version-teaser .teaser-symbol{font-family:Space,sans-serif;font-size:50px}.teaser>.mono{font-size:7px;color:#838479}
.case-study{background:var(--portfolio-paper);padding-bottom:80px}.case-header{padding-bottom:55px}.case-header h1,.contact-page h1,.legal-page h1{font:clamp(82px,15vw,210px)/.95 Anton,sans-serif;letter-spacing:-.025em}.case-lede{font-size:clamp(23px,3vw,38px);line-height:1.3;letter-spacing:-.04em;max-width:900px;margin-top:36px}.case-meta{display:flex;gap:70px;flex-wrap:wrap;margin-top:58px;padding-top:24px;border-top:1px solid var(--portfolio-line)}.case-meta dt{font-size:8px;color:var(--portfolio-muted)}.case-meta dd{margin:8px 0 0;font-size:14px}.case-cover{margin:0 auto 100px;max-width:1220px}.case-cover img{display:block;width:100%;height:auto}.case-cover figcaption{margin-top:12px;color:var(--portfolio-muted)}.case-section{display:grid;grid-template-columns:.8fr 1.5fr;gap:80px;padding:55px 0;border-top:1px solid var(--portfolio-line)}.case-section .section-kicker{margin:8px 0 0}.case-section h2{font-size:clamp(38px,5vw,68px);margin-bottom:25px}.case-copy{max-width:750px;font-size:17px;line-height:1.8}.case-copy p+p{margin-top:20px}.case-end{display:flex;justify-content:space-between;gap:30px;padding-top:35px;border-top:1px solid var(--portfolio-ink);font-size:15px}.case-end a:hover{color:var(--portfolio-red)}
.contact-page{min-height:55vh}.contact-page h1{font-size:clamp(72px,12vw,170px)}.contact-lede{font-size:clamp(23px,3vw,38px);margin-top:30px}.contact-form-intro{margin-top:52px;padding-top:24px;border-top:1px solid var(--portfolio-line);font-size:17px}.mod_form{max-width:780px;margin:0 auto 100px;padding:0 48px}.mod_form form{display:grid;gap:24px}.mod_form label{display:block;font-size:13px;margin-bottom:8px}.mod_form input:not([type=submit]),.mod_form textarea{width:100%;padding:14px 12px;border:1px solid var(--portfolio-line);border-radius:0;background:transparent;color:var(--portfolio-ink);font:16px Space,Arial,sans-serif}.mod_form textarea{min-height:190px;resize:vertical}.mod_form input:focus,.mod_form textarea:focus{outline:2px solid var(--portfolio-red);outline-offset:2px}.mod_form input[type=submit],.mod_form button{justify-self:start;border:0;background:var(--portfolio-red);color:var(--portfolio-paper);padding:16px 25px;font:13px Space,Arial,sans-serif;cursor:pointer}.mod_form .widget{margin:0}.mod_form .widget.mandatory label:after{content:' *';color:var(--portfolio-red)}.mod_form .error{color:#a52c1c;font-size:13px}.mod_form .formbody{display:grid;gap:22px}.mod_form .widget-submit{margin-top:10px}.mod_form .widget-submit input{min-width:180px}.tl_form-error{padding:18px;background:#fff0ed;color:#842b20;margin-bottom:20px}
.legal-page{min-height:45vh}.legal-page h1{font-size:clamp(68px,10vw,135px)}.legal-page .wrap>p:last-child{font-size:17px;line-height:1.7;margin-top:30px;max-width:760px}.site-footer{isolation:isolate}.site-footer footer{display:block}.site-footer .footer-head{display:flex;justify-content:space-between;align-items:center;gap:30px}.site-footer .footer-head>.mono{font-size:8px;color:var(--portfolio-muted)}.footer-big{display:grid;grid-template-columns:repeat(3,1fr);gap:35px;margin-top:60px;margin-bottom:65px}.footer-big a{display:flex;justify-content:space-between;align-items:center;font-size:clamp(30px,3.5vw,50px);line-height:1.2;letter-spacing:-.055em;border-bottom:1px solid var(--portfolio-line);padding-bottom:15px;transition:color .3s}.footer-big a span{font-size:29px;transition:transform .45s var(--portfolio-ease)}.footer-big a:hover{color:var(--portfolio-red)}.footer-big a:hover span{transform:translate(4px,-4px)}
.story .life-heading{display:grid;grid-template-columns:1fr 1fr;gap:50px;padding:55px 0 85px}.story .life-heading h3{font-size:clamp(38px,4.5vw,64px);letter-spacing:-.055em}.story .life-heading>div:last-child{max-width:440px;padding-top:45px}.story .life-heading p{font-size:15px;line-height:1.7}.story .life-heading .mono{display:block;margin-top:22px;color:var(--portfolio-muted);font-size:7px}
@media(max-width:700px){.case-study{padding-bottom:45px}.case-header{padding-bottom:40px}.case-header h1{font-size:20vw}.case-lede{font-size:23px;margin-top:24px}.case-meta{gap:24px;margin-top:38px}.case-meta dd{font-size:12px}.case-cover{margin-bottom:55px}.case-section{grid-template-columns:1fr;gap:20px;padding:32px 0}.case-section h2{font-size:40px}.case-copy{font-size:15px}.case-end{font-size:13px}.contact-page h1{font-size:19vw}.contact-lede{font-size:23px}.mod_form{padding-inline:22px;margin-bottom:65px}.site-footer .footer-head{display:block}.site-footer .footer-head>.mono{display:block;margin-top:18px;font-size:6px}.footer-big{grid-template-columns:1fr;gap:25px;margin-top:40px;margin-bottom:38px}.footer-big a{font-size:37px;padding-bottom:12px}.footer-big a span{font-size:25px}.story .life-heading{grid-template-columns:1fr;gap:20px;padding:35px 0 65px}.story .life-heading>div:last-child{padding-top:0}.portrait-mark{font-size:170px}}
.delivery-note{font-size:13px;color:var(--portfolio-muted);margin-top:18px}
.life-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.photo-figure{min-width:0}.photo-open{width:100%;height:auto;min-height:0;aspect-ratio:4/5;padding:0;border:0;display:block;position:relative;background:#d9d6cb;overflow:hidden;cursor:pointer}.photo-open picture{display:block;width:100%;height:100%}.photo-open img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .7s var(--portfolio-ease)}.photo-open:hover img{transform:scale(1.025)}.photo-arrow{position:absolute;right:0;bottom:0;width:60px;height:60px;display:grid;place-items:center;background:var(--portfolio-paper);font:29px/1 Space,sans-serif;transition:background .3s,color .3s}.photo-open:hover .photo-arrow{background:var(--portfolio-red);color:var(--portfolio-paper)}.photo-figure figcaption{display:flex;justify-content:space-between;gap:20px;margin-top:14px;font:12px/1.4 Space,sans-serif}
.viewer{background:var(--portfolio-paper);color:var(--portfolio-ink);border:0;padding:28px;width:min(960px,90vw);max-height:90vh;overflow:auto}.viewer::backdrop{background:#101010d9;backdrop-filter:blur(4px)}.viewer-head{display:flex;justify-content:space-between;align-items:center;gap:30px;margin-bottom:25px}.viewer-head h2{font-size:30px;letter-spacing:-.045em}.viewer-close{border:0;border-bottom:1px solid var(--portfolio-ink);background:none;padding:8px 0;font-size:12px;cursor:pointer}.viewer-image img{display:block;max-width:100%;max-height:70vh;margin:auto}.viewer-open{overflow:hidden}
@media(max-width:700px){.life-grid{grid-template-columns:1fr;gap:36px}.photo-arrow{width:55px;height:55px}.viewer{padding:22px;width:92vw;max-height:90vh}.viewer-head{gap:20px;margin-bottom:20px}.viewer-head h2{font-size:24px}.viewer-close{font-size:11px;white-space:nowrap}}
.hero-stage{background:var(--portfolio-red)}.portrait{top:-12px;bottom:0;height:auto}.portrait img{width:100%;height:100%;object-fit:cover;object-position:center top;mix-blend-mode:normal}@media(max-width:1100px) and (min-width:701px){.portrait{top:-5px}}@media(max-width:700px){.portrait{top:164px;bottom:0;height:auto}}
.portrait figcaption{display:none}
.tools-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:70px}.tool-group{border-top:1px solid #505148;padding:22px 0 18px}.tool-group h3{margin:0 0 17px;color:#a9a99f;font-size:9px;font-weight:400;letter-spacing:.08em;text-transform:uppercase}.tech-logos{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0;padding:0}.tech-logos li{min-width:0;min-height:94px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:11px;color:var(--portfolio-paper);font:10px/1.35 Mono,monospace;text-align:center}.tech-logos img,.rest-mark,.generic-mark{width:38px;height:38px;object-fit:contain;transition:transform .35s var(--portfolio-ease)}.tech-logos img{filter:grayscale(1) brightness(0) invert(1)}.tech-logos li:hover img,.tech-logos li:hover .rest-mark,.tech-logos li:hover .generic-mark{transform:translateY(-3px)}.rest-mark{display:block;fill:var(--portfolio-ink);stroke:#c8c6bd;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round}.rest-mark circle{fill:var(--portfolio-ink);stroke:var(--portfolio-red);stroke-width:1.6}.generic-mark{display:grid;place-items:center;border:1px solid #77786e;color:#dedbd2;font:11px/1 Mono,monospace}
html.is-route-changing{scroll-behavior:auto}
.page-loader[hidden]{display:none}.page-loader{position:fixed;z-index:10001;inset:0;display:grid;grid-template-rows:auto 1fr auto;padding:clamp(22px,4vw,56px);background:var(--portfolio-red);color:var(--portfolio-ink);transform:translateY(102%);visibility:hidden;transition:transform .32s var(--portfolio-ease),visibility 0s linear .32s;overscroll-behavior:contain}.page-loader.is-active{visibility:visible;transform:translateY(0);transition:transform .32s var(--portfolio-ease),visibility 0s}.page-loader.is-leaving{visibility:visible;transform:translateY(-102%);transition:transform .32s var(--portfolio-ease),visibility 0s .32s}.page-loader-head,.page-loader-foot{display:flex;justify-content:space-between;align-items:center;gap:24px}.page-loader-head{border-bottom:1px solid #1c1c1a55;padding-bottom:17px}.page-loader-head .mono,.page-loader-foot .mono{font-size:8px}.page-loader-center{align-self:center;width:100%;padding-block:45px}.page-loader-kicker{font-size:8px;margin-bottom:18px}.page-loader-title{font:clamp(58px,14vw,205px)/.88 Anton,Impact,sans-serif;letter-spacing:-.025em;text-transform:uppercase;overflow-wrap:anywhere;animation:page-title-in .42s .06s both var(--portfolio-ease)}.page-loader-foot{border-top:1px solid #1c1c1a55;padding-top:17px}.page-loader-track{height:2px;max-width:240px;flex:1;background:#1c1c1a35;overflow:hidden}.page-loader-track i{display:block;width:100%;height:100%;background:var(--portfolio-paper);transform:scaleX(0)}.page-loader.is-active .page-loader-track i{animation:page-loader-progress .56s .08s var(--portfolio-ease) both}@keyframes page-title-in{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes page-loader-progress{to{transform:scaleX(1)}}
@media(max-width:700px){.page-loader{padding:22px}.page-loader-head .mono,.page-loader-foot .mono{font-size:6px}.page-loader-center{padding-block:25px}.page-loader-title{font-size:18vw}.page-loader-track{max-width:90px}}
@media(prefers-reduced-motion:reduce){.page-loader,.page-loader.is-active,.page-loader.is-leaving{transform:none;transition:none}.page-loader-title{animation:none}.page-loader-track i{animation:none!important;transform:scaleX(1)}}html[data-motion=off] .page-loader,html[data-motion=off] .page-loader.is-active,html[data-motion=off] .page-loader.is-leaving{transform:none;transition:none}html[data-motion=off] .page-loader-title{animation:none}html[data-motion=off] .page-loader-track i{animation:none!important;transform:scaleX(1)}
@media(max-width:700px){.tools-grid{grid-template-columns:1fr;column-gap:0}.tool-group{padding:18px 0 14px}.tech-logos{grid-template-columns:repeat(4,minmax(0,1fr))}.tech-logos li{min-height:88px;font-size:9px}}

/* Native Contao elements and the Lucide icon subset. */
.icon{display:inline-block;width:1em;height:1em;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.15em}
.line-link .icon{width:1.35em;height:1.35em;transition:transform .4s var(--portfolio-ease)}
.line-link:hover .icon,.footer-big a:hover .icon{transform:translate(4px,-4px)}
.hero-foot a{display:inline-flex;align-items:center;gap:7px}
.contact-link>.icon{width:clamp(60px,10vw,144px);height:clamp(60px,10vw,144px);transition:transform .6s var(--portfolio-ease)}
.contact-link:is(:hover,:focus-visible)>.icon{transform:translate(4px,-4px)}
.footer-big a>.icon{width:1em;height:1em;transition:transform .45s var(--portfolio-ease)}
.menu .icon{width:24px;height:24px}
.menu[aria-expanded=true] .menu-open,.menu[aria-expanded=false] .menu-close{display:none}
.project-arrow{font-size:0}
.project-arrow:after{content:none}
.project-arrow .icon{width:32px;height:32px;transition:transform .45s var(--portfolio-ease)}
.project-open:is(:hover,:focus-visible) .project-arrow{background:var(--portfolio-red);color:var(--portfolio-paper)}
.project-open:is(:hover,:focus-visible) .project-arrow .icon{transform:translate(4px,-4px)}
.project-open picture{display:block;width:100%;height:100%}
.project-caption h2{font-size:27px;font-weight:500;letter-spacing:-.045em}
.project-teaser{font-size:13px;color:#b5b6aa;margin-top:14px;line-height:1.6}
.all-work{display:inline-flex;align-items:center;gap:22px;margin-top:42px;border-bottom:1px solid currentColor;padding-bottom:12px;font-size:13px}
.all-work .icon{width:20px;height:20px}
.work-page h1{font-size:clamp(64px,9vw,130px);font-weight:500;letter-spacing:-.065em;line-height:1}
.work-empty{padding-block:35px;border-top:1px solid #616258;color:#b5b6aa}

.services-section{background:var(--portfolio-ink);color:var(--portfolio-paper);padding:0;position:relative;isolation:isolate}
.service-intro{padding-top:100px;padding-bottom:55px}
.service-intro .section-heading{margin:0 auto;max-width:1440px;padding-inline:48px}
.service-card{border:0;border-top:1px solid #505148;min-width:0;padding:0}
.service-card:last-of-type{border-bottom:1px solid #505148}
.service-card .service-toggler{max-width:1440px;margin:auto;padding:25px 48px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px 30px;cursor:pointer;list-style:none}
.service-card h3{font-size:clamp(25px,2.7vw,39px);font-weight:500;letter-spacing:-.045em;margin:0;grid-column:1}
.service-summary{grid-column:1;margin:0;max-width:500px;color:#b5b6aa;font-size:13px;line-height:1.65}
.service-card .service-toggle{grid-column:2;grid-row:1 / span 2;width:27px;height:27px;transition:transform .4s var(--portfolio-ease),color .3s}
.service-card .service-toggler:is(:hover,:focus-visible) .service-toggle{color:var(--portfolio-red)}
.service-card .service-accordion{max-width:1440px;margin:0 auto;padding:0 48px}
.service-card .service-body{padding:0 57px 30px 0;max-width:650px}
.service-card .service-body p{color:#b5b6aa;font-size:13px;line-height:1.7}
.service-card .service-body .mono{display:block;margin-top:20px;color:#b5b6aa;font-size:7px}
.skills-section{padding-top:70px;padding-bottom:100px}
.skills-section .skills{max-width:1440px;margin:auto;padding-inline:48px}
.skills-section .tools-heading{display:flex;justify-content:space-between;align-items:end;gap:25px;padding-bottom:20px}
.skills-section .tools-heading .section-kicker{margin:0;color:#b5b6aa;font-size:8px}
.skills-section .tools-heading>span{font-size:7px;color:#b5b6aa}
.skills-section .tools-grid{column-gap:70px}

.story{padding-bottom:65px}
.story-heading{padding-bottom:55px}
.story-chapter{display:grid;grid-template-columns:.8fr 1.5fr;gap:80px;padding:55px 0;border-top:1px solid var(--portfolio-line)}
.story-chapter .chapter-label>.mono{display:block;font-size:8px;color:var(--portfolio-muted)}
.story-chapter h3{font-size:clamp(30px,4vw,58px);line-height:1.05;letter-spacing:-.055em;margin-top:18px}
.story-chapter .fill-copy{font-size:clamp(27px,3.7vw,52px);line-height:1.16;letter-spacing:-.05em}
.story-chapter .chapter-foot{font-size:7px;color:var(--portfolio-muted);margin-top:28px}
.life-heading{display:grid;grid-template-columns:1fr 1fr;gap:50px;padding:55px 0 45px;border-top:1px solid var(--portfolio-line)}
.life-heading h3{font-size:clamp(38px,4.5vw,64px);letter-spacing:-.055em;line-height:1.05}
.life-heading p{font-size:15px;line-height:1.7}
.life-heading .mono{display:block;margin-top:22px;color:var(--portfolio-muted);font-size:7px}
.life-grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;align-items:start}
.life-grid .image_container,.life-grid figure{margin:0;width:100%}
.life-grid img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover}
.life-grid figcaption{padding-top:14px;font-size:12px;line-height:1.4}

.project-news-reader{background:var(--portfolio-paper);color:var(--portfolio-ink)}
.case-study{padding-bottom:80px}
.case-header{padding-bottom:55px}
.case-header h1{font:clamp(82px,15vw,210px)/.95 Anton,sans-serif;letter-spacing:-.025em}
.case-header .case-lede{font-size:clamp(23px,3vw,38px);line-height:1.3;letter-spacing:-.04em;max-width:900px;margin-top:36px}
.case-meta{display:flex;gap:70px;flex-wrap:wrap;margin:30px 0 55px;padding:24px 0 0;border-top:1px solid var(--portfolio-line)}
.case-meta dt{font-size:8px;color:var(--portfolio-muted)}
.case-meta dd{margin:8px 0 0;font-size:14px}
.case-cover{margin:0 auto 75px;max-width:1220px}
.case-cover img{display:block;width:100%;height:auto}
.case-cover figcaption{margin-top:12px;color:var(--portfolio-muted);font-size:8px}
.case-section{display:grid;grid-template-columns:.8fr 1.5fr;gap:80px;padding:55px 0;border-top:1px solid var(--portfolio-line)}
.case-section h2{font-size:clamp(38px,5vw,68px);margin:0 0 25px}
.case-section .section-kicker{margin:8px 0 0}
.case-copy{max-width:750px;font-size:17px;line-height:1.8}
.case-end{display:flex;justify-content:space-between;gap:30px;padding-top:35px;border-top:1px solid var(--portfolio-ink);font-size:15px}
.case-end a{display:inline-flex;align-items:center;gap:8px}
.case-end .icon{width:20px;height:20px}
.case-end a:hover{color:var(--portfolio-red)}

@media(max-width:1100px) and (min-width:701px){.service-intro .section-heading,.service-card .service-toggler,.service-card .service-accordion,.skills-section .skills{padding-inline:32px}.service-card .service-accordion{padding-inline:32px}.story-chapter,.case-section{gap:55px}.case-meta{gap:40px}}
@media(max-width:700px){.menu .icon{width:22px;height:22px}.line-link .icon{width:20px;height:20px}.contact-link>.icon{width:12vw;height:12vw}.footer-big a>.icon{width:25px;height:25px}.project-arrow{width:65px;height:65px}.project-arrow .icon{width:27px;height:27px}.project-caption h2{font-size:26px}.project-teaser{font-size:12px;margin-top:12px}.all-work{width:100%;justify-content:space-between;margin-top:35px}.service-intro{padding-top:65px;padding-bottom:32px}.service-intro .section-heading{padding-inline:22px}.service-card .service-toggler{padding:22px;gap:9px 15px}.service-card h3{font-size:27px}.service-summary{font-size:12px;max-width:280px}.service-card .service-accordion{padding-inline:22px}.service-card .service-body{padding:0 32px 25px 0}.skills-section{padding-top:50px;padding-bottom:65px}.skills-section .skills{padding-inline:22px}.skills-section .tools-heading{display:block}.skills-section .tools-heading>span{display:block;margin-top:12px}.skills-section .tools-grid{column-gap:0}.story{padding-bottom:45px}.story-heading{padding-bottom:40px}.story-chapter{grid-template-columns:1fr;gap:24px;padding:35px 0}.story-chapter .chapter-label{display:flex;justify-content:space-between;align-items:start;gap:22px}.story-chapter h3{font-size:25px;margin:0;max-width:180px}.story-chapter .fill-copy{font-size:34px;line-height:1.14}.life-heading{grid-template-columns:1fr;gap:20px;padding:35px 0}.life-heading h3{font-size:46px}.life-heading>div:last-child{padding-top:0}.life-grid{grid-template-columns:1fr;gap:36px}.case-study{padding-bottom:45px}.case-header{padding-bottom:40px}.case-header h1{font-size:20vw}.case-header .case-lede{font-size:23px;margin-top:24px}.case-meta{gap:24px;margin:25px 0 38px}.case-meta dd{font-size:12px}.case-cover{margin-bottom:55px}.case-section{grid-template-columns:1fr;gap:20px;padding:32px 0}.case-section h2{font-size:40px;margin-bottom:12px}.case-copy{font-size:15px}.case-end{font-size:13px}.work-page h1{font-size:17vw}}

/* Restore the original service-card grid around native Contao content elements. */
#article-1:has(> .service-intro){display:grid;grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch}
#article-1:has(> .service-intro)>:not(.service-card){grid-column:1/-1;min-width:0}
#article-1:has(> .service-intro)>.service-card{grid-column:auto;min-width:0}
.service-intro .section-heading{max-width:none;margin:0;padding-inline:0}
.service-card{border:0;border-top:1px solid #505148;border-right:1px solid #505148;border-bottom:1px solid #505148;min-width:0;padding:0;overflow:hidden}
#article-1:has(> .service-intro)>.service-intro+.service-card{border-left:1px solid #505148}
.service-card::before{content:"";display:block;height:170px;border-bottom:1px solid #505148;background-position:center;background-repeat:no-repeat;background-size:cover;transition:transform .7s var(--portfolio-ease)}
.service-card--web::before{background-image:url('/files/bangemann/illustrations/service-web.svg')}
.service-card--app::before{background-image:url('/files/bangemann/illustrations/service-app.svg')}
.service-card--experience::before{background-image:url('/files/bangemann/illustrations/service-experience.svg')}
.service-card--interface::before{background-image:url('/files/bangemann/illustrations/service-interface.svg')}
#article-1:has(> .service-intro)>#services+.service-card::before{background-image:url('/files/bangemann/illustrations/service-web.svg')}
#article-1:has(> .service-intro)>#services+.service-card+.service-card::before{background-image:url('/files/bangemann/illustrations/service-app.svg')}
#article-1:has(> .service-intro)>#services+.service-card+.service-card+.service-card::before{background-image:url('/files/bangemann/illustrations/service-experience.svg')}
#article-1:has(> .service-intro)>#services+.service-card+.service-card+.service-card+.service-card::before{background-image:url('/files/bangemann/illustrations/service-interface.svg')}
.service-card:is(:hover,:focus-within)::before{transform:scale(1.025)}
.service-card .service-toggler{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 27px;grid-template-rows:auto auto auto;align-items:start;gap:13px 12px;max-width:none;margin:0;padding:20px 21px 24px;cursor:pointer;list-style:none}
.service-card .service-toggler h3{grid-column:1/-1;grid-row:1;margin:3px 0 0;font-size:25px;font-weight:500;letter-spacing:-.045em;line-height:1.12}
.service-card .service-toggler .service-summary{grid-column:1/-1;grid-row:2;max-width:250px;min-height:66px;margin:0;color:#b5b6aa;font-size:13px;line-height:1.65}
.service-card .service-toggler::after{grid-column:1;grid-row:3;align-self:center;content:"More";font-size:11px;line-height:27px;transition:color .3s}
.service-card .service-toggler.active::after{content:"Less"}
.service-card .service-toggler::before{grid-column:2;grid-row:3;justify-self:end;align-self:center;width:27px;height:27px;content:"";background:currentColor;-webkit-mask:url('/files/bangemann/icons/plus.svg') center/contain no-repeat;mask:url('/files/bangemann/icons/plus.svg') center/contain no-repeat;transition:transform .4s var(--portfolio-ease),color .3s}
.service-card .service-toggler.active::before{transform:rotate(45deg)}
.service-card .service-toggler:is(:hover,:focus-visible){color:var(--portfolio-red)}
.service-card .service-toggler:is(:hover,:focus-visible) h3,.service-card .service-toggler:is(:hover,:focus-visible) .service-summary{color:var(--portfolio-paper)}
.service-card .service-accordion{max-width:none;margin:0;padding:0}
.service-card .service-accordion .wrap{max-width:none;padding-inline:21px}
.service-card .service-body{max-width:none;padding:0 0 24px}
.service-card .service-body p{color:#b5b6aa;font-size:12px;line-height:1.6}
.service-card .service-body .mono{display:block;margin-top:20px;color:#b5b6aa;font-size:6px;line-height:1.9;white-space:normal}
.skills-section .skills{max-width:none;margin:0;padding-inline:0}
.story{padding-bottom:0}

@media(max-width:1100px) and (min-width:701px){#article-1:has(> .service-intro){grid-template-columns:repeat(2,minmax(0,1fr))}#article-1:has(> .service-intro)>.service-intro+.service-card+.service-card+.service-card{border-left:1px solid #505148}.service-card .service-toggler{padding:20px}.service-card::before{height:185px}}
@media(max-width:700px){#article-1:has(> .service-intro){grid-template-columns:minmax(0,1fr)}#article-1:has(> .service-intro)>.service-card{grid-column:1}#article-1:has(> .service-intro)>.service-intro+.service-card~.service-card{border-left:1px solid #505148}.service-card .service-toggler{padding:20px 22px 24px;gap:12px 15px}.service-card .service-toggler h3{font-size:29px}.service-card .service-toggler .service-summary{min-height:0;max-width:280px;font-size:12px}.service-card .service-accordion .wrap{padding-inline:22px}.service-card .service-body{padding-bottom:24px}.service-card::before{height:170px}.skills-section .skills{padding-inline:0}.story{padding-bottom:0}}

/* Native Contao text elements render their rich text inside a .rte wrapper. */
.story-chapter{display:block;padding-inline:48px}
.story-chapter>.rte{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.5fr);gap:80px;align-items:start}
.service-card .service-toggler .service-toggle{display:none}
@media(max-width:1100px) and (min-width:701px){.story-chapter{padding-inline:32px}.story-chapter>.rte{gap:55px}}
@media(max-width:700px){.story-chapter{padding-inline:22px}.story-chapter>.rte{grid-template-columns:minmax(0,1fr);gap:24px}.story-chapter .chapter-label{position:static;display:block}.story-chapter h3{margin:16px 0 0;max-width:none}}

/* Process-first What I do section, built from native Contao text elements. */
#article-1:has(> .process-intro){display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:var(--portfolio-paper);color:var(--portfolio-ink)}
#article-1:has(> .process-intro)>:not(.process-step){grid-column:1/-1;min-width:0}
#article-1:has(> .process-intro)>.process-step{grid-column:auto;min-width:0;padding:30px 32px 34px;border:1px solid var(--portfolio-line);border-right:0}
#article-1:has(> .process-intro)>.process-step--build{border-right:1px solid var(--portfolio-line)}
.process-intro{background:var(--portfolio-paper);color:var(--portfolio-ink)}
.process-intro .wrap{padding-bottom:52px}
.process-header{display:grid;grid-template-columns:1.2fr .8fr;align-items:end;gap:80px}
.process-header .section-kicker{margin-bottom:25px}
.process-header h2{max-width:840px;font-size:clamp(54px,7vw,94px);line-height:.98;letter-spacing:-.065em}
.process-header>p{max-width:440px;padding-bottom:8px;font-size:17px;line-height:1.7;color:#55554e}
.process-note{margin-top:42px;padding-top:14px;border-top:1px solid var(--portfolio-line);color:#77766f;font-size:7px}
.process-step>.rte{height:100%;display:flex;flex-direction:column;align-items:flex-start}
.process-step-top{width:100%;display:flex;justify-content:space-between;align-items:start;min-height:94px;margin-bottom:31px}
.process-step-top>.mono{padding-top:5px;color:#77766f;font-size:8px}
.process-step-top img{width:78px;height:78px;object-fit:contain;transition:transform .45s var(--portfolio-ease)}
.process-step:hover .process-step-top img{transform:rotate(-5deg) translateY(-3px)}
.process-step h3{max-width:330px;font-size:clamp(26px,2.7vw,37px);font-weight:500;letter-spacing:-.05em;line-height:1.08}
.process-step p{max-width:410px;margin-top:19px;font-size:14px;line-height:1.7;color:#55554e}
.process-tags{display:block;margin-top:auto;padding-top:30px;color:#77766f;font-size:7px}
@media(max-width:1100px) and (min-width:701px){.process-header{gap:45px}.process-header h2{font-size:66px}.process-step{padding:25px 23px 29px!important}.process-step h3{font-size:29px}.process-step p{font-size:13px}.process-step-top img{width:68px;height:68px}}
@media(max-width:700px){#article-1:has(> .process-intro){grid-template-columns:minmax(0,1fr)}#article-1:has(> .process-intro)>.process-step{border-right:1px solid var(--portfolio-line);border-bottom:0;padding:24px 22px 29px}.process-header{grid-template-columns:1fr;gap:27px}.process-header h2{font-size:48px;line-height:1.02}.process-header>p{font-size:14px;max-width:360px}.process-intro .wrap{padding-bottom:36px}.process-note{margin-top:30px;font-size:6px}.process-step-top{min-height:75px;margin-bottom:18px}.process-step-top img{width:62px;height:62px}.process-step h3{font-size:29px}.process-step p{margin-top:13px;font-size:13px}.process-tags{padding-top:20px;font-size:6px}}

/* A restrained tools index follows the same content grid as the rest of the site. */
.skills-section{width:100%;max-width:none;margin:0;padding-block:38px 46px;background:var(--portfolio-ink);color:var(--portfolio-paper)}
.skills-section .skills{max-width:none;margin:0;padding:0}
.toolkit-heading{display:flex;justify-content:space-between;align-items:end;gap:36px;padding-bottom:18px}
.toolkit-heading .section-kicker{margin:0 0 10px;color:var(--portfolio-red);font-size:8px}
.toolkit-heading h2{font-size:clamp(29px,3.3vw,42px);line-height:1.04;letter-spacing:-.055em}
.toolkit-heading>p{padding-bottom:4px;color:#b5b6aa;font-size:11px;line-height:1.5;text-align:right}
.toolkit-groups{border-top:1px solid #505148}
.toolkit-groups .tool-group{display:grid;grid-template-columns:minmax(155px,.38fr) minmax(0,1fr);gap:28px;align-items:baseline;margin:0;padding:13px 0;border-top:0;border-bottom:1px solid #45463f}
.toolkit-groups .tool-group h3{margin:0;color:#a9a99f;font-size:8px;font-weight:400;letter-spacing:.08em;text-transform:uppercase}
.toolkit-list{display:flex;flex-wrap:wrap;gap:3px 0;margin:0;padding:0;list-style:none}
.toolkit-list li{color:var(--portfolio-paper);font-size:12px;line-height:1.6;white-space:nowrap}
.toolkit-list li:not(:last-child)::after{content:'·';padding-inline:9px;color:var(--portfolio-red)}
@media(max-width:700px){.skills-section{padding-block:32px 38px}.skills-section .skills{max-width:none}.toolkit-heading{display:block;padding-bottom:17px}.toolkit-heading .section-kicker{margin-bottom:9px}.toolkit-heading h2{font-size:32px}.toolkit-heading>p{margin-top:9px;text-align:left}.toolkit-groups .tool-group{grid-template-columns:1fr;gap:4px;padding:11px 0}.toolkit-list li{font-size:11px}}

/* Scale the hover circle around its fixed center to avoid a positional jump. */
.cursor>span{width:72px;height:72px;transform:translate(-50%,-50%) scale(.14);transition:transform .25s var(--portfolio-ease),background .25s,color .25s,border-color .25s}
.cursor.is-active>span{transform:translate(-50%,-50%) scale(1)}

/* Keep these homepage sections available on staging and hide them on production. */
.production-site .home-work-module,.production-site .work-news-module,.production-site .production-hide-life{display:none!important}
.cursor.is-reading>span{transform:translate(-50%,-50%) scale(1)}

/* Keep the primary navigation available while moving through the page. */
.red:has(> .nav){position:sticky;top:0;z-index:100}
.nav{background:var(--portfolio-red)}
html{scroll-padding-top:112px}

/* Give the small footer links the same visible interaction cue as other links. */
.legal>div a{position:relative;transition:color .25s var(--portfolio-ease)}
.legal>div a:after{content:'';position:absolute;left:0;right:0;bottom:-4px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .25s var(--portfolio-ease)}
.legal>div a:is(:hover,:focus-visible){color:var(--portfolio-red)}
.legal>div a:is(:hover,:focus-visible):after{transform:scaleX(1)}


/* Compress the sticky header once the visitor scrolls into the page. */
.nav{transition:height .32s var(--portfolio-ease),background .25s var(--portfolio-ease)}
html.is-scrolled .nav{height:62px}
@media(max-width:700px){html.is-scrolled .nav{height:56px}}

/* Frosted floating navigation panel. */
.red:has(> .nav){top:12px;margin-top:12px;background:transparent}
.nav{border:1px solid #1c1c1a18;border-radius:16px;background:rgba(243,241,234,.76);backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35);box-shadow:0 10px 34px #1c1c1a12}
.nav nav a{transition:color .25s var(--portfolio-ease)}
.nav nav a:is(:hover,:focus-visible){color:var(--portfolio-red)}
.nav nav a:is(:hover,:focus-visible):after{background:var(--portfolio-red)}
@media(max-width:700px){.red:has(> .nav){top:8px;margin-top:8px}.nav{border-radius:14px}.mobile-nav{margin-top:6px;border:1px solid #1c1c1a18;border-radius:14px;background:rgba(243,241,234,.9);backdrop-filter:blur(18px) saturate(1.35);-webkit-backdrop-filter:blur(18px) saturate(1.35);box-shadow:0 10px 34px #1c1c1a12}.mobile-nav a{transition:color .25s var(--portfolio-ease)}.mobile-nav a:is(:hover,:focus-visible){color:var(--portfolio-red)}}

/* Keep the orange header at the top; form a compact glass island after scroll. */
.red:has(> .nav){top:0;margin-top:0;background:var(--portfolio-red);transition:background .3s var(--portfolio-ease)}
.nav{width:auto;max-width:1440px;height:96px;margin-inline:auto;border:0;border-bottom:1px solid #b7402b;border-radius:0;background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;transition:width .38s var(--portfolio-ease),height .32s var(--portfolio-ease),max-width .38s var(--portfolio-ease),padding .32s var(--portfolio-ease),border-radius .32s var(--portfolio-ease),background .32s var(--portfolio-ease),box-shadow .32s var(--portfolio-ease)}
.nav nav a:is(:hover,:focus-visible){color:var(--portfolio-paper)}
.nav nav a:is(:hover,:focus-visible):after{background:var(--portfolio-paper)}
html.is-scrolled .red:has(> .nav){top:12px;background:transparent}
html.is-scrolled .nav{width:calc(100% - 48px);max-width:980px;height:58px;padding-inline:25px;border:1px solid #ffffff55;border-radius:999px;background:rgba(243,241,234,.28);backdrop-filter:blur(30px) saturate(1.65);-webkit-backdrop-filter:blur(30px) saturate(1.65);box-shadow:0 12px 36px #1c1c1a18}
html.is-scrolled .nav nav a:is(:hover,:focus-visible){color:var(--portfolio-red)}
html.is-scrolled .nav nav a:is(:hover,:focus-visible):after{background:var(--portfolio-red)}
@media(max-width:700px){.nav{height:80px}.mobile-nav{background:var(--portfolio-red);border-color:#b7402b;backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none}.mobile-nav a:is(:hover,:focus-visible){color:var(--portfolio-paper)}html.is-scrolled .red:has(> .nav){top:8px}html.is-scrolled .nav{width:calc(100% - 28px);max-width:460px;height:56px;padding-inline:15px;border-radius:999px}html.is-scrolled .mobile-nav{border-color:#ffffff55;background:rgba(243,241,234,.3);backdrop-filter:blur(30px) saturate(1.65);-webkit-backdrop-filter:blur(30px) saturate(1.65);box-shadow:0 12px 36px #1c1c1a18}html.is-scrolled .mobile-nav a:is(:hover,:focus-visible){color:var(--portfolio-red)}}

/* Keep an orange backing behind the capsule and use one stable sticky position. */
.red:has(> .nav){top:0;margin-top:0;background:var(--portfolio-red)}
html.is-scrolled .red:has(> .nav){top:0;background:var(--portfolio-red)}
.nav{transform:translateY(0);backdrop-filter:blur(30px) saturate(1.65);-webkit-backdrop-filter:blur(30px) saturate(1.65)}
html.is-scrolled .nav{transform:translateY(12px)}
@media(max-width:700px){html.is-scrolled .nav{transform:translateY(8px)}}

/* Match Safari's overscroll canvas to the site's coral and keep the scrolled wrapper clear. */
html{background-color:var(--portfolio-red)}
.red:has(> .nav){background:var(--portfolio-red)}
html.is-scrolled .red:has(> .nav){background:transparent}

/* Match Safari's exposed overscroll canvas to the sampled page coral. */
html{background-color:#d25d41}

/* Do not saturate the orange header at the top; glass filtering belongs to scroll state. */
.nav{backdrop-filter:none;-webkit-backdrop-filter:none}

/* Keep the original orange header static; reveal a separate compact island after it scrolls away. */
.red:has(> .nav){position:relative;top:auto;z-index:auto}
.floating-header{position:fixed;inset:0 0 auto;z-index:120;display:flex;flex-direction:column;align-items:center;pointer-events:none;opacity:0;visibility:hidden;transform:translateY(-100%);transition:opacity .25s ease,transform .38s var(--portfolio-ease),visibility 0s linear .38s}
html.has-floating-nav .floating-header{opacity:1;visibility:visible;transform:translateY(0);transition-delay:0s}
.floating-header .nav-floating{position:relative;width:calc(100% - 48px);max-width:980px;height:58px;margin:12px auto 0;padding-inline:25px;border:1px solid #ffffff55;border-radius:999px;background:rgba(243,241,234,.28);backdrop-filter:blur(30px) saturate(1.65);-webkit-backdrop-filter:blur(30px) saturate(1.65);box-shadow:0 12px 36px #1c1c1a18;pointer-events:auto;transform:none;transition:none}
.floating-header .nav-floating nav a{transition:color .25s var(--portfolio-ease)}
.floating-header .nav-floating nav a:is(:hover,:focus-visible){color:var(--portfolio-red)}
.floating-header .nav-floating nav a:is(:hover,:focus-visible):after{background:var(--portfolio-red)}
@media(max-width:700px){.floating-header .nav-floating{width:calc(100% - 28px);max-width:460px;height:56px;margin-top:8px;padding-inline:15px}.floating-header .mobile-nav{width:calc(100% - 28px);max-width:460px;margin:6px auto 0;padding:12px 15px;border:1px solid #ffffff55;border-radius:18px;background:rgba(243,241,234,.3);backdrop-filter:blur(30px) saturate(1.65);-webkit-backdrop-filter:blur(30px) saturate(1.65);box-shadow:0 12px 36px #1c1c1a18;pointer-events:auto}.floating-header .mobile-nav a{transition:color .25s var(--portfolio-ease)}.floating-header .mobile-nav a:is(:hover,:focus-visible){color:var(--portfolio-red)}}


/* Give informative metadata a practical minimum size on narrow screens. */
@media(max-width:700px){.process-note,.process-tags,.process-step-top>.mono,.toolkit-groups .tool-group h3,.story-chapter .chapter-label>.mono,.story-chapter .chapter-foot,.life-heading .mono,.service-card .service-body .mono,.client-slots>.mono,.project-caption .mono,.project-empty>.mono,.legal{font-size:9px}}

/* Replace translucent navigation with an opaque material when requested. */
@media(prefers-reduced-transparency:reduce){.floating-header .nav-floating,.floating-header .mobile-nav{background:var(--portfolio-paper);backdrop-filter:none;-webkit-backdrop-filter:none;box-shadow:none;border-color:var(--portfolio-line);color:var(--portfolio-ink)}}

/* Keep scroll-reveal copy readable before the accent reaches it. */
[data-motion=on] .fill-copy .word{color:var(--portfolio-muted)}

/* Let project artwork carry the card, with its story available on hover and focus. */
.project-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.project-open:focus-visible{outline:2px solid var(--portfolio-red);outline-offset:5px}
.project-overlay{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;justify-content:space-between;padding:clamp(20px,2.2vw,34px);background:rgba(28,28,26,.94);color:var(--portfolio-paper);opacity:0;transition:opacity .28s ease;pointer-events:none}
.project-open:is(:hover,:focus-visible) .project-overlay{opacity:1}
.project-overlay-kicker{display:flex;justify-content:space-between;align-items:center;color:#b5b6aa;font-size:8px;letter-spacing:.08em}
.project-overlay-kicker span{color:var(--portfolio-red);font:24px/1 Space,sans-serif;transition:transform .3s var(--portfolio-ease)}
.project-open:is(:hover,:focus-visible) .project-overlay-kicker span{transform:translate(3px,-3px)}
.project-overlay-copy{max-width:36ch;font-size:clamp(16px,1.4vw,21px);line-height:1.5;letter-spacing:-.02em}
@media(hover:hover) and (pointer:fine){.project-teaser{display:none}}
@media(max-width:1100px) and (min-width:701px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-overlay-copy{font-size:18px}}
@media(max-width:700px){.project-grid{grid-template-columns:minmax(0,1fr)}.project-overlay{display:none}}
@media(prefers-reduced-motion:reduce){.project-overlay,.project-overlay-kicker span{transition:none}}

/* Give dark logo covers a distinct field against the work section. */
.project-open:has(.project-image[src*="goblio-cover"]){background:#71532f}
.project-image[src*="goblio-cover"]{mix-blend-mode:screen}
.project-open:has(.project-image[src*="contaodock-cover"]){background:#704022}
.project-image[src*="contaodock-cover"]{mix-blend-mode:screen}
