@property --night{syntax:"<number>";inherits:true;initial-value:0}
@property --sky{syntax:"<color>";inherits:true;initial-value:#d8e7f3}
@property --city-col{syntax:"<color>";inherits:true;initial-value:#b6c0b6}
@property --road-col{syntax:"<color>";inherits:true;initial-value:#a9afa0}
@property --dash-col{syntax:"<color>";inherits:true;initial-value:#eef0e6}
@property --pole-col{syntax:"<color>";inherits:true;initial-value:#9aa18c}
/* One timeline drives the whole scene: day -> sunset -> night -> sunrise -> day. Registering
   the properties is what lets them interpolate; unregistered custom properties would jump. */
@keyframes day-night{
  0%,8%{--night:0;--sky:#d8e7f3;--city-col:#b6c0b6;--road-col:#a9afa0;--dash-col:#eef0e6;--pole-col:#9aa18c}
  26%{--night:.42;--sky:#f6c79c;--city-col:#c2a086;--road-col:#a98f7c;--dash-col:#f8e7d6;--pole-col:#8f8073}
  42%,58%{--night:1;--sky:#0e131b;--city-col:#1c2230;--road-col:#171c22;--dash-col:#6d7559;--pole-col:#2b3327}
  74%{--night:.42;--sky:#f0c2a8;--city-col:#bf9f8a;--road-col:#a79080;--dash-col:#f5e4d5;--pole-col:#8d7f74}
  92%,100%{--night:0;--sky:#d8e7f3;--city-col:#b6c0b6;--road-col:#a9afa0;--dash-col:#eef0e6;--pole-col:#9aa18c}
}
/* Tokens. Sections that sit on ink re-declare the muted/line/accent trio via .on-ink. */
/* Sections that are off screen keep no animation clock running (JS toggles .is-offscreen), which matters most on Safari. */
.is-offscreen,.is-offscreen *,.is-offscreen *::before,.is-offscreen *::after{animation-play-state:paused!important}
/* Brand: white + black, with gold (logo) and RAL 5011 steel blue (logo dot, LED screens) as 3rd/4th colours. */
:root{--ink:#141511;--paper:#ffffff;--bone:#f2f1ec;--gold:#c9a13b;--gold-deep:#8c6d1f;--steel:#1d2b3c;--steel-lift:#3d5876;--dot:var(--steel);--accent:var(--steel);--muted:#5a5c53;--muted-head:#69705f;--line:rgba(20,21,17,.2);--ease-out:cubic-bezier(.23,1,.32,1)}
.on-ink{background:var(--ink);color:var(--paper);--accent:var(--gold);--dot:var(--steel-lift);--muted:#a0a698;--muted-head:#838c76;--line:rgba(242,243,237,.22)}

*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:94px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif;-webkit-font-smoothing:antialiased}body.menu-open{overflow:hidden}a{color:inherit;text-decoration:none}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}::selection{background:var(--gold);color:var(--ink)}:focus-visible{outline:2px solid currentColor;outline-offset:7px}h1,h2,h3,p{margin:0}
/* Arrow icons: drawn, not typed, so no font can substitute a colour emoji. */
.ico{width:1em;height:1em;flex:none;display:inline-block;vertical-align:-.13em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.contact-arrow .ico,.reel-end-arrow .ico{stroke-width:1.5}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip-link{position:fixed;top:-80px;left:24px;z-index:100;background:var(--paper);color:var(--ink);padding:16px}.skip-link:focus{top:12px}

/* Header + navigation */
.header{height:92px;padding:0 3.1%;display:flex;justify-content:space-between;align-items:center;position:fixed;inset:0 0 auto;z-index:20}
/* The bar stays transparent, so the header flips its own palette when an ink band
   scrolls underneath it. JS toggles the class from the scroll frame. */
.header--light{color:var(--paper);--accent:var(--gold);--dot:var(--steel-lift)}
.header--light .nav-cta,.header--light .menu-toggle{border-color:rgba(242,243,237,.38)}
/* THE VIOR wordmark in gold; the square dot beside it is RAL 5011. */
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.logo{display:inline-flex;align-items:flex-end;gap:7px;line-height:1;color:var(--gold)}.logo-mark{display:block;height:30px;width:auto;aspect-ratio:940/184;fill:currentColor}.logo i{width:8px;height:8px;background:var(--dot);flex:none;margin-bottom:1px;transition:background 200ms linear}
.header nav{display:flex;gap:30px;align-items:center;font-size:13px;font-weight:600}
.nav-cta{border:1px solid #52534b;padding:12px 17px;border-radius:3px;display:flex;gap:34px;align-items:center}.nav-cta span{font-size:22px;line-height:1}
.menu-toggle{display:none;background:none;border:1px solid #52534b;border-radius:3px;color:inherit;width:46px;height:42px;padding:0;align-items:center;justify-content:center;flex-direction:column;gap:6px;cursor:pointer}
.menu-toggle i{display:block;width:19px;height:2px;background:currentColor;transition:transform 220ms var(--ease-out),opacity 160ms linear}
.menu-toggle[aria-expanded=true] i:first-of-type{transform:translateY(4px) rotate(45deg)}.menu-toggle[aria-expanded=true] i:last-of-type{transform:translateY(-4px) rotate(-45deg)}
/* Mobile menu: a frosted veil over the page (the page stays readable through it), logo on top,
   links centred, Instagram at the foot. It is never display:none, so opening and closing both animate. */
.mobile-menu{position:fixed;inset:0;z-index:19;display:flex;flex-direction:column;align-items:center;color:var(--paper);overflow-y:auto;overscroll-behavior:contain;
  background:rgba(20,21,17,0);-webkit-backdrop-filter:blur(16px) saturate(1.2);backdrop-filter:blur(16px) saturate(1.2);opacity:0;visibility:hidden;
  transition:opacity 240ms ease,background-color 320ms ease,visibility 0s linear 320ms}
.mobile-menu.is-open{background:rgba(20,21,17,.72);opacity:1;visibility:visible;
  transition:opacity 260ms ease,background-color 420ms ease,visibility 0s}
.mobile-menu-top{flex:none;width:100%;height:78px;display:flex;align-items:center;justify-content:center}
.mobile-menu-top .logo-mark{height:24px}
.mobile-menu ul{list-style:none;margin:auto 0;padding:10px 0;display:flex;flex-direction:column;align-items:center;gap:min(.6svh,6px)}
.mobile-menu li a{display:inline-flex;align-items:center;gap:.3em;padding:min(1.5svh,12px) 18px;font-family:Manrope,Arial,sans-serif;font-size:min(8vw,4.6svh,34px);font-weight:600;letter-spacing:-.045em;line-height:1.1;text-align:center;transition:color 160ms linear}
.mobile-menu li a:active{color:var(--gold)}
.mobile-menu li:last-child a{color:var(--gold)}
.mobile-menu li:last-child .ico{width:.62em;height:.62em;stroke-width:2.2}
.mobile-menu-ig{flex:none;display:grid;place-items:center;width:52px;height:52px;margin-bottom:max(28px,calc(env(safe-area-inset-bottom) + 14px));border:1px solid rgba(242,243,237,.38);border-radius:50%;transition:background 160ms ease,border-color 160ms ease,color 160ms ease}
.mobile-menu-ig svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.mobile-menu-ig:active{background:var(--gold);border-color:var(--gold);color:var(--ink)}
/* Entrance: each piece rises out of a soft blur, one after the other. The closing pass is short
   and unstaggered, so a tap on a link never waits on the animation. */
.mobile-menu-top,.mobile-menu li,.mobile-menu-ig{opacity:0;transform:translateY(16px);filter:blur(6px);transition:opacity 160ms ease,transform 160ms ease,filter 160ms ease}
.mobile-menu-ig{transition:opacity 160ms ease,transform 160ms ease,filter 160ms ease,background 160ms ease,border-color 160ms ease,color 160ms ease}
.mobile-menu.is-open .mobile-menu-top,.mobile-menu.is-open li,.mobile-menu.is-open .mobile-menu-ig{opacity:1;transform:none;filter:none;
  transition:opacity 520ms var(--ease-out) calc(var(--i,0) * 55ms + 90ms),transform 640ms var(--ease-out) calc(var(--i,0) * 55ms + 90ms),filter 520ms var(--ease-out) calc(var(--i,0) * 55ms + 90ms),background 160ms ease,border-color 160ms ease,color 160ms ease}
@media(min-width:761px){.mobile-menu{display:none}}
/* The header floats above the open panel: it drops its bar, hides its own logo (the panel carries one) and flips palette. */
body.menu-open .header{color:var(--paper);--dot:var(--steel-lift);background:transparent;box-shadow:none}
body.menu-open .header .logo{opacity:0;pointer-events:none}
body.menu-open .menu-toggle{border-color:rgba(242,243,237,.38)}

/* Hero: a sticky stage the vector vehicle drives out of. Only .vehicle moves or scales. */
.hero{height:360svh;position:relative}
.hero-stage{position:sticky;top:0;height:100svh;min-height:580px;overflow:hidden;background:var(--paper)}
.vehicle-viewport{position:absolute;inset:0;overflow:hidden;z-index:3;pointer-events:none}
.hero:not(.is-ready) .vehicle-viewport{visibility:hidden}
.vehicle{position:absolute;left:0;top:0;width:1400px;height:650px;transform-origin:0 0;will-change:transform}
.vehicle-drawing{position:absolute;inset:0;width:1400px;height:650px;overflow:visible}
.wheel{transform-box:view-box;transform-origin:0 0;will-change:transform}
.billboard{position:absolute;left:36px;top:66px;width:978px;height:454px;background:var(--steel);color:var(--paper);border-radius:8px;overflow:hidden;z-index:3}
.billboard h1{font-family:'Barlow Condensed',Impact,sans-serif;font-size:1em;font-weight:800;line-height:.98;letter-spacing:-.035em;white-space:nowrap}
.screen-art{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;display:flex;flex-direction:column;align-items:center;gap:.14em}
.screen-kicker{font-size:.055em;font-weight:800;letter-spacing:.11em;white-space:nowrap;color:var(--gold)}
.screen-art p{font-size:.055em;line-height:1.5;font-weight:600;margin-top:.1em}
.led-texture{position:absolute;inset:0;pointer-events:none}
.led-texture::before,.led-texture::after{content:"";position:absolute;inset:0;background-size:5px 5px}
.led-texture::before{background-image:radial-gradient(#000 .8px,transparent 1.2px);opacity:.24}
.led-texture::after{background-image:radial-gradient(#6f86a3 .8px,transparent 1.2px);opacity:.3}
/* A quiet, continuous ripple lives inside the LED surface and travels with the vehicle. */
.led-wave{position:absolute;inset:0;overflow:hidden;pointer-events:none;opacity:.28}
.led-wave svg{display:block;width:1920px;height:480px;max-width:none;animation:led-ripple-drift 16s linear infinite;will-change:transform}
@keyframes led-ripple-drift{from{transform:translateX(0)}to{transform:translateX(-480px)}}
.reveal-title{position:absolute;top:9%;left:0;width:100%;text-align:center;opacity:0;z-index:2}
.reveal-title p{font-size:clamp(35px,4.7vw,70px);font-weight:500;line-height:1.06;letter-spacing:-.05em;margin-top:20px}
.reveal-title p em{font-style:normal;color:#6b7686}
.eyebrow{font-size:11px;letter-spacing:.12em;color:var(--accent);font-weight:600}
.skyline{position:absolute;left:0;right:0;height:min(104svh,940px);overflow:hidden;opacity:0;pointer-events:none}
.skyline svg{display:block;width:100%;height:100%}
.road{position:absolute;left:0;right:0;bottom:0;background:#3a4553;border-top:1px solid #566377;opacity:0}
.road-dashes{position:absolute;top:22px;left:0;right:0;height:2px;background:repeating-linear-gradient(to right,#e6eaf0 0 55px,transparent 55px 110px)}
.truck-caption{position:absolute;left:7%;right:7%;bottom:16%;display:flex;justify-content:space-between;opacity:0;color:#e6eaf0;font-size:11px;letter-spacing:.06em}
.truck-caption span:first-child{color:var(--gold)}
.exit-message{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;opacity:0;visibility:hidden;z-index:4}
.exit-message>p{font-family:'Barlow Condensed',Impact,sans-serif;font-weight:700;font-size:clamp(85px,13vw,190px);line-height:.97;letter-spacing:-.025em;margin:26px 0}
.exit-message>p>span{color:var(--ink);background:var(--gold);padding:0 .08em;display:inline-block}
.exit-message>a{display:flex;gap:50px;font-size:14px;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}.exit-message>a>span{font-size:23px}
.hero-bottom{position:absolute;bottom:30px;left:3.1%;right:3.1%;z-index:5;display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:.09em;font-weight:600}
.scroll-cue{display:flex;align-items:center;gap:18px}.scroll-cue span{font-size:23px;line-height:1}
.hero-index{color:var(--muted-head)}
.scroll-track{position:absolute;bottom:0;left:0;right:0;z-index:6;height:2px;background:rgba(232,234,221,.24)}
.scroll-track span{display:block;height:100%;background:var(--gold);transform-origin:left;transform:scaleX(0)}

/* Section chrome. The square marker echoes the logo dot and flags each new chapter. */
.section-pad{padding:78px 5%}
.section-label{display:flex;justify-content:space-between;gap:20px;font-size:11px;letter-spacing:.07em;font-weight:700}
.section-label>span:first-child{display:inline-flex;align-items:center;gap:11px}
.section-label>span:first-child::before{content:"";width:7px;height:7px;background:var(--gold);flex:none}
h2{font-size:clamp(52px,6.7vw,105px);font-weight:500;letter-spacing:-.065em;line-height:1.04}
h2 span{color:var(--muted-head)}
.text-link{display:flex;justify-content:space-between;padding:17px 0;border-bottom:1px solid var(--line);font-size:14px;margin-top:19px;font-weight:700}.text-link span{font-size:22px}

/* 01 — Intro, on bone */
.intro{background:var(--bone);padding-bottom:84px}
.intro-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:10%;padding:75px 0 80px}
.intro-copy{padding-top:9px;max-width:430px}
.intro-copy>p:first-child{font-size:25px;line-height:1.45;letter-spacing:-.035em;margin-bottom:23px}
.intro-copy>p:nth-child(2){color:var(--muted);font-size:16px;line-height:1.85}
.principles{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);padding-top:31px}
.principles>div{padding:0 30px;border-right:1px solid var(--line)}.principles>div:first-child{padding-left:0}.principles>div:last-child{border-right:0}
.principles h3{font-size:25px;font-weight:500;letter-spacing:-.045em;margin-bottom:12px}
.principles p{font-size:14px;color:var(--muted);line-height:1.7}

/* 02 — Experience, on ink so the street frame reads as a lit screen in the dark */
.experience-heading{padding-bottom:58px}
.experience-heading h2{margin-top:64px;font-size:clamp(45px,5.8vw,89px)}
.experience-foot{margin:0 5%;padding:27px 0 69px;display:flex;justify-content:space-between;align-items:start}
.experience-foot>span{font-size:11px;letter-spacing:.08em}
.experience-foot p{font-size:14px;color:var(--muted);line-height:1.8}

/* 03 — Studio: the hero's vehicle, with a screen the visitor writes.
   The screen is a query container, so every value on the creative scales with the
   screen itself rather than the viewport, and needs no measuring or resize handler. */
.studio{position:relative;background:var(--bone);padding:0 0 clamp(34px,5svh,54px);animation:day-night 15.2s steps(18) infinite}
.studio-heading{position:absolute;z-index:2;left:5%;right:5%;top:clamp(30px,6svh,70px);margin:0;pointer-events:none}
.studio-heading h2{color:color-mix(in srgb,var(--ink),#eef0e6 calc(clamp(0,(var(--night,0) - .70) * 100,1) * 100%));transition:color 500ms linear}
.studio-heading h2 span{color:color-mix(in srgb,var(--muted-head),#9aa288 calc(clamp(0,(var(--night,0) - .70) * 100,1) * 100%))}
.studio-heading h2{font-size:clamp(48px,4.2vw,64px)}
.studio-stage{position:relative;width:auto;max-width:none;margin:0}
/* The scene is 1400x780 of viewBox space: the vehicle occupies the top 650, the road the rest.
   --night runs 0..1 from the slider and every day/night value is mixed against it. */
.studio-scene{--sh:clamp(420px,66svh,660px);position:relative;height:var(--sh);overflow:hidden;background:var(--sky)}
.studio-city{position:absolute;left:0;right:0;bottom:19.6%;height:48%;overflow:hidden;color:var(--city-col)}
.studio-city-track{display:block;height:100%;width:auto;animation:city-drift 46s linear infinite}
/* Street lamps stand on the kerb line and light up warm as --night rises. */
.studio-lamps{position:absolute;left:0;right:0;bottom:19.6%;height:44%;overflow:hidden;color:var(--pole-col)}
.studio-lamps-track{display:block;position:relative;height:100%;width:auto;overflow:visible;animation:lamp-drift 9s linear infinite}
/* The glows are their own layer: fading its opacity is a composite-only change, where fading 24 circles inside the lamp svg repainted all of it. */
.studio-glows-track{display:block;position:absolute;left:0;top:0;height:100%;width:auto;overflow:visible;opacity:var(--night,0);animation:lamp-drift 9s linear infinite}
/* Gulls cross the sky on their own long loops, recessive enough to stay scenery. */
.studio-gulls{position:absolute;left:0;right:0;top:0;height:34%;overflow:hidden;pointer-events:none;color:var(--pole-col)}
.gull{position:absolute;width:clamp(22px,2.4vw,34px);height:auto;opacity:.7}
.gull-1{top:24%;animation:gull-cross 34s linear infinite}
.gull-2{top:46%;width:clamp(15px,1.7vw,24px);animation:gull-cross 46s linear infinite -14s}
.gull-3{top:13%;width:clamp(12px,1.3vw,19px);animation:gull-cross 58s linear infinite -31s}
@keyframes gull-cross{from{transform:translateX(-60px)}to{transform:translateX(calc(100vw + 60px))}}
.studio-road{position:absolute;left:0;right:0;bottom:0;height:19.6%;overflow:hidden;background:var(--road-col)}
.studio-road i{position:absolute;left:0;top:42%;width:200%;height:5px;background:repeating-linear-gradient(90deg,var(--dash-col) 0 62px,transparent 62px 124px);animation:road-drift 1.15s linear infinite}
/* Vehicle layers: the body rides on its suspension, the wheels stay planted and spin. */
.studio-fleet{position:absolute;inset:0}
.studio-rig,.studio-screen-layer,.studio-wheels,.studio-glow-layer{position:absolute;left:0;right:0;bottom:20%;margin-inline:auto;width:min(96%,calc(var(--sh) * .9477));height:auto;aspect-ratio:1400/650;transform:translateY(3.54%)}
.studio-rig,.studio-screen-layer,.studio-glow-layer{animation:rig-bob 4.6s ease-in-out infinite}
.studio-truck{display:block;width:100%;height:100%}
.studio-truck,.swheel{filter:brightness(calc(1 - var(--night,0) * .42))}
/* One small svg per wheel: an HTML element's transform animates on the compositor, an svg child's would repaint the layer every frame. */
.swheel{position:absolute;display:block;aspect-ratio:1;height:auto;animation:wheel-spin 1.15s linear infinite;will-change:transform}
@keyframes city-drift{to{transform:translateX(-16.6667%)}}
@keyframes lamp-drift{to{transform:translateX(-16.6667%)}}
@keyframes road-drift{to{transform:translateX(-124px)}}
@keyframes wheel-spin{to{transform:rotate(360deg)}}
@keyframes rig-bob{0%,100%{transform:translateY(3.54%)}50%{transform:translateY(2.39%)}}
/* Tracks the billboard rect inside the SVG viewBox: 36,66 978x454 of 1400x650 (M: 190,190 700x322; S: 456,280 404x242). */
/* Screen rect per vehicle, as a share of the shared 1400x650 viewBox. */
.studio-stage[data-vehicle=l]{--sx:2.571%;--sy:10.154%;--sw:69.857%;--shh:69.846%}
.studio-stage[data-vehicle=m]{--sx:13.571%;--sy:29.231%;--sw:50%;--shh:49.538%}
.studio-stage[data-vehicle=s]{--sx:32.571%;--sy:43.077%;--sw:28.857%;--shh:37.231%}
.studio-screen{position:absolute;left:var(--sx);top:var(--sy);width:var(--sw);height:var(--shh);container-type:inline-size;background:var(--steel);border-radius:6px;overflow:hidden;}
.led-creative{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:7.5cqw 5cqw}
.led-head{position:relative;font-family:'Barlow Condensed',Impact,sans-serif;font-weight:800;line-height:.94;letter-spacing:-.035em;text-align:center;color:var(--paper)}
.led-head span{display:block;white-space:nowrap}
.led-mark{position:absolute;left:4.4cqw;top:3.4cqw;height:3cqw;width:auto;aspect-ratio:940/184;fill:var(--gold)}
.led-foot{position:absolute;left:4.4cqw;right:4.4cqw;bottom:3cqw;display:flex;justify-content:flex-end;gap:2cqw;font-size:1.8cqw;font-weight:800;letter-spacing:.14em;color:rgba(255,255,255,.6)}
@container (max-width:420px){.led-foot{display:none}.led-mark{height:4.6cqw;top:4cqw}}
.studio-screen .led-wave{color:var(--gold)}
.studio-screen .led-texture::before,.studio-screen .led-texture::after{background-size:.8cqw .8cqw}
.studio-screen .led-texture::before{background-image:radial-gradient(#000 .13cqw,transparent .2cqw)}
.studio-screen .led-texture::after{background-image:radial-gradient(#6f86a3 .13cqw,transparent .2cqw)}
/* Controls sit under the vehicle: the message first, then the creative and the way out.
   The field is set in the display face so typing reads as the screen it feeds. */
.studio-ctrl{margin-top:clamp(20px,3.4svh,30px);padding:0 5%}
.studio-write{width:100%;padding:14px 18px;border:1px solid var(--line);border-radius:4px;background:none;color:inherit;font-family:'Barlow Condensed',Impact,sans-serif;font-weight:800;font-size:clamp(28px,3.2vw,46px);line-height:1.06;letter-spacing:-.025em;text-transform:uppercase}
.studio-write::placeholder{color:var(--muted-head)}
.studio-write:focus{border-color:var(--ink);outline:none}
.studio-write:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.studio-actions{display:flex;justify-content:flex-end;align-items:center;gap:24px;flex-wrap:wrap;margin-top:30px}
.studio-go{display:inline-flex;align-items:center;gap:28px;padding:16px 22px;border-radius:3px;background:var(--ink);color:var(--paper);font-size:14px;font-weight:700;white-space:nowrap}
.studio-go span{font-size:21px;line-height:1}

/* Reels carousel — horizontal scroll-snap strip of muted vertical campaign clips */
.reels{margin-top:6px}
.reels-track{list-style:none;margin:0;padding:0 5% 6px;display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-left:5%;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.reels-track::-webkit-scrollbar{display:none}
.reel{position:relative;flex:0 0 auto;width:clamp(196px,17.5vw,268px);aspect-ratio:9/16;border-radius:10px;scroll-snap-align:start;background:#0a0b08 center/cover no-repeat}
.reel video{display:block;width:100%;height:100%;object-fit:cover;border-radius:10px}
.reel-tag{position:absolute;left:0;right:0;bottom:0;border-radius:0 0 10px 10px;padding:40px 14px 14px;background:linear-gradient(to top,rgba(0,0,0,.78),rgba(0,0,0,.38) 46%,transparent);font-size:13px;font-weight:800;letter-spacing:.01em;color:var(--paper)}
.reel-end a{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:20px;border-radius:10px;background:var(--gold);color:var(--ink)}
.reel-end-arrow{font-family:Arial,sans-serif;font-size:58px;line-height:1}
.reel-end-handle{text-align:center;font-size:13px;font-weight:800;letter-spacing:.01em}
.reel-end-text{font-size:12px;font-weight:700;letter-spacing:.08em}
.reel-end-text strong{display:block;font-family:'Barlow Condensed',Impact,sans-serif;font-size:58px;font-weight:700;letter-spacing:-.03em;line-height:.9;margin-bottom:6px}

/* 04 — Process, back on paper */
.process{background:var(--paper)}
.process-heading{display:flex;justify-content:space-between;align-items:end;margin:62px 0}
.process-heading>p{font-size:17px;line-height:1.7;padding-right:10%;color:var(--muted)}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:40px}
.steps article{border-top:1px solid var(--line);padding-top:23px}
.step-number{font-size:13px;color:var(--muted-head);display:block;margin-bottom:40px}
.steps h3{font-size:23px;font-weight:500;letter-spacing:-.045em;margin-bottom:14px}
.steps p{font-size:15px;line-height:1.8;color:var(--muted);max-width:320px}

/* 05 — Contact, on ink to close the page the way the hero opened it */
.contact{padding-bottom:25px}
.contact-link{display:block;position:relative;margin-top:62px}
.contact h2{font-family:'Barlow Condensed',Impact,sans-serif;font-size:clamp(70px,12.8vw,200px);font-weight:700;line-height:.88;letter-spacing:-.025em}
.contact-arrow{position:absolute;right:1%;top:-15px;font-size:clamp(90px,14vw,220px);font-family:Arial,sans-serif;line-height:1;color:var(--gold)}
.contact-action{margin-top:35px;padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;font-size:16px}
.contact-action>span{color:var(--gold);font-size:14px}
footer{display:flex;align-items:center;justify-content:space-between;padding-top:45px;gap:20px}
footer .logo-mark{height:24px}
footer>span,footer>a:not(.logo){font-size:10px;letter-spacing:.06em}
footer .copyright{color:var(--muted)}
/* Build credit, pinned to the far right of the footer row */
.weis-credit{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:3px;color:rgba(242,243,237,.6)}
.weis-credit-main>img{display:block;width:auto;height:13px;object-fit:contain;opacity:.8}
.weis-credit-name{font-size:8px;font-style:italic;font-weight:300;letter-spacing:.2em}

/* Studio fleet: three drawings share one viewBox; the stage's data-vehicle picks one. */
.studio-truck{display:none}
.studio-stage[data-vehicle=s] .studio-truck--s,.studio-stage[data-vehicle=m] .studio-truck--m,.studio-stage[data-vehicle=l] .studio-truck--l{display:block}
.swheel{display:none}
.studio-stage[data-vehicle=s] .swheel--s,.studio-stage[data-vehicle=m] .swheel--m,.studio-stage[data-vehicle=l] .swheel--l{display:block}
.studio-fleet{will-change:transform}
/* Uploaded creative covers the screen: cropped, never squeezed. The copy stays on top. */
.led-media{position:absolute;inset:0}
.led-media>img,.led-media>video{display:block;width:100%;height:100%;object-fit:cover}
.studio-screen.has-media .led-head{text-shadow:0 .3cqw 1.6cqw rgba(0,0,0,.35)}
.studio-screen.has-media .led-texture{opacity:.45}
/* Night light: a blurred copy of whatever is on the screen spills past its edges and onto
   the road, so the glow always takes the creative's own colours. */
/* The glow is built at a quarter of its size and scaled back up: a blur is low-frequency anyway, and the GPU blurs 1/16th of the pixels. */
.studio-glow{position:absolute;left:calc(var(--sx) + var(--sw) * .375);top:calc(var(--sy) + var(--shh) * .375);width:calc(var(--sw) / 4);height:calc(var(--shh) / 4);pointer-events:none;opacity:calc(var(--night,0) * .95);filter:blur(clamp(5.5px,.85vw,11.5px)) saturate(1.5);transform:scale(4.56);border-radius:3px;overflow:hidden;background:linear-gradient(120deg,#3d5c86,#1d2b3c 45%,#c9a13b)}
.studio-glow>img,.studio-glow>video{display:block;width:100%;height:100%;object-fit:cover}
.studio-glow::after{content:"";position:absolute;left:0;right:0;top:100%;height:60%;background:inherit}
.studio-glow-layer::after{content:"";position:absolute;left:calc(var(--sx) - 4%);width:calc(var(--sw) + 8%);top:88%;height:34%;border-radius:50%;background:radial-gradient(closest-side,rgba(255,214,140,.5),transparent);opacity:var(--night,0);pointer-events:none;filter:blur(10px)}
.studio-screen.has-media .led-wave{display:none}
.studio-row{display:flex;justify-content:space-between;align-items:stretch;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.picker{display:flex;gap:8px}
.pick{display:flex;align-items:center;gap:12px;padding:10px 16px 10px 12px;border:1px solid var(--line);border-radius:4px;background:none;color:inherit;cursor:pointer;text-align:left;--sil-box:var(--muted-head);--sil-hub:var(--muted-head);--sil-win:var(--paper);color:var(--ink);fill:currentColor}
.pick svg{height:34px;width:auto;aspect-ratio:1400/650;flex:none;fill:#2c2e27}
/* Silhouettes are cropped to the same box, so the visible size itself says small, medium, large. */
.pick span{display:flex;flex-direction:column;font-size:11px;color:var(--muted);letter-spacing:.02em}
.pick b{white-space:nowrap;font-size:13px;color:var(--ink);font-weight:800;letter-spacing:0}
.pick[aria-pressed=true]{border-color:var(--steel);background:var(--steel);--sil-box:var(--gold);--sil-hub:var(--gold);--sil-win:var(--steel)}
.pick[aria-pressed=true] svg{fill:#fff}
.pick[aria-pressed=true] span{color:rgba(255,255,255,.7)}.pick[aria-pressed=true] b{color:#fff}
.pick:focus-visible{outline:2px solid var(--steel);outline-offset:2px}
.media-ctrl{display:flex;gap:8px;align-items:stretch}
.media-add{display:flex;align-items:center;gap:12px;padding:0 18px;border:1px dashed var(--steel);border-radius:4px;cursor:pointer;font-size:13px;font-weight:700;color:var(--steel)}
.media-add:focus-within{outline:2px solid var(--steel);outline-offset:2px}
.media-add-ico{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--steel);color:#fff;font-size:15px}
.media-clear{padding:0 16px;border:1px solid var(--line);border-radius:4px;background:none;font-size:13px;font-weight:700;cursor:pointer;color:var(--ink)}
.studio-actions{justify-content:flex-end}

/* Who we are: figures under the intro */
.intro .section-label{margin-bottom:0}
.stats{display:grid;grid-template-columns:repeat(3,1fr);margin:0 0 56px;border-top:1px solid var(--line)}
.stats>div{padding:22px 30px 0 0;display:flex;flex-direction:column-reverse;gap:6px}
.stats dt{font-size:11px;letter-spacing:.1em;font-weight:700;text-transform:uppercase;color:var(--muted)}
.stats dd{margin:0;font-family:'Barlow Condensed',Impact,sans-serif;font-size:clamp(46px,5vw,76px);font-weight:700;line-height:.95;letter-spacing:-.02em;color:var(--steel)}
.stats dd span{color:var(--gold)}

/* References: two opposed marquee rows of partner marks */
.refs{background:var(--paper);overflow:hidden;padding-bottom:88px}
.refs-title{margin:52px 0 48px;font-size:clamp(44px,5.4vw,84px)}
.marquee{position:relative;display:flex;flex-direction:column;gap:28px;margin:0 -5.6%}
/* Edge fade as two static overlays: a mask over the moving tracks would be re-applied every frame. */
.marquee::before,.marquee::after{content:"";position:absolute;top:0;bottom:0;width:9%;z-index:1;pointer-events:none}
.marquee::before{left:0;background:linear-gradient(90deg,var(--paper),rgba(255,255,255,0))}
.marquee::after{right:0;background:linear-gradient(270deg,var(--paper),rgba(255,255,255,0))}
.marquee-row{display:flex;width:max-content;--dur:52s}
.marquee-row:nth-child(2){--dur:60s}
.marquee-track{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:clamp(48px,5vw,80px);padding-right:clamp(48px,5vw,80px);animation:marquee var(--dur) linear infinite}
.marquee-row:nth-child(2) .marquee-track{animation-direction:reverse}
/* Each mark is sized by area (set in the HTML), so wide and square logos carry the same weight. */
.marquee-track li{flex:none;height:80px;display:flex;align-items:center;justify-content:center}
.marquee-track img{display:block}
@keyframes marquee{to{transform:translateX(-100%)}}

/* Experience footer collage: the street video, framed by the people who stop to look */
.street{position:relative;display:grid;grid-template-columns:1fr 2.4fr 1fr;grid-template-rows:auto auto;gap:18px;margin:12px 5% 0;padding:40px 0 90px;align-items:center}
.street figure{margin:0;border-radius:10px;background:#0a0b08}
.street img,.street video{display:block;width:100%;height:100%;object-fit:cover;border-radius:10px}
.street-video{grid-column:2;grid-row:1/3;aspect-ratio:16/9;position:relative;z-index:1;box-shadow:0 30px 80px rgba(0,0,0,.45)}
.street-video figcaption{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;padding:40px 18px 16px;font-size:10px;font-weight:700;letter-spacing:.12em;color:#fff;border-radius:0 0 10px 10px;background:linear-gradient(to top,rgba(0,0,0,.65),transparent)}
.street-video figcaption span:first-child{display:inline-flex;align-items:center;gap:8px}
.street-video figcaption span:first-child::before{content:"";width:7px;height:7px;border-radius:50%;background:#e5484d;animation:rec 1.6s ease-in-out infinite}
@keyframes rec{50%{opacity:.25}}
/* Landscape frames, the same 16:9 as the source photos, so nothing is cropped away. */
.street-ph{aspect-ratio:16/9}
.street-ph--a{grid-column:1;grid-row:1;width:100%;align-self:end}
.street-ph--b{grid-column:1;grid-row:2;width:84%;justify-self:end;align-self:start}
.street-ph--c{grid-column:3;grid-row:1;width:84%;align-self:end}
.street-ph--d{grid-column:3;grid-row:2;width:100%;align-self:start}
.street-note{position:absolute;left:0;bottom:24px;font-size:clamp(20px,1.8vw,26px);letter-spacing:-.04em;line-height:1.25}
.street-note span{color:var(--gold)}

/* Screen photos: a bento preview; the full set lives on /galeri.html */
.gallery{background:var(--paper)}
.gallery-head{display:flex;justify-content:space-between;align-items:end;gap:30px;margin:52px 0 40px}
.gallery-head h2{font-size:clamp(44px,5.4vw,84px)}
.gallery-head .text-link{min-width:240px;margin:0}
.gallery-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:clamp(150px,15vw,240px);gap:12px}
.gallery-grid li{overflow:hidden;border-radius:8px;background:var(--bone)}
.gallery-grid li:first-child{grid-column:span 2;grid-row:span 2}
.gallery-grid li:nth-child(6){grid-column:span 2}
.gallery-grid a{display:block;height:100%}
.gallery-grid img{display:block;width:100%;height:100%;object-fit:cover;transition:transform 700ms var(--ease-out)}

/* Vehicle types: silhouettes share a ground line, so the growth reads at a glance */
.fleet{background:var(--bone)}
.fleet-title{margin:52px 0 44px;font-size:clamp(44px,5.4vw,84px)}
.fleet-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.fleet-card{display:flex;flex-direction:column;background:var(--paper);border-radius:10px;overflow:hidden;border:1px solid var(--line)}
.fleet-art{position:relative;height:clamp(210px,19vw,300px);background:linear-gradient(to bottom,#e9edf2 0 82%,#cfd3d8 82%);overflow:hidden;--sil-box:var(--steel);--sil-hub:var(--gold);--sil-win:#9fb3c8;fill:#2c2e27}
.fleet-art::after{content:"";position:absolute;left:0;right:0;bottom:8%;height:3px;background:repeating-linear-gradient(90deg,#fff 0 26px,transparent 26px 52px);opacity:.8}
.fleet-art svg{position:absolute;left:50%;bottom:9%;width:92%;height:auto;transform:translateX(-50%)}
/* The three drawings share one viewBox but their bodies sit off its centre (small +65, medium +9 of 1400), so each is pulled back to the card's middle. */
.fleet-card[data-size=s] .fleet-art svg{margin-left:-4.27%}.fleet-card[data-size=m] .fleet-art svg{margin-left:-.59%}
.fleet-card.visible .fleet-art svg{animation:fleet-in 1100ms var(--ease-out) both}
.fleet-card:nth-child(2).visible .fleet-art svg{animation-delay:120ms}.fleet-card:nth-child(3).visible .fleet-art svg{animation-delay:240ms}
@keyframes fleet-in{from{transform:translateX(-160%)}to{transform:translateX(-50%)}}
.fleet-meta{padding:24px 24px 22px;display:flex;flex-direction:column;flex:1}
.fleet-meta h3{margin-top:0;font-size:30px;font-weight:500;letter-spacing:-.045em}
.fleet-tag{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-deep);margin-top:4px}
.fleet-meta>p:not(.fleet-tag){font-size:14px;line-height:1.7;color:var(--muted);margin-top:14px}
.fleet-meta ul{list-style:none;margin:16px 0 22px;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.fleet-meta li{font-size:11px;font-weight:700;padding:6px 10px;border-radius:30px;background:var(--bone);color:var(--ink)}
.fleet-try{margin-top:auto;display:flex;justify-content:space-between;align-items:center;padding:14px 0 0;border:0;border-top:1px solid var(--line);background:none;font-size:14px;font-weight:700;color:var(--steel);cursor:pointer}
.fleet-try span{font-size:20px;line-height:1}

/* Special projects: wraps and rooftop builds, each a lead video plus a second angle */
.projects-title{margin:52px 0 44px;font-size:clamp(44px,5.4vw,84px)}
.projects-list{display:grid;gap:clamp(40px,5vw,72px)}
.project{display:grid;grid-template-columns:1.75fr 1fr;gap:18px}
.project--flip{grid-template-columns:1fr 1.75fr}.project--flip .project-main{order:2}
.project figure{margin:0;border-radius:10px;background:#0a0b08}
.project video{display:block;width:100%;height:100%;object-fit:cover;border-radius:10px}
.project-main{aspect-ratio:16/9}
.project-side{display:flex;flex-direction:column;justify-content:space-between;gap:24px}
.project-sub{aspect-ratio:16/9}
.project-kind{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}
.project-meta h3{margin-top:12px;font-size:clamp(30px,2.8vw,44px);font-weight:500;letter-spacing:-.045em}
.project-meta p{margin-top:12px;font-size:14px;line-height:1.7;color:var(--muted);max-width:44ch}

/* Contact form, above the closing line */
.contact-form-wrap{display:grid;grid-template-columns:1fr 1.5fr;gap:8%;margin:56px 0 30px;padding-bottom:64px;border-bottom:1px solid var(--line)}
.contact-intro h3{font-size:clamp(32px,3.2vw,48px);font-weight:500;letter-spacing:-.05em;line-height:1.08}
.contact-intro h3 span{color:var(--muted-head)}
.contact-intro p{margin-top:22px;font-size:15px;line-height:1.75;color:var(--muted);max-width:360px}
.contact-mail{display:inline-block;margin-top:14px;font-size:18px;font-weight:700;color:var(--gold);border-bottom:1px solid currentColor;padding-bottom:3px}
.contact-form{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field{position:relative;margin:0;border:0;padding:0;min-width:0}
.field--wide{grid-column:1/-1}
/* Boxed fields: a visible edge and a lifted ground, so each one reads as something to fill in. */
.field input:not([type=radio]),.field textarea{width:100%;padding:28px 16px 10px;border:1px solid rgba(242,243,237,.4);border-radius:8px;background:rgba(242,243,237,.08);color:inherit;font:inherit;font-size:17px;line-height:1.3;resize:vertical;transition:border-color 160ms ease,background-color 160ms ease,box-shadow 160ms ease}
.field textarea{min-height:128px}
.field label{position:absolute;left:17px;top:20px;font-size:15px;color:rgba(242,243,237,.7);pointer-events:none;transform-origin:0 0;transition:transform 200ms var(--ease-out),color 200ms linear}
.field input:not([type=radio]):hover,.field textarea:hover{border-color:rgba(242,243,237,.65)}
.field input:not([type=radio]):focus,.field textarea:focus{outline:none;border-color:var(--gold);background:rgba(242,243,237,.12);box-shadow:0 0 0 3px rgba(201,161,59,.22)}
.field input:not([type=radio]):focus+label,.field input:not([type=radio]):not(:placeholder-shown)+label,.field textarea:focus+label,.field textarea:not(:placeholder-shown)+label{transform:translateY(-12px) scale(.76);color:var(--gold)}
.field [aria-invalid=true]{border-color:#ff7a6b;background:rgba(255,122,107,.08)}
.field--chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.field--chips legend{float:left;width:100%;font-size:12px;color:var(--muted);margin-bottom:10px}
.field--chips label{position:static;cursor:pointer;pointer-events:auto}
.field--chips input{position:absolute;opacity:0;width:1px;height:1px}
.field--chips span{display:inline-block;padding:10px 16px;border:1px solid rgba(242,243,237,.4);border-radius:30px;background:rgba(242,243,237,.06);font-size:13px;font-weight:600;transition:background 160ms ease,color 160ms ease,border-color 160ms ease}
.field--chips label:hover span{border-color:rgba(242,243,237,.7)}
.field--chips input:checked+span{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.field--chips input:focus-visible+span{outline:2px solid var(--gold);outline-offset:2px}
.form-foot{display:flex;justify-content:space-between;align-items:center;gap:20px}
.form-status{font-size:13px;color:var(--muted);min-height:1.4em}
.form-status.is-error{color:#ff9a8d}.form-status.is-ok{color:var(--gold)}
.form-send{display:inline-flex;align-items:center;gap:40px;padding:17px 24px;border:0;border-radius:3px;background:var(--gold);color:var(--ink);font-size:15px;font-weight:800;cursor:pointer}
.form-send span{font-size:20px;line-height:1}
.form-send[disabled]{opacity:.6;cursor:progress}
footer a[href^="mailto"]{color:var(--gold)}


.reveal{opacity:0;transform:translateY(22px);transition:opacity 650ms var(--ease-out),transform 650ms var(--ease-out)}
.reveal.visible{opacity:1;transform:translateY(0)}

@media(hover:hover) and (pointer:fine){
  .nav-cta{transition:background 180ms ease,color 180ms ease,border-color 180ms ease}
  .nav-cta:hover{background:var(--gold);border-color:var(--gold);color:var(--ink)}
  .header nav>a:not(.nav-cta):hover{color:var(--accent)}
  .text-link span,.contact-arrow{transition:transform 220ms var(--ease-out)}
  .text-link:hover span{transform:translate(3px,-3px)}
  .contact-link:hover .contact-arrow{transform:translate(9px,-9px)}
  .studio-go{transition:background 180ms ease,border-color 180ms ease,color 180ms ease}
  .studio-go:hover{background:var(--accent)}
  .reel-end a{transition:background 180ms ease}
  .reel-end a:hover{background:var(--paper)}
  footer>a:hover{color:var(--accent)}
  .weis-credit,.weis-credit-main>img{transition:color 180ms ease,opacity 180ms ease}
  .weis-credit:hover{color:var(--paper)}
  .weis-credit:hover .weis-credit-main>img{opacity:1}
  .gallery-grid a:hover img{transform:scale(1.04)}
  .fleet-try span,.form-send span{transition:transform 220ms var(--ease-out)}
  .fleet-try:hover span,.form-send:hover span{transform:translate(3px,-3px)}
  .pick{transition:border-color 160ms ease,background 160ms ease}
  .pick:not([aria-pressed=true]):hover{border-color:var(--steel)}
  .media-add{transition:background 160ms ease}.media-add:hover{background:rgba(29,43,60,.06)}
  .form-send{transition:background 180ms ease}.form-send:hover{background:#dcb65a}
}

@media(max-width:760px){.project,.project--flip{grid-template-columns:1fr}.project--flip .project-main{order:0}.projects-title{margin:36px 0 30px}}
@media(max-width:760px){
  /* A transparent bar lets headings slide under the logo on a phone, so it gets a frosted ground
     that follows the palette flip (paper over light sections, ink over .on-ink ones). */
  .header{height:78px;padding:0 6%;background:rgba(255,255,255,.95);box-shadow:0 1px 0 rgba(20,21,17,.07);transition:background-color 240ms ease,box-shadow 240ms ease}
  .header--light{background:rgba(20,21,17,.94);box-shadow:0 1px 0 rgba(242,243,237,.1)}
  .header .logo{transition:opacity 200ms ease}.header .logo-mark{height:21px}
  .menu-toggle{height:44px}
  .header nav{display:none}.menu-toggle{display:flex}
  .hero-bottom{left:6%;right:6%;bottom:24px;font-size:10px}
  .hero-bottom>span:first-child{max-width:130px;line-height:1.6}
  .hero-index{display:none}
  .scroll-cue{gap:12px;max-width:170px;text-align:right;font-size:10px;line-height:1.6}
  .reveal-title{top:18%}.reveal-title p{font-size:43px}.eyebrow{font-size:10px}
  .truck-caption{left:6%;right:6%;bottom:17%;font-size:10px;gap:20px;line-height:1.6}
  .truck-caption>span{max-width:47%}.truck-caption>span:last-child{text-align:right}
  .exit-message>p{font-size:23vw}
  .screen-kicker,.screen-art p{font-size:.14em}.screen-art{gap:.3em}
  .section-pad{padding:50px 6%}
  .section-label{font-size:10px;letter-spacing:.04em}
  .section-label>span:first-child{gap:8px}
  .section-label>span:last-child{text-align:right;max-width:48%}
  .intro-grid{grid-template-columns:1fr;gap:32px;padding:45px 0}
  h2{font-size:59px}
  .intro-copy{max-width:none;padding:0}.intro-copy>p:first-child{font-size:23px}.intro-copy>p:nth-child(2){font-size:15px}
  .principles{grid-template-columns:1fr;padding:0}
  .principles>div,.principles>div:first-child{padding:24px 0;border-right:0;border-bottom:1px solid var(--line)}
  .principles>div:last-child{border-bottom:0;padding-bottom:0}
  .principles h3{font-size:24px;margin-bottom:7px}.principles p{font-size:14px}
  .experience-heading{padding-bottom:35px}
  .reels-track{padding:0 6% 6px;gap:10px;scroll-padding-left:6%}
  .reel{width:min(62vw,240px)}
  .reel-end-arrow,.reel-end-text strong{font-size:48px}.experience-heading h2{margin-top:40px;font-size:44px}
  .experience-foot{margin:0 6%;padding:23px 0 45px;display:block}
  .experience-foot>span{font-size:10px}.experience-foot p{margin-top:16px;font-size:13px}
  .studio{padding:0 0 40px}
  .studio-ctrl{padding:0 6%}
  .studio-heading{left:6%;right:6%;top:34px}
  .studio-scene{--sh:clamp(390px,58svh,500px)}
  .studio-ctrl{margin-top:30px}
  .studio-actions{margin-top:24px;gap:18px}
  .studio-go{flex:1;justify-content:space-between;gap:20px;padding:15px 18px}
  .process-heading{margin:43px 0 32px;display:block}
  .process-heading h2{font-size:42px}.process-heading>p{margin-top:23px;font-size:15px}
  .steps{grid-template-columns:1fr;gap:28px}
  .steps article{position:relative;padding:24px 0 0 50px}
  .step-number{position:absolute;left:0;top:28px;margin:0}
  .steps h3{font-size:23px;margin-bottom:8px}.steps p{font-size:14px;max-width:100%}
  .contact{padding-bottom:27px}.contact-link{margin-top:48px}
  .contact h2{font-size:16vw}.contact-arrow{font-size:65px;right:0;top:-6px}
  .contact-action{margin-top:27px;gap:15px;align-items:center;font-size:14px}
  .contact-action>span{font-size:11px;max-width:140px;text-align:right}
  .contact footer{flex-wrap:wrap;padding-top:32px;gap:28px}
  footer .logo{flex-basis:auto}
  footer>span:nth-child(2){order:4;width:100%;font-size:10px}
  footer .copyright{order:3}footer>a:not(.logo){font-size:11px}
  .weis-credit{order:5;width:100%;margin-left:0}
  .stats{grid-template-columns:1fr 1fr;margin-bottom:36px}.stats>div:last-child{grid-column:1/-1}
  .refs{padding-bottom:56px}.refs-title,.gallery-head h2,.fleet-title{font-size:44px;margin:36px 0 32px}
  .marquee{margin:0 -6.4%;gap:18px}.marquee-track{gap:40px;padding-right:40px}.marquee-track li{height:64px}.marquee-track img{zoom:.8}
  .street{grid-template-columns:1fr 1fr;margin:0 6%;padding:10px 0 50px;gap:10px}
  .street-video{grid-column:1/-1;grid-row:1}
  .street-ph--a,.street-ph--b,.street-ph--c,.street-ph--d{grid-row:auto;grid-column:auto;width:100%;justify-self:stretch;align-self:auto}
  .street-ph--c,.street-ph--d{display:none}
  .street-note{position:static;grid-column:1/-1;margin-top:10px}
  .gallery-head{display:block;margin:36px 0 28px}.gallery-head .text-link{margin-top:20px;min-width:0}
  .gallery-grid{grid-template-columns:1fr 1fr;grid-auto-rows:130px;gap:8px}
  .gallery-grid li:nth-child(6){grid-column:auto}
  .gallery-grid li:last-child{grid-column:1/-1}
  .fleet-grid{grid-template-columns:1fr}
  .studio-row{flex-direction:column}
  .picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
  .pick b{white-space:normal;line-height:1.25}
  .pick{flex-direction:column;align-items:flex-start;gap:8px;padding:10px}
  .pick svg{height:26px}
  .media-add{padding:14px 16px;flex:1}
  .studio-actions{flex-direction:column;align-items:stretch}
  .contact-form-wrap{grid-template-columns:1fr;gap:36px;margin:40px 0 20px;padding-bottom:44px}
  .contact-form{grid-template-columns:1fr;gap:12px}
  .form-foot{flex-direction:column-reverse;align-items:stretch}
  .form-send{justify-content:space-between}
}

@media(prefers-reduced-motion:reduce){
  .studio-city-track,.studio-lamps-track,.studio-glows-track,.studio-road i,.swheel,.studio-rig,.studio-screen-layer,.studio-glow-layer,.gull{animation:none}
  .studio{animation:none}
  html{scroll-behavior:auto}
  .hero,.hero-stage{height:100svh;min-height:650px}
  .vehicle,.wheel{will-change:auto}
  .vehicle-viewport{clip-path:none!important}
  .led-wave svg{animation:none;will-change:auto}
  .mobile-menu,.mobile-menu-top,.mobile-menu li,.mobile-menu-ig,.header{transition:none!important}.mobile-menu-top,.mobile-menu li,.mobile-menu-ig{transform:none;filter:none}
  .marquee-track{animation:none}.marquee-row{width:auto;flex-wrap:wrap}.marquee-track[aria-hidden]{display:none}.marquee-track{flex-wrap:wrap;justify-content:center}.marquee{margin:0}.marquee::before,.marquee::after{display:none}
  .fleet-card.visible .fleet-art svg{animation:none}.street-video figcaption span:first-child::before{animation:none}
  .reveal{opacity:1;transform:none;transition:none}
  .contact-arrow,.text-link span,.menu-toggle i{transition:none}
}

/* Gallery page */
.gallery-page .header--static{position:sticky;background:rgba(255,255,255,.96)}
.gallery-page .gallery-nav{display:flex}
.gallery--full{padding-top:40px}
.gallery-h1{font-size:clamp(52px,6.7vw,105px);font-weight:500;letter-spacing:-.065em;line-height:1.04}
.gallery-h1 span{color:var(--muted-head)}
.gallery-masonry{list-style:none;margin:0;padding:0;columns:3 320px;column-gap:12px}
.gallery-masonry li{break-inside:avoid;margin-bottom:12px;border-radius:8px;overflow:hidden;background:var(--bone)}
.gallery-masonry button{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in}
.gallery-masonry img{display:block;width:100%;height:auto}
/* Lightbox: a full-screen viewer. Top bar (count, zoom on phones, close), the photo contained in the
   middle, caption and paging underneath, so no control ever sits on the picture. */
html.lb-lock{overflow:hidden}
.lightbox{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;overflow:hidden;color:#fff;background:rgba(9,11,14,.96)}
.lightbox[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;animation:lb-in 240ms ease}
.lightbox::backdrop{background:#090b0e}
@keyframes lb-in{from{opacity:0}}
.lb-bar{display:flex;align-items:center;justify-content:space-between;padding:max(14px,env(safe-area-inset-top)) clamp(14px,3vw,28px) 0}
.lb-count{font-size:12px;font-weight:700;letter-spacing:.16em;color:rgba(255,255,255,.62);font-variant-numeric:tabular-nums}
.lb-count b{color:#fff;font-weight:800}
.lb-actions{display:flex;gap:10px}
.lb-btn{display:grid;place-items:center;flex:none;width:44px;height:44px;padding:0;border:1px solid rgba(255,255,255,.24);border-radius:50%;background:rgba(255,255,255,.08);color:#fff;font-size:20px;cursor:pointer;transition:background 160ms ease,border-color 160ms ease,color 160ms ease,transform 160ms var(--ease-out)}
.lb-btn:active{transform:scale(.92);background:var(--gold);border-color:var(--gold);color:var(--ink)}
.lb-btn:focus-visible{outline:2px solid #fff;outline-offset:3px}
.lb-btn[aria-pressed=true]{background:var(--gold);border-color:var(--gold);color:var(--ink)}
.lightbox-zoom{display:none}
.lb-stage{min-height:0;display:flex;align-items:center;justify-content:center;padding:clamp(10px,2vw,22px) clamp(14px,7vw,110px)}
.lb-stage img{display:block;flex:none;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:4px;box-shadow:0 30px 80px rgba(0,0,0,.5);transition:filter 260ms ease,opacity 260ms ease;user-select:none;-webkit-user-drag:none}
.lb-stage img.is-loading{filter:blur(10px) saturate(.9);opacity:.85}
.lb-foot{display:flex;align-items:center;justify-content:center;gap:16px;padding:10px clamp(14px,3vw,28px) max(18px,calc(env(safe-area-inset-bottom) + 8px))}
.lb-caption{margin:0;min-height:1.5em;max-width:62ch;font-size:13px;line-height:1.5;color:rgba(255,255,255,.7);text-align:center}
@media(min-width:761px){
  .lb-nav{position:absolute;top:50%;translate:0 -50%;width:52px;height:52px}
  .lightbox-prev{left:clamp(14px,2.4vw,36px)}.lightbox-next{right:clamp(14px,2.4vw,36px)}
}
@media(hover:hover) and (pointer:fine){.lb-btn:not([aria-pressed=true]):hover{background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.5)}.lb-btn:not([aria-pressed=true]):active{background:var(--gold);border-color:var(--gold)}}
@media(max-width:760px){
  .gallery--full{padding-top:28px}.gallery-masonry{columns:2 140px;column-gap:8px}.gallery-masonry li{margin-bottom:8px}
  .gallery-page .header--static{background:rgba(255,255,255,.92)}.gallery-page .gallery-nav>a:not(.nav-cta){display:none}.gallery-page .header nav{display:flex}.gallery-page .nav-cta{gap:14px;padding:10px 12px}
  .lightbox-zoom{display:grid}
  .lb-stage{padding:8px 12px}
  .lb-foot{justify-content:space-between}.lb-caption{flex:1;font-size:12px;text-align:center}
  /* Zoomed: the photo fills the stage's height and pans sideways, since a landscape shot is small on a portrait screen. */
  .lightbox.is-zoomed .lb-stage{justify-content:flex-start;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;padding:8px 0}
  .lightbox.is-zoomed .lb-stage img{max-width:none;max-height:none;height:100%;margin:0 auto;border-radius:0;box-shadow:none}
}
@media(prefers-reduced-motion:reduce){.lightbox[open]{animation:none}.lb-stage img,.lb-btn{transition:none}}

/* Routes: a drawn Istanbul with the districts the vehicles tour. The route draws itself
   when the map enters view; a rover then shuttles along it. */
.routes{background:var(--paper)}
.routes-grid{display:grid;grid-template-columns:1fr 1.35fr;gap:6%;align-items:center;margin-top:52px}
.routes-copy h2{font-size:clamp(44px,5vw,80px)}
.routes-copy>p{margin-top:26px;font-size:16px;line-height:1.8;color:var(--muted);max-width:420px}
.routes-list{list-style:none;margin:34px 0 0;padding:0;display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line)}
.routes-list li{display:flex;align-items:baseline;padding:13px 0;border-bottom:1px solid var(--line);font-size:15px;font-weight:600;cursor:default;transition:color 160ms linear}
.routes-list li.is-on{color:var(--gold-deep)}
.routes-map{width:min(100%,calc((100svh - 190px) * .8));min-width:360px;justify-self:end;border-radius:14px;overflow:hidden;background:#efece4;box-shadow:0 30px 70px -30px rgba(29,43,60,.45),0 0 0 1px rgba(29,43,60,.08)}
.map-svg{display:block;width:100%;height:auto;font-family:Manrope,sans-serif}
.map-land{fill:#efece4}
.road{fill:none;stroke-linecap:round;stroke-linejoin:round}
.road-case{fill:none;stroke:#d6cfbd;stroke-linecap:round;stroke-linejoin:round}
.road-case--major{stroke-width:13}.road-case--minor{stroke-width:8}
.road--major{stroke:#fff;stroke-width:9}
.road--minor{stroke:#fff;stroke-width:4.5}
.map-shore{fill:none;stroke:#d9d4c6;stroke-width:12;stroke-linejoin:round}
.map-water{fill:url(#map-sea)}
.map-waves{fill:none;stroke:rgba(255,255,255,.13);stroke-width:2;stroke-linecap:round}
.map-bridge{fill:none;stroke:#efece4;stroke-width:7;stroke-linecap:round}
.map-area{font-size:15px;font-weight:800;letter-spacing:.34em;fill:rgba(29,43,60,.3)}
.map-area--sea{fill:rgba(255,255,255,.32)}
.map-orbit{cursor:default}
.orbit-ring{fill:rgba(201,161,59,.08);stroke:rgba(201,161,59,.8);stroke-width:2;stroke-dasharray:4 5;transition:stroke 160ms linear,fill 160ms linear}
.map-orbit.is-on .orbit-ring{fill:rgba(201,161,59,.2);stroke:var(--gold-deep)}
.orbit-vehicle{transform-box:view-box}
.routes.visible .orbit-vehicle{animation:map-orbit 10s linear infinite}
@keyframes map-orbit{to{transform:rotate(360deg)}}
.orbit-box{fill:#141511}
.orbit-led{fill:var(--gold)}
.orbit-cab{fill:#fff;stroke:#141511;stroke-width:1.5}
.orbit-glass{fill:#26313f}
.pin{cursor:default}
.pin-dot{fill:var(--gold);stroke:#fff;stroke-width:4}
.pin text{font-size:20px;font-weight:800;letter-spacing:-.01em;fill:var(--ink);paint-order:stroke;stroke:#efece4;stroke-width:6px;stroke-linejoin:round;transition:fill 160ms linear}
.pin.is-on text{fill:var(--gold-deep)}
.pin.is-on .pin-dot{fill:var(--ink)}
@media(max-width:760px){
  .routes-grid{grid-template-columns:1fr;gap:34px;margin-top:36px}
  .routes-map{width:100%;min-width:0;justify-self:stretch}
  .routes-copy h2{font-size:min(44px,13vw)}
  .routes-list{grid-template-columns:1fr 1fr;column-gap:16px}
  .routes-list li{font-size:13px;padding:11px 0}
  .pin text{font-size:22px}
}
@media(prefers-reduced-motion:reduce){
  .routes.visible .orbit-vehicle{animation:none}
}
