/* =========================================================
   Nordvia Logistics: näidisleht
   ========================================================= */
:root{
  --ink:#0b0f12; --ink-2:#11171c; --ink-3:#1a2229;
  --paper:#f1f0ec; --paper-2:#e7e6e0; --white:#fbfbf9;
  --mute-d:#7d868c; --mute-l:#8a8f8f;
  --line-l:rgba(11,15,18,.12); --line-d:rgba(241,240,236,.12);
  --accent:#d95a26; --accent-2:#ef8a5c; --ice:#9cc6d8;
  --sea:#0a141b; --land:#15222c; --land-hi:#1f3240;

  --m:clamp(16px,2.6vw,44px);
  --gap:clamp(12px,1.4vw,24px);
  --fs-xs:clamp(10px,.18vw + 9.5px,12px);
  --fs-s:clamp(13px,.2vw + 12px,15px);
  --fs-b:clamp(16px,.3vw + 14.5px,19px);
  --fs-l:clamp(20px,1.2vw + 14px,30px);
  --fs-h3:clamp(22px,1.6vw + 12px,36px);
  --fs-h2:clamp(40px,6.2vw,112px);
  --fs-h1:clamp(52px,8.6vw,168px);

  --ease-out:cubic-bezier(.23,1,.32,1);
  --ease-io:cubic-bezier(.77,0,.175,1);
  --ease-drawer:cubic-bezier(.32,.72,0,1);

  --f-display:"Cabinet Grotesk","Satoshi",system-ui,sans-serif;
  --f-body:"Satoshi",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
  --hdr:72px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{margin:0;background:var(--ink);color:var(--paper);font:400 var(--fs-b)/1.5 var(--f-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip}
img,svg,canvas,video{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
h1,h2,h3,h4,p,figure,ul,ol,dl,dd,blockquote{margin:0;padding:0}
ul,ol{list-style:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}
::selection{background:var(--accent);color:var(--ink)}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* grain: fixed pseudo layer, never on scrolling containers */
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:90;opacity:.05;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---------- type ---------- */
.mono{font-family:var(--f-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;line-height:1.3}
.h1,.h2,.h3{font-family:var(--f-display);font-weight:800;letter-spacing:-.035em;line-height:.9;text-transform:uppercase}
.h1{font-size:var(--fs-h1)}
.h2{font-size:var(--fs-h2)}
.h3{font-size:var(--fs-h3);line-height:.95;letter-spacing:-.02em}
.dim{color:var(--mute-l)}
[data-theme=dark] .dim{color:#5c666d}
.lead{font-size:var(--fs-l);line-height:1.25;font-weight:500;letter-spacing:-.01em}
.body{max-width:58ch;color:inherit;opacity:.78}

/* split helpers */
.line-inner-mask,[class*="inner-mask"]{padding:.16em 0 .04em;margin:-.16em 0 -.04em}
.line-mask{overflow:hidden;display:block;padding-bottom:.06em;margin-bottom:-.06em}
.line-inner{display:block;will-change:transform}

/* ---------- buttons ---------- */
.btn{position:relative;display:inline-flex;align-items:center;gap:.7em;min-height:52px;padding:0 26px;border-radius:999px;
  font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;overflow:hidden;isolation:isolate;
  transition:transform 160ms var(--ease-out),color 300ms ease,border-color 300ms ease,background-color 300ms ease}
.btn:active{transform:scale(.97)}
.btn-solid{background:var(--paper);color:var(--ink)}
.btn-line{border:1px solid currentColor;border-color:color-mix(in srgb,currentColor 40%,transparent)}
.btn-accent{background:var(--accent);color:var(--ink)}
.btn .roll{display:grid;overflow:hidden;height:1.3em;line-height:1.3em}
.btn .roll span{grid-area:1/1;transition:transform 450ms var(--ease-out)}
.btn .roll span+span{transform:translateY(110%)}
.btn .arr{width:10px;height:10px;transition:transform 450ms var(--ease-out)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;background:var(--accent);transform:translateY(101%);transition:transform 450ms var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .btn:hover .roll span:first-child{transform:translateY(-110%)}
  .btn:hover .roll span+span{transform:translateY(0)}
  .btn:hover .arr{transform:translate(2px,-2px)}
  .btn:hover::before{transform:translateY(0)}
  .btn-line:hover{color:var(--ink);border-color:var(--accent)}
  .btn-accent::before{background:var(--paper)}
}

/* ---------- image placeholders ---------- */
.ph{position:relative;overflow:hidden;border-radius:4px;aspect-ratio:var(--ar,4/3);background:#1b242b;color:var(--paper);isolation:isolate}
.ph[data-tone=light]{background:#d9d8d1;color:var(--ink)}
.ph-in{position:absolute;inset:-12% 0;will-change:transform;
  background:
    linear-gradient(135deg,transparent 49.6%,currentColor 49.6%,currentColor 50.4%,transparent 50.4%) 0 0/100% 100%,
    linear-gradient(45deg,transparent 49.6%,currentColor 49.6%,currentColor 50.4%,transparent 50.4%) 0 0/100% 100%,
    repeating-linear-gradient(90deg,transparent 0 23px,color-mix(in srgb,currentColor 7%,transparent) 23px 24px),
    repeating-linear-gradient(0deg,transparent 0 23px,color-mix(in srgb,currentColor 7%,transparent) 23px 24px);
  opacity:.9}
.ph-in::before{content:"";position:absolute;inset:0;background:inherit;opacity:0}
.ph-in>img,.ph-in>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ph-in:has(img),.ph-in:has(video){background:none}
.ph-tag,.ph-note{position:absolute;z-index:2;font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase}
.ph-tag{left:12px;top:12px;padding:5px 8px;border-radius:3px;background:var(--accent);color:var(--ink)}
.ph-note{left:12px;bottom:12px;right:12px;opacity:.7;line-height:1.4}
.ph:has(img) .ph-tag,.ph:has(img) .ph-note,.ph:has(video) .ph-tag,.ph:has(video) .ph-note{display:none}
/* the diagonals read faintly */
.ph-in{color:color-mix(in srgb,currentColor 18%,transparent)}
.ph{--x:currentColor}

/* ---------- loader ---------- */
.loader{position:fixed;inset:0;z-index:100;background:var(--ink);color:var(--paper);display:grid;grid-template-columns:1fr 1fr 1fr;align-items:end;padding:var(--m);gap:var(--gap)}
.loader-logo{font-family:var(--f-display);font-weight:800;font-size:clamp(28px,3vw,44px);letter-spacing:-.03em;display:flex;overflow:hidden}
.loader-logo img{display:block;height:clamp(40px,4.4vw,72px);width:auto;clip-path:inset(0 100% 0 0)}
.loader-list{position:relative;height:1.4em;overflow:hidden;justify-self:center}
.loader-list li{position:absolute;inset:0;transform:translateY(100%);white-space:nowrap}
.loader-count{justify-self:end;font-family:var(--f-display);font-weight:800;font-size:clamp(64px,10vw,180px);line-height:.8;letter-spacing:-.05em;font-variant-numeric:tabular-nums}
.loader-bar{position:absolute;left:0;right:0;top:0;height:2px;background:var(--accent);transform-origin:left;transform:scaleX(0)}
.loader-dots{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.loader-dots canvas{width:min(70vw,900px);height:auto;opacity:.6}
html:not(.js) .loader{display:none}

/* ---------- header ---------- */
.hdr{position:fixed;inset:0 0 auto;z-index:50;color:var(--paper);transition:transform 600ms var(--ease-drawer),color 400ms ease}
.hdr.is-hidden{transform:translateY(-101%)}
.hdr[data-theme=light]{color:var(--ink)}
.hdr-note{display:grid;grid-template-rows:1fr;transition:grid-template-rows 500ms var(--ease-out)}
.hdr.is-scrolled .hdr-note{grid-template-rows:0fr}
.hdr-note>div{overflow:hidden}
.hdr-note-in{display:flex;justify-content:space-between;gap:20px;padding:8px var(--m);border-bottom:1px solid var(--line-d);opacity:.7}
.hdr[data-theme=light] .hdr-note-in{border-color:var(--line-l)}
.hdr-note-in a{text-decoration:underline;text-underline-offset:.2em}
.ticker{overflow:hidden;white-space:nowrap;max-width:50%}
.ticker span{display:inline-block}
.hdr-bar{position:relative;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:var(--hdr);padding:0 var(--m)}
.hdr-bar::before{content:"";position:absolute;inset:0;z-index:-1;background:color-mix(in srgb,var(--ink) 72%,transparent);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);opacity:0;transition:opacity 400ms ease,background-color 400ms ease;border-bottom:1px solid var(--line-d)}
.hdr[data-theme=light] .hdr-bar::before{background:color-mix(in srgb,var(--paper) 78%,transparent);border-color:var(--line-l)}
.hdr.is-scrolled .hdr-bar::before{opacity:1}
.brand{display:inline-flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:800;font-size:22px;letter-spacing:-.03em;justify-self:start}
.brand{position:relative}
.brand img{display:block;height:clamp(30px,2.6vw,38px);width:auto;transition:opacity 400ms ease}
.brand .logo-dark{position:absolute;left:0;top:50%;transform:translateY(-50%);opacity:0}
.hdr[data-theme=light] .brand .logo-light{opacity:0}
.hdr[data-theme=light] .brand .logo-dark{opacity:1}
/* mobile menu is always dark: keep the header readable on top of it */
.hdr:has(.menu-btn[aria-expanded=true]){color:var(--paper);background:var(--ink)}
.hdr:has(.menu-btn[aria-expanded=true]) .hdr-note-in{border-color:var(--line-d)}
.hdr:has(.menu-btn[aria-expanded=true]) .brand .logo-light{opacity:1}
.hdr:has(.menu-btn[aria-expanded=true]) .brand .logo-dark{opacity:0}
.hdr:has(.menu-btn[aria-expanded=true]) .hdr-bar::before{background:var(--ink);border-color:var(--line-d)}
.brand .brand-full{display:grid;grid-template-columns:1fr;transition:grid-template-columns 500ms var(--ease-out),opacity 300ms ease}
.nav{display:flex;gap:clamp(16px,2.4vw,40px)}
.nav a{position:relative;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase;padding:10px 0}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:4px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform 500ms var(--ease-out)}
@media (hover:hover) and (pointer:fine){.nav a:hover::after{transform:scaleX(1);transform-origin:left}}
.hdr-act{justify-self:end;display:flex;align-items:center;gap:10px}
.hdr .btn{min-height:44px;padding:0 20px}
.hdr[data-theme=light] .btn-solid{background:var(--ink);color:var(--paper)}
.menu-btn{display:none;align-items:center;gap:8px;min-height:44px;padding:0 6px;font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.menu-btn i{display:grid;grid-template-columns:repeat(2,4px);gap:3px}
.menu-btn i b{width:4px;height:4px;border-radius:50%;background:currentColor}

/* language switcher: round flags in a pill, codes hidden on small screens */
.lang{display:flex;align-items:center;gap:2px;padding:3px;border:1px solid var(--line-d);border-radius:999px;transition:border-color 400ms ease}
.hdr[data-theme=light] .lang{border-color:var(--line-l)}
.lang a{position:relative;display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 10px 0 6px;border-radius:999px;font-family:var(--f-mono);font-size:11px;font-weight:500;letter-spacing:.08em;opacity:.55;transition:opacity 200ms ease,background-color 200ms ease,transform 160ms var(--ease-out)}
.lang a[aria-current=page]{opacity:1;background:rgba(241,240,236,.12)}
.hdr[data-theme=light] .lang a[aria-current=page]{background:rgba(11,15,18,.07)}
.lang svg{display:block;width:18px;height:18px;flex:none;border-radius:50%;outline:1px solid rgba(127,127,127,.35);outline-offset:-1px}
.lang a:active{transform:scale(.96)}
.lang a:focus-visible{outline:2px solid var(--accent);outline-offset:1px;opacity:1}
@media (hover:hover) and (pointer:fine){.lang a:hover{opacity:1}}
.hdr:has(.menu-btn[aria-expanded=true]) .lang{border-color:var(--line-d)}
.hdr:has(.menu-btn[aria-expanded=true]) .lang a[aria-current=page]{background:rgba(241,240,236,.12)}
@media (max-width:900px){
  .lang a{padding:0 8px;min-height:36px}
  .lang a span{display:none}
}
@media (max-width:380px){.menu-btn{min-width:44px;justify-content:center}.menu-btn span{display:none}}

.mnav{position:fixed;inset:0;z-index:49;background:var(--ink);color:var(--paper);padding:calc(var(--hdr) + 40px) var(--m) var(--m);display:flex;flex-direction:column;justify-content:space-between;clip-path:inset(0 0 100% 0);visibility:hidden}
.mnav a.big{display:block;font-family:var(--f-display);font-weight:800;font-size:clamp(40px,11vw,80px);letter-spacing:-.03em;line-height:1;text-transform:uppercase;padding:6px 0;border-bottom:1px solid var(--line-d)}

@media (max-width:900px){
  .nav{display:none}
  .menu-btn{display:inline-flex}
  .hdr-bar{grid-template-columns:1fr auto}
  .hdr .btn-solid{display:none}
  .ticker{max-width:100%}
  .hdr-note-in .note-r{display:none}
}

/* ---------- sections ---------- */
section{position:relative}
[data-theme=light]{background:var(--paper);color:var(--ink)}
[data-theme=dark]{background:var(--ink);color:var(--paper)}
.wrap{padding-inline:var(--m)}
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap)}
.eyebrow{display:flex;align-items:center;gap:10px}
.eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}

/* ---------- hero ---------- */
.hero{min-height:100dvh;overflow:hidden;background:radial-gradient(120% 90% at 85% 40%,#15100c 0%,var(--ink) 55%)}
.hero-stars{position:absolute;inset:0;opacity:.55;pointer-events:none}
.hero-globe{--gw:min(128vh,98vw);position:absolute;top:54%;left:77%;width:var(--gw);aspect-ratio:1;margin:calc(var(--gw) / -2) 0 0 calc(var(--gw) / -2)}
.hero::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,var(--ink) 0%,rgba(11,15,18,.82) 30%,rgba(11,15,18,0) 58%)}
.hero-globe canvas{position:absolute;inset:0;width:100%;height:100%}
.globe-rim{position:absolute;inset:-1.5%;border-radius:50%;pointer-events:none;
  background:radial-gradient(closest-side,transparent 93%,rgba(217,90,38,.55) 97%,transparent 100%);
  -webkit-mask:linear-gradient(200deg,#000 0%,transparent 45%);mask:linear-gradient(200deg,#000 0%,transparent 45%);filter:blur(2px)}
.globe-rim.ice{background:radial-gradient(closest-side,transparent 92%,rgba(156,198,216,.4) 97%,transparent 100%);-webkit-mask:linear-gradient(20deg,#000 0%,transparent 40%);mask:linear-gradient(20deg,#000 0%,transparent 40%)}
.globe-haze{position:absolute;inset:6%;border-radius:50%;background:radial-gradient(circle at 35% 30%,rgba(217,90,38,.10),transparent 60%),radial-gradient(circle at 60% 85%,rgba(120,170,200,.14),transparent 55%);pointer-events:none}
.globe-labels{position:absolute;inset:0;pointer-events:none}
.g-label{position:absolute;left:0;top:0;padding:4px 7px;border-radius:3px;background:rgba(11,15,18,.82);border:1px solid var(--line-d);font-family:var(--f-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;will-change:transform,opacity}
.g-label.hq{background:var(--accent);color:var(--ink);border-color:transparent}

.hero-inner{position:relative;z-index:2;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:calc(var(--hdr) + 60px) var(--m) 120px}
.hero-text{max-width:min(56rem,62vw)}
.hero-label{font-family:var(--f-display);font-weight:700;font-size:clamp(16px,1.3vw,22px);text-transform:uppercase;letter-spacing:.01em;margin-bottom:clamp(14px,2vw,28px)}
.hero .h1{font-size:clamp(52px,7.6vw,150px)}
.hero-desc{margin-top:clamp(24px,4vw,56px);max-width:40ch;opacity:.72}
.qq{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto;align-items:center;gap:6px 14px;width:min(620px,100%);margin-top:clamp(28px,3.4vw,44px);padding:8px 8px 8px 26px;border-radius:999px;
  background:rgba(241,240,236,.06);border:1px solid rgba(241,240,236,.14);box-shadow:inset 0 1px 0 rgba(241,240,236,.08);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:border-color 250ms ease,background-color 250ms ease}
.qq:focus-within{border-color:color-mix(in srgb,var(--accent) 70%,transparent);background:rgba(241,240,236,.08)}
.qq-f{display:flex;flex-direction:column;gap:2px;min-width:0}
.qq-f label{opacity:.5;font-size:10px}
.qq-f input{width:100%;min-width:0;padding:2px 0;border:0;background:none;color:var(--paper);font:500 clamp(16px,1.2vw,19px)/1.3 var(--f-body);outline:none}
.qq-f input::placeholder{color:rgba(241,240,236,.32)}
.qq-arr{width:24px;height:12px;opacity:.45}
.qq .btn{min-height:56px}
.qq-note{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:16px;opacity:.6}
.qq-note a{margin-left:6px;padding-left:16px;border-left:1px solid var(--line-d);text-decoration:underline;text-underline-offset:.25em}
.qq-dot{width:7px;height:7px;border-radius:50%;background:var(--mute-d)}
.qq-note.open .qq-dot{background:var(--accent);animation:breathe 2s ease-in-out infinite}
@media (max-width:640px){
  .qq{grid-template-columns:1fr;padding:18px;border-radius:18px;gap:14px}
  .qq-f{padding-bottom:10px;border-bottom:1px solid var(--line-d)}
  .qq-arr{display:none}
  .qq .btn{justify-content:center}
  .qq-note a{flex-basis:100%;margin-left:17px;padding-left:0;border-left:0}
}
.hero-foot{position:absolute;left:0;right:0;bottom:0;z-index:2;display:flex;justify-content:space-between;align-items:flex-end;padding:0 var(--m) 28px;opacity:.6}
.scroll-cue{display:flex;align-items:center;gap:12px}
.scroll-cue i{position:relative;display:block;width:1px;height:44px;background:var(--line-d);overflow:hidden}
.scroll-cue i::after{content:"";position:absolute;inset:0;background:var(--paper);animation:cue 2.2s var(--ease-io) infinite}
@keyframes cue{0%{transform:translateY(-100%)}55%{transform:translateY(0)}100%{transform:translateY(100%)}}

@media (max-width:900px){
  .hero-globe{--gw:150vw;left:50%;top:auto;bottom:calc(var(--gw) * -.42);margin:0 0 0 calc(var(--gw) / -2)}
  .hero::before{background:linear-gradient(180deg,var(--ink) 30%,rgba(11,15,18,0) 70%)}
  .hero-text{max-width:none}
  .hero-inner{justify-content:flex-start;padding-top:calc(var(--hdr) + 70px)}
  .hero-foot .coords{display:none}
}

/* ---------- intro ---------- */
.intro{padding:clamp(100px,14vw,220px) 0 clamp(80px,10vw,160px);background:linear-gradient(180deg,#dfe7ec 0%,var(--paper) 22%)}
.intro-stick{grid-column:1/7;align-self:start;position:sticky;top:calc(var(--hdr) + 40px)}
.intro-thumb{width:min(440px,80%);margin-bottom:clamp(40px,6vw,90px)}
.intro-copy{grid-column:8/13}
.reveal-text{font-size:var(--fs-l);font-weight:500;line-height:1.28;letter-spacing:-.012em}
.reveal-text .w{opacity:.14;transition:none}
.intro-copy .btn{margin-top:40px}
.stats{grid-column:8/13;margin-top:clamp(64px,8vw,140px)}
.stats-head{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px;border-bottom:1px solid var(--line-l);font-weight:500}
.stat{display:grid;grid-template-columns:1fr auto;align-items:end;gap:20px;padding:clamp(22px,3vw,40px) 0;border-bottom:1px solid var(--line-l)}
.stat-v{font-family:var(--f-display);font-weight:800;font-size:clamp(56px,7vw,124px);letter-spacing:-.05em;line-height:.8;font-variant-numeric:tabular-nums}
.stat-v small{font-size:.45em;letter-spacing:-.02em;margin-left:.06em;vertical-align:.9em;color:var(--accent)}
.stat-l{max-width:16ch;text-align:right;font-weight:500;opacity:.7}
@media (max-width:900px){
  .intro-stick,.intro-copy,.stats{grid-column:1/-1;position:static}
  .intro-copy{margin-top:40px}
}

/* ---------- services: horizontal ---------- */
.services{overflow:hidden}
.svc-pin{height:100dvh;display:flex;flex-direction:column;justify-content:center;padding-top:var(--hdr)}
.svc-track{display:flex;gap:clamp(16px,2vw,32px);padding:0 var(--m);width:max-content;will-change:transform}
.svc-intro{width:min(560px,80vw);flex:none;display:flex;flex-direction:column;justify-content:space-between;padding-right:clamp(20px,4vw,80px)}
.svc-intro .h2{font-size:clamp(40px,4.6vw,88px)}
.svc-intro .body{margin-top:28px}
.svc{flex:none;width:clamp(280px,26vw,420px);display:flex;flex-direction:column;gap:18px;border-left:1px solid var(--line-d);padding-left:clamp(16px,1.6vw,26px)}
.svc .ph{--ar:4/5;background:#151b20}
.svc .ph img{filter:saturate(.82) contrast(1.06) brightness(.94);transition:filter 600ms ease,transform 900ms var(--ease-out)}
.svc .ph::after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,rgba(11,15,18,0) 55%,rgba(11,15,18,.35));box-shadow:inset 0 0 0 1px rgba(241,240,236,.06);border-radius:inherit}
.svc h3{min-height:1.9em;display:flex;align-items:flex-end}
.svc .dot-ic circle:not(.bg){transform:scale(1);opacity:.55;transition:opacity 400ms ease,fill 400ms ease}
@media (hover:hover) and (pointer:fine){
  .svc:hover .ph img{filter:none;transform:scale(1.04)}
  .svc:hover .dot-ic circle:not(.bg){opacity:1;fill:var(--accent)}
  .svc:hover .svc-num{color:var(--paper)}
}
.svc-top{display:flex;justify-content:space-between;align-items:center}
.svc-num{font-family:var(--f-mono);font-size:12px;color:var(--accent)}
.svc h3{font-family:var(--f-display);font-weight:800;font-size:clamp(26px,2.2vw,38px);letter-spacing:-.02em;line-height:.95;text-transform:uppercase}
.svc p{font-size:var(--fs-s);opacity:.7;max-width:38ch}
.tags{display:flex;flex-wrap:wrap;gap:6px}
.tags span{padding:5px 9px;border:1px solid var(--line-d);border-radius:99px;font-family:var(--f-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;opacity:.75}
.svc-progress{position:relative;margin:clamp(28px,4vh,48px) var(--m) 0;height:1px;background:var(--line-d)}
.svc-progress i{position:absolute;inset:0;background:var(--accent);transform-origin:left;transform:scaleX(0)}
.svc-bgword{position:absolute;left:0;bottom:-.12em;font-family:var(--f-display);font-weight:800;font-size:28vw;line-height:.8;letter-spacing:-.06em;color:transparent;-webkit-text-stroke:1px rgba(241,240,236,.06);white-space:nowrap;pointer-events:none}
@media (max-width:900px){
  .svc-pin{height:auto;padding:110px 0 80px}
  .svc-track{flex-direction:column;width:auto;gap:56px}
  .svc{width:auto;border-left:0;padding-left:0;border-top:1px solid var(--line-d);padding-top:20px}
  .svc .ph{--ar:16/10}
  .svc-progress,.svc-bgword{display:none}
}

/* ---------- process ---------- */
.proc{background:var(--paper-2);padding:clamp(96px,12vw,200px) 0 clamp(80px,10vw,170px);overflow:hidden}
.proc-title{grid-column:1/8}
.proc-title .h2{margin-top:22px;font-size:clamp(40px,5.6vw,104px)}
.proc-lead{grid-column:9/13;align-self:end}
.proc-body{position:relative;margin-top:clamp(56px,7vw,120px)}
.proc-track{position:absolute;left:var(--m);right:var(--m);top:7px;height:1px;background:var(--line-l)}
.proc-fill{position:absolute;inset:0;background:var(--ink);transform-origin:left;transform:scaleX(var(--pf,0))}
.proc-mark{position:absolute;left:0;top:-11px;width:64px;height:22px;margin-left:-60px;transform:translateX(var(--px,0px));will-change:transform}
.proc-mark svg{display:block;width:100%;height:100%}
.proc-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));column-gap:var(--gap);list-style:none;margin:0;padding:0}
.pstep{position:relative;display:flex;flex-direction:column;gap:12px;padding-top:44px;padding-right:clamp(8px,1.4vw,28px)}
.pstep-dot{position:absolute;left:0;top:0;width:15px;height:15px;border-radius:50%;background:var(--paper-2);border:1px solid color-mix(in srgb,var(--ink) 30%,transparent);transition:background-color 400ms ease,border-color 400ms ease,transform 500ms var(--ease-out)}
.pstep-n{color:var(--accent)}
.pstep h3{font-family:var(--f-display);font-weight:800;font-size:clamp(26px,2.3vw,40px);letter-spacing:-.02em;line-height:.95;text-transform:uppercase}
.pstep p{font-size:var(--fs-s);opacity:.7;max-width:30ch}
.pstep-t{margin-top:auto;padding-top:10px;opacity:.55}
.proc.live .pstep>:not(.pstep-dot){opacity:.32;transition:opacity 500ms ease}
.proc.live .pstep p{opacity:.22}
.proc.live .pstep.on>:not(.pstep-dot){opacity:1}
.proc.live .pstep.on p{opacity:.7}
.proc.live .pstep.on .pstep-t{opacity:.55}
.pstep.on .pstep-dot{background:var(--accent);border-color:var(--accent);transform:scale(1.15)}
@media (max-width:900px){
  .proc-title,.proc-lead{grid-column:1/-1}
  .proc-lead{margin-top:24px}
  .proc-track{left:calc(var(--m) + 7px);right:auto;top:0;bottom:0;width:1px;height:auto}
  .proc-fill{transform-origin:top;transform:scaleY(var(--pf,0))}
  .proc-mark{display:none}
  .proc-steps{grid-template-columns:1fr;row-gap:40px}
  .pstep{padding:0 0 0 40px}
}

/* ---------- road ---------- */
.road{overflow:hidden}
.road-pin{position:relative;height:100dvh}
.road-strip{position:absolute;top:0;bottom:0;left:50%;width:clamp(170px,15vw,280px);transform:translateX(-50%);background:#101315;overflow:hidden}
.road-strip::before,.road-strip::after{content:"";position:absolute;top:0;bottom:0;width:3px;background:repeating-linear-gradient(180deg,#3a3f42 0 70px,transparent 70px 140px);background-position-y:var(--lane,0px)}
.road-strip::before{left:33%}
.road-strip::after{left:66%}
.road-edge{position:absolute;top:0;bottom:0;width:2px;background:#2b3033}
.road-edge.l{left:6%}.road-edge.r{right:6%}
.truck{position:absolute;left:50%;top:50%;width:clamp(50px,4.6vw,78px);transform:translate(-50%,-50%);will-change:transform}
.truck svg{width:100%;height:auto;overflow:visible;filter:drop-shadow(0 18px 18px rgba(0,0,0,.5))}
.truck .sig{opacity:0}
.truck.sig-on-l .sig-l,.truck.sig-on-r .sig-r{animation:blinker .5s steps(1) infinite}
@keyframes blinker{0%{opacity:1}50%{opacity:0}}
.speedo{position:absolute;left:var(--m);top:calc(var(--hdr) + 24px);display:flex;align-items:center;gap:14px}
.speedo svg{width:64px;height:64px;transform:rotate(-90deg)}
.speedo circle{fill:none;stroke-width:2}
.speedo .trk{stroke:var(--line-l)}
.speedo .val{stroke:var(--ink);stroke-dasharray:176;stroke-dashoffset:176;stroke-linecap:round}
.speedo b{font-family:var(--f-mono);font-size:13px;letter-spacing:.06em;font-variant-numeric:tabular-nums;min-width:4ch}
.road-left{position:absolute;left:var(--m);top:0;bottom:0;width:calc(50% - clamp(85px,7.5vw,140px) - var(--m) - 24px);display:flex;flex-direction:column;justify-content:space-between;padding:calc(var(--hdr) + 120px) 0 clamp(40px,8vh,90px)}
.road-left .h2{font-size:clamp(40px,5.4vw,104px)}
.road-right{position:absolute;right:var(--m);top:0;width:calc(50% - clamp(85px,7.5vw,140px) - var(--m) - 40px);max-width:460px;will-change:transform}
.feat{padding:clamp(40px,8vh,90px) 0;border-bottom:1px solid var(--line-l);min-height:62vh;display:flex;flex-direction:column;justify-content:center;gap:16px}
.feat:first-child{padding-top:60vh}
.dot-ic{width:68px;height:68px}
.dot-ic circle{fill:currentColor;transform-box:fill-box;transform-origin:center;transform:scale(.45);opacity:.25;transition:transform 500ms var(--ease-out),opacity 500ms ease}
.feat.on .dot-ic circle{transform:scale(1);opacity:1}
.dot-ic circle.bg{opacity:.14!important;transform:none!important}
.feat .h3{text-transform:uppercase}
.feat p{opacity:.7;max-width:40ch}
@media (max-width:900px){
  .road-pin{height:auto;padding:110px var(--m) 80px}
  .road-strip,.speedo{display:none}
  .road-left,.road-right{position:static;width:auto;max-width:none;padding:0}
  .road-left .body{margin-top:24px}
  .feat{min-height:0;padding:40px 0}
  .feat:first-child{padding-top:48px}
  .feat .dot-ic circle{transform:scale(1);opacity:1}
}

/* ---------- network map ---------- */
.net{background:var(--sea)}
.net-pin{position:relative;min-height:100dvh;display:grid;grid-template-columns:minmax(300px,.8fr) 1.2fr;gap:clamp(20px,3vw,60px);align-items:center;padding:calc(var(--hdr) + 30px) var(--m) 40px}
.net-left .h2{font-size:clamp(40px,4.6vw,92px)}
.net-left .body{margin-top:24px}
.route-steps{margin-top:clamp(28px,5vh,56px);border-top:1px solid var(--line-d)}
.rstep{display:grid;grid-template-columns:36px 1fr auto;gap:14px;align-items:baseline;padding:14px 0;border-bottom:1px solid var(--line-d);opacity:.38;transition:opacity 400ms ease;cursor:pointer;text-align:left;width:100%}
.rstep.on{opacity:1}
.rstep .n{font-family:var(--f-mono);font-size:11px;color:var(--accent)}
.rstep b{font-weight:700;font-size:var(--fs-b)}
.rstep span.km{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;opacity:.8}
.rstep em{grid-column:2/4;font-style:normal;font-size:var(--fs-s);opacity:.7;display:block}
.rstep:not(.on) em{display:none}
.map-card{position:relative;border:1px solid var(--line-d);border-radius:22px;background:linear-gradient(180deg,#0d1922,#0a131a);padding:clamp(10px,1vw,16px);box-shadow:inset 0 1px 0 rgba(255,255,255,.05),0 40px 80px -40px rgba(0,0,0,.7)}
.map-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 8px 12px}
.map-chips{display:flex;gap:6px}
.chip{padding:6px 11px;border-radius:99px;border:1px solid var(--line-d);font-family:var(--f-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;transition:background-color 200ms ease,color 200ms ease}
.chip[aria-pressed=true]{background:var(--paper);color:var(--ink)}
.map-svg{width:100%;height:auto;border-radius:14px;background:var(--sea);max-height:64vh}
.map-svg .ctry{fill:var(--land);stroke:#22343f;stroke-width:.8}
.map-svg .ctry.hi{fill:var(--land-hi)}
.map-svg .grat{fill:none;stroke:rgba(156,198,216,.06);stroke-width:.7}
.map-svg .cname{fill:rgba(241,240,236,.18);font-family:var(--f-mono);font-size:15px;letter-spacing:.5em;text-anchor:middle}
.map-svg .route{fill:none;stroke:var(--accent);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.map-svg .route.ferry{stroke:var(--ice);stroke-dasharray:2 7}
.map-svg .route-glow{fill:none;stroke:var(--accent);stroke-width:10;opacity:.12;stroke-linecap:round}
.map-svg .route-base{fill:none;stroke:rgba(241,240,236,.07);stroke-width:2;stroke-linecap:round}
.map-svg .city circle.c{fill:var(--sea);stroke:var(--paper);stroke-width:1.6}
.map-svg .city text{fill:var(--paper);font-family:var(--f-mono);font-size:15px;letter-spacing:.04em;paint-order:stroke;stroke:var(--sea);stroke-width:4px}
.map-svg .city.hq circle.c{fill:var(--accent);stroke:var(--accent)}
.map-svg .pulse{fill:none;stroke:var(--accent);stroke-width:1.2;transform-box:fill-box;transform-origin:center;animation:pulse 2.6s var(--ease-out) infinite}
@keyframes pulse{from{transform:scale(1);opacity:.9}to{transform:scale(4.2);opacity:0}}
.map-svg .veh{fill:var(--paper)}
.map-svg .veh-ring{fill:none;stroke:var(--paper);stroke-width:1;opacity:.5}
.fleet{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}
.unit{border:1px solid var(--line-d);border-radius:14px;padding:14px;background:rgba(255,255,255,.015);transition:border-color 300ms ease,background-color 300ms ease}
.unit.on{border-color:rgba(217,90,38,.5);background:rgba(217,90,38,.05)}
.unit-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.unit-id{display:flex;align-items:center;gap:8px;font-family:var(--f-mono);font-size:14px;font-weight:600}
.unit-id i{width:7px;height:7px;border-radius:50%;background:var(--accent);animation:breathe 2s ease-in-out infinite}
@keyframes breathe{50%{opacity:.3}}
.unit-st{padding:3px 8px;border-radius:6px;border:1px solid var(--line-d);font-family:var(--f-mono);font-size:10px;letter-spacing:.06em}
.unit-st.ferry{color:var(--ice);border-color:rgba(156,198,216,.4)}
.unit-route{margin:10px 0 12px;font-size:var(--fs-s);opacity:.75}
.bar{height:4px;border-radius:4px;background:rgba(255,255,255,.07);overflow:hidden}
.bar i{display:block;height:100%;border-radius:inherit;background:var(--accent);transform-origin:left;transform:scaleX(var(--p,0));transition:transform 1.2s var(--ease-out)}
.unit-ldm{margin-top:10px;font-family:var(--f-mono);font-size:11px;opacity:.7}
.telemetry{margin-top:10px;padding:0 6px;font-family:var(--f-mono);font-size:11px;letter-spacing:.04em;opacity:.6;min-height:2.6em}
.telemetry .caret{display:inline-block;width:7px;height:1em;vertical-align:-2px;background:var(--accent);animation:breathe 1s steps(1) infinite}
@media (max-width:1100px){
  .net-pin{grid-template-columns:1fr;padding-top:110px}
  .map-svg{max-height:none}
}
@media (max-width:640px){
  .fleet{grid-template-columns:1fr}
  .map-chips{display:none}
}

/* ---------- why: zoom reveal ---------- */
.why{background:var(--ink)}
.why-pin{position:relative;height:100dvh;overflow:hidden;display:grid;place-items:center}
.why-media{position:absolute;inset:0;clip-path:inset(18% 26% 18% 26% round 28px);will-change:clip-path}
.why-media .ph{position:absolute;inset:0;aspect-ratio:auto;border-radius:0;background:#14303f}
.why-media .ph-in{inset:-10% 0}
.why-shade{position:absolute;inset:0;background:radial-gradient(70% 60% at 50% 50%,rgba(11,15,18,.15),rgba(11,15,18,.6));pointer-events:none}
.why-title{position:relative;z-index:2;text-align:center;padding:0 var(--m)}
.why-title .mono{display:block;margin-bottom:22px;opacity:.8}
.why-title .h2{font-size:clamp(44px,7.4vw,140px);max-width:12ch;margin:0 auto}
.why-title .ch{display:inline-block}
.reasons{padding:clamp(80px,10vw,160px) var(--m) clamp(100px,12vw,200px);display:grid;gap:clamp(40px,6vw,90px)}
.reason{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gap);align-items:start}
.reason-in{grid-column:1/6;display:flex;flex-direction:column;gap:14px;border-top:1px solid var(--line-d);padding-top:20px}
.reason:nth-child(even) .reason-in{grid-column:8/13;text-align:right;align-items:flex-end}
.reason:last-child .reason-in{grid-column:4/10;text-align:center;align-items:center}
.reason .dot-ic{width:56px;height:56px;color:var(--accent)}
.reason .dot-ic circle{transform:scale(1);opacity:1}
.reason p{opacity:.7;max-width:42ch}
@media (max-width:760px){
  .reason-in,.reason:nth-child(even) .reason-in,.reason:last-child .reason-in{grid-column:1/-1;text-align:left;align-items:flex-start}
}

@media (max-width:900px){
}

/* ---------- partners ---------- */
.partners{padding:clamp(100px,10vw,160px) var(--m)}
.p-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-top:1px solid var(--line-l);border-left:1px solid var(--line-l)}
.p-logos{display:contents}
.p-cell{position:relative;aspect-ratio:16/10;border-right:1px solid var(--line-l);border-bottom:1px solid var(--line-l);display:grid;place-items:center;container-type:inline-size;transition:background-color 400ms ease}
.p-cell.lbl{aspect-ratio:16/10;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;gap:10px;overflow:hidden;padding:clamp(16px,1.6vw,26px)}
.p-title{font-family:var(--f-display);font-weight:800;text-transform:uppercase;font-size:clamp(20px,1.6vw,30px);line-height:.95;letter-spacing:-.015em;margin-top:auto}
.p-sub{font-size:var(--fs-s);line-height:1.35;opacity:.6;max-width:30ch}
@media (min-width:901px) and (max-width:1599px){.p-sub{display:none}}
.p-cell i{position:absolute;width:5px;height:5px;background:var(--ink);opacity:.35;z-index:1}
.p-cell i:nth-of-type(1){left:-3px;top:-3px}.p-cell i:nth-of-type(2){right:-3px;top:-3px}.p-cell i:nth-of-type(3){left:-3px;bottom:-3px}.p-cell i:nth-of-type(4){right:-3px;bottom:-3px}
.p-cell img{width:calc(var(--w) * 1.12cqw);height:auto;max-height:42%;object-fit:contain;filter:grayscale(1) contrast(1.15) brightness(.9);opacity:.62;transition:filter 500ms ease,opacity 500ms ease,transform 600ms var(--ease-out)}
.p-cap{position:absolute;left:14px;bottom:12px;opacity:0;transform:translateY(6px);transition:opacity 300ms ease,transform 400ms var(--ease-out)}
@media (hover:hover) and (pointer:fine){
  .p-logos .p-cell:hover{background:var(--white)}
  .p-logos .p-cell:hover img{filter:none;opacity:1;transform:scale(1.05)}
  .p-logos .p-cell:hover .p-cap{opacity:.5;transform:none}
}
@media (max-width:900px){.p-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.p-cell.lbl{grid-column:1/-1;aspect-ratio:auto}.p-logos .p-cell:last-child{grid-column:1/-1;aspect-ratio:32/10}.p-logos .p-cell:last-child img{width:calc(var(--w) * .68cqw)}.p-cell img{width:calc(var(--w) * 1.35cqw)}}

/* ---------- news list w/ follow thumb ---------- */
.news{padding:clamp(100px,12vw,200px) var(--m)}
.news-head{display:grid;grid-template-columns:1fr minmax(260px,24rem);gap:var(--gap);align-items:end;margin-bottom:clamp(50px,8vw,120px)}
.news-head .h2{font-size:clamp(40px,5.6vw,108px)}
.news-head .body{margin-bottom:24px}
.n-list{border-top:1px solid var(--line-d);max-width:1100px;margin-left:auto}
.n-item a{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:end;padding:22px 0;border-bottom:1px solid var(--line-d);position:relative}
.n-item a::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--paper);transform:scaleX(0);transform-origin:left;transition:transform 600ms var(--ease-out)}
.n-item time{display:block;margin-bottom:8px;opacity:.6}
.n-item b{font-weight:500;font-size:var(--fs-b)}
.n-item .mono{opacity:.75}
@media (hover:hover) and (pointer:fine){.n-item a:hover::after{transform:scaleX(1)}}
.n-thumb{position:fixed;left:0;top:0;z-index:40;width:clamp(220px,20vw,320px);pointer-events:none;opacity:0;transform:scale(.9)}
.n-thumb .ph{--ar:4/3;position:absolute;inset:0;opacity:0;transition:opacity 250ms ease}
.n-thumb .ph.on{opacity:1}
.n-thumb-box{position:relative;aspect-ratio:4/3;border-radius:6px;overflow:hidden}
@media (max-width:760px){.news-head{grid-template-columns:1fr}.n-item a{grid-template-columns:1fr}.n-thumb{display:none}}

/* ---------- FAQ ---------- */
.faq{padding:clamp(100px,12vw,200px) var(--m)}
.faq-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:clamp(30px,6vw,120px);align-items:start}
.faq-side{position:sticky;top:calc(var(--hdr) + 40px)}
.faq-side .h2{font-size:clamp(56px,8vw,150px)}
.faq-side .body{margin-top:20px}
.faq-side a{display:inline-block;margin-top:28px;text-decoration:underline;text-underline-offset:.3em}
.faq-list{border-top:1px solid var(--line-l);counter-reset:q}
.qa{border-bottom:1px solid var(--line-l);counter-increment:q}
.qa button{width:100%;display:grid;grid-template-columns:44px 1fr 12px;gap:12px;align-items:center;text-align:left;padding:24px 0;font-weight:500;font-size:var(--fs-b)}
.qa button::before{content:counter(q,decimal-leading-zero);font-family:var(--f-mono);font-size:11px;opacity:.5}
.qa .pm{position:relative;width:12px;height:12px}
.qa .pm::before,.qa .pm::after{content:"";position:absolute;left:0;right:0;top:50%;height:1.5px;background:currentColor;transition:transform 300ms var(--ease-out)}
.qa .pm::after{transform:rotate(90deg)}
.qa[data-open=true] .pm::after{transform:rotate(0)}
.qa-a{display:grid;grid-template-rows:0fr;transition:grid-template-rows 450ms var(--ease-out)}
.qa[data-open=true] .qa-a{grid-template-rows:1fr}
.qa-a>div{overflow:hidden}
.qa-a p{padding:0 0 26px 56px;opacity:.7;max-width:60ch}
@media (max-width:900px){.faq-grid{grid-template-columns:1fr}.faq-side{position:static}.qa-a p{padding-left:0}}

/* ---------- CTA ---------- */
.cta{position:relative;min-height:92dvh;display:grid;place-items:center;overflow:hidden;cursor:pointer}
.cta-rings{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}
.cta-rings i{position:absolute;width:30vmax;height:30vmax;border-radius:50%;border:1px solid rgba(241,240,236,.09);animation:ring 12s linear infinite}
.cta-rings i:nth-child(2){animation-delay:-3s}.cta-rings i:nth-child(3){animation-delay:-6s}.cta-rings i:nth-child(4){animation-delay:-9s}
@keyframes ring{0%{transform:scale(.4);opacity:0}20%{opacity:1}100%{transform:scale(3.4);opacity:0}}
.cta-text{position:relative;z-index:2;text-align:center;padding:0 var(--m)}
.cta-text .h2{font-size:clamp(48px,8.4vw,170px);max-width:11ch;margin:0 auto}
.cta-text p{margin:28px auto 0;max-width:40ch;opacity:.7}
.cta-text .btn{margin-top:36px}
.cta-blob{position:absolute;left:0;top:0;z-index:3;width:clamp(110px,10vw,160px);aspect-ratio:1;border-radius:50%;background:var(--accent);color:var(--ink);display:grid;place-items:center;text-align:center;font-family:var(--f-display);font-weight:800;font-size:clamp(15px,1.2vw,19px);line-height:1;text-transform:uppercase;pointer-events:none;will-change:transform}
.cta-blob-trail{position:absolute;left:0;top:0;z-index:2;width:clamp(110px,10vw,160px);aspect-ratio:1;border-radius:50%;background:var(--accent);opacity:.35;filter:blur(6px);pointer-events:none;will-change:transform}
@media (hover:none),(pointer:coarse){.cta-blob,.cta-blob-trail{display:none}}

/* ---------- footer ---------- */
.foot{padding:clamp(60px,8vw,120px) var(--m) 0;overflow:hidden}
.foot-top{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--gap);padding-bottom:clamp(40px,6vw,80px)}
.foot-tag{grid-column:1/5;font-weight:500;font-size:var(--fs-l);line-height:1.2;letter-spacing:-.01em}
.foot-col{grid-column:span 2;display:flex;flex-direction:column;gap:10px}
.foot-col:first-of-type{grid-column:7/9}
.foot-col .mono{opacity:.5;margin-bottom:6px}
.foot-col a{width:fit-content;position:relative}
.foot-col a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform 500ms var(--ease-out)}
@media (hover:hover) and (pointer:fine){.foot-col a:hover::after{transform:scaleX(1);transform-origin:left}}
.foot-marq{border-top:1px solid var(--line-l);border-bottom:1px solid var(--line-l);overflow:hidden;white-space:nowrap;padding:18px 0}
.foot-marq-in{display:inline-flex;gap:40px;animation:marq 40s linear infinite;font-family:var(--f-display);font-weight:700;font-size:clamp(24px,2.6vw,44px);letter-spacing:-.02em;text-transform:uppercase}
.foot-marq-in span{display:inline-flex;align-items:center;gap:40px}
.foot-marq-in span::after{content:"";width:10px;height:10px;border-radius:50%;background:var(--accent)}
@keyframes marq{to{transform:translateX(-50%)}}
.foot-legal{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:18px 0;opacity:.6}
.foot-legal nav{display:flex;flex-wrap:wrap;gap:18px}
.foot-logo{position:relative;margin:0 calc(var(--m) * -1) clamp(8px,1.4vw,24px);height:clamp(140px,21vw,420px);touch-action:pan-y}
.foot-logo canvas{position:absolute;inset:0;width:100%;height:100%}
.foot-logo .fallback{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--f-display);font-weight:800;font-size:23vw;letter-spacing:-.06em;line-height:1;color:rgba(11,15,18,.1)}
.foot-logo.ready .fallback{opacity:0}
.foot-hint{position:absolute;right:var(--m);top:10px;opacity:.45}
@media (max-width:900px){
  .foot-tag{grid-column:1/-1;margin-bottom:24px}
  .foot-col,.foot-col:first-of-type{grid-column:span 6}
}

/* ---------- generic reveal ---------- */
.rv{opacity:0;transform:translateY(24px)}
html:not(.js) .rv{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important}
  .rv{opacity:1;transform:none}
  .reveal-text .w{opacity:1}
}

/* =========================================================
   Contact page
   ========================================================= */
.page-contact{background:var(--paper);color:var(--ink)}
.btn-ink{background:var(--ink);color:var(--paper)}
.c-hero{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);align-items:end;padding-top:calc(var(--hdr) + clamp(70px,10vw,150px));padding-bottom:clamp(40px,5vw,80px);border-bottom:1px solid var(--line-l);margin-inline:var(--m);padding-inline:0}
.c-hero-side{grid-column:1/4;display:grid;gap:28px;align-self:end;padding-bottom:6px}
.c-hero-main{grid-column:4/10}
.c-title{font-size:clamp(56px,8.2vw,160px);margin:18px 0 clamp(20px,2.4vw,36px)}
.c-sub{max-width:34ch;opacity:.8}
.c-map{grid-column:10/13;align-self:center}
.c-map svg{width:100%;height:auto;overflow:hidden}
.c-map .land{fill:url(#c-dots)}
.c-map .land.hi{fill:url(#c-dots-hi)}
.c-map .off circle.c{fill:var(--accent)}
.c-map .off circle.p{fill:none;stroke:var(--accent);stroke-width:1.4;transform-box:fill-box;transform-origin:center;animation:pulse 2.6s var(--ease-out) infinite}
.c-map .off text{font-family:var(--f-mono);font-size:15px;letter-spacing:.08em;text-transform:uppercase;fill:var(--ink);paint-order:stroke;stroke:var(--paper);stroke-width:5px}
.c-map .link{fill:none;stroke:var(--accent);stroke-width:1.6;stroke-dasharray:3 6;opacity:.7}
.c-line{display:grid;gap:8px}
.c-line p{font-weight:500;line-height:1.4}
.c-big-link{font-size:clamp(18px,1.4vw,24px);font-weight:500;letter-spacing:-.01em;width:fit-content;background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;transition:background-size 500ms var(--ease-out)}
@media (hover:hover) and (pointer:fine){.c-big-link:hover{background-size:100% 1px}}

.c-body{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--gap);padding-top:clamp(50px,6vw,100px);padding-bottom:clamp(80px,10vw,160px);align-items:start}
.c-aside{grid-column:1/4;display:grid;gap:32px;position:sticky;top:calc(var(--hdr) + 24px)}
.c-photo{width:100%}
.c-form-wrap{grid-column:4/9;scroll-margin-top:calc(var(--hdr) + 20px)}
.c-form-wrap>.h3{font-size:clamp(28px,2.6vw,46px)}
.c-form-lead{margin-top:16px;max-width:52ch;opacity:.7}
.c-offices{grid-column:10/13;display:grid;gap:0;position:sticky;top:calc(var(--hdr) + 24px)}
.c-offices>.h3{font-size:clamp(28px,2.6vw,46px);padding-bottom:20px;border-bottom:1px solid var(--line-l)}
.office{display:grid;gap:8px;padding:22px 0;border-bottom:1px solid var(--line-l)}
.office p{font-weight:500;line-height:1.4}
.office a{width:fit-content;opacity:.75;text-decoration:underline;text-underline-offset:.25em;text-decoration-thickness:1px}

.c-form{margin-top:clamp(28px,3vw,48px);display:grid;gap:clamp(30px,3vw,46px)}
.f-group{border:0;margin:0;padding:0;min-width:0}
.f-legend{padding:0;margin-bottom:16px;font-weight:700;font-size:var(--fs-b)}
.f-chips{display:flex;flex-wrap:wrap;gap:8px}
.f-chip{position:relative;cursor:pointer}
.f-chip input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.f-chip span{display:inline-flex;align-items:center;min-height:42px;padding:0 18px;border:1px solid var(--line-l);border-radius:99px;font-size:var(--fs-s);font-weight:500;transition:background-color 200ms ease,color 200ms ease,border-color 200ms ease,transform 160ms var(--ease-out)}
.f-chip:active span{transform:scale(.97)}
.f-chip input:checked+span{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.f-chip input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}
@media (hover:hover) and (pointer:fine){.f-chip:hover input:not(:checked)+span{border-color:var(--ink)}}
.f-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 24px}
.field{position:relative;padding-top:18px}
.field.full{grid-column:1/-1}
.field input,.field textarea{width:100%;border:0;border-bottom:1px solid var(--line-l);background:transparent;padding:12px 0 12px;font:500 var(--fs-b)/1.4 var(--f-body);color:var(--ink);border-radius:0;outline:0;transition:border-color 300ms ease}
.field textarea{resize:vertical;min-height:110px}
.field label{position:absolute;left:0;top:30px;font-size:var(--fs-b);opacity:.5;pointer-events:none;transform-origin:left top;transition:transform 350ms var(--ease-out),opacity 300ms ease}
.field input:focus+label,.field input:not(:placeholder-shown)+label,.field textarea:focus+label,.field textarea:not(:placeholder-shown)+label,.field input[type=date]+label{transform:translateY(-26px) scale(.78);opacity:.7}
.field::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform 500ms var(--ease-out)}
.field:has(textarea)::after{bottom:6px}
.field:focus-within::after{transform:scaleX(1)}
.field input[type=date]{color:var(--ink);min-height:48px}
.f-err{display:block;height:0;overflow:hidden;font-size:13px;color:#c2410c;transition:height 250ms var(--ease-out)}
.field.bad::after{background:#c2410c;transform:scaleX(1)}
.field.bad .f-err{height:22px;padding-top:6px}
.f-foot{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap;padding-top:8px}
.f-note{font-size:13px;opacity:.55}
.f-note{max-width:44ch}
.f-note.err{opacity:1;color:#b8401a}
.f-note.err a{text-decoration:underline;text-underline-offset:.2em}
.f-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.c-form .btn[aria-busy=true]{pointer-events:none;opacity:.6}
.c-done{margin-top:clamp(28px,3vw,48px);padding:clamp(28px,3vw,44px);border:1px solid var(--line-l);border-radius:18px;background:var(--white);display:grid;gap:16px;justify-items:start;outline:0}
.c-done-ic{width:56px;height:56px;color:var(--accent)}
.c-done-ic path{stroke-dasharray:40;stroke-dashoffset:40;animation:draw 700ms var(--ease-out) 250ms forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.c-done p{opacity:.75;max-width:48ch}
.c-done a{text-decoration:underline}
.page-contact .foot{padding-top:0}
.page-contact .foot-legal{border-top:1px solid var(--line-l)}

@media (max-width:1100px){
  .c-hero-side{grid-column:1/-1;grid-row:3;grid-template-columns:1fr 1fr;margin-top:40px}
  .c-hero-main{grid-column:1/8}
  .c-map{grid-column:8/13}
  .c-aside{grid-column:1/-1;position:static;grid-template-columns:1fr 1fr;align-items:start;margin-bottom:56px}
  .c-photo{grid-row:span 2}
  .c-form-wrap{grid-column:1/8}
  .c-offices{grid-column:9/13}
}
@media (max-width:760px){
  .c-hero-main,.c-map,.c-hero-side{grid-column:1/-1}
  .c-map{max-width:230px;margin:28px 0 0 auto}
  .c-hero-side{grid-template-columns:1fr}
  .c-aside{grid-template-columns:1fr}
  .c-photo{grid-row:auto}
  .c-form-wrap,.c-offices{grid-column:1/-1;position:static}
  .c-offices{margin-top:64px}
  .f-grid{grid-template-columns:1fr}
}
