/* nh-page.css
   Shared page chassis for Next Horizon.
   Extracted from the per-page <style> blocks on 2026-09-17 so the Solutions and
   Transport pages stop carrying their own copy of the same 18 KB.
   Load order matters: this file must come BEFORE assets/nh-shared.css, which
   still owns the nav logo, the footer, the partner chips, motion and focus.
   Existing pages keep their inline copy for now; migrate them one at a time. */


*,*::before,*::after { margin:0; padding:0; box-sizing:border-box; }
html { scroll-behavior:smooth; -webkit-text-size-adjust:100%; font-size:16px; }
:root {
  --bg:#14181F; --bg-card:#1C212A; --bg-raised:#262C36; --bg-soft:#181D25;
  --blue:#5B9CF5; --blue-light:#93C5FD; --blue-strong:#3B82F6;
  --blue-dim:rgba(91,156,245,0.10); --blue-border:rgba(91,156,245,0.22);
  --green:#22C55E; --green-dim:rgba(34,197,94,0.10);
  --violet:#8B5CF6; --amber:#F59E0B; --amber-dim:rgba(245,158,11,0.10); --accent:#5B9CF5; --accent-light:#93C5FD; --accent-dim:rgba(91,156,245,0.12);
  --text:#E8F0FF; --muted:#97AECC; --dim:#7A95B8;
  --border:rgba(148,163,184,0.10); --border-mid:rgba(148,163,184,0.17);
}
body { font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif; background:var(--bg); color:var(--text); -webkit-font-smoothing:antialiased; line-height:1.6; overflow-x:hidden; }
a { color:inherit; text-decoration:none; }
[data-lang="en"] .fr { display:none !important; }
[data-lang="fr"] .en { display:none !important; }
.container { max-width:1080px; margin:0 auto; padding:0 24px; }
.container-narrow { max-width:780px; margin:0 auto; padding:0 24px; }

/* NAV (canonical: 72px height, identical across every page) */
nav { position:fixed; top:0; left:0; right:0; z-index:500; height:72px; background:rgba(20,24,31,0.86); backdrop-filter:blur(20px); -webkit-backdrop-filter:blur(20px); border-bottom:1px solid var(--border); }
.nav-inner { max-width:1140px; margin:0 auto; padding:0 24px; height:72px; display:flex; align-items:center; justify-content:space-between; gap:16px; }
.nav-logo { display:flex; align-items:center; flex-shrink:0; }
.nav-wordmark { display:flex; flex-direction:column; line-height:1; }
.nav-wordmark-top { font-size:17px; font-weight:900; letter-spacing:0.05em; color:var(--blue); }
.nav-wordmark-bot { font-size:17px; font-weight:900; letter-spacing:0.05em; color:white; margin-top:-2px; }
.nav-links { display:flex; align-items:center; gap:4px; list-style:none; flex:1; justify-content:center; }
.nav-links > li > a { display:flex; align-items:center; padding:8px 14px; font-size:14px; font-weight:500; color:var(--muted); border-radius:7px; transition:color .16s, background .16s; }
.nav-links > li > a:hover, .nav-links > li > a.active { color:white; background:rgba(91,156,245,0.07); }
.nav-right { display:flex; align-items:center; gap:10px; flex-shrink:0; }
.lang-toggle { display:flex; align-items:center; border:1px solid var(--border-mid); border-radius:7px; overflow:hidden; }
.lang-btn { padding:5px 11px; font-size:12px; font-weight:600; color:var(--dim); background:transparent; border:none; transition:.15s; letter-spacing:0.04em; cursor:pointer; }
.lang-btn.active { color:white; background:var(--blue-dim); }
.btn-nav-cta { padding:9px 18px; font-size:13.5px; font-weight:600; color:var(--bg); background:var(--blue); border-radius:8px; transition:.18s; box-shadow:0 4px 14px rgba(91,156,245,0.28); border:none; white-space:nowrap; text-decoration:none; }
.btn-nav-cta:hover { background:var(--blue-light); transform:translateY(-1px); }
  .btn-nav-login { padding:8px 15px; font-size:13.5px; font-weight:600; color:var(--text); background:transparent; border:1px solid var(--border-mid); border-radius:8px; transition:border-color .18s,color .18s; white-space:nowrap; }
  .btn-nav-login:hover { border-color:var(--blue-border); color:var(--blue-light); }
.nav-hamburger { display:none; width:36px; height:36px; border-radius:7px; background:var(--blue-dim); border:1px solid var(--border-mid); align-items:center; justify-content:center; flex-direction:column; gap:5px; cursor:pointer; }
.nav-hamburger span { width:17px; height:1.5px; background:var(--muted); border-radius:2px; }
.mobile-menu { position:fixed; top:72px; left:0; right:0; background:var(--bg-card); border-bottom:1px solid var(--border); padding:8px 24px 24px; z-index:400; transform:translateY(-110%); transition:transform .3s cubic-bezier(.4,0,.2,1); }
.mobile-menu.open { transform:translateY(0); }
.mobile-menu a { display:block; padding:13px 0; font-size:15px; font-weight:500; color:var(--muted); border-bottom:1px solid var(--border); }
.mm-lang { display:flex; gap:10px; padding:16px 0 0; }
.mm-lang button { flex:1; padding:10px; font-size:13px; font-weight:600; border-radius:8px; border:1px solid var(--border-mid); background:transparent; color:var(--muted); cursor:pointer; }
.mm-lang button.active { background:var(--blue); color:white; border-color:var(--blue); }
@media(max-width:880px){ .nav-links, .nav-right { display:none; } .nav-hamburger { display:flex; }
}

/* BREADCRUMB */
.breadcrumb { padding:100px 0 0; }
.breadcrumb ol { display:flex; flex-wrap:wrap; gap:8px; align-items:center; list-style:none; font-size:12.5px; color:var(--dim); }
.breadcrumb a { color:var(--muted); transition:color .15s; }
.breadcrumb a:hover { color:white; }
.breadcrumb .sep { color:var(--dim); }
.breadcrumb [aria-current="page"] { color:var(--blue); font-weight:600; }

/* HERO */
.seo-hero { padding:36px 0 56px; position:relative; }
.seo-hero-glow { position:absolute; top:-10%; left:50%; transform:translateX(-50%); width:900px; height:600px; background:radial-gradient(ellipse at 50% 30%, rgba(91,156,245,0.12) 0%, transparent 65%); pointer-events:none; z-index:0; }
.seo-hero-inner { position:relative; z-index:1; }
.seo-kicker { display:inline-flex; align-items:center; gap:8px; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:0.16em; color:var(--blue); background:var(--blue-dim); border:1px solid var(--blue-border); border-radius:100px; padding:5px 14px; margin-bottom:22px; }
.seo-hero h1 { font-size:clamp(34px,5vw,52px); font-weight:800; line-height:1.07; letter-spacing:-0.03em; color:white; margin-bottom:22px; max-width:860px; }
.seo-hero .accent { color:var(--blue); }
.seo-hero .lead { font-size:clamp(15px,1.7vw,18px); color:var(--muted); line-height:1.7; max-width:680px; margin-bottom:30px; }
.seo-hero-cta { display:flex; flex-wrap:wrap; gap:12px; }
.btn-lg { display:inline-flex; align-items:center; gap:10px; padding:13px 24px; font-size:14.5px; font-weight:600; border-radius:10px; transition:.18s; border:none; cursor:pointer; text-decoration:none; }
.btn-primary, .btn-primary-lg { background:var(--blue); color:var(--bg); box-shadow:0 4px 14px rgba(91,156,245,0.28); }
.btn-primary:hover, .btn-primary-lg:hover { background:var(--blue-light); transform:translateY(-1px); }
.btn-ghost, .btn-ghost-lg { background:transparent; border:1px solid var(--border-mid); color:var(--text); }
.btn-ghost:hover, .btn-ghost-lg:hover { border-color:var(--blue-border); background:var(--blue-dim); }

/* CONTENT SECTIONS */
.seo-section { padding:56px 0; border-top:1px solid var(--border); }
.seo-section:first-of-type { border-top:none; padding-top:8px; }
.seo-section h2 { font-size:clamp(24px,3vw,34px); font-weight:800; letter-spacing:-0.025em; color:white; line-height:1.15; margin-bottom:14px; max-width:720px; }
.seo-section > .container > p, .seo-section > .container-narrow > p { font-size:15.5px; color:var(--muted); line-height:1.75; max-width:720px; margin-bottom:8px; }

/* FINAL CTA */
.final-cta { padding:80px 0; border-top:1px solid var(--border); text-align:center; }
.final-cta h2 { font-size:clamp(26px,3.4vw,38px); font-weight:800; letter-spacing:-0.025em; color:white; margin-bottom:14px; }
.final-cta p { font-size:16px; color:var(--muted); line-height:1.7; max-width:560px; margin:0 auto 30px; }
.final-cta-actions { display:flex; flex-wrap:wrap; gap:12px; justify-content:center; }

/* FOOTER (canonical) */
footer { border-top:1px solid var(--border); padding:56px 0 24px; }
.footer-brand .wordmark { line-height:1; display:flex; flex-direction:column; }
.footer-brand .wordmark-next { font-size:18px; font-weight:900; letter-spacing:0.05em; color:var(--blue); }
.footer-brand .wordmark-horizon { font-size:18px; font-weight:900; letter-spacing:0.05em; color:white; margin-top:-2px; }
.footer-brand p { font-size:13px; color:var(--muted); margin-top:14px; max-width:280px; line-height:1.6; }
.footer-col h4 { font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:0.14em; color:var(--dim); margin-bottom:16px; }
.footer-col a { display:block; font-size:13px; color:var(--muted); padding:5px 0; transition:color .18s; }
.footer-col a:hover { color:white; }
.footer-bottom { padding-top:22px; border-top:1px solid var(--border); display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; font-size:11.5px; color:var(--dim); }
.footer-bottom p { color:var(--dim); }
@media (max-width: 880px) { .footer-grid { grid-template-columns:1fr 1fr; gap:32px; }
}
@media (max-width: 560px) { .footer-grid { grid-template-columns:1fr; gap:28px; }
}

/* Social icon row in footer (LinkedIn) */
.footer-social { margin-top:18px; display:flex; gap:10px; }
.footer-social a {
  width:34px; height:34px; border-radius:8px;
  display:flex; align-items:center; justify-content:center;
  background:var(--bg-card); border:1px solid var(--border-mid);
  color:var(--muted); transition:color .15s, background .15s, border-color .15s;
  font-size:15px; text-decoration:none;
}
.footer-social a:hover { color:white; background:var(--blue-dim); border-color:var(--blue-border); }

/* Brand Pack 2 logo sizing (canonical) */
.nav-wordmark, .wordmark, .nav-logo, .footer-wordmark, .footer-brand .wordmark {
  display:inline-flex; align-items:center; line-height:1; height:auto;
}
nav, .nav-inner { overflow:visible; }
nav img[src*="logo-wordmark"],
.nav-inner img[src*="logo-wordmark"],
.nav-wordmark img, .wordmark img, .nav-logo img,
.nav-wordmark-img, .wordmark-img {
  display:block !important; height:34px !important; width:auto !important; max-width:220px !important;
}
.footer-brand img[src*="logo-wordmark"],
.footer-wordmark img[src*="logo-wordmark"],
footer img[src*="logo-wordmark"],
.footer-brand .wordmark-img, .footer-wordmark .wordmark-img,
footer .wordmark-img {
  display:block !important; height:40px !important; width:auto !important; max-width:240px !important;
}
@media (max-width: 720px) {
  nav img[src*="logo-wordmark"],
  .nav-inner img[src*="logo-wordmark"],
  .nav-wordmark img, .wordmark img, .nav-logo img,
  .nav-wordmark-img, .wordmark-img { height:28px !important; }
}

/* MOBILE FIT-PASS (sitewide) */
html, body { max-width:100%; overflow-x:hidden; }
@media (max-width: 720px) {
  nav {
    background: #14181F !important;
    border-bottom: 1px solid rgba(91,156,245,0.05) !important;
    backdrop-filter: none !important; -webkit-backdrop-filter: none !important;
  }
  .container { padding-left:18px !important; padding-right:18px !important; }
  .btn-nav-cta { padding:7px 12px !important; font-size:12.5px !important; white-space:nowrap; }
  .btn-lg, .btn-primary-lg, .btn-ghost-lg { padding:11px 16px !important; font-size:13.5px !important; white-space:normal; }
  .final-cta-actions { flex-direction:column !important; align-items:stretch !important; gap:10px !important; }
  .final-cta-actions .btn-lg { width:100%; justify-content:center; }
  h1 { font-size:clamp(26px, 7.4vw, 38px) !important; line-height:1.1 !important; }
  h2 { font-size:clamp(22px, 6vw, 28px) !important; line-height:1.2 !important; }
  img, video, iframe, svg { max-width:100%; height:auto; }
  .seo-hero { padding:24px 0 36px; }
  .seo-section { padding:36px 0; }
  .breadcrumb { padding:88px 0 0; }
}
@media (max-width: 480px) {
  .container { padding-left:14px !important; padding-right:14px !important; }
}


/* Mobile menu grouping (was inline on every page). */
.mm-group-label { font-size:10.5px; font-weight:700; text-transform:uppercase; letter-spacing:0.14em; color:var(--dim); padding:16px 0 6px; border-bottom:none !important; }
.mobile-menu a.mm-sub { padding-left:14px; font-size:14px; }

/* Type and button layer (was the trailing <style id="nh-btn-accent"> block). */
h1,h2,h3,h4,h5,.section-h2{font-family:'Bricolage Grotesque','Inter',-apple-system,BlinkMacSystemFont,sans-serif;letter-spacing:-0.02em;text-wrap:balance;}
h1{letter-spacing:-0.035em;}
.nav-wordmark,.footer-wordmark,.wordmark-next,.wordmark-horizon,.nav-wordmark-top,.nav-wordmark-bot,.fn,.fh,.fwm-top,.fwm-bot{font-family:'Bricolage Grotesque','Inter',sans-serif!important;font-weight:800!important;}
.btn-nav-cta,.btn-primary-lg,.path-cta{background:var(--accent)!important;color:#0D1425!important;box-shadow:0 8px 24px rgba(91,156,245,0.28)!important;}
.btn-nav-cta:hover,.btn-primary-lg:hover,.path-cta:hover{background:var(--accent-light)!important;}
.btn-nav-cta,.btn-nav-login,.btn-lg,.btn-primary-lg,.btn-ghost-lg,.path-cta{border-radius:12px!important;}

/* ===========================================================================
   Page components, Solutions and Transport family (2026-09-17)
   Built on the existing tokens. No new colours.
   =========================================================================== */

/* Hero -------------------------------------------------------------------- */
.nh-hero{ padding:40px 0 8px; position:relative; }
.nh-hero .seo-kicker,
.nh-kicker{
  display:inline-flex; align-items:center; gap:8px; margin-bottom:18px;
  font-family:'JetBrains Mono',ui-monospace,monospace; font-size:11px; font-weight:500;
  letter-spacing:.14em; text-transform:uppercase; color:var(--blue);
}
.nh-kicker::before{ content:""; width:16px; height:1px; background:var(--blue); opacity:.55; }
.nh-hero h1{ font-size:clamp(32px,4.6vw,50px); font-weight:800; line-height:1.06; letter-spacing:-.032em; color:#fff; margin-bottom:20px; max-width:17ch; }
.nh-hero h1 .accent{ color:var(--blue); }
.nh-hero .lead{ font-size:clamp(15.5px,1.7vw,18.5px); color:var(--muted); line-height:1.7; max-width:62ch; margin-bottom:26px; }
.nh-hero-cta{ display:flex; flex-wrap:wrap; gap:12px; }

/* Fact row under a hero: short, checkable statements only. */
.nh-facts{ display:flex; flex-wrap:wrap; gap:10px 28px; margin-top:28px; padding-top:22px; border-top:1px solid var(--border); }
.nh-fact{ display:flex; align-items:baseline; gap:9px; font-size:13.5px; color:var(--muted); }
.nh-fact b{ color:#fff; font-weight:700; font-size:15px; letter-spacing:-.01em; }
.nh-fact .dot{ width:6px; height:6px; border-radius:50%; background:var(--blue); flex:0 0 auto; transform:translateY(-2px); }
.nh-fact .dot.amber{ background:var(--amber); }

/* Cards ------------------------------------------------------------------- */
.nh-cards{ display:grid; grid-template-columns:repeat(auto-fit,minmax(272px,1fr)); gap:16px; margin-top:26px; }
.nh-cards.two{ grid-template-columns:repeat(auto-fit,minmax(340px,1fr)); }
.nh-card{
  padding:24px 22px; background:var(--bg-card); border:1px solid var(--border);
  border-radius:14px; transition:border-color .18s ease, transform .18s ease;
}
.nh-card:hover{ border-color:var(--blue-border); transform:translateY(-2px); }
.nh-card .nh-ico{
  display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px;
  margin-bottom:14px; border-radius:9px; background:var(--blue-dim);
  border:1px solid var(--blue-border); color:var(--blue); font-size:14px;
}
.nh-card h3{ font-size:16.5px; font-weight:700; color:#fff; margin-bottom:8px; letter-spacing:-.015em; }
.nh-card p{ font-size:14.5px; color:var(--muted); line-height:1.7; }
.nh-card p + p{ margin-top:10px; }
.nh-card a.nh-more{ display:inline-flex; align-items:center; gap:6px; margin-top:14px; font-size:13.5px; font-weight:600; color:var(--blue); }
.nh-card a.nh-more:hover{ text-decoration:underline; }

/* A card that is also the whole link (hub pages). */
a.nh-card{ display:block; text-decoration:none; }
a.nh-card:hover h3{ color:var(--blue-light); }

/* Split section: sticky heading left, content right ------------------------ */
.nh-split{ display:grid; grid-template-columns:minmax(0,300px) minmax(0,1fr); gap:44px; align-items:start; }
.nh-split-head{ position:sticky; top:96px; }
.nh-split-head h2{ font-size:clamp(22px,2.7vw,30px); font-weight:800; letter-spacing:-.025em; color:#fff; line-height:1.15; margin-bottom:12px; }
.nh-split-head p{ font-size:14.5px; color:var(--muted); line-height:1.7; }

/* Numbered steps ---------------------------------------------------------- */
.nh-steps{ counter-reset:s; margin-top:26px; }
.nh-step{ display:grid; grid-template-columns:38px 1fr; gap:18px; padding:20px 0; border-bottom:1px solid var(--border); }
.nh-step:last-child{ border-bottom:none; }
.nh-step-n{
  display:flex; align-items:center; justify-content:center; width:38px; height:38px;
  border-radius:10px; background:var(--blue-dim); border:1px solid var(--blue-border);
  font-family:'JetBrains Mono',ui-monospace,monospace; font-size:13px; color:var(--blue);
}
.nh-step h4{ font-size:15.5px; font-weight:700; color:#fff; margin-bottom:6px; }
.nh-step p{ font-size:14.5px; color:var(--muted); line-height:1.7; }

/* Coverage table ---------------------------------------------------------- */
.nh-tablewrap{ margin-top:24px; border:1px solid var(--border); border-radius:14px; overflow:hidden; background:var(--bg-card); }
.nh-table{ width:100%; border-collapse:collapse; font-size:14px; }
.nh-table th, .nh-table td{ padding:13px 18px; text-align:left; border-bottom:1px solid var(--border); }
.nh-table thead th{ background:var(--bg-soft); font-size:11px; font-weight:700; letter-spacing:.11em; text-transform:uppercase; color:var(--dim); }
.nh-table tbody tr:last-child td{ border-bottom:none; }
.nh-table td:first-child{ color:#fff; font-weight:600; }
.nh-table td{ color:var(--muted); }
.nh-status{ display:inline-flex; align-items:center; gap:7px; font-size:12.5px; font-weight:600; white-space:nowrap; }
.nh-status::before{ content:""; width:7px; height:7px; border-radius:50%; background:var(--dim); }
.nh-status.live{ color:var(--green); } .nh-status.live::before{ background:var(--green); box-shadow:0 0 0 3px var(--green-dim); }
.nh-status.soon{ color:var(--amber); } .nh-status.soon::before{ background:var(--amber); box-shadow:0 0 0 3px var(--amber-dim); }
.nh-status.byoc{ color:var(--blue); } .nh-status.byoc::before{ background:var(--blue); box-shadow:0 0 0 3px var(--blue-dim); }

/* Pull quote / one-idea band ---------------------------------------------- */
.nh-band{ margin:0; padding:44px 0; border-top:1px solid var(--border); border-bottom:1px solid var(--border); background:linear-gradient(180deg,rgba(91,156,245,.045),transparent); }
.nh-band p{ font-size:clamp(19px,2.5vw,27px); font-weight:700; line-height:1.4; letter-spacing:-.022em; color:#fff; max-width:23ch; }
.nh-band p .accent{ color:var(--blue); }
.nh-band .sub{ margin-top:14px; font-size:15px; font-weight:400; letter-spacing:0; color:var(--muted); line-height:1.7; max-width:60ch; }

/* Notes and beta banner --------------------------------------------------- */
.nh-note{ display:flex; gap:12px; margin-top:22px; padding:16px 18px; border-radius:12px; background:var(--blue-dim); border:1px solid var(--blue-border); }
.nh-note.amber{ background:var(--amber-dim); border-color:rgba(245,158,11,.28); }
.nh-note i{ color:var(--blue); font-size:14px; margin-top:3px; }
.nh-note.amber i{ color:var(--amber); }
.nh-note p{ font-size:14px; color:var(--muted); line-height:1.65; }
.nh-note p b{ color:#fff; font-weight:600; }

/* FAQ --------------------------------------------------------------------- */
.nh-faq{ margin-top:24px; border-top:1px solid var(--border); }
.nh-faq-item{ border-bottom:1px solid var(--border); }
.nh-faq-item summary{
  display:flex; align-items:flex-start; justify-content:space-between; gap:18px;
  padding:18px 0; cursor:pointer; list-style:none;
  font-size:15.5px; font-weight:600; color:#fff; line-height:1.5;
}
.nh-faq-item summary::-webkit-details-marker{ display:none; }
.nh-faq-item summary::after{ content:"+"; flex:0 0 auto; font-size:20px; font-weight:400; color:var(--blue); line-height:1; transition:transform .2s ease; }
.nh-faq-item[open] summary::after{ transform:rotate(45deg); }
.nh-faq-item summary:hover{ color:var(--blue-light); }
.nh-faq-a{ padding:0 0 20px; }
.nh-faq-a p{ font-size:14.5px; color:var(--muted); line-height:1.75; max-width:70ch; }

/* Related pages ----------------------------------------------------------- */
.nh-related{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:12px; margin-top:24px; }
.nh-related a{ display:block; padding:16px 18px; border:1px solid var(--border); border-radius:12px; background:var(--bg-card); transition:border-color .18s ease; }
.nh-related a:hover{ border-color:var(--blue-border); }
.nh-related .r-k{ font-family:'JetBrains Mono',ui-monospace,monospace; font-size:10px; letter-spacing:.12em; text-transform:uppercase; color:var(--dim); }
.nh-related .r-t{ display:block; margin-top:5px; font-size:14.5px; font-weight:600; color:#fff; }

@media (max-width:880px){
  .nh-split{ grid-template-columns:1fr; gap:22px; }
  .nh-split-head{ position:static; }
  .nh-hero h1{ max-width:none; }
}
@media (max-width:560px){
  .nh-tablewrap{ overflow-x:auto; }
  .nh-table{ min-width:520px; }
}

/* The site header is styled off the bare `nav` element, which would also catch
   the breadcrumb. Breadcrumbs belong in a <nav> for assistive tech, so undo the
   header styling here rather than downgrade the element to a <div>. */
nav.breadcrumb{
  position:static !important; height:auto !important; z-index:auto !important;
  background:none !important; border-bottom:none !important;
  backdrop-filter:none !important; -webkit-backdrop-filter:none !important;
}

/* An odd card at the end of a two-up grid would leave a hole. Let it span. */
@media (min-width:881px){
  .nh-split .nh-cards > :last-child:nth-child(odd){ grid-column:1 / -1; }
}
