@font-face{font-family:Syne;src:url('/fonts/Syne-VariableFont_wght.woff2') format('woff2');font-weight:400 800;font-display:swap}

@font-face{font-family:'Google Sans Code';src:url('/fonts/GoogleSansCode-VariableFont_MONO_wght.woff2') format('woff2');font-weight:400 700;font-display:swap}

:root{--paper:var(--h23-cream);--ink:var(--h23-ink);--muted:var(--h23-iron);--line:var(--border-soft);--orange:var(--h23-safelight);--night:var(--h23-black);--font:var(--font-body);--ease:var(--ease-out);--gutter:clamp(22px,4.7vw,88px)}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:100px;background:var(--night)}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:16px;line-height:1.55}
body.menu-open,body.intro-open{overflow:hidden}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit}
button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}
button{cursor:pointer;color:inherit}
button{border:0;background:none}
a,button,summary,input,textarea,select{touch-action:manipulation}
button:disabled{cursor:default}
img{max-width:100%;display:block}
h1,h2,h3,p{margin:0}
h1,h2,h3{font-weight:700;line-height:1.08;letter-spacing:-.02em}
h1{font-size:clamp(54px,6.5vw,112px)}
h2{font-size:clamp(36px,4vw,65px)}
h3{font-size:27px}
em{font-family:inherit;font-weight:inherit;font-style:normal;letter-spacing:inherit}
p{color:var(--muted)}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--orange);outline-offset:6px}
#main:focus,#hero-title:focus{outline:none}
::selection{background:#dedede;color:#1a1a1a}
.wrap{width:100%;max-width:1800px;margin-inline:auto;padding-inline:var(--gutter)}
.mono,.eyebrow{font-family:'Google Sans Code',monospace;font-size:10px;font-weight:400;letter-spacing:.09em;line-height:1.6}
.eyebrow{color:inherit;margin-bottom:30px}
.skip-link{position:fixed;left:20px;top:12px;padding:12px 20px;background:var(--night);color:var(--paper);z-index:200;transform:translateY(-150%)}
.skip-link:focus{transform:none}
.site-header{height:98px;padding:0 var(--gutter);display:flex;align-items:center;justify-content:space-between;gap:30px;border-bottom:1px solid var(--line);position:relative;z-index:20;background:var(--paper)}
.site-header.on-dark{position:absolute;inset:0 0 auto;background:transparent;color:var(--paper);border-color:#ffffff24}
.brand{display:block;flex:0 0 auto}
.brand img{width:202px;height:auto}
.on-dark .brand img{filter:invert(1)}
.desktop-nav{display:flex;gap:32px;margin-left:auto;margin-right:5vw}
.desktop-nav a{font-size:14px;position:relative;padding:10px 0}
.desktop-nav a:after{content:'';position:absolute;bottom:3px;left:0;width:100%;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .2s}
.desktop-nav a:hover:after,.desktop-nav a[aria-current]:after{transform:scaleX(1)}
.header-cta{display:flex;gap:28px;align-items:center;border:1px solid currentColor;border-radius:0;padding:10px 19px;font-size:13px;transition:background .2s,color .2s}
.header-cta:hover{background:var(--ink);color:var(--paper)}
.on-dark .header-cta:hover{background:var(--paper);color:var(--ink)}
.menu-toggle{display:none;width:46px;height:46px}
.menu-toggle span{display:block;width:24px;height:1px;background:currentColor;margin:7px auto}
.mobile-menu{border:0;max-width:none;max-height:none;width:100%;height:100dvh;margin:0;padding:24px;background:var(--night);color:var(--paper)}
.mobile-menu::backdrop{background:#0a0a0a}
.mobile-top{display:flex;align-items:center;justify-content:space-between}
.menu-close{color:var(--paper);font-size:40px;width:48px;height:48px}
.mobile-menu nav{display:grid;gap:12px;margin:8vh 0}
.mobile-menu nav a{font-size:clamp(32px,9vw,55px);letter-spacing:-.04em}
.mobile-menu nav a:last-child{color:#ffffff}
.mobile-menu nav a span{margin-left:30px}
.mobile-menu p{max-width:250px;color:#c2c2c2}

.hero{position:relative;min-height:830px;height:100svh;max-height:1200px;isolation:isolate;background:var(--night);color:var(--paper);overflow:hidden}
.hero canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2}
.hero-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#0a0a0a 2%,#0a0a0af2 28%,#0a0a0a75 48%,transparent 65%)}
.hero-top{display:flex;justify-content:space-between;padding:129px var(--gutter) 0;color:#c2c2c2}
.hero-copy{margin:65px var(--gutter) 110px;position:relative;max-width:700px}
.hero-copy .eyebrow{color:#c2c2c2;display:flex;gap:12px;align-items:center;margin-bottom:25px}
.small-orbit{height:12px;width:25px;border:1px solid #ff3b14;border-radius:50%;transform:rotate(-23.4deg)}
.hero h1{font-size:clamp(67px,6.5vw,120px);line-height:.98;letter-spacing:-.065em}
.hero h1 em{color:#ffffff;font-size:1.12em}
.hero-description{max-width:400px;font-size:16px;line-height:1.65;color:#c2c2c2;margin:29px 0}
.button{display:inline-flex;gap:35px;align-items:center;justify-content:space-between;padding:15px 25px;border:1px solid transparent;border-radius:0;font-size:13px;min-height:51px;transition:background .2s,transform .2s,color .2s}
.button span{font-size:21px;line-height:1;transition:transform .2s}
.button:hover span{transform:translate(2px,-2px)}
.button-light{background:var(--paper);color:var(--ink)}
.button-light:hover{background:#ffffff}
.button-dark{background:var(--ink);color:var(--paper)}
.button-dark:hover{background:#3d3d3d}
.hero-bottom{position:absolute;left:var(--gutter);right:var(--gutter);bottom:26px;border-top:1px solid #ffffff30;padding-top:22px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.scroll-link{font:10px 'Google Sans Code',monospace;letter-spacing:.09em;display:flex;gap:40px;align-items:center;padding:8px 0}
.scroll-link span{font-size:20px}
.hero-bottom>.mono{color:#c2c2c2}
.motion-control{font:10px 'Google Sans Code',monospace;display:flex;align-items:center;gap:14px;min-height:40px;color:#c2c2c2}
.orbit-caption{position:absolute;right:var(--gutter);bottom:145px;text-align:right;display:grid;gap:6px;font-size:9px;color:#c2c2c2}
.orbit-caption:before{content:'';height:42px;width:1px;background:#ff3b14;margin:0 0 12px auto}
.intro-statement{padding-top:100px;padding-bottom:100px;display:grid;grid-template-columns:1fr 2fr;border-bottom:1px solid var(--line);gap:40px}
.intro-statement h2{font-size:clamp(30px,3.65vw,62px);line-height:1.13}
.intro-statement div>p{max-width:580px;font-size:17px;line-height:1.8;margin-top:30px}
.work-section{padding-top:110px;padding-bottom:75px}
.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:30px;margin-bottom:50px}
.section-heading .eyebrow{margin-bottom:20px}
.section-heading h2 em{white-space:nowrap}
.text-link{display:inline-flex;justify-content:space-between;align-items:center;gap:25px;border-bottom:1px solid currentColor;padding:10px 0;font-size:13px;transition:color .2s}
.text-link:hover{color:inherit}
.text-link span{font-size:22px;line-height:1}
.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:35px}
.project-grid--large{grid-template-columns:repeat(2,minmax(0,1fr));gap:50px 30px}
.project-image{position:relative;display:block;aspect-ratio:1.14;background:#dedede;overflow:hidden;border-radius:0}
.project-image img{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-slow) var(--ease)}
.project-card:hover .project-image img{transform:scale(1.035)}
.image-index{position:absolute;left:20px;top:20px;color:white;background:#1a1a1a9e;border-radius:0;padding:6px 10px;font-size:9px}
.image-go{position:absolute;right:20px;bottom:20px;background:var(--paper);width:46px;height:46px;display:grid;place-items:center;border-radius:50%;font-size:25px;transition:transform .25s}
.project-card:hover .image-go{transform:translate(2px,-2px)}
.project-meta{display:flex;justify-content:space-between;align-items:center;gap:18px;margin-top:23px}
.project-meta :is(h2,h3){font-size:22px;letter-spacing:-.025em}
.project-meta .mono{font-size:9px;letter-spacing:0;color:#6e6e6e;text-align:right}
.project-desc{font-size:14px;line-height:1.7;margin-top:12px;max-width:440px}
.work-note{display:flex;justify-content:space-between;margin-top:50px;border-bottom:1px solid var(--line);padding-bottom:45px}
.work-note p{font-size:15px;line-height:1.6}
.services-section{padding-block:45px 120px}
.section-side{font-size:15px;line-height:1.7}
.service-row{border-top:1px solid var(--line)}
.service-row:last-child{border-bottom:1px solid var(--line)}
.service-row summary{list-style:none;display:flex;align-items:center;gap:28px;cursor:pointer;padding:30px 0}
.service-row summary::-webkit-details-marker{display:none}
.service-row summary h3{font-size:clamp(27px,3.2vw,54px);font-weight:400}
.service-num{color:var(--muted);width:9%;flex-shrink:0}
.service-plus{font-size:34px;font-weight:400;margin-left:auto;width:36px;text-align:center;transition:transform .3s}
.service-row[open] .service-plus{transform:rotate(45deg)}
.service-content{display:grid;grid-template-columns:1fr 1fr;gap:10%;padding:10px 8% 55px 12%}
.service-content p{max-width:470px;font-size:16px}
.service-content .service-lead{color:var(--ink);font-size:24px;line-height:1.25;letter-spacing:-.03em;margin-bottom:18px}
.service-content ul{list-style:none;padding:0;margin:20px 0;font-size:13px;color:var(--muted)}
.service-content li{padding:5px 0}
.service-content li:before{content:'↳';margin-right:12px;color:var(--ink)}
.service-art{position:relative;align-self:center;justify-self:center;width:230px;height:200px}
.service-art i{position:absolute;inset:20px 45px;border:1px solid #3d3d3d;border-radius:50%;transform:rotate(-23.4deg)}
.service-art i:nth-child(2){transform:rotate(36deg)}
.service-art i:nth-child(3){transform:rotate(96deg)}
.service-art span{position:absolute;inset:0;display:grid;place-items:center;font:12px 'Google Sans Code'}
.art-content i{border-radius:0;inset:25px 55px;transform:rotate(-23.4deg)}
.art-content i:nth-child(2){transform:translate(28px,0) rotate(-23.4deg)}
.art-content i:nth-child(3){transform:translate(-28px,0) rotate(-23.4deg)}
.art-digital i{border-radius:0;inset:24px 15px;transform:none}
.art-digital i:nth-child(2){inset:39px 30px;transform:none}
.art-digital i:nth-child(3){inset:54px 45px;transform:none}
.method-teaser{background:#0a0a0a;color:var(--paper);padding-block:110px}
.method-layout{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:10%}
.method-layout h2{font-size:clamp(46px,5vw,80px)}
.method-layout p:not(.eyebrow){color:#c2c2c2;font-size:16px;max-width:450px;margin-top:26px;margin-bottom:32px}
.phase-line{color:#c2c2c2;margin-top:44px;font-size:9px;line-height:2.5;letter-spacing:.07em}
.method-orbit{position:relative;aspect-ratio:1;max-width:490px;width:100%;display:grid;place-items:center}
.method-orbit i{position:absolute;width:100%;height:60%;border:1px solid #9a9a9a;border-radius:50%;transform:rotate(-23.4deg)}
.method-orbit i:nth-child(2){width:70%;height:88%;transform:rotate(-23.4deg)}
.method-orbit i:nth-child(3){height:100%;width:100%;border-color:#9a9a9a50}
.method-orbit:after{content:'';position:absolute;width:11px;height:11px;left:4%;top:58%;border-radius:100%;background:#ff3b14;box-shadow:none}
.method-orbit span{font-family:var(--font-mono);font-size:120px;font-style:normal;color:#ffffff}
.faq-section{display:grid;grid-template-columns:1fr 1fr;gap:10%;padding-block:115px}
.faq h2{font-size:40px}
.faq details,.origin details{border-bottom:1px solid var(--line)}
.faq summary,.origin summary{list-style:none;cursor:pointer;padding:24px 35px 24px 0;font-size:16px;position:relative}
.faq summary::-webkit-details-marker,.origin summary::-webkit-details-marker{display:none}
.faq summary:after,.origin summary:after{content:'+';position:absolute;right:0;font-size:24px;line-height:1}
.faq details[open] summary:after,.origin details[open] summary:after{content:'−'}
.faq details>p,.origin details>p{font-size:15px;line-height:1.8;padding-bottom:24px}
.closing{padding-top:90px;padding-bottom:100px;border-top:1px solid var(--line)}
.closing-row{display:flex;align-items:center;justify-content:space-between;gap:35px}
.closing h2{font-size:clamp(45px,6.8vw,118px);line-height:1.05}
.round-cta{height:140px;width:140px;flex:0 0 auto;background:var(--ink);color:var(--paper);border-radius:0;display:grid;place-items:center;font-size:65px;transition:transform .3s,background .3s}
.round-cta:hover{transform:translate(2px,-2px);background:#3d3d3d}
.closing-bottom{display:flex;align-items:flex-end;justify-content:space-between;margin-top:45px}
.closing-bottom p{font-size:16px}
.site-footer{background:var(--night);color:var(--paper);overflow:hidden;padding-top:35px}
.footer-top{display:flex;align-items:center;justify-content:space-between;gap:25px}
.footer-top p{font-family:'Google Sans Code';font-size:9px;color:#c2c2c2;letter-spacing:.04em}
.footer-word{font-size:clamp(70px,13.35vw,260px);letter-spacing:-.08em;line-height:1.2;font-weight:600;padding:42px 3.5vw 25px;white-space:nowrap;display:flex;justify-content:center}
.footer-word span{font-weight:400;color:#ffffff}
.footer-bottom{display:flex;justify-content:space-between;gap:20px;border-top:1px solid #ffffff24;padding-top:25px;padding-bottom:60px;font-size:10px;color:#c2c2c2}
.preview-tools{position:fixed;z-index:25;bottom:13px;left:14px;display:flex;align-items:center;gap:9px;border:1px solid #d4d4d4;background:#f4f2eef5;color:#3d3d3d;border-radius:0;padding:8px 13px;font:9px 'Google Sans Code',monospace;box-shadow:0 2px 15px #0001}
.preview-tools a{border-left:1px solid #c2c2c2;padding:4px 0 4px 10px}
.preview-dot{width:5px;height:5px;border-radius:50%;background:#ff3b14}

.page-heading{padding-block:105px 75px}
.page-heading h1{max-width:1200px}
.page-heading>p:last-of-type{font-size:19px;max-width:630px;margin-top:30px;line-height:1.65}
.page-heading .button{margin-top:35px}
.work-index{padding-bottom:100px}
.filter-bar{display:flex;align-items:center;gap:10px;margin-bottom:35px;padding-block:20px;border-block:1px solid var(--line)}
.filter-bar button{border:1px solid #9a9a9a;border-radius:0;min-height:44px;padding:9px 20px;font-size:13px}
.filter-bar button[aria-pressed=true]{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.filter-bar sup{font:8px 'Google Sans Code';position:relative;top:-4px;margin-left:7px}
.filter-bar>span{margin-left:auto;color:var(--muted)}
.services-page{padding-bottom:60px}
.scope-note{display:grid;grid-template-columns:1fr 1fr;gap:35px;padding-top:60px;padding-bottom:100px}
.scope-note .eyebrow{grid-column:1/-1;margin:0}
.scope-note>p:last-child{align-self:center;max-width:450px;font-size:17px;line-height:1.8}
.process-list{padding-bottom:100px}
.phase{border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 5fr 2fr;padding:45px 0;gap:30px}
.phase>span{color:var(--muted)}
.phase .eyebrow{margin-bottom:15px}
.phase h2{font-size:clamp(30px,3.3vw,50px)}
.phase p:not(.eyebrow){font-size:17px;max-width:570px;margin:20px 0}
.phase-output{font-size:12px;display:block;margin-top:25px}
.phase-output span{margin-right:10px}
.phase-symbol{font-size:100px;line-height:1;text-align:right}
.studio-image{position:relative}
.studio-image img{width:100%;height:600px;object-fit:cover;object-position:center 45%;border-radius:0}
.studio-image>span{position:absolute;bottom:25px;left:calc(var(--gutter) + 25px);background:#0a0a0abb;color:var(--paper);padding:8px 12px}
.origin{display:grid;grid-template-columns:1fr 1fr;gap:10%;padding-block:110px}
.origin .large-body{font-size:26px;line-height:1.45;color:var(--ink)}
.origin p{margin-bottom:30px}
.origin details p{margin:0}
.digital-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:35px;padding-bottom:50px}
.digital-options article{border-top:1px solid var(--line);padding-top:25px}
.digital-options h2{font-size:30px;max-width:270px;margin-block:20px}
.digital-options p{font-size:15px;min-height:100px;max-width:340px}
.digital-icon{display:flex;position:relative;height:130px;align-items:center;justify-content:flex-start}
.digital-icon span{border:1px solid #6e6e6e;width:110px;height:75px;border-radius:0;position:absolute;transform:rotate(-23.4deg)}
.digital-icon span:nth-child(2){left:24px}
.digital-icon span:nth-child(3){left:48px}
.case-heading{padding-block:45px 65px}
.back-link{display:inline-block;padding:10px 0;margin-bottom:55px;color:var(--muted)}
.case-title{display:grid;grid-template-columns:1.5fr 1fr;gap:10%;align-items:end}
.case-title h1{font-size:clamp(49px,5.5vw,95px)}
.case-title>p{max-width:420px;font-size:18px}
.case-cover img{width:100%;height:auto;max-height:720px;object-fit:cover;border-radius:0}
.case-story{display:grid;grid-template-columns:1fr 2fr;gap:8%;padding-block:90px}
.case-story dl{font-size:14px}
.case-story dt{color:var(--muted);margin-top:25px}
.case-story dd{margin:5px 0 0}
.case-story h2{font-size:42px}
.case-story div>p:not(.eyebrow){font-size:17px;line-height:1.85;white-space:pre-line;margin:25px 0 55px}
.related-work{padding-bottom:100px}
.contact-layout{display:grid;grid-template-columns:1fr 1fr;gap:10%;padding-top:90px;padding-bottom:110px}
.contact-intro h1{font-size:clamp(50px,5.6vw,95px)}
.contact-intro>p:not(.eyebrow):not(.mono){font-size:17px;line-height:1.7;margin-top:30px}
.contact-orbit{margin:65px 0 45px;width:190px;height:110px;border:1px solid #6e6e6e;border-radius:50%;transform:rotate(-23.4deg);display:grid;place-items:center;position:relative}
.contact-orbit:before{content:'';position:absolute;inset:-35px 35px;border:1px solid #6e6e6e;border-radius:50%}
.contact-orbit span{font:20px 'Google Sans Code'}
.contact-intro .mono{color:var(--muted);line-height:2}
.form-notice{font-size:12px;border-left:2px solid #9a9a9a;padding-left:15px;margin-bottom:30px;line-height:1.7}
form label{display:flex;flex-direction:column;gap:10px;font-size:13px;margin-bottom:25px}
form label>span{color:var(--muted);font-size:11px;display:contents}
input,textarea,select{border:0;border-bottom:1px solid #9a9a9a;padding:14px 0;background:transparent;border-radius:0;width:100%;min-height:50px;color:var(--ink);font-size:15px}
input::placeholder,textarea::placeholder{color:#6e6e6e;opacity:1}
textarea{resize:vertical;min-height:120px}
.form-two{display:grid;grid-template-columns:1fr 1fr;gap:25px}
form .button{width:100%;margin-top:5px}
.form-success{padding:30px 0}
.form-success h2{font-size:52px}
.form-success>p:not(.eyebrow){font-size:17px;margin:25px 0;max-width:450px}
.success-orbit{height:100px;width:100px;border:1px solid #9a9a9a;border-radius:100%;display:grid;place-items:center;font-size:45px;margin-bottom:40px}

.intro{position:fixed;inset:0;z-index:100;background:var(--night);color:var(--paper);isolation:isolate;display:grid;place-items:center;overflow:hidden;transition:opacity 1s cubic-bezier(.22,.61,.36,1),filter 1s cubic-bezier(.22,.61,.36,1);filter:blur(0px)}
.intro.is-leaving{opacity:0;filter:blur(24px);pointer-events:none}
.intro-mark{position:absolute;top:40px;left:var(--gutter);font-size:11px}
.intro-word{text-align:center;color:var(--paper);font-size:clamp(38px,5.4vw,80px);letter-spacing:-.05em;line-height:1.05;animation:introText 4.5s both}
.intro-word em{color:#ffffff}
.intro-orbit{position:absolute;width:70vw;height:70vw;max-width:1000px;max-height:1000px;z-index:-1;animation:crossing 4.5s var(--ease) both}
.intro-orbit:before{content:'';position:absolute;inset:10%;background:radial-gradient(ellipse,transparent 53%,#ffb47135 55%,#ef764060 57%,transparent 65%);border-radius:50%;transform:rotate(-23.4deg) scaleY(.4);filter:blur(4px)}
.intro-orbit div{position:absolute;inset:20%;border:1px solid #e18a51;border-radius:50%;box-shadow:0 0 60px #f574253b,inset 0 0 45px #f5742522;transform:rotate(-23.4deg) scaleY(.4)}
.intro-bottom{position:absolute;left:var(--gutter);right:var(--gutter);bottom:35px;display:flex;justify-content:space-between;gap:20px;align-items:center}
.intro-bottom>span{color:#c2c2c2;font-size:9px}
.intro-bottom button{color:var(--paper);font-size:12px;border:1px solid #ffffff40;padding:12px 18px;border-radius:0}
.intro-bottom button span{margin-left:15px}
@keyframes crossing{0%{opacity:0;transform:scale(.25) rotate(-12deg)}
25%{opacity:1}
65%{transform:scale(1.1)}
100%{transform:scale(3.8);opacity:0}
}
@keyframes introText{0%{opacity:0;transform:translateY(8px)}
8%,100%{opacity:1;transform:none}
}

@media(min-width:1600px){.hero-copy{margin-top:10vh}
.hero-description{font-size:18px}
.hero{min-height:900px}
}

@media(max-width:1050px){.desktop-nav{gap:22px;margin-right:0}
.brand img{width:170px}
.site-header{gap:22px}
.hero{min-height:830px}
.hero h1{font-size:76px}
.hero-copy{max-width:580px;margin-top:70px}
.hero-description{max-width:340px}
.intro-statement{grid-template-columns:1fr 2fr}
.project-meta{align-items:flex-start;flex-direction:column;gap:8px}
.project-meta .mono{text-align:left}
.service-content{padding-right:0}
.round-cta{width:110px;height:110px}
.footer-top p{max-width:260px;text-align:center}
.contact-layout{gap:6%}
.contact-intro h1{font-size:62px}
.digital-options{gap:25px}
}

@media(max-width:760px){html{scroll-padding-top:25px}
.site-header{height:80px;gap:15px}
.brand img{width:160px}
.desktop-nav{display:none}
.header-cta{margin-left:auto;font-size:11px;padding:7px 13px;gap:14px;min-height:42px}
.menu-toggle{display:block;margin-right:-12px}
.hero{height:auto;min-height:900px;max-height:none}
.hero-top{padding-top:108px;font-size:8px}
.hero-top>span:last-child{display:none}
.hero-copy{margin:45px var(--gutter) 355px}
.hero h1{font-size:clamp(61px,11.5vw,90px);max-width:620px}
.hero-description{max-width:360px;font-size:15px}
.hero-copy .eyebrow{font-size:8px;letter-spacing:.04em;margin-bottom:25px}
.hero-shade{background:linear-gradient(180deg,#0a0a0a 0%,#0a0a0aee 30%,#0a0a0a88 51%,transparent 67%,#0a0a0a55 100%)}
.hero-bottom{bottom:22px;padding-top:17px;gap:10px}
.hero-bottom>.mono{display:none}
.hero-bottom .scroll-link{font-size:9px;gap:20px}
.motion-control{font-size:8px;gap:8px}
.orbit-caption{bottom:110px;font-size:8px}
.orbit-caption:before{height:22px}
.intro-statement{grid-template-columns:1fr;gap:0;padding-block:65px}
.intro-statement h2{font-size:39px}
.intro-statement div>p{font-size:16px;line-height:1.75;margin-top:25px}
.work-section{padding-top:65px;padding-bottom:30px}
.section-heading{display:block;margin-bottom:30px}
.section-heading h2{font-size:42px}
.section-heading>.text-link{margin-top:20px}
.section-heading .eyebrow{font-size:9px}
.project-grid,.project-grid--large{grid-template-columns:1fr;gap:40px}
.project-image{aspect-ratio:1.15}
.project-meta{flex-direction:row;align-items:center}
.project-meta :is(h2,h3){font-size:20px}
.project-meta .mono{text-align:right;font-size:8px;max-width:120px}
.project-desc{font-size:14px}
.work-note{gap:25px;margin-top:40px;padding-bottom:30px}
.work-note>.mono{font-size:8px;max-width:130px}
.work-note p{font-size:12px;max-width:180px}
.services-section{padding-block:35px 65px}
.section-side{margin-top:20px}
.service-row summary{gap:14px;padding:26px 0}
.service-row summary h3{font-size:26px;letter-spacing:-.04em}
.service-num{width:32px;font-size:9px}
.service-plus{font-size:26px;width:24px;flex-shrink:0}
.service-content{grid-template-columns:1fr;gap:15px;padding:0 0 30px 46px}
.service-art{display:none}
.service-content .service-lead{font-size:22px}
.service-content p{font-size:15px}
.method-teaser{padding-block:65px}
.method-layout{grid-template-columns:1fr;gap:45px}
.method-orbit{width:70%;max-width:330px;justify-self:center}
.method-orbit span{font-size:100px}
.method-layout h2{font-size:50px}
.method-layout p:not(.eyebrow){font-size:15px}
.phase-line{margin-top:30px;font-size:8px}
.faq-section{grid-template-columns:1fr;gap:25px;padding-block:65px}
.faq-section h2{font-size:38px}
.faq summary{font-size:15px;padding-block:23px}
.closing{padding-block:65px}
.closing h2{font-size:clamp(35px,7vw,56px)}
.closing-row{gap:12px}
.round-cta{width:67px;height:67px;font-size:36px}
.closing-bottom{display:block;margin-top:28px}
.closing-bottom p{font-size:15px}
.closing-bottom .text-link{margin-top:15px}
.footer-top{align-items:flex-start;gap:15px}
.footer-top p{display:none}
.footer-top .mono{font-size:8px}
.footer-word{padding-block:35px 22px;font-size:13.2vw}
.footer-bottom{flex-wrap:wrap;gap:16px;font-size:9px;padding-bottom:70px}
.footer-bottom a:nth-child(2){order:3;width:100%}
.page-heading{padding-top:60px;padding-bottom:45px}
.page-heading h1{font-size:clamp(43px,8.5vw,68px)}
.page-heading>p:last-of-type{font-size:17px;margin-top:25px}
.filter-bar{flex-wrap:wrap;gap:8px}
.filter-bar button{font-size:12px;padding:8px 15px}
.filter-bar>span{width:100%;margin-top:10px;font-size:9px}
.work-index{padding-bottom:65px}
.services-page{padding-bottom:20px}
.scope-note{grid-template-columns:1fr;padding-block:45px 65px;gap:25px}
.scope-note h2{font-size:38px}
.scope-note>p:last-child{font-size:16px}
.phase{grid-template-columns:25px 1fr;gap:15px;padding-block:30px}
.phase h2{font-size:30px}
.phase p:not(.eyebrow){font-size:16px}
.phase-symbol{display:none}
.process-list{padding-bottom:50px}
.studio-image img{height:420px}
.studio-image>span{font-size:8px;max-width:240px;left:calc(var(--gutter) + 15px);bottom:15px}
.origin{grid-template-columns:1fr;padding-block:65px;gap:35px}
.origin h2{font-size:43px}
.origin .large-body{font-size:22px}
.origin summary{font-size:14px}
.digital-options{grid-template-columns:1fr;gap:25px}
.digital-options p{min-height:auto}
.digital-options .text-link{margin-top:15px}
.digital-icon{height:125px}
.case-heading{padding-block:30px 40px}
.back-link{margin-bottom:35px}
.case-title{grid-template-columns:1fr;gap:25px}
.case-title h1{font-size:50px}
.case-title>p{font-size:16px}
.case-cover{padding-inline:0}
.case-cover img{border-radius:0;height:390px}
.case-story{grid-template-columns:1fr;gap:45px;padding-block:50px}
.case-story aside dl{display:flex;flex-wrap:wrap;gap:8px 15px}
.case-story dt{margin:0}
.case-story dd{margin:0 12px 0 0}
.case-story h2{font-size:34px}
.case-story div>p:not(.eyebrow){font-size:16px;margin-bottom:35px}
.related-work{padding-bottom:60px}
.contact-layout{grid-template-columns:1fr;gap:35px;padding-block:55px 65px}
.contact-intro h1{font-size:60px}
.contact-intro>p:not(.eyebrow):not(.mono){font-size:16px}
.contact-orbit,.contact-intro>.mono{display:none}
.form-two{gap:20px}
form label{font-size:12px}
input,textarea,select{font-size:16px}
.form-success h2{font-size:42px}
.intro-bottom{bottom:25px}
.intro-bottom>span{font-size:8px;max-width:150px}
.intro-orbit{width:150vw;height:150vw}
.intro-word{font-size:46px}
.intro-mark{top:30px}
.preview-tools{font-size:8px;padding:7px 11px;bottom:10px;left:10px}
}

@media(max-width:360px){.brand img{width:140px}
.header-cta{padding:6px 10px}
.hero h1{font-size:55px}
.hero-copy .eyebrow{font-size:7px}
.hero-top{font-size:7px}
.service-row summary h3{font-size:23px}
.form-two{grid-template-columns:1fr;gap:0}
.closing h2{font-size:31px}
.project-meta{align-items:flex-start}
.hero-bottom .scroll-link{font-size:8px;gap:12px}
}



/* Navigation remains available throughout the editorial journey. */
.site-header{position:sticky;top:0}

.site-header.on-dark{position:fixed;transition:background .25s,color .25s,border-color .25s}

.site-header.on-dark.is-scrolled{background:var(--paper);color:var(--ink);border-color:var(--line);backdrop-filter:none}

.site-header.on-dark.is-scrolled .brand img{filter:none}

.site-header.on-dark.is-scrolled .header-cta:hover{background:var(--ink);color:var(--paper)}


/* H23 v2: editorial typography, precise geometry and Safelight punctuation. */
body{-webkit-font-smoothing:antialiased}
h1,h2{text-transform:uppercase;text-wrap:balance}
h3{font-weight:600}
em{font-style:normal}
.mono,.eyebrow{font-weight:500;letter-spacing:var(--tr-wider);font-size:10px}
.eyebrow{text-transform:uppercase}
.desktop-nav a,.header-cta,.button,.filter-bar button{font-weight:600;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.desktop-nav a:after{background:var(--orange)}
.desktop-nav{gap:32px;margin-right:3vw}
.header-cta{padding:14px 20px;min-height:44px}
.button{padding:16px 24px;min-height:52px;gap:24px}
.button-light:hover{background:var(--h23-bone)}
.button::before{content:'';width:7px;height:7px;flex:0 0 7px;background:var(--orange)}
.button span{margin-left:auto}
.mobile-menu nav a{text-transform:uppercase;font-weight:700;font-size:clamp(30px,8vw,52px)}
.mobile-menu nav a:last-child:before{content:'';display:inline-block;width:8px;height:8px;background:var(--orange);margin-right:12px}
.hero-copy{max-width:820px;margin-top:72px}
.hero h1{font-size:clamp(56px,6.3vw,100px);font-weight:700;line-height:.98;letter-spacing:-.04em;text-wrap:initial}
.hero h1 em{color:var(--h23-white);font-size:1em}
.hero-description{max-width:390px;color:var(--h23-ash)}
.small-orbit{width:7px;height:7px;background:var(--orange);border:0;border-radius:0;transform:none}
.brand-stop{display:inline-block;width:.13em;height:.13em;margin-left:.09em;background:var(--orange);vertical-align:baseline}
.hero-copy .eyebrow{font-size:10px;letter-spacing:.12em}
.hero-top,.orbit-caption,.motion-control,.scroll-link{font-size:10px}
.intro-statement h2{font-size:clamp(30px,3.5vw,56px)}
.section-heading h2{font-size:clamp(32px,3.6vw,56px)}
.section-heading h2 em{white-space:normal}
.project-meta :is(h2,h3){font-weight:600;text-transform:none}
.project-meta .mono,.image-index{font-size:10px}
.image-go{border-radius:0;background:var(--night);color:var(--h23-white);width:48px;height:48px}
.image-index{background:var(--night);padding:8px 12px}
.service-row summary h3{font-weight:600;font-size:clamp(26px,3vw,48px)}
.service-content li:before{content:'';display:inline-block;width:3px;height:3px;background:currentColor;vertical-align:middle}
.method-layout h2{font-size:clamp(38px,4.2vw,64px)}
.method-orbit:after{border-radius:0;width:8px;height:8px}
.phase-line{font-size:10px}
.closing h2{font-size:clamp(32px,4.8vw,80px);max-width:1100px}
.round-cta{width:104px;height:104px;font-size:52px;border:1px solid var(--ink)}
.footer-word{letter-spacing:-.04em;font-size:12vw;font-weight:700}
.footer-word span{font-weight:700;color:inherit}
.footer-word:after{content:'';width:1.25vw;height:1.25vw;background:var(--orange);align-self:flex-end;margin:0 0 .25em .08em}
.footer-top p,.footer-bottom,.preview-tools{font-size:10px}
.preview-tools{background:var(--paper);box-shadow:none;border-radius:0;padding:6px 12px}
.preview-dot{border-radius:0;background:var(--orange)}
.page-heading h1{font-size:clamp(44px,6vw,96px);overflow-wrap:normal}
.case-title h1,.contact-intro h1{font-size:clamp(44px,5vw,80px)}
.contact-intro h1{font-size:clamp(38px,4.3vw,72px)}
.filter-bar button{border-radius:0}
.form-notice{border-left:1px solid var(--orange)}
.success-orbit{border-radius:0}
.intro-word{font-weight:700;text-transform:uppercase;font-size:clamp(32px,5vw,80px);letter-spacing:-.04em;line-height:1.08}
.intro-word em{color:var(--h23-white)}
.intro-orbit:before{background:none;filter:none;border:1px solid var(--h23-graphite)}
.intro-orbit div{border-color:var(--h23-ash);box-shadow:none}
.intro-orbit div:after{content:'';position:absolute;left:0;top:50%;width:8px;height:8px;background:var(--orange)}
.intro-bottom button{border-radius:0;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;min-height:44px}
.intro-bottom>span{font-size:10px}
@media(max-width:1050px){
 .desktop-nav{gap:20px;margin-right:0}.desktop-nav a{font-size:10px}
 .hero h1{font-size:clamp(54px,6.4vw,68px)}
 .hero-copy{max-width:650px}.contact-intro h1{font-size:46px}
}
@media(max-width:760px){
 html{scroll-padding-top:96px}
 .header-cta{font-size:10px;padding:10px 12px;gap:14px}
 .hero{min-height:900px}
 .hero-copy{margin-top:48px;margin-bottom:360px}
 .hero h1{font-size:clamp(38px,9.6vw,70px)}
 .hero-copy .eyebrow{font-size:9px;letter-spacing:.04em}
 .hero-top{font-size:9px}.hero-description{max-width:340px;font-size:15px}
 .hero-bottom .scroll-link,.motion-control,.orbit-caption{font-size:9px}
 .intro-statement h2,.section-heading h2,.faq-section h2,.scope-note h2,.origin h2{font-size:clamp(28px,7.4vw,44px)}
 .method-layout h2{font-size:clamp(34px,8.2vw,48px)}
 .project-meta .mono{font-size:10px;max-width:145px}
 .phase-line{font-size:9px}.phase h2{font-size:27px}
 .closing-row{align-items:flex-end}.closing h2{font-size:clamp(26px,6vw,44px);text-wrap:initial}
 .round-cta{width:48px;height:48px;font-size:28px}
 .footer-bottom{font-size:10px}.footer-top .mono{font-size:9px}
 .page-heading h1,.case-title h1{font-size:clamp(30px,7.7vw,56px);text-wrap:initial}
 .contact-intro h1{font-size:clamp(38px,9.5vw,58px)}
 .form-success h2{font-size:32px}
 .intro-word{font-size:clamp(28px,7.5vw,52px)}
 .preview-tools{font-size:9px}
}
@media(max-width:360px){
 .brand img{width:128px}.header-cta{padding:10px;font-size:9px}
 .hero h1{font-size:34px}.hero-copy .eyebrow{font-size:8px}
 .project-meta{flex-direction:column;align-items:flex-start}.project-meta .mono{text-align:left}
 .closing h2{font-size:24px}.closing-row{gap:8px}
}

@media(min-width:761px) and (max-width:1050px){
 .digital-options h2{font-size:24px}
}
@media(max-width:360px){
 .site-header{gap:8px}
 .page-heading h1,.case-title h1{font-size:26px}
 .closing-row{flex-direction:column;align-items:flex-start;gap:24px}
 .closing h2{font-size:26px}
}

/* Event horizon: user-driven camera approach, with native document scrolling. */
.horizon-journey{position:relative;background:var(--night)}
.horizon-home .horizon-journey .hero{margin-top:0;overflow:hidden}
.horizon-journey.has-horizon-motion{height:280svh}
.horizon-journey.has-horizon-motion .hero{position:sticky;top:0;height:100svh;min-height:0;max-height:none}
.hero{--copy-opacity:1;--copy-offset:0px;--shade-opacity:1;--arrival-opacity:0;--journey-progress:0}
.horizon-fallback{position:absolute;inset:0;z-index:-3;width:100%;height:100%;object-fit:cover}
.has-horizon-renderer .horizon-fallback{visibility:hidden}
.hero-copy{opacity:var(--copy-opacity);transform:translateY(var(--copy-offset));will-change:opacity,transform}
.hero-shade{opacity:var(--shade-opacity);background:linear-gradient(90deg,#0a0a0a 0%,#0a0a0aed 30%,#0a0a0a66 49%,transparent 65%)}
.hero-top,.orbit-caption{opacity:var(--copy-opacity)}
.hero-bottom{z-index:3}
.hero-bottom>.journey-instruction{display:flex;align-items:center;gap:24px}
.journey-track{width:64px;height:1px;background:var(--h23-iron);display:block;overflow:hidden}
.journey-track>span{display:block;height:1px;background:var(--orange);transform:scaleX(var(--journey-progress));transform-origin:left}
.journey-message{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;opacity:var(--arrival-opacity);pointer-events:none;text-align:center;padding:var(--gutter)}
.journey-message .eyebrow{color:var(--h23-ash);font-size:10px;letter-spacing:.18em;margin-bottom:32px}
.journey-headline{font-size:clamp(48px,7.5vw,120px);font-weight:700;line-height:.96;letter-spacing:-.04em;text-transform:uppercase;color:var(--paper)}
.horizon-journey:not(.has-horizon-motion) .journey-instruction{visibility:hidden}
@media(max-width:760px){
 .horizon-journey.has-horizon-motion{height:240svh}
 .horizon-journey.has-horizon-motion .hero-copy{margin-top:38px;margin-bottom:0}
 .horizon-journey.has-horizon-motion .hero-description{margin:24px 0;font-size:14px;max-width:340px}
 .horizon-journey.has-horizon-motion .hero-top{padding-top:108px}
 .hero-shade{background:linear-gradient(180deg,#0a0a0a 0%,#0a0a0af2 32%,#0a0a0a77 53%,transparent 65%)}
 .horizon-fallback{object-position:76% center}
 .hero-bottom>.journey-instruction{display:flex}
 .journey-headline{font-size:clamp(36px,9vw,64px)}
 .journey-message .eyebrow{font-size:9px;letter-spacing:.1em}
 .orbit-caption{bottom:100px}
}
@media(max-height:780px) and (min-width:761px){
 .has-horizon-motion .hero-copy{margin-top:36px}
 .has-horizon-motion .hero h1{font-size:clamp(56px,5.8vw,82px)}
 .has-horizon-motion .hero-description{margin:20px 0}
}
@media(max-height:760px) and (max-width:760px){
 .horizon-journey.has-horizon-motion .hero-copy{margin-top:24px}
 .horizon-journey.has-horizon-motion .hero-top{padding-top:98px}
 .horizon-journey.has-horizon-motion .hero h1{font-size:clamp(32px,8.6vw,56px)}
 .horizon-journey.has-horizon-motion .hero-copy .eyebrow{margin-bottom:18px}
 .horizon-journey.has-horizon-motion .hero-description{margin:18px 0;max-width:300px}
 .horizon-journey.has-horizon-motion .hero .button{min-height:46px;padding:12px 18px;font-size:10px}
}


.hero-copy.is-withdrawn{pointer-events:none}

/* Igual que `compact` en horizon.js: teléfonos solo en horizontal; pantallas anchas desde 640 px. */
@media(max-height:500px),(min-width:761px) and (max-height:640px){
 .horizon-journey.has-horizon-motion{height:auto}
 .horizon-journey.has-horizon-motion .hero{position:relative;height:auto;min-height:830px}
}

/* Keep scene controls clear of the local-review toolbar. */
.hero-bottom{bottom:64px}
@media(max-width:760px){
 .hero-bottom{bottom:56px}
 .orbit-caption{display:none}
}

/* =========================================================================
   ACENTO DE MARCA — Safelight #FF3B14 (revisión 20/09/2026)

   Un solo acento por composición, según el design system: "Orange is
   punctuation", "signal, never decoration". Usos permitidos por el sistema:
   un CTA, un indicador de estado, el subrayado del elemento activo, un
   marcador de llamada, el anillo de foco y una métrica en el umbral.

   Por eso el color entra como marca y como estado, no como color de texto
   corrido: sobre crema el Safelight da 3,18:1 y no alcanza el mínimo de
   4,5:1 para texto pequeño. Donde hace falta texto en acento, se usa sobre
   negro (5,55:1) o en piezas grandes (≥18,66 px en negrita, 3:1).

   El tono profundo #C9290A del sistema es --accent-hover, no un segundo
   acento; no se usa aquí. La regla previa .text-link:hover que lo traía
   quedó neutralizada más arriba.
   ========================================================================= */

/* Marcador de sección: cada bloque abre con un cuadro Safelight. La portada
   y el mensaje de llegada ya traen sus propias marcas. */
.eyebrow:before{content:'';display:inline-block;width:7px;height:7px;background:var(--orange);margin-right:11px;vertical-align:1px}
.hero-copy .eyebrow:before,.journey-message .eyebrow:before{display:none}

::selection{background:var(--orange);color:var(--h23-white)}

/* Signos: los símbolos de acordeón, de lista y de entregable. Son elementos
   gráficos o tipografía grande, no texto de lectura. */
.faq summary:after,.origin summary:after{color:var(--orange)}
.service-row[open] .service-plus,.service-row summary:hover .service-plus{color:var(--orange)}
.service-content li:before,.phase-output span{color:var(--orange)}

/* La figura frontal de cada diagrama. */
.digital-icon span:nth-child(3),.service-art i:nth-child(3){border-color:var(--orange)}

/* Estados. Sobre superficie clara el sistema pide inversión: fondo a negro,
   primer plano a Safelight o crema. Nunca un panel naranja. */
.text-link:hover{border-bottom-color:var(--orange)}
.text-link:hover span{color:var(--orange)}
.project-card:hover .project-meta :is(h2,h3){color:var(--orange)}
.project-card:hover .image-go{background:var(--ink);color:var(--orange)}
.round-cta:hover{background:var(--ink);color:var(--orange)}
.filter-bar button:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.filter-bar button[aria-pressed=true]{box-shadow:inset 0 -3px 0 0 var(--orange)}
.back-link:hover,.footer-top a:hover,.footer-bottom a:hover{text-decoration:underline;text-decoration-color:var(--orange);text-decoration-thickness:2px;text-underline-offset:5px}
input:focus,textarea:focus,select:focus{border-bottom-color:var(--orange)}

/* =========================================================================
   VELO SOBRE LA ESCENA — legibilidad del encabezado y de la barra inferior

   Durante el acercamiento el velo lateral del hero se desvanece y el texto
   crema queda sobre la parte más brillante del disco: medido, el botón
   "Hablemos" bajaba a 2,86:1 y "Explorar el trabajo" a 3,38:1. El sistema
   admite justamente esto: un velo negro al 70 % bajo un titular sobre
   fotografía. Cada degradado viaja con su barra, así que la escena sigue
   limpia en el resto del encuadre.
   ========================================================================= */
.site-header.on-dark:before{content:'';position:absolute;inset:0 0 auto;height:190%;z-index:-1;pointer-events:none;opacity:1;transition:opacity .25s;background:linear-gradient(180deg,#0a0a0ae0 0%,#0a0a0ab8 48%,#0a0a0a00 100%)}
/* Al final del recorrido el encabezado se vuelve claro (is-scrolled): el velo
   se retira con él para no oscurecer las secciones sobre crema. */
.site-header.on-dark.is-scrolled:before{opacity:0}
.hero-bottom:before{content:'';position:absolute;inset:-58px calc(var(--gutter) * -1) -26px;z-index:-1;pointer-events:none;background:linear-gradient(0deg,#0a0a0ae6 0%,#0a0a0ac4 46%,#0a0a0a00 100%)}

/* The same scene controls on touch and desktop, above the mobile navigation. */
.experience-controls{display:flex;align-items:center;gap:18px}
.intro-replay{min-height:44px;padding:8px 0;color:var(--paper);font:11px var(--font-mono);white-space:nowrap}
.intro-replay:hover{text-decoration:underline;text-underline-offset:5px}
@media(max-width:760px){
 .hero-bottom{display:grid;grid-template-columns:1fr auto;align-items:end}
 .hero-bottom>.journey-instruction{grid-column:1/-1;grid-row:1;gap:12px;font-size:10px;letter-spacing:.04em}
 .hero-bottom .journey-track{width:36px}
 .experience-controls{flex-direction:column;gap:0;align-items:end}
 .experience-controls .motion-control,.intro-replay{min-height:44px}
 .hero-bottom>.scroll-link{min-height:44px;align-items:center}
}
.horizon-home{background:var(--night)}
.horizon-home #site-shell{background:transparent}
.horizon-home main>section:not(.method-teaser):not(.closing-dark){background:var(--paper)}
@media(max-width:760px) and (min-height:501px){
 /* Reduced motion must keep the activation button in the first viewport too. */
 .horizon-home .horizon-journey:not(.has-horizon-motion) .hero{height:100svh;min-height:0;max-height:none}
 .horizon-home .horizon-journey:not(.has-horizon-motion) .hero-copy{margin:32px var(--gutter) 0}
 .horizon-home .horizon-journey:not(.has-horizon-motion) .hero-description{font-size:14px;line-height:1.65;margin:18px 0;max-width:340px}
 .horizon-home .horizon-journey:not(.has-horizon-motion) .hero-copy .eyebrow{margin-bottom:18px}
 .horizon-home .horizon-journey:not(.has-horizon-motion) .hero-bottom>.journey-instruction{display:none}
}
@media(max-width:760px) and (min-height:501px) and (max-height:650px){
 .horizon-home .horizon-journey .hero-top{display:none}
 .horizon-home .horizon-journey .hero-copy,.horizon-home .horizon-journey:not(.has-horizon-motion) .hero-copy{margin:0 var(--gutter);padding-top:94px}
 .horizon-home .horizon-journey .hero-copy .eyebrow{margin-bottom:14px}
 .horizon-home .horizon-journey .hero-description,.horizon-home .horizon-journey:not(.has-horizon-motion) .hero-description{margin:14px 0;line-height:1.5}
 .horizon-home .horizon-journey .hero-copy .button{font-size:11px;gap:18px;padding:12px 14px;min-height:46px}
}
