/* Crystal Sign Media — public site. Tokens come from the active template (inline :root). */
*,*::before,*::after{box-sizing:border-box}
[hidden]:not(.mmenu):not(.lightbox){display:none!important}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:96px}
body{margin:0;background:var(--c-bg);color:var(--c-text);font:400 clamp(15px,.35vw + 14px,17px)/1.6 var(--f-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}
img,video,svg{display:block;max-width:100%}
img{height:auto}
a{color:inherit;text-decoration-thickness:1px;text-underline-offset:3px}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--c-accent);outline-offset:3px;border-radius:4px}
::selection{background:var(--c-primary);color:#fff}
.sr,.sr-only-desktop{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:fixed;left:16px;top:-60px;z-index:200;background:var(--c-text);color:var(--c-bg);padding:10px 16px;border-radius:8px}
.skip:focus{top:16px}
.wrap{width:100%;max-width:1400px;margin-inline:auto;padding-inline:clamp(16px,4vw,56px)}
.narrow{max-width:880px}
.center{text-align:center}
.muted,.fine{color:var(--c-muted)}
.fine{font-size:.82rem}
main{display:block;min-height:60vh}
main:focus{outline:none}

/* ---------- type ---------- */
.display,.h2,.h3,.h4,.hero-title,h1,h2,h3{font-family:var(--f-head);font-weight:var(--w-head);letter-spacing:var(--track);line-height:1.02;margin:0;text-wrap:balance}
.display,.hero-title{font-size:calc(clamp(2.5rem,6.2vw,6.4rem)*var(--scale))}
.h2{font-size:calc(clamp(2rem,4.2vw,3.9rem)*var(--scale));line-height:1.04}
.h3{font-size:calc(clamp(1.4rem,2vw,1.9rem)*var(--scale));line-height:1.15}
.h4{font-size:calc(clamp(1.1rem,1.3vw,1.3rem)*var(--scale));line-height:1.25}
.lead{font-size:clamp(1.05rem,.6vw + .9rem,1.3rem);line-height:1.55;color:var(--c-muted);max-width:62ch;margin:1.2rem 0 0}
.eyebrow{display:inline-flex;align-items:center;gap:.6em;margin:0 0 1.1rem;font:600 .74rem/1 var(--f-body);letter-spacing:.16em;text-transform:uppercase;color:var(--c-muted)}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--gradient);border-radius:2px}
.grad{background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}
.prose{max-width:72ch}
.prose h2{font-size:1.6rem;margin:2.2rem 0 .8rem}.prose h3{font-size:1.2rem;margin:1.6rem 0 .6rem}
.prose p,.prose li{color:var(--c-text);opacity:.9}
.prose a{color:var(--c-primary)}
[data-mode=dark] .prose a{color:var(--c-accent)}
.placeholder,mark{background:color-mix(in srgb,var(--c-accent) 22%,transparent);color:inherit;padding:0 .3em;border-radius:4px}
.ic{width:1.1em;height:1.1em;flex:none}

/* ---------- buttons ---------- */
.btn{--h:52px;display:inline-flex;align-items:center;gap:.7em;height:var(--h);padding:0 1.5em;border-radius:999px;border:1px solid transparent;font:600 .95rem/1 var(--f-body);text-decoration:none;cursor:pointer;white-space:nowrap;transition:transform .35s cubic-bezier(.2,.8,.2,1),background .3s,color .3s,border-color .3s,box-shadow .3s;will-change:transform}
.btn .ic{transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.btn:hover .ic{transform:translateX(4px)}
.btn-sm{--h:42px;padding:0 1.15em;font-size:.88rem}
.btn-primary{background:var(--c-primary);color:#fff;box-shadow:0 10px 30px -12px color-mix(in srgb,var(--c-primary) 70%,transparent)}
.btn-primary:hover{background:color-mix(in srgb,var(--c-primary) 82%,var(--c-secondary))}
.btn-ghost{border-color:var(--c-line);background:transparent;color:inherit}
.btn-ghost:hover{border-color:currentColor}
.btn-light{background:#fff;color:#141218}
.btn-light:hover{background:#f1eef3}
.btn-wa,.btn-wa-lg{background:#1f9d55;color:#fff;border-radius:999px}
.btn-wa:hover,.btn-wa-lg:hover{background:#178246}
.btn-wa-lg{--h:52px;padding:0 1.5em}
[data-buttons=square] .btn{border-radius:0}
[data-buttons=soft] .btn{border-radius:10px}
[data-buttons=underline] .btn-primary,[data-buttons=underline] .btn-ghost{background:none;border:0;border-bottom:2px solid currentColor;border-radius:0;padding:0 .1em;box-shadow:none;color:inherit;height:auto;padding-bottom:.4em}
[data-buttons=underline] .btn-primary{border-image:var(--gradient) 1}
.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:2rem;align-items:center}
.icon-btn{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--c-line);background:transparent;cursor:pointer;color:inherit}
.icon-btn .ic{width:18px;height:18px}

/* ---------- header ---------- */
.site-header{position:fixed;inset:0 0 auto;z-index:60;transition:background .4s,box-shadow .4s,transform .45s cubic-bezier(.2,.8,.2,1),color .3s;color:var(--c-text)}
.hdr{display:flex;align-items:center;gap:24px;height:84px}
.brand{display:flex;align-items:center;flex:none}
.brand img{height:36px;width:auto}
.logo-light{display:none}
.primary{margin-inline:auto}
.primary>ul{display:flex;gap:4px;list-style:none;margin:0;padding:0}
.primary li{position:relative}
.primary a{display:block;padding:10px 14px;border-radius:999px;font-weight:500;font-size:.93rem;text-decoration:none;opacity:.86;transition:opacity .2s,background .2s}
.primary a:hover,.primary a[aria-current]{opacity:1}
.primary a[aria-current]{background:color-mix(in srgb,currentColor 9%,transparent)}
.sub{position:absolute;top:100%;left:0;min-width:220px;list-style:none;margin:0;padding:8px;background:var(--c-bg);color:var(--c-text);border:1px solid var(--c-line);border-radius:14px;box-shadow:0 30px 60px -30px rgba(0,0,0,.35);opacity:0;visibility:hidden;transform:translateY(6px);transition:.25s}
.has-sub:hover .sub,.has-sub:focus-within .sub{opacity:1;visibility:visible;transform:none}
.sub a{border-radius:8px}
.hdr-actions{display:flex;align-items:center;gap:10px}
.menu-btn{display:none;width:46px;height:46px;border-radius:50%;border:1px solid var(--c-line);background:transparent;cursor:pointer;place-items:center;color:inherit}
.burger{display:grid;gap:6px;width:18px}.burger i{display:block;height:2px;background:currentColor;border-radius:2px;transition:transform .35s}
.menu-open .burger i:first-child{transform:translateY(4px) rotate(45deg)}.menu-open .burger i:last-child{transform:translateY(-4px) rotate(-45deg)}
.site-header.is-solid{background:color-mix(in srgb,var(--c-bg) 86%,transparent);backdrop-filter:saturate(1.4) blur(16px);-webkit-backdrop-filter:saturate(1.4) blur(16px);box-shadow:0 1px 0 var(--c-line)}
.site-header.is-hidden{transform:translateY(-100%)}
[data-mode=dark] .logo-dark{display:none}[data-mode=dark] .logo-light{display:block}
/* transparent header over dark imagery */
.has-dark-hero[data-header=transparent] .site-header:not(.is-solid),.has-dark-hero[data-header=pill] .site-header:not(.is-solid),.has-dark-hero[data-header=minimal] .site-header:not(.is-solid),.has-dark-hero[data-header=split] .site-header:not(.is-solid){color:#fff}
.has-dark-hero .site-header:not(.is-solid) .logo-dark{display:none}.has-dark-hero .site-header:not(.is-solid) .logo-light{display:block}
.has-dark-hero .site-header:not(.is-solid) .icon-btn,.has-dark-hero .site-header:not(.is-solid) .menu-btn{border-color:rgba(255,255,255,.3)}
[data-header=solid] .site-header{background:var(--c-bg);box-shadow:0 1px 0 var(--c-line)}
[data-header=solid] .has-dark-hero .site-header{color:var(--c-text)}
[data-header=pill] .site-header{padding-top:14px}
[data-header=pill] .hdr{height:68px;border-radius:999px;padding-inline:14px 10px;max-width:1240px;background:color-mix(in srgb,var(--c-bg) 70%,transparent);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid var(--c-line);color:var(--c-text)}
[data-header=pill] .site-header.is-solid{background:transparent;box-shadow:none;backdrop-filter:none}
.has-dark-hero[data-header=pill] .site-header:not(.is-solid) .hdr{background:rgba(10,8,14,.28);border-color:rgba(255,255,255,.16);color:#fff}
[data-header=split] .hdr{display:grid;grid-template-columns:1fr auto 1fr}
[data-header=split] .brand{grid-column:2;grid-row:1;justify-self:center}
[data-header=split] .primary{grid-column:1;grid-row:1;margin:0}
[data-header=split] .primary>ul>li:nth-child(n+5){display:none}
[data-header=split] .hdr-actions{grid-column:3;justify-self:end}
[data-header=split] .menu-btn,[data-header=minimal] .menu-btn{display:grid}
[data-header=minimal] .primary{display:none}
[data-header=minimal] .hdr-actions{margin-left:auto}
body.menu-open{overflow:hidden}
body.menu-open .site-header{background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;color:#fff!important;transform:none!important}
body.menu-open .site-header .logo-dark{display:none}body.menu-open .site-header .logo-light{display:block}
[data-mode=light] .mmenu{color:#fff}

.mmenu{position:fixed;inset:0;z-index:55;background:var(--c-invert-bg);color:var(--c-invert-text);padding-top:110px;overflow:auto;clip-path:inset(0 0 100% 0);transition:clip-path .6s cubic-bezier(.7,0,.2,1)}
[data-mode=dark] .mmenu{background:#0b0a0e;color:#fff}
.mmenu.open{clip-path:inset(0)}
.mmenu-in{display:grid;grid-template-columns:1.4fr 1fr;gap:48px;padding-bottom:48px}
.mm-main{list-style:none;margin:0;padding:0}
.mm-main a{display:block;font:var(--w-head) clamp(2.2rem,7vw,4.6rem)/1.08 var(--f-head);letter-spacing:var(--track);text-decoration:none;padding:.08em 0;opacity:0;transform:translateY(30px);transition:opacity .5s,transform .6s cubic-bezier(.2,.8,.2,1),color .2s}
.mmenu.open .mm-main a{opacity:1;transform:none}
.mm-main li:nth-child(2) a{transition-delay:.04s}.mm-main li:nth-child(3) a{transition-delay:.08s}.mm-main li:nth-child(4) a{transition-delay:.12s}.mm-main li:nth-child(5) a{transition-delay:.16s}.mm-main li:nth-child(6) a{transition-delay:.2s}.mm-main li:nth-child(7) a{transition-delay:.24s}
.mm-main a:hover{color:var(--c-accent)}
.mm-sub{list-style:none;padding:0;margin:0 0 28px;display:grid;gap:8px}
.mm-sub a{text-decoration:none;opacity:.78}.mm-sub a:hover{opacity:1}
.mm-side .eyebrow{color:inherit;opacity:.6}
.mm-cta{display:flex;flex-wrap:wrap;gap:10px}
.mm-cta .btn-primary{background:#fff;color:#111}

/* ---------- loader ---------- */
.loader{position:fixed;inset:0;z-index:300;background:#0e0c11;display:grid;place-items:center;transition:opacity .5s .1s,visibility .5s .1s}
.loader-in{display:grid;justify-items:center;gap:18px}
.loader img{animation:ld-pop .7s cubic-bezier(.2,.8,.2,1) both}
.loader-line{width:140px;height:2px;background:linear-gradient(90deg,#7A1E6C,#E2231A,#F28A1E);transform-origin:left;animation:ld-line .8s .15s cubic-bezier(.7,0,.2,1) both}
.loaded .loader{opacity:0;visibility:hidden}
html:not(.js) .loader{display:none}
@keyframes ld-pop{from{opacity:0;transform:scale(.85)}}
@keyframes ld-line{from{transform:scaleX(0)}}

/* ---------- breadcrumbs ---------- */
.crumbs{position:relative;z-index:2}
.crumbs ol{display:flex;flex-wrap:wrap;gap:6px;list-style:none;margin:0;padding:104px 0 0;font-size:.82rem;color:var(--c-muted)}
.crumbs li+li::before{content:"/";margin-right:6px;opacity:.5}
.crumbs a{text-decoration:none}
.has-dark-hero .crumbs{position:absolute;left:0;right:0;color:#fff}
.has-dark-hero .crumbs ol{color:rgba(255,255,255,.75)}

/* ---------- sections ---------- */
.section{padding-block:calc(clamp(64px,9vw,140px)*var(--space))}
.pt0{padding-top:0}
.sec-head{margin-bottom:clamp(32px,4vw,64px);max-width:980px}
.sec-head.row{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;max-width:none;flex-wrap:wrap}
.sec-head.row .lead{margin:0;max-width:46ch}
.sec-head .h2{max-width:18ch}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,96px);align-items:start}
.empty,.empty-box{color:var(--c-muted)}
.empty-box{border:1px dashed var(--c-line);border-radius:var(--radius);padding:clamp(24px,4vw,48px);display:grid;gap:16px;justify-items:start}
.empty-box .actions{margin:0}

/* ---------- HERO (shared) ---------- */
.hero{position:relative;color:#fff;overflow:hidden;isolation:isolate}
.hero-bg,.hsl-slides,.ph-media,.case-bg{position:absolute;inset:0;z-index:-2}
.hero-bg img,.hero-bg video,.hsl-slide img,.ph-media img,.case-bg img{width:100%;height:100%;object-fit:cover}
.hero-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(8,6,12,.6),rgba(8,6,12,0) 65%),linear-gradient(180deg,rgba(8,6,12,.55) 0%,rgba(8,6,12,.1) 35%,rgba(8,6,12,.35) 62%,rgba(8,6,12,.9) 100%)}
.hero-copy{position:relative;padding-top:140px;padding-bottom:clamp(56px,9vh,110px)}
.hero-eyebrow{color:rgba(255,255,255,.82)}
.hero-title .line{display:block;overflow:hidden;padding-bottom:.06em}
.hero-title .line>span{display:inline-block}
.hero-sub{font-size:clamp(1.05rem,1.2vw,1.35rem);margin:1.4rem 0 0;opacity:.88;max-width:52ch;letter-spacing:.01em}
.hero-small{margin:2.2rem 0 0;font-size:.78rem;letter-spacing:.18em;text-transform:uppercase;opacity:.66}
.hero .btn-ghost{color:#fff;border-color:rgba(255,255,255,.4)}
.hero .btn-ghost:hover{background:rgba(255,255,255,.1);border-color:#fff}
.scroll-cue{position:absolute;left:50%;bottom:22px;width:26px;height:42px;border:1.5px solid rgba(255,255,255,.55);border-radius:20px;transform:translateX(-50%);z-index:2}
.scroll-cue span{position:absolute;left:50%;top:8px;width:3px;height:8px;margin-left:-1.5px;border-radius:2px;background:#fff;animation:cue 1.8s infinite}
@keyframes cue{0%{opacity:0;transform:translateY(0)}30%{opacity:1}100%{opacity:0;transform:translateY(14px)}}
.kenburns img,.kenburns video{animation:kb 22s ease-out both}
@keyframes kb{from{transform:scale(1.14)}to{transform:scale(1)}}
.hero-cinematic,.hero-centered,.hero-slider,.hero-ex{min-height:100svh;display:flex;align-items:flex-end}
.hero-index{position:absolute;right:0;left:0;bottom:30px;padding-right:110px;display:flex;align-items:center;gap:14px;justify-content:flex-end;font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;opacity:.7;pointer-events:none}
.hi-line{width:80px;height:1px;background:currentColor}
.hero-centered{align-items:center;text-align:center}
.hero-centered .hero-copy{display:grid;justify-items:center;padding-bottom:120px}
.hero-centered .hero-sub{margin-inline:auto}
.hero-centered .actions{justify-content:center}
.hero-centered .hero-eyebrow::before{display:none}
.hero-field{position:absolute;inset:-20%;z-index:-1;background:radial-gradient(40% 40% at 30% 30%,color-mix(in srgb,var(--c-primary) 60%,transparent),transparent 70%),radial-gradient(35% 35% at 75% 60%,color-mix(in srgb,var(--c-secondary) 45%,transparent),transparent 70%),radial-gradient(30% 30% at 50% 90%,color-mix(in srgb,var(--c-accent) 40%,transparent),transparent 70%);mix-blend-mode:soft-light;animation:field 18s ease-in-out infinite alternate;opacity:.9}
@keyframes field{to{transform:translate3d(4%,-3%,0) rotate(8deg) scale(1.08)}}
/* split */
.hero-split{color:var(--c-text);padding-top:120px}
.hs-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(24px,5vw,80px);align-items:center;min-height:min(88svh,900px)}
.hero-split .hero-eyebrow,.hero-editorial .hero-eyebrow,.hero-mosaic .hero-eyebrow,.hero-type .hero-eyebrow{color:var(--c-muted)}
.hero-split .btn-ghost,.hero-editorial .btn-ghost,.hero-mosaic .btn-ghost,.hero-type .btn-ghost{color:var(--c-text);border-color:var(--c-line)}
.hs-media{position:relative;height:min(78svh,820px);border-radius:var(--radius);overflow:hidden}
.hs-media img,.hs-media video{width:100%;height:100%;object-fit:cover}
.hs-tag{position:absolute;left:16px;bottom:16px;background:rgba(10,8,14,.6);backdrop-filter:blur(8px);color:#fff;padding:8px 14px;border-radius:999px;font-size:.78rem}
.hero-split .hero-title{font-size:calc(clamp(2.4rem,5vw,5.4rem)*var(--scale))}
.hero-split .scroll-cue{display:none}
/* editorial */
.hero-editorial{color:var(--c-text);padding-top:150px}
.hero-editorial .hero-title{font-size:calc(clamp(3rem,9vw,10rem)*var(--scale));line-height:.95}
.he-media{margin-top:clamp(40px,6vw,80px)}
.he-media .parallax{height:min(78vh,760px);border-radius:var(--radius);overflow:hidden}
.he-media img{width:100%;height:115%;object-fit:cover}
/* mosaic */
.hero-mosaic{color:var(--c-text);padding:130px 0 40px}
.hm-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:clamp(90px,10vw,150px);gap:12px}
.hm-copy{grid-column:1/8;grid-row:1/4;align-self:center;padding-right:24px}
.hero-mosaic .hero-title{font-size:calc(clamp(2.3rem,5vw,5.2rem)*var(--scale))}
.hm-cell{border-radius:var(--radius);overflow:hidden}
.hm-cell img{width:100%;height:100%;object-fit:cover}
.hm-0{grid-column:8/13;grid-row:1/4}.hm-1{grid-column:1/4;grid-row:4/6}.hm-2{grid-column:4/8;grid-row:4/6}.hm-3{grid-column:8/11;grid-row:4/6}.hm-4{grid-column:11/13;grid-row:4/6}
/* typographic */
.hero-type{color:var(--c-text);padding:160px 0 0}
.hero-type .hero-title{font-size:calc(clamp(3rem,10vw,11rem)*var(--scale));line-height:.92}
.hero-type .hero-title .line:nth-child(2) span{background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}
.ht-strip{margin-top:clamp(48px,7vw,96px);overflow:hidden;padding-bottom:24px}
.ht-track{display:flex;gap:14px;width:max-content;animation:mq 50s linear infinite}
.ht-track figure{margin:0;width:clamp(220px,26vw,380px);aspect-ratio:4/3;border-radius:var(--radius);overflow:hidden}
.ht-track img{width:100%;height:100%;object-fit:cover}
/* slider */
.hsl-slide{position:absolute;inset:0;opacity:0;transition:opacity 1.4s ease}
.hsl-slide.is-on{opacity:1}
.hsl-slide.is-on img{animation:kb 9s ease-out both}
.hsl-dots{display:flex;gap:8px;margin-top:2.4rem}
.hsl-dots button{width:34px;height:3px;border:0;padding:0;background:rgba(255,255,255,.35);cursor:pointer;border-radius:3px}
.hsl-dots button[aria-selected=true]{background:#fff}

/* ---------- page hero ---------- */
.page-hero{position:relative;padding:clamp(130px,16vw,190px) 0 clamp(48px,6vw,90px);isolation:isolate}
.crumbs+.page-hero{padding-top:clamp(40px,5vw,72px)}
.page-hero .display{max-width:16ch}
.page-hero.has-media{color:#fff;min-height:min(78svh,760px);display:flex;align-items:flex-end;overflow:hidden}
.page-hero.has-media::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,6,12,.5),rgba(8,6,12,.2) 40%,rgba(8,6,12,.85))}
.page-hero.has-media .lead{color:rgba(255,255,255,.85)}
.page-hero.has-media .eyebrow{color:rgba(255,255,255,.8)}
.page-hero.has-media .btn-ghost{color:#fff;border-color:rgba(255,255,255,.4)}
.has-dark-hero .crumbs+.page-hero{padding-top:clamp(150px,16vw,190px)}

/* ---------- reel ---------- */
.reel-frame{position:relative;aspect-ratio:21/9;border-radius:calc(var(--radius) * 1.4);overflow:hidden;background:#0d0b10;color:#fff;isolation:isolate}
.reel-frames .rf{position:absolute;inset:0;opacity:0;transition:opacity 1.1s}
.reel-frames .rf.is-on{opacity:1}
.reel-frames img,.reel-video{width:100%;height:100%;object-fit:cover}
.reel-frames .rf.is-on img{animation:kb 6s ease-out both}
.reel-frame::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,6,12,.75),rgba(8,6,12,.1) 60%);z-index:0}
.reel-ui{position:absolute;inset:auto auto 0 0;padding:clamp(20px,4vw,56px);z-index:1;display:grid;gap:12px;justify-items:start}
.reel-ui .eyebrow{color:rgba(255,255,255,.8);margin:0}
.reel-cap{margin:0;max-width:40ch;opacity:.85}
.reel-play{display:inline-flex;align-items:center;gap:14px;background:none;border:0;color:#fff;cursor:pointer;font:600 1rem var(--f-body);padding:0;margin-top:10px}
.reel-play .ic{width:64px;height:64px;padding:22px;border-radius:50%;background:#fff;color:#111;transition:transform .4s}
.reel-play:hover .ic{transform:scale(1.08)}

/* ---------- stats ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:0;border-top:1px solid var(--c-line)}
.stat{padding:28px 20px 8px 0;border-right:1px solid var(--c-line)}
.stat+.stat{padding-left:24px}
.stat:last-child{border-right:0}
.stat-v{margin:0;font:var(--w-head) calc(clamp(2.3rem,4.2vw,4.4rem)*var(--scale))/1 var(--f-head);letter-spacing:var(--track);font-variant-numeric:tabular-nums;white-space:nowrap}
.stat-pre{font-size:.42em;vertical-align:.9em;opacity:.7;margin-right:.15em}
.stat-suf{background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:.6em}
.stat-l{margin:.7rem 0 .2rem;font-weight:600}
.stat-n{margin:0;font-size:.85rem;color:var(--c-muted)}
[data-stats=blocks] .stat-grid{gap:12px;border:0}
[data-stats=blocks] .stat{border:0;padding:clamp(22px,2.5vw,36px);background:var(--c-surface);border-radius:var(--radius)}
[data-stats=blocks] .stat:first-child{background:var(--c-invert-bg);color:var(--c-invert-text)}
[data-stats=blocks] .stat:first-child .stat-n{color:inherit;opacity:.7}
.ticker{overflow:hidden;border-block:1px solid var(--c-line);padding:clamp(22px,3vw,40px) 0}
.ticker-track{display:flex;gap:3rem;width:max-content;align-items:center;animation:mq 38s linear infinite;font:var(--w-head) calc(clamp(2rem,4.6vw,4.6rem)*var(--scale))/1 var(--f-head);letter-spacing:var(--track);white-space:nowrap}
.ticker-track em{font-style:normal;font-size:.42em;font-family:var(--f-body);font-weight:500;color:var(--c-muted);letter-spacing:0;vertical-align:middle}
.ticker-track i{font-style:normal;color:var(--c-secondary);font-size:.5em}
.stats-ticker{padding-block:0}

/* ---------- project cards ---------- */
.work-grid{display:grid;gap:clamp(14px,1.8vw,24px)}
.grid-uniform{grid-template-columns:repeat(3,1fr)}
.grid-bento{grid-template-columns:repeat(6,1fr);grid-auto-flow:dense}
.grid-bento .card{grid-column:span 2}
.grid-bento .card:nth-child(5n+1){grid-column:span 4;grid-row:span 2}
.grid-bento .card:nth-child(5n+1) .card-media{aspect-ratio:auto;flex:1}
.grid-masonry{display:block;columns:3;column-gap:clamp(14px,1.8vw,24px)}
.grid-masonry .card{break-inside:avoid;margin-bottom:clamp(14px,1.8vw,24px)}
.grid-masonry .card:nth-child(3n+1) .card-media{aspect-ratio:3/4}
.grid-masonry .card:nth-child(3n+2) .card-media{aspect-ratio:1}
.card{position:relative;display:flex;flex-direction:column;min-width:0}
.card-link{display:flex;flex-direction:column;height:100%;text-decoration:none;color:inherit}
.card-media{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:var(--radius);background:var(--c-surface)}
.card-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s cubic-bezier(.2,.8,.2,1)}
.card-link:hover .card-media img{transform:scale(1.06)}
.card-body{padding:16px 2px 4px}
.card-kicker{margin:0 0 6px;font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--c-muted)}
.card-title{font-size:calc(clamp(1.15rem,1.4vw,1.45rem)*var(--scale));line-height:1.18}
.card-client{margin:.4rem 0 0;color:var(--c-muted);font-size:.92rem}
.card-cta{display:inline-flex;gap:.4em;align-items:center;margin-top:.8rem;font-weight:600;font-size:.86rem;opacity:0;transform:translateY(6px);transition:.4s}
.card-link:hover .card-cta,.card-link:focus-visible .card-cta{opacity:1;transform:none}
/* tile: overlay text on image */
[data-cards=tile] .card-link{position:relative;border-radius:var(--radius);overflow:hidden;color:#fff;min-height:100%}
[data-cards=tile] .card-media{aspect-ratio:4/5;border-radius:0;flex:1}
.grid-uniform[class] .card-media{aspect-ratio:4/3}
[data-cards=tile] .grid-uniform .card-media{aspect-ratio:4/5}
[data-cards=tile] .card-body{position:absolute;inset:auto 0 0 0;padding:clamp(16px,2vw,26px);background:linear-gradient(180deg,transparent,rgba(8,6,12,.88))}
[data-cards=tile] .card-kicker,[data-cards=tile] .card-client{color:rgba(255,255,255,.78)}
/* outline */
[data-cards=outline] .card-link{border:1px solid var(--c-line);padding:10px;border-radius:calc(var(--radius) + 6px);transition:border-color .3s}
[data-cards=outline] .card-link:hover{border-color:var(--c-text)}
[data-cards=outline] .card-body{padding:16px 10px 10px}
/* glass */
[data-cards=glass] .card-link{position:relative;border-radius:var(--radius);overflow:hidden}
[data-cards=glass] .card-media{aspect-ratio:4/5;border-radius:0}
[data-cards=glass] .card-body{position:absolute;left:12px;right:12px;bottom:12px;padding:16px 18px;border-radius:calc(var(--radius) - 4px);background:color-mix(in srgb,var(--c-bg) 55%,transparent);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border:1px solid color-mix(in srgb,#fff 25%,transparent)}
/* numbered */
.work-grid{counter-reset:card}
[data-cards=numbered] .card{counter-increment:card}
[data-cards=numbered] .card-body::before{content:counter(card,decimal-leading-zero);display:block;font:var(--w-head) 2.4rem/1 var(--f-head);color:transparent;-webkit-text-stroke:1px var(--c-muted);margin-bottom:10px}
/* clean */
[data-cards=clean] .card-media{box-shadow:var(--shadow)}

/* list grid */
.work-list{border-top:1px solid var(--c-line);position:relative}
.wl-row{display:grid;grid-template-columns:60px 2.2fr 1.3fr 1fr 28px;gap:20px;align-items:center;padding:clamp(18px,2vw,28px) 0;border-bottom:1px solid var(--c-line);text-decoration:none;transition:padding .4s,color .3s}
.wl-row:hover{padding-left:12px;color:var(--c-primary)}
[data-mode=dark] .wl-row:hover{color:var(--c-accent)}
.wl-n{color:var(--c-muted);font-variant-numeric:tabular-nums}
.wl-t{font:var(--w-head) calc(clamp(1.2rem,2vw,2rem)*var(--scale))/1.1 var(--f-head);letter-spacing:var(--track)}
.wl-c,.wl-m{color:var(--c-muted);font-size:.92rem}
.wl-preview{position:fixed;left:0;top:0;width:300px;aspect-ratio:4/3;border-radius:var(--radius);overflow:hidden;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.9);transition:opacity .25s,transform .3s;z-index:20}
.wl-preview.on{opacity:1;transform:translate(-50%,-50%) scale(1)}
.wl-preview img{width:100%;height:100%;object-fit:cover}
/* horizontal */
.hscroll{position:relative}
.hs-track{display:grid;grid-auto-flow:column;grid-auto-columns:clamp(280px,38vw,560px);gap:clamp(14px,2vw,28px);overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:18px;scrollbar-width:thin;cursor:grab}
.hs-track>*{scroll-snap-align:start}
.hs-track .card-media{aspect-ratio:4/5}
.hs-ctrl{display:flex;gap:8px;justify-content:flex-end;margin-top:14px}
.hs-prev .ic{transform:rotate(180deg)}

/* ---------- featured exhibitions ---------- */
.fx-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:clamp(150px,17vw,260px);gap:clamp(10px,1.4vw,18px)}
.fx-tile{position:relative;overflow:hidden;border-radius:var(--radius);color:#fff;text-decoration:none;isolation:isolate;background:#111}
.fx-tile:nth-child(4):last-child,.fx-tile:nth-child(6){grid-column:1/13!important}
.fx-0{grid-column:1/9;grid-row:span 3}.fx-1{grid-column:9/13;grid-row:span 2}.fx-2{grid-column:9/13;grid-row:span 1}.fx-3{grid-column:1/6;grid-row:span 2}.fx-4{grid-column:6/13;grid-row:span 2}.fx-5{grid-column:1/13;grid-row:span 2}
.fx-media{position:absolute;inset:0;z-index:-1}
.fx-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.4s cubic-bezier(.2,.8,.2,1),filter .6s}
.fx-tile::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,6,12,0) 40%,rgba(8,6,12,.85));transition:background .5s}
.fx-tile:hover .fx-media img{transform:scale(1.07)}
.fx-tile:hover::after{background:linear-gradient(180deg,rgba(40,8,38,.25),rgba(8,6,12,.92))}
.fx-info{position:absolute;inset:auto 0 0 0;padding:clamp(16px,2.2vw,32px)}
.fx-client{margin:0 0 6px;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;opacity:.8}
.fx-info h3{font-size:calc(clamp(1.2rem,2vw,2.1rem)*var(--scale));max-width:22ch}
.fx-info dl{display:flex;flex-wrap:wrap;gap:6px 22px;margin:14px 0 0;max-height:0;opacity:0;overflow:hidden;transition:max-height .5s,opacity .4s}
.fx-info dt{font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;opacity:.6}
.fx-info dd{margin:0;font-size:.9rem}
.fx-cta{display:inline-flex;align-items:center;gap:.4em;margin-top:12px;font-weight:600;font-size:.88rem;opacity:0;transform:translateY(8px);transition:.4s}
.fx-tile:hover dl,.fx-tile:focus-visible dl{max-height:120px;opacity:1}
.fx-tile:hover .fx-cta,.fx-tile:focus-visible .fx-cta{opacity:1;transform:none}
.feat-ex .center{margin-top:clamp(28px,4vw,48px)}

/* ---------- highlights ---------- */
.highlights{padding-block:0}
.hl-track{position:relative;height:min(86svh,820px)}
.hl{position:absolute;inset:0;color:#fff;display:flex;align-items:flex-end;opacity:0;visibility:hidden;transition:opacity 1s,visibility 1s;isolation:isolate}
.hl.is-on{opacity:1;visibility:visible}
.hl picture,.hl picture img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.hl::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(8,6,12,.85),rgba(8,6,12,.2) 70%)}
.hl-light{color:#111}.hl-light::after{background:linear-gradient(90deg,rgba(255,255,255,.92),rgba(255,255,255,.1) 70%)}
.hl-brand::after{background:linear-gradient(90deg,color-mix(in srgb,var(--c-primary) 92%,transparent),transparent 75%)}
.hl-copy{padding-bottom:clamp(48px,8vw,110px)}
.hl-copy .eyebrow{color:inherit;opacity:.8}
.hl-copy p{max-width:48ch;font-size:1.1rem;opacity:.9}
.hl.is-on.hl-zoom picture img{animation:kb 8s ease-out both}
.hl.is-on .hl-copy>*{animation:up .9s cubic-bezier(.2,.8,.2,1) both}
.hl.is-on .hl-copy>*:nth-child(2){animation-delay:.08s}.hl.is-on .hl-copy>*:nth-child(3){animation-delay:.16s}.hl.is-on .hl-copy>*:nth-child(4){animation-delay:.24s}
@keyframes up{from{opacity:0;transform:translateY(26px)}}
.hl-dots{position:absolute;left:0;right:0;bottom:24px;display:flex;gap:8px;justify-content:flex-end;z-index:2}
.hl-dots button{width:42px;height:3px;border:0;background:rgba(255,255,255,.35);cursor:pointer;padding:0;border-radius:3px}
.hl-dots button[aria-pressed=true]{background:#fff}

/* ---------- services ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--c-line);border:1px solid var(--c-line);border-radius:var(--radius);overflow:hidden}
.svc{position:relative;display:flex;flex-direction:column;gap:12px;padding:clamp(22px,2.4vw,36px);min-height:clamp(220px,20vw,290px);background:var(--c-bg);text-decoration:none;isolation:isolate;overflow:hidden;transition:color .45s}
.svc::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--gradient);opacity:0;transform:translateY(101%);transition:transform .6s cubic-bezier(.7,0,.2,1),opacity .3s}
.svc:hover{color:#fff}.svc:hover::before{opacity:1;transform:none}
.svc:hover p,.svc:hover .svc-n{color:rgba(255,255,255,.85)}
.svc-n{font-size:.78rem;color:var(--c-muted);font-variant-numeric:tabular-nums}
.svc-ic{width:34px;height:34px;color:var(--c-primary);transition:color .3s}
[data-mode=dark] .svc-ic{color:var(--c-accent)}
.svc:hover .svc-ic{color:#fff}
.svc h3{font-size:calc(1.3rem*var(--scale))}
.svc p{margin:0;color:var(--c-muted);font-size:.93rem;transition:color .3s}
.svc-go{margin-top:auto;align-self:flex-end;width:40px;height:40px;border-radius:50%;border:1px solid currentColor;display:grid;place-items:center;opacity:.5;transition:.4s}
.svc:hover .svc-go{opacity:1;transform:rotate(-45deg)}
.svc-feature{grid-column:span 2;background:var(--c-invert-bg);color:var(--c-invert-text)}
.svc-feature p,.svc-feature .svc-n{color:color-mix(in srgb,var(--c-invert-text) 70%,transparent)}
.svc-feature h3{font-size:calc(clamp(1.6rem,2.6vw,2.4rem)*var(--scale))}
[data-cards=glass] .svc{background:color-mix(in srgb,var(--c-surface) 60%,var(--c-bg))}
[data-cards=numbered] .svc-n{font:var(--w-head) 2.6rem/1 var(--f-head);color:transparent;-webkit-text-stroke:1px var(--c-muted)}

/* ---------- process (sticky) ---------- */
.process{position:relative;height:calc(var(--n) * 55vh + 100vh);background:var(--c-invert-bg);color:var(--c-invert-text)}
.pr-sticky{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden}
.pr-in{display:grid;gap:clamp(28px,5vh,56px)}
.pr-head .eyebrow{color:color-mix(in srgb,var(--c-invert-text) 60%,transparent)}
.pr-steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(6,1fr);gap:clamp(8px,1.2vw,18px)}
.pr-step{display:grid;gap:10px;align-content:start;padding-top:18px;border-top:2px solid color-mix(in srgb,var(--c-invert-text) 15%,transparent);opacity:.32;transition:opacity .5s,border-color .5s}
.pr-step.on{opacity:1;border-color:var(--c-secondary)}
.pr-step.on:last-child{border-color:var(--c-accent)}
.pr-n{font-size:.78rem;opacity:.6}
.pr-t{font:var(--w-head) calc(clamp(1.3rem,2.4vw,2.6rem)*var(--scale))/1 var(--f-head);letter-spacing:var(--track)}
.pr-d{font-size:.9rem;opacity:.75;max-width:24ch}
.pr-bar{height:2px;background:color-mix(in srgb,var(--c-invert-text) 12%,transparent);border-radius:2px;overflow:hidden}
.pr-bar span{display:block;height:100%;width:100%;background:var(--gradient);transform-origin:left;transform:scaleX(var(--pp,0))}

/* ---------- story ---------- */
.story .wrap{display:grid;justify-items:center;text-align:center;gap:6px}
.story-line{margin:0;font:var(--w-head) calc(clamp(2rem,6vw,5.6rem)*var(--scale))/1.04 var(--f-head);letter-spacing:var(--track);opacity:.14;transition:opacity .5s,color .5s}
.story-line.on{opacity:1}
.story-line:nth-last-of-type(1).on{background:var(--gradient);-webkit-background-clip:text;background-clip:text;color:transparent}
.story-arrow{color:var(--c-muted);font-size:1.4rem}
.story-sign{display:flex;align-items:center;gap:12px;margin:28px 0 0;font:600 .9rem var(--f-body);letter-spacing:.2em;text-transform:uppercase}
.story-sign img{width:52px}

/* ---------- fabrication ---------- */
.fab{position:relative;overflow:hidden}
.fab-dark{background:var(--c-invert-bg);color:var(--c-invert-text)}
.fab-dark .eyebrow,.fab-dark .lead{color:color-mix(in srgb,var(--c-invert-text) 72%,transparent)}
.fab-dark .btn-light{background:var(--c-invert-text);color:var(--c-invert-bg)}
.fab-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(32px,6vw,90px);align-items:center;position:relative;z-index:1}
.ticks{list-style:none;padding:0;margin:1.6rem 0 2rem;display:grid;gap:10px}
.ticks li{display:flex;gap:10px;align-items:flex-start}
.ticks .ic{color:var(--c-accent);margin-top:.25em}
.ticks.cols{grid-template-columns:1fr 1fr;gap:10px 24px}
.fab-media{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,clamp(110px,12vw,180px));gap:12px}
.fab-media figure{margin:0;border-radius:var(--radius);overflow:hidden}
.fab-media img{width:100%;height:100%;object-fit:cover}
.fab-0{grid-row:1/3}.fab-1{grid-row:1/2}.fab-2{grid-row:2/4}.fab-3{grid-row:3/4}
.fab-num{position:absolute;right:-2vw;bottom:-3vw;font:800 clamp(5rem,17vw,17rem)/1 var(--f-head);letter-spacing:-.05em;color:transparent;-webkit-text-stroke:1px color-mix(in srgb,currentColor 12%,transparent);pointer-events:none;white-space:nowrap}
.fab-num small{font-size:.2em;letter-spacing:0}

/* ---------- industries ---------- */
.ind-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--c-line)}
.ind-grid a{display:grid;gap:6px;padding:22px 18px 22px 0;border-bottom:1px solid var(--c-line);text-decoration:none;min-height:130px;transition:background .3s,padding .3s}
.ind-grid li:not(:nth-child(4n)) a{border-right:1px solid var(--c-line)}
.ind-grid li:not(:nth-child(4n+1)) a{padding-left:18px}
.ind-grid a:hover{background:var(--c-surface)}
.ind-n{font-size:.74rem;color:var(--c-muted)}
.ind-t{font:var(--w-head) calc(1.25rem*var(--scale))/1.15 var(--f-head);letter-spacing:var(--track)}
.ind-b{font-size:.82rem;color:var(--c-muted)}

/* ---------- clients ---------- */
.marquee{overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);padding:8px 0}
.mq-track{display:flex;gap:14px;width:max-content;list-style:none;margin:0;padding:0;animation:mq 60s linear infinite}
.mq-rev .mq-track{animation-direction:reverse;animation-duration:70s}
.marquee:hover .mq-track{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-50%)}}
.logo-chip{flex:none;display:grid;place-items:center;width:clamp(140px,14vw,190px);height:clamp(78px,7.5vw,100px);padding:14px 22px;background:#fff;border:1px solid rgba(20,10,30,.08);border-radius:calc(var(--radius) * .8)}
.logo-chip img{max-height:100%;max-width:100%;object-fit:contain}
.logo-wall{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px}
.logo-wall .logo-chip{width:auto}
.also{margin-top:28px;color:var(--c-muted)}

/* ---------- network map ---------- */
.net-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(32px,5vw,80px);align-items:center}
.net-map svg{width:100%;height:auto;overflow:visible}
.dots circle{fill:color-mix(in srgb,var(--c-text) 18%,transparent)}
.links path{fill:none;stroke:var(--c-primary);stroke-width:1;stroke-dasharray:3 4;opacity:.45}
[data-mode=dark] .links path{stroke:var(--c-accent)}
.pin{cursor:pointer;color:var(--c-primary)}
[data-mode=dark] .pin{color:var(--c-accent)}
.pin circle:not(.pulse){fill:currentColor;stroke:var(--c-bg);stroke-width:2}
.pin .pulse{fill:currentColor;opacity:.25;transform-origin:center;transform-box:fill-box;animation:pulse 2.4s infinite}
.pin-ho circle:not(.pulse){fill:var(--c-secondary)}
.pin text{font:600 11px var(--f-body);fill:var(--c-text);paint-order:stroke;stroke:var(--c-bg);stroke-width:3px;opacity:.85}
.pin.on circle:not(.pulse){r:7}
@keyframes pulse{0%{transform:scale(.4);opacity:.5}100%{transform:scale(2.2);opacity:0}}
.loc-list{list-style:none;padding:0;margin:28px 0 18px;display:flex;flex-wrap:wrap;gap:8px}
.loc-btn{display:grid;text-align:left;gap:2px;border:1px solid var(--c-line);background:transparent;border-radius:12px;padding:10px 14px;cursor:pointer;font-weight:600;transition:.25s}
.loc-btn small{font-weight:400;color:var(--c-muted);font-size:.74rem}
.loc-btn[aria-expanded=true],.loc-btn:hover{border-color:var(--c-primary);background:color-mix(in srgb,var(--c-primary) 8%,transparent)}
.loc-card{padding:22px;border-radius:var(--radius);background:var(--c-surface)}
.loc-card h3{font-size:1.5rem;margin-bottom:.4rem}
.loc-card p{margin:.3rem 0}
.loc-links{display:flex;flex-wrap:wrap;gap:8px 18px}
.loc-links a{display:inline-flex;align-items:center;gap:6px;text-decoration:none;font-weight:500}

/* ---------- case study ---------- */
.case{position:relative;color:#fff;isolation:isolate;overflow:hidden;padding:clamp(120px,16vw,220px) 0 clamp(60px,8vw,120px)}
.case-bg img{height:120%}
.case-shade{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(8,6,12,.45),rgba(8,6,12,.92))}
.case .eyebrow{color:rgba(255,255,255,.8)}
.case .display{max-width:18ch}
.case-cols{display:grid;grid-template-columns:1fr 1.2fr;gap:clamp(32px,5vw,80px);align-items:end;margin-top:clamp(32px,5vw,64px)}
.case .lead{color:rgba(255,255,255,.86)}
.case-client{font-weight:600;letter-spacing:.06em;text-transform:uppercase;font-size:.82rem;margin:0}
.case-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.case-strip figure{margin:0;aspect-ratio:3/4;border-radius:var(--radius);overflow:hidden}
.case-strip img{width:100%;height:100%;object-fit:cover}
.case .btn{margin-top:1.6rem}

/* ---------- CTA ---------- */
.cta{position:relative;overflow:hidden;color:#fff;padding:clamp(90px,12vw,170px) 0;isolation:isolate;background:#120a14}
.cta-bg{position:absolute;inset:-30%;z-index:-1;background:radial-gradient(40% 50% at 20% 40%,var(--c-primary),transparent 70%),radial-gradient(35% 45% at 80% 60%,var(--c-secondary),transparent 70%),radial-gradient(30% 40% at 55% 100%,var(--c-accent),transparent 70%);opacity:.85;animation:field 20s ease-in-out infinite alternate}
.cta .display{max-width:20ch}
.cta-sm{padding:clamp(70px,9vw,120px) 0}
.cta .lead{color:rgba(255,255,255,.85)}
[data-footer=statement] .cta{border-bottom:1px solid rgba(255,255,255,.1)}

/* ---------- exhibitions: signature build sequence ---------- */
.build{position:relative;height:420vh;background:#0c0a0f;color:#fff}
.build-sticky{position:sticky;top:0;height:100vh;overflow:hidden;display:grid}
.build-stage{position:absolute;inset:0}
.build-stage>*{position:absolute;inset:0;width:100%;height:100%;margin:0}
.b-floor,.b-wire{opacity:0;transition:opacity .6s}
.b-floor line{stroke:rgba(255,255,255,.16);stroke-width:1}
.b-mark{fill:none;stroke:var(--c-accent);stroke-width:1.5;stroke-dasharray:6 6;transform-origin:center;transform-box:fill-box}
.b-wire{padding:8vh 3vw 12vh 42vw}
.b-floor{left:20%!important;width:80%!important}
.b-wire path{fill:none;stroke:#fff;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:var(--len,1200);stroke-dashoffset:calc(var(--len,1200) * (1 - var(--draw,0)))}
.b-wire .truss{stroke:var(--c-accent);stroke-width:2}
.b-photo{opacity:0;clip-path:inset(0 100% 0 0);transition:clip-path 1s cubic-bezier(.7,0,.2,1),opacity .5s}
.b-photo img{width:100%;height:100%;object-fit:cover}
.b-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(8,6,12,.82),rgba(8,6,12,.15) 60%)}
.build[data-s="0"] .b-floor,.build[data-s="1"] .b-floor{opacity:1}
.build[data-s="1"] .b-wire,.build[data-s="2"] .b-wire{opacity:1}
.build[data-s="2"] .b-raw,.build[data-s="3"] .b-raw{opacity:1;clip-path:inset(0)}
.build[data-s="3"] .b-done{opacity:1;clip-path:inset(0)}
.build-copy{position:relative;z-index:2;align-self:center;display:grid;gap:28px;pointer-events:none}
.build-copy .eyebrow{color:rgba(255,255,255,.7)}
.build-copy .display{font-size:calc(clamp(2.2rem,5vw,5rem)*var(--scale));max-width:14ch}
.build-steps{list-style:none;margin:0;padding:0;display:grid;gap:4px;max-width:420px}
.build-steps li{display:grid;grid-template-columns:42px 1fr;gap:2px 10px;padding:12px 0;border-top:1px solid rgba(255,255,255,.12);opacity:.38;transition:opacity .4s}
.build-steps li.on{opacity:1}
.build-steps span{grid-row:span 2;font-size:.78rem;opacity:.7;padding-top:3px}
.build-steps em{font-style:normal;font-size:.88rem;opacity:.75}
.build-progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.08)}
.build-progress span{display:block;height:100%;background:var(--gradient);transform-origin:left;transform:scaleX(var(--p,0))}

/* capabilities / workflow */
.cap-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.cap{display:flex;align-items:center;gap:14px;padding:18px 20px;border:1px solid var(--c-line);border-radius:var(--radius);font-weight:600;transition:.35s;background:var(--c-bg)}
.cap:hover{border-color:var(--c-primary);transform:translateY(-3px);box-shadow:var(--shadow)}
.cap-ic{width:26px;height:26px;color:var(--c-primary);flex:none}
[data-mode=dark] .cap-ic{color:var(--c-accent)}
.flow{background:var(--c-surface)}
.flow-track{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(9,1fr);gap:8px;position:relative}
.flow-step{display:grid;gap:12px;align-content:start;padding:18px 0 0;opacity:.35;transform:translateY(10px);transition:opacity .5s,transform .5s}
.flow-step.on{opacity:1;transform:none}
.fs-n{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--c-line);background:var(--c-bg);font-weight:700;font-size:.85rem;transition:.4s}
.flow-step.on .fs-n{background:var(--c-primary);border-color:var(--c-primary);color:#fff}
.fs-t{font-weight:600;font-size:.95rem;line-height:1.25}
.flow-line{height:2px;background:var(--c-line);margin-top:-82px;margin-bottom:80px;position:relative;z-index:0;margin-inline:21px}
.flow-line span{display:block;height:100%;background:var(--gradient);transform-origin:left;transform:scaleX(var(--fp,0));transition:transform .2s linear}
.flow .wrap{position:relative}
.flow-track{z-index:1}

/* before / after */
.ba{position:relative;aspect-ratio:16/9;border-radius:var(--radius);overflow:hidden;user-select:none;background:#111}
.ba-after,.ba-before{position:absolute;inset:0}
.ba img{width:100%;height:100%;object-fit:cover}
.ba-before{clip-path:inset(0 calc(100% - var(--pos)) 0 0)}
.ba-range{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.ba-handle{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;background:#fff;pointer-events:none;box-shadow:0 0 20px rgba(0,0,0,.4)}
.ba-handle::after{content:"⟷";position:absolute;top:50%;left:50%;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:50%;background:#fff;color:#111;display:grid;place-items:center;font-size:20px}
.ba-tag{position:absolute;top:16px;left:16px;padding:6px 12px;border-radius:999px;background:rgba(10,8,14,.65);color:#fff;font-size:.74rem;letter-spacing:.12em;text-transform:uppercase}
.ba-tag-r{left:auto;right:16px}
.ba-range:focus-visible+.ba-handle::after{outline:3px solid var(--c-accent)}

/* filters / tabs */
.work-tools{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;margin-bottom:32px;align-items:flex-end}
.tabs{display:flex;flex-wrap:wrap;gap:8px}
.tabs button,.tabs .tab{border:1px solid var(--c-line);background:transparent;border-radius:999px;padding:9px 16px;cursor:pointer;font-weight:500;font-size:.9rem;text-decoration:none;transition:.25s}
.tabs button[aria-pressed=true],.tabs button:hover,.tabs .tab:hover{background:var(--c-text);color:var(--c-bg);border-color:var(--c-text)}
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.flt{display:grid;gap:4px;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--c-muted)}
.flt select{border:1px solid var(--c-line);background:var(--c-bg);border-radius:10px;padding:9px 30px 9px 12px;font-size:.9rem;text-transform:none;letter-spacing:0;color:var(--c-text);min-width:130px}
.flt-count{font-size:.85rem;color:var(--c-muted);align-self:center}
.is-filtered-out{display:none!important}

/* project page */
.proj-hero{position:relative;min-height:min(92svh,920px);display:flex;align-items:flex-end;color:#fff;isolation:isolate;overflow:hidden}
.proj-hero .ph-media img{height:115%}
.ph-copy{padding-top:150px;padding-bottom:clamp(40px,7vw,90px)}
.ph-copy .eyebrow{color:rgba(255,255,255,.8)}
.ph-copy .display{font-size:calc(clamp(2.3rem,5.4vw,5.6rem)*var(--scale));max-width:20ch}
.proj-grid{display:grid;grid-template-columns:320px 1fr;gap:clamp(32px,6vw,100px);align-items:start}
.facts{margin:0;display:grid;gap:0;position:sticky;top:110px;border-top:1px solid var(--c-line)}
.facts div{padding:14px 0;border-bottom:1px solid var(--c-line);display:grid;grid-template-columns:110px 1fr;gap:12px}
.facts dt{font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--c-muted);padding-top:3px}
.facts dd{margin:0;font-weight:500}
.proj-text .lead{font-size:clamp(1.25rem,1.6vw,1.7rem);color:var(--c-text);margin-top:0;line-height:1.4}
.story-blk{margin-top:2rem;max-width:68ch}
.story-blk h2{margin-bottom:.6rem}
.share{display:flex;align-items:center;gap:8px;margin-top:2rem;color:var(--c-muted);font-size:.85rem}
.share a{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--c-line);border-radius:50%;color:var(--c-text)}
.share .ic{width:16px;height:16px}
.credit{margin-top:-40px;margin-bottom:40px}

/* gallery */
.gallery{display:grid;gap:12px}
.gal-grid,.gal-masonry{grid-template-columns:repeat(3,1fr)}
.gal-masonry{display:block;columns:3;column-gap:12px}
.gal-masonry .g-item{margin-bottom:12px;break-inside:avoid;width:100%}
.gal-horizontal{grid-auto-flow:column;grid-auto-columns:clamp(240px,32vw,460px);overflow-x:auto;scroll-snap-type:x mandatory}
.g-item{display:block;padding:0;border:0;background:var(--c-surface);border-radius:var(--radius);overflow:hidden;cursor:zoom-in}
.gal-grid .g-item{aspect-ratio:4/3}
.g-item img{width:100%;height:100%;object-fit:cover;transition:transform .9s cubic-bezier(.2,.8,.2,1)}
.g-item:hover img{transform:scale(1.05)}
.lightbox{position:fixed;inset:0;z-index:250;background:rgba(6,5,8,.96);display:grid;grid-template-columns:72px 1fr 72px;align-items:center;color:#fff}
.lightbox[hidden]{display:none}
.lb-stage{margin:0;display:grid;justify-items:center;gap:12px;padding:56px 0 24px;height:100vh;align-content:center}
.lb-stage img,.lb-stage video{max-height:82vh;max-width:100%;border-radius:8px;object-fit:contain}
.lb-stage figcaption{font-size:.9rem;opacity:.8;text-align:center}
.lightbox button{background:none;border:0;color:#fff;cursor:pointer;width:56px;height:56px;display:grid;place-items:center;border-radius:50%}
.lightbox button:hover{background:rgba(255,255,255,.1)}
.lb-close{position:absolute;top:12px;right:12px}
.lb-prev .ic{transform:rotate(180deg)}
.lightbox .ic{width:26px;height:26px}

/* faq / accordion */
.faq-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:clamp(32px,6vw,96px)}
.acc{border-top:1px solid var(--c-line)}
.acc-i{border-bottom:1px solid var(--c-line)}
.acc-i summary{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:22px 0;cursor:pointer;font-weight:600;font-size:1.08rem;list-style:none}
.acc-i summary::-webkit-details-marker{display:none}
.acc-i summary .ic{transition:transform .4s}
.acc-i[open] summary .ic{transform:rotate(45deg)}
.acc-b{padding:0 0 22px;color:var(--c-muted);max-width:64ch}
.acc-i[open] .acc-b{animation:up .5s cubic-bezier(.2,.8,.2,1)}

/* timeline */
.tl-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:0;position:relative;border-top:2px solid var(--c-line)}
.tl-i{position:relative;padding:30px 20px 0 0}
.tl-i::before{content:"";position:absolute;top:-8px;left:0;width:14px;height:14px;border-radius:50%;background:var(--c-bg);border:3px solid var(--c-primary)}
.tl-d{margin:0 0 8px;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--c-muted)}
.tl-i h3{font-size:calc(1.3rem*var(--scale));margin-bottom:.5rem}
.tl-i p{color:var(--c-muted);margin:0;font-size:.93rem}

/* case list */
.case-row{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(24px,5vw,80px);align-items:center;padding-block:clamp(32px,5vw,64px);border-bottom:1px solid var(--c-line)}
.case-row.flip .cr-media{order:2}
.cr-media{display:block;aspect-ratio:16/11;border-radius:var(--radius);overflow:hidden}
.cr-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.8,.2,1)}
.cr-media:hover img{transform:scale(1.05)}
.cr-copy p{color:var(--c-muted)}

/* service detail */
.svc-detail{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,96px)}
.svc-detail .h4{margin:0 0 .6rem}
.svc-detail .ticks+.h4{margin-top:2rem}

/* posts, jobs, downloads, team, quotes */
.post-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.post{text-decoration:none;display:grid;gap:10px}
.post img{aspect-ratio:16/10;object-fit:cover;border-radius:var(--radius);width:100%}
.post .eyebrow{margin:6px 0 0}
.post p{margin:0;color:var(--c-muted)}
.jobs{list-style:none;padding:0;margin:0;border-top:1px solid var(--c-line)}
.jobs a{display:grid;grid-template-columns:1fr auto;gap:4px 16px;padding:24px 0;border-bottom:1px solid var(--c-line);text-decoration:none}
.jobs p,.jobs small{margin:0;color:var(--c-muted)}
.jobs .ic{grid-row:1/3;grid-column:2;align-self:center}
.dl-list{list-style:none;padding:0;margin:0;display:grid;gap:20px}
.dl{display:grid;grid-template-columns:200px 1fr;gap:28px;align-items:center;padding:24px;border:1px solid var(--c-line);border-radius:var(--radius)}
.dl>img,.dl-ph{aspect-ratio:3/4;object-fit:cover;border-radius:calc(var(--radius) * .6);background:#fff;display:grid;place-items:center;border:1px solid var(--c-line)}
.dl .actions{margin-top:1rem}
.team{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:24px}
.team img{aspect-ratio:1;object-fit:cover;border-radius:var(--radius);width:100%}
.team h3{margin-top:12px;font-size:1.1rem}.team p{margin:.2rem 0;color:var(--c-muted)}
.quote{margin:0 0 32px;padding:clamp(24px,4vw,56px);border-radius:var(--radius);background:var(--c-surface)}
.quote blockquote{margin:0;font:var(--w-head) calc(clamp(1.3rem,2.4vw,2.2rem)*var(--scale))/1.3 var(--f-head)}
.quote figcaption{margin-top:16px;color:var(--c-muted)}
.video-box{position:relative;aspect-ratio:16/9;border-radius:var(--radius);overflow:hidden;background:#000}
.video-box iframe,.video-box video{position:absolute;inset:0;width:100%;height:100%;border:0}
.full-img img{width:100%;max-height:90vh;object-fit:cover}

/* legal */
.legal-grid{display:grid;grid-template-columns:240px 1fr;gap:clamp(32px,6vw,96px);align-items:start}
.legal-meta{position:sticky;top:110px;font-size:.9rem;color:var(--c-muted);display:grid;gap:12px}
.legal-meta p{margin:0}
.legal-meta a{color:var(--c-text)}
.legal h2{font-size:1.35rem}

/* forms */
.fld{display:grid;gap:6px;margin-bottom:18px;align-content:start}
.fld label,.sub-fs legend{font-weight:600;font-size:.9rem}
.fld label small{font-weight:400;color:var(--c-muted)}
.fld input,.fld select,.fld textarea,.search-form input,.search-form select{width:100%;border:1px solid var(--c-line);background:var(--c-bg);border-radius:12px;padding:14px 16px;font-size:1rem;transition:border-color .2s,box-shadow .2s}
[data-buttons=square] .fld input,[data-buttons=square] .fld select,[data-buttons=square] .fld textarea{border-radius:0}
.fld input:focus,.fld select:focus,.fld textarea:focus{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--c-primary) 16%,transparent)}
.fld input[aria-invalid=true],.fld textarea[aria-invalid=true],.fld select[aria-invalid=true]{border-color:#d4261c}
.err{margin:0;color:#d4261c;font-size:.86rem}
[data-mode=dark] .err{color:#ff7a70}
.hint{color:var(--c-muted);font-size:.82rem}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 18px}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 18px}
.chip input{position:absolute;opacity:0;pointer-events:none}
.chip span{display:inline-block;padding:11px 18px;border:1px solid var(--c-line);border-radius:999px;cursor:pointer;font-weight:500;transition:.2s}
.chip input:checked+span{background:var(--c-primary);border-color:var(--c-primary);color:#fff}
.chip input:focus-visible+span{outline:2px solid var(--c-accent);outline-offset:2px}
fieldset{border:0;margin:0;padding:0;min-width:0}
legend{padding:0;margin-bottom:12px}
.sub-fs{margin:6px 0 18px}
.q-step{display:none}.q-step.is-on{display:block;animation:up .5s cubic-bezier(.2,.8,.2,1)}
html:not(.js) .q-step{display:block;margin-bottom:32px}
html:not(.js) .q-nav,html:not(.js) .q-progress{display:none}
.q-progress{display:flex;gap:8px;list-style:none;padding:0;margin:0 0 32px;counter-reset:q}
.q-progress li{flex:1;counter-increment:q;font-size:.8rem;color:var(--c-muted);padding-top:12px;border-top:3px solid var(--c-line);transition:.3s}
.q-progress li::before{content:counter(q,decimal-leading-zero) " ";font-weight:700}
.q-progress li.is-on,.q-progress li.is-done{color:var(--c-text);border-color:var(--c-primary)}
.q-nav{display:flex;justify-content:space-between;gap:12px;margin-top:20px}
.q-nav .q-next{margin-left:auto}
.ex-only[hidden]{display:none}
.submit-row{display:grid;grid-template-columns:1.1fr 1fr;gap:24px;align-items:start;margin-top:10px}
.notice{border:1px solid var(--c-line);border-radius:var(--radius);padding:16px 18px;background:var(--c-surface);font-size:.84rem;color:var(--c-muted)}
.notice p{margin:.4rem 0 0}
.notice a{color:var(--c-text)}
.notice-h{font:600 .9rem var(--f-body);color:var(--c-text);display:flex;justify-content:space-between}
.notice-h span{font-weight:400;color:var(--c-muted)}
.consents{display:grid;gap:12px;margin-bottom:16px}
.chk,.radio{display:flex;gap:10px;align-items:flex-start;font-size:.9rem;cursor:pointer;margin-bottom:8px}
.chk input,.radio input{width:20px;height:20px;margin-top:1px;accent-color:var(--c-primary);flex:none}
.chk small{color:var(--c-muted)}
.form-msg{margin-top:16px;font-weight:500}
.form-msg:empty{display:none}
.form-msg.ok{padding:18px 20px;border-radius:var(--radius);background:color-mix(in srgb,#1f9d55 14%,transparent);color:inherit}
.form-msg.bad{color:#d4261c}
form.is-busy button[type=submit]{opacity:.6;pointer-events:none}
.contact-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(32px,6vw,96px)}
.contact-side{display:grid;gap:16px;align-content:start}
.cs-block{padding:22px;border:1px solid var(--c-line);border-radius:var(--radius)}
.cs-block .h4{margin-bottom:.6rem}
.cs-block p{margin:.4rem 0}
.cs-block a{display:inline-flex;align-items:center;gap:8px;text-decoration:none}
.prefs{display:grid;gap:4px}
.pref{display:flex;justify-content:space-between;gap:24px;padding:18px 0;border-bottom:1px solid var(--c-line)}
.pref p{margin:.3rem 0 0;color:var(--c-muted);font-size:.9rem}
.switch{position:relative;flex:none}
.switch input{position:absolute;opacity:0;width:52px;height:30px;margin:0;cursor:pointer;z-index:1}
.switch i{display:block;width:52px;height:30px;border-radius:30px;background:var(--c-line);position:relative;transition:.25s}
.switch i::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:.25s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.switch input:checked+span+i{background:var(--c-primary)}
.switch input:checked+span+i::after{transform:translateX(22px)}
.switch input:disabled+span+i{opacity:.6}
.switch input:focus-visible+span+i{outline:2px solid var(--c-accent);outline-offset:2px}
.prefs .btn{margin-top:18px;justify-self:start}
.search-form{display:grid;grid-template-columns:1fr 160px auto;gap:10px;margin-bottom:18px}
.results{list-style:none;padding:0;margin:20px 0 0;display:grid;gap:4px}
.results a{display:grid;gap:4px;padding:18px 0;border-bottom:1px solid var(--c-line);text-decoration:none}
.results small{color:var(--c-muted);text-transform:uppercase;letter-spacing:.1em;font-size:.72rem}
.results span{color:var(--c-muted);font-size:.92rem}
.sitemap{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
.sitemap ul{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:6px}
.sitemap a{text-decoration:none;color:var(--c-muted)}.sitemap a:hover{color:var(--c-text)}
.countdown{display:flex;gap:12px;margin-top:20px}
.countdown span{display:grid;justify-items:center;padding:12px 16px;border:1px solid rgba(255,255,255,.3);border-radius:12px;font-size:.75rem;text-transform:uppercase;letter-spacing:.1em}
.countdown b{font:700 2rem/1 var(--f-head)}
.camp-logo img{max-height:60px;width:auto;background:#fff;padding:8px 12px;border-radius:8px;margin-bottom:18px}

/* 404 */
.nf{position:relative;min-height:88vh;display:flex;align-items:center;overflow:hidden;padding:140px 0 80px}
.nf-wire{position:absolute;right:-6vw;top:50%;width:min(70vw,900px);transform:translateY(-50%);opacity:.5}
.nf-lines path{fill:none;stroke:var(--c-primary);stroke-width:1.5;stroke-dasharray:1200;stroke-dashoffset:1200;animation:draw 3.2s cubic-bezier(.6,0,.2,1) forwards}
.nf-lines path:nth-child(2){animation-delay:.3s}.nf-lines path:nth-child(3){animation-delay:.6s}.nf-lines path:nth-child(4){animation-delay:.9s}.nf-lines path:nth-child(5){animation-delay:1.2s}
@keyframes draw{to{stroke-dashoffset:0}}
.nf-in{position:relative}
.nf .display{max-width:15ch}

/* ---------- footer ---------- */
.site-footer{background:var(--c-invert-bg);color:var(--c-invert-text);padding-top:clamp(64px,8vw,120px)}
[data-mode=dark] .site-footer{background:#060508;color:#f3f1f5;border-top:1px solid var(--c-line)}
.f-statement{display:flex;justify-content:space-between;align-items:flex-end;gap:32px;flex-wrap:wrap;padding-bottom:clamp(48px,6vw,90px);border-bottom:1px solid color-mix(in srgb,currentColor 14%,transparent)}
.f-statement .display{font-size:calc(clamp(2rem,4.6vw,4.6rem)*var(--scale));max-width:20ch}
.f-statement .btn-light{background:var(--c-invert-text);color:var(--c-invert-bg)}
[data-mode=dark] .f-statement .btn-light{background:#fff;color:#111}
.f-grid{display:grid;grid-template-columns:1.5fr repeat(4,1fr);gap:40px;padding-block:clamp(48px,6vw,80px)}
.f-brand img{height:40px;width:auto;margin-bottom:18px}
.f-brand p{opacity:.72;max-width:36ch;font-size:.93rem}
.f-contact{display:grid;gap:8px}
.f-contact a{display:inline-flex;gap:10px;align-items:center;text-decoration:none;opacity:.9}
.f-social{display:flex;gap:8px}
.f-social a{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid color-mix(in srgb,currentColor 25%,transparent)}
.f-brand .btn-ghost{color:inherit;border-color:color-mix(in srgb,currentColor 30%,transparent);margin-top:8px}
.f-h{font:600 .74rem var(--f-body);letter-spacing:.16em;text-transform:uppercase;opacity:.55;margin:0 0 16px}
.f-col ul{list-style:none;padding:0;margin:0;display:grid;gap:9px}
.f-col a{text-decoration:none;opacity:.82;font-size:.93rem}
.f-col a:hover,.f-legal a:hover{opacity:1;text-decoration:underline}
.f-legal{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px;padding-block:28px;border-top:1px solid color-mix(in srgb,currentColor 14%,transparent);font-size:.8rem}
.f-legal p{margin:0;opacity:.6;max-width:60ch}
.f-legal ul{display:flex;flex-wrap:wrap;gap:6px 18px;list-style:none;margin:0;padding:0}
.f-legal a{opacity:.72;text-decoration:none}
[data-footer=compact] .f-statement{display:none}
[data-footer=compact] .f-grid{grid-template-columns:1.4fr repeat(4,1fr);padding-top:0}
[data-footer=statement] .f-statement .display{font-size:calc(clamp(2.6rem,8vw,8rem)*var(--scale));max-width:none;line-height:.95}
[data-footer=statement] .f-statement{flex-direction:column;align-items:flex-start}

/* ---------- WhatsApp & consent ---------- */
.wa-float{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));z-index:70}
.wa-right{right:18px}.wa-left{left:18px}
.wa-btn{display:flex;align-items:center;gap:0;height:56px;padding:0 16px;border-radius:999px;background:#1f9d55;color:#fff;text-decoration:none;box-shadow:0 14px 30px -12px rgba(16,90,48,.6);transition:gap .4s,padding .4s,transform .3s}
.wa-btn .ic{width:26px;height:26px}
.wa-label{display:grid;max-width:0;overflow:hidden;white-space:nowrap;transition:max-width .5s cubic-bezier(.2,.8,.2,1);line-height:1.2}
.wa-label strong{font-size:.88rem}.wa-label small{font-size:.7rem;opacity:.85}
.wa-btn:hover,.wa-btn:focus-visible{gap:10px;padding-right:20px}
.wa-btn:hover .wa-label,.wa-btn:focus-visible .wa-label{max-width:240px}
.wa-float.lifted{transform:translateY(-90px)}
.wa-float{transition:transform .4s}
@media (min-width:901px){.wa-no-desktop{display:none}}
@media (max-width:900px){.wa-no-mobile{display:none}.wa-btn{width:54px;height:54px;padding:0;justify-content:center}}
.consent{position:fixed;left:16px;right:16px;bottom:16px;z-index:90;display:flex;justify-content:center}
.consent[hidden]{display:none}
.consent-in{max-width:760px;background:var(--c-bg);color:var(--c-text);border:1px solid var(--c-line);border-radius:18px;padding:20px 22px;box-shadow:0 30px 80px -30px rgba(0,0,0,.45)}
.consent-in h2{font-size:1.05rem;font-family:var(--f-body);font-weight:700;letter-spacing:0}
.consent-in p{font-size:.88rem;color:var(--c-muted);margin:.5rem 0 1rem}
.consent-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
.preview-bar{position:fixed;left:50%;bottom:16px;transform:translateX(-50%);z-index:400;background:#111;color:#fff;padding:10px 16px;border-radius:999px;font-size:.84rem;box-shadow:0 10px 30px rgba(0,0,0,.4)}
.preview-bar a{color:#F28A1E;margin-left:8px}

/* ---------- motion ---------- */
.js .reveal{opacity:0;transform:translate3d(0,var(--rv,28px),0);transition:opacity .9s cubic-bezier(.2,.8,.2,1),transform 1s cubic-bezier(.2,.8,.2,1);transition-delay:calc(min(var(--i,0),8) * 60ms)}
.js .reveal.in{opacity:1;transform:none}
.js .clip-reveal{clip-path:inset(12% 0 0 0 round var(--radius));transition:clip-path 1.3s cubic-bezier(.7,0,.2,1)}
.js .clip-reveal img{transform:scale(1.18);transition:transform 1.6s cubic-bezier(.2,.8,.2,1)}
.js .clip-reveal.in{clip-path:inset(0 0 0 0 round var(--radius))}
.js .clip-reveal.in img{transform:scale(1)}
.js .split .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
.js .split .w>span{display:inline-block;transform:translate3d(0,105%,0);transition:transform 1s cubic-bezier(.2,.8,.2,1);transition-delay:calc(var(--wi) * 45ms)}
.js .split.in .w>span{transform:none}
.js .split-lines .line>span{transform:translate3d(0,108%,0);transition:transform 1.15s cubic-bezier(.2,.8,.2,1)}
.js .split-lines .line:nth-child(2)>span{transition-delay:.1s}.js .split-lines .line:nth-child(3)>span{transition-delay:.2s}
.js .split-lines.in .line>span{transform:none}
.js .hero-copy>:not(h1){opacity:0;transform:translateY(20px);transition:opacity 1s .5s,transform 1s .5s cubic-bezier(.2,.8,.2,1)}
.js .hero.ready .hero-copy>:not(h1),.js .hero.ready .hs-copy>:not(h1){opacity:1;transform:none}
.js .hs-copy>:not(h1),.js .hm-copy>:not(h1),.js .hero-editorial .wrap>:not(h1),.js .hero-type .wrap>:not(h1){opacity:0;transform:translateY(20px);transition:opacity 1s .5s,transform 1s .5s cubic-bezier(.2,.8,.2,1)}
.js .hero.ready .hm-copy>:not(h1),.js .hero.ready .wrap>:not(h1){opacity:1;transform:none}
.zoom img{will-change:transform}
/* safety net: hero copy can never stay hidden if scripts stall */
.js .hero .line>span,.js .hero-copy>*,.js .hs-copy>*,.js .hm-copy>*,.js .hero-editorial .wrap>*,.js .hero-type .wrap>*{animation:cs-show 0s 2.4s forwards}
@keyframes cs-show{to{opacity:1;transform:none}}
[data-motion=calm]{--rv:14px}
[data-motion=calm] .js .split .w>span,.js[data-motion=calm] .split .w>span{transition-duration:.7s}
[data-motion=expressive]{--rv:60px}
.js[data-motion=expressive] .reveal{transform:translate3d(0,var(--rv),0) scale(.97)}
.js[data-motion=expressive] .reveal.in{transform:none}
.js[data-motion=calm] .clip-reveal img{transform:none}
.magnetic{transition:transform .35s cubic-bezier(.2,.8,.2,1)}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;transition-delay:0s!important}
  .js .reveal,.js .clip-reveal,.js .split .w>span,.js .split-lines .line>span,.js .hero-copy>*,.js .hs-copy>*,.js .hm-copy>*{opacity:1!important;transform:none!important;clip-path:none!important}
  .js .clip-reveal img{transform:none!important}
  .loader{display:none}
  .mq-track,.ticker-track,.ht-track{animation:none!important;flex-wrap:wrap;width:auto}
  .marquee{mask-image:none;-webkit-mask-image:none}
  .mq-track [aria-hidden=true],.mq-rev{display:none}
  .process,.build{height:auto}
  .pr-sticky,.build-sticky{position:relative;height:auto;padding-block:80px}
  .pr-step{opacity:1}
  .build-stage{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;height:auto;padding:0 16px}
  .build-stage>*{position:relative;inset:auto;opacity:1!important;clip-path:none!important;aspect-ratio:4/3;height:auto}
  .b-wire path{stroke-dashoffset:0}
  .build-steps li{opacity:1}
  .build-copy{padding-block:40px}
  .story-line{opacity:1}
  .flow-step{opacity:1;transform:none}
  .hsl-slide:not(:first-child){display:none}
}

/* ---------- responsive ---------- */
@media (max-width:1200px){
  .primary a{padding:10px 10px;font-size:.88rem}
  .svc-grid{grid-template-columns:repeat(3,1fr)}
  .ind-grid{grid-template-columns:repeat(3,1fr)}
  .ind-grid li a{border-right:1px solid var(--c-line)!important;padding-left:18px!important}
  .f-grid{grid-template-columns:1.4fr 1fr 1fr;row-gap:48px}
  .stat-grid{grid-template-columns:repeat(3,1fr)}
  .stat:nth-child(3){border-right:0}
  .stat:nth-child(n+4){border-top:1px solid var(--c-line)}
  .stat:nth-child(4){padding-left:0}
  .flow-track{grid-template-columns:repeat(5,1fr);row-gap:28px}
  .flow-line{display:none}
}
@media (max-width:1024px){
  .primary,.hdr-cta{display:none}
  .menu-btn{display:grid}
  [data-header=split] .hdr{display:flex}
  .hs-grid,.two-col,.fab-grid,.net-grid,.faq-grid,.contact-grid,.svc-detail,.legal-grid,.proj-grid,.case-cols,.submit-row{grid-template-columns:1fr}
  .hs-media{height:62svh}
  .hero-split{padding-top:100px}
  .hs-grid{min-height:0;padding-bottom:40px}
  .facts,.legal-meta{position:static}
  .proj-grid .facts{grid-template-columns:1fr 1fr;column-gap:24px}
  .pr-steps{grid-template-columns:repeat(3,1fr);row-gap:28px}
  .process{height:calc(var(--n) * 45vh + 100vh)}
  .tl-list{grid-template-columns:1fr;border-top:0;border-left:2px solid var(--c-line);padding-left:24px;gap:28px}
  .tl-i{padding:0}
  .tl-i::before{left:-33px;top:2px}
  .post-grid,.grid-uniform{grid-template-columns:repeat(2,1fr)}
  .grid-bento{grid-template-columns:repeat(2,1fr)}
  .grid-bento .card,.grid-bento .card:nth-child(5n+1){grid-column:span 1;grid-row:auto}
  .grid-bento .card:nth-child(5n+1){grid-column:span 2}
  .grid-bento .card:nth-child(5n+1) .card-media{aspect-ratio:16/10}
  .grid-masonry,.gal-masonry{columns:2}
  .case-row,.case-row.flip{grid-template-columns:1fr}
  .case-row.flip .cr-media{order:0}
  .sitemap{grid-template-columns:repeat(2,1fr)}
  .mmenu-in{grid-template-columns:1fr}
  .hm-copy{grid-column:1/13;grid-row:auto;padding:0 0 12px}
  .hm-grid{grid-auto-rows:clamp(110px,22vw,200px)}
  .hm-0{grid-column:1/13;grid-row:auto/span 2}.hm-1{grid-column:1/7}.hm-2{grid-column:7/13}.hm-3,.hm-4{display:none}
}
@media (max-width:760px){
  .hdr{height:70px}
  .brand img{height:30px}
  [data-header=pill] .hdr{height:60px;margin-inline:10px;width:auto}
  .crumbs ol{padding-top:86px}
  .hero-copy{padding-top:110px}
  .hero-index{display:none}
  .svc-grid{grid-template-columns:1fr}
  .svc-feature{grid-column:auto}
  .svc{min-height:0}
  .ind-grid{grid-template-columns:1fr 1fr}
  .stat-grid{grid-template-columns:1fr 1fr}
  .stat{border-right:0!important;padding:22px 0 12px!important;border-top:1px solid var(--c-line)}
  .stat:nth-child(odd){padding-right:14px!important}
  .stat-grid{border-top:0}
  .fx-grid{grid-template-columns:1fr;grid-auto-rows:auto}
  .fx-grid>.fx-tile{grid-column:auto!important;grid-row:auto!important;aspect-ratio:4/5}
  .fx-tile:first-child{aspect-ratio:4/5}
  .fx-info dl,.fx-cta{max-height:none;opacity:1;transform:none}
  .grid-uniform,.post-grid,.grid-bento{grid-template-columns:1fr}
  .grid-bento .card:nth-child(5n+1){grid-column:auto}
  .grid-masonry,.gal-masonry{columns:1}
  .gal-masonry{columns:2}
  .gal-grid{grid-template-columns:1fr 1fr}
  .wl-row{grid-template-columns:36px 1fr 20px;gap:10px}
  .wl-c,.wl-m{display:none}
  .reel-frame{aspect-ratio:4/5}
  .pr-steps{grid-template-columns:1fr 1fr}
  .pr-d{display:none}
  .process{height:calc(var(--n) * 40vh + 100vh)}
  .fab-media{grid-template-rows:repeat(3,110px)}
  .fab-num{display:none}
  .grid2{grid-template-columns:1fr}
  .ticks.cols{grid-template-columns:1fr}
  .proj-grid .facts{grid-template-columns:1fr}
  .flow-track{grid-template-columns:repeat(3,1fr)}
  .case-strip{grid-template-columns:repeat(3,1fr)}
  .dl{grid-template-columns:1fr}
  .dl>img,.dl-ph{max-width:160px}
  .f-grid{grid-template-columns:1fr 1fr;gap:36px 20px}
  .f-brand{grid-column:1/-1}
  .f-legal{flex-direction:column}
  .search-form{grid-template-columns:1fr}
  .sitemap{grid-template-columns:1fr}
  .ba{aspect-ratio:4/5}
  .build{height:360vh}
  .build-copy{align-self:end;padding-bottom:40px}
  .build-steps em{display:none}
  .b-wire{padding:10vh 0 40vh}
  .lightbox{grid-template-columns:1fr;grid-template-rows:1fr auto}
  .lb-prev,.lb-next{position:absolute;bottom:16px}.lb-prev{left:16px}.lb-next{right:16px}
  .hl-track{height:82svh}
  .mm-main a{font-size:clamp(2rem,10vw,3rem)}
  .q-progress li{font-size:0}
  .q-progress li::before{font-size:.8rem}
  .actions .btn{flex:1 1 auto;justify-content:center}
  .hero-type .hero-title{font-size:calc(clamp(2.6rem,13vw,5rem)*var(--scale))}
  .hero-editorial .hero-title{font-size:calc(clamp(2.6rem,12vw,5rem)*var(--scale))}
}
@media (max-width:380px){.ind-grid{grid-template-columns:1fr}.flow-track{grid-template-columns:1fr 1fr}}
@media (min-width:1700px){.wrap{max-width:1560px}}
@media print{.site-header,.wa-float,.consent,.loader,.mmenu,.site-footer .f-statement{display:none!important}.js .reveal,.js .split .w>span{opacity:1!important;transform:none!important}}

/* ---------- background media: image / MP4 / YouTube / Vimeo ---------- */
.bgm-img,.bgm-img img,.bgm-video,.bgm-embed{position:absolute;inset:0;width:100%;height:100%}
.bgm-img img,.bgm-video{object-fit:cover}
.bgm-embed{overflow:hidden;pointer-events:none;background:#000}
.bgm-embed iframe{position:absolute;top:50%;left:50%;width:max(100%,177.78vh);height:max(100%,56.25vw);border:0;transform:translate(-50%,-50%)}
.hs-media,.he-media .parallax,.hm-cell{position:relative}
.he-media .parallax .bgm-img img{height:115%}
.hero-copy{z-index:1}
.hero-link{position:absolute;inset:0;z-index:0}
.hero-shade{opacity:min(1,calc(var(--hero-shade,.45) * 2.2))}
.hero-shade::after{content:"";position:absolute;inset:0;background:rgba(8,6,12,max(0,calc(var(--hero-shade,.45) - .45)))}
/* hero animations */
@keyframes cs-kb{from{transform:scale(1)}to{transform:scale(1.12) translate(-1.5%,-1%)}}
@keyframes cs-pan{from{transform:scale(1.12) translateX(-3%)}to{transform:scale(1.12) translateX(3%)}}
@keyframes cs-fadein{from{opacity:0}}
.anim-kenburns .hero-bg img,.anim-kenburns .hs-media img,.anim-kenburns .he-media img{animation:cs-kb 20s ease-in-out infinite alternate}
.anim-zoomout .hero-bg img,.anim-zoomout .hs-media img,.anim-zoomout .he-media img{animation:kb 16s ease-out both}
.anim-pan .hero-bg img,.anim-pan .hs-media img,.anim-pan .he-media img{animation:cs-pan 26s ease-in-out infinite alternate}
.anim-fade .hero-bg,.anim-fade .hs-media,.anim-fade .he-media{animation:cs-fadein 1.6s ease both}
.anim-none .hero-bg img,.anim-none .hsl-slide.is-on img{animation:none!important}
.hero-bg.hsl-slides .hsl-slide{position:absolute;inset:0}
.hero-bg.hsl-slides .hsl-slide img{width:100%;height:100%;object-fit:cover}
.anim-kenburns .hsl-slide.is-on img{animation:cs-kb 12s ease-in-out both}
.anim-pan .hsl-slide.is-on img{animation:cs-pan 12s ease-in-out both}
.anim-fade .hsl-slide.is-on img{animation:none}
/* highlights */
.hl-media{position:absolute;inset:0;z-index:-2;overflow:hidden}
.hl::after{opacity:min(1,calc(var(--hl-shade,.5) * 2))}
.hl-link{position:absolute;inset:0;z-index:0}
.hl-copy{position:relative;z-index:1}
.hl.is-on.hl-zoom .hl-media img{animation:kb 8s ease-out both}
.hl.is-on.hl-kenburns .hl-media img{animation:cs-kb 14s ease-in-out both}
.hl.is-on.hl-slide .hl-media{animation:cs-slide 1.1s cubic-bezier(.2,.8,.2,1) both}
.hl.is-on.hl-fade .hl-copy>*{animation:cs-fadein 1.2s ease both}
.hl.is-on.hl-none .hl-copy>*{animation:none}
@keyframes cs-slide{from{transform:translateX(8%);opacity:.3}}
@media (prefers-reduced-motion:reduce){.bgm-video,.bgm-embed{display:none}}
