:root{
  --bg:#ffffff;
  --surface:#F8FAFF;
  --text:#0F172A;
  --muted:#475569;
  --line:rgba(15,23,42,.12);
  --primary:#134CBF;
  --primary2:#1B66DC;
  --accent:#1F8FEF;
  --soft:#CDD9EB;
  --brandGray:#444A58;
  --radius:18px;
  --shadow:0 10px 30px rgba(15,23,42,.08);
  --shadow2:0 6px 18px rgba(15,23,42,.10);
  --container:1140px;
  --font: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Inter, Arial, "Noto Sans", "Liberation Sans", sans-serif;
}

*{box-sizing:border-box}
html,body{height:100%}
html{scroll-behavior:smooth; scroll-padding-top: calc(var(--header-h, 96px) + 16px);}
section[id]{scroll-margin-top: calc(var(--header-h, 96px) + 16px);}

body{
  margin:0;
  font-family:var(--font);
  color:var(--text);
  background:
    /* base tint from the logo palette (kept very soft so it doesn't "intersect" with text) */
    radial-gradient(1200px 520px at 18% -12%, rgba(31,143,239,.16) 0%, rgba(31,143,239,0) 70%),
    radial-gradient(980px 460px at 92% 0%, rgba(19,76,191,.12) 0%, rgba(19,76,191,0) 70%),
    linear-gradient(180deg, #EEF5FF 0%, #FFFFFF 34%, #F2F7FF 100%);
  line-height:1.5;
}

/* Motion */
body{position:relative}
main, .footer{position:relative; z-index:1}

/* Animated background orbs (subtle) */
.bg-fx{
  position:fixed; inset:0;
  pointer-events:none;
  z-index:0;
  overflow:hidden;
}
.bg-fx::after{
  /* light "wash" in the center so blue boundaries stay away from main text areas */
  content:"";
  position:absolute; inset:-2px;
  background:
    radial-gradient(900px 560px at 50% 18%, rgba(255,255,255,.94) 0%, rgba(255,255,255,0) 72%),
    radial-gradient(980px 680px at 50% 62%, rgba(255,255,255,.90) 0%, rgba(255,255,255,0) 76%);
}
.bg-fx .orb{
  position:absolute;
  width:620px; height:620px;
  border-radius:999px;
  filter:blur(96px);
  opacity:.28;
  transform:translate3d(0,0,0);
  will-change:transform;
}
.bg-fx .o1{
  left:-260px; top:-320px;
  background:radial-gradient(circle at 30% 30%, rgba(31,143,239,.42), rgba(31,143,239,0) 64%);
  animation:orbFloat 16s ease-in-out infinite;
}
.bg-fx .o2{
  right:-300px; top:-260px;
  background:radial-gradient(circle at 30% 30%, rgba(19,76,191,.34), rgba(19,76,191,0) 66%);
  animation:orbFloat 19s ease-in-out infinite reverse;
}
.bg-fx .o3{
  left:12%; bottom:-420px;
  background:radial-gradient(circle at 30% 30%, rgba(27,102,220,.30), rgba(27,102,220,0) 66%);
  animation:orbDrift 22s ease-in-out infinite;
}

@keyframes orbFloat{
  0%,100%{transform:translate3d(0,0,0)}
  50%{transform:translate3d(40px, 30px, 0)}
}
@keyframes orbDrift{
  0%,100%{transform:translate3d(0,0,0)}
  50%{transform:translate3d(-46px, -26px, 0)}
}

/* Scroll reveal */
.reveal{
  opacity:0;
  transform:translateY(14px);
  filter:blur(1px);
  transition:
    opacity .55s ease,
    transform .55s ease,
    filter .55s ease;
  transition-delay: var(--d, 0ms);
  will-change: opacity, transform;
}
.reveal.is-visible{
  opacity:1;
  transform:none;
  filter:blur(0);
}

/* Header micro-shrink on scroll */
.header-inner{transition:padding .2s ease}
body.is-scrolled .header{background:linear-gradient(180deg, rgba(255,255,255,.97) 0%, rgba(248,250,255,.93) 100%); box-shadow:0 12px 30px rgba(15,23,42,.10)}
body.is-scrolled .header-inner{padding:10px 0}

/* Richer but minimal button look */
.btn.primary{position:relative; overflow:hidden}
.btn.primary::after{
  content:"";
  position:absolute; inset:-2px;
  background:linear-gradient(110deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.22) 35%, rgba(255,255,255,0) 70%);
  transform:translateX(-120%);
  transition:transform .55s ease;
}
.btn.primary:hover::after{transform:translateX(120%)}
.kicker-dot{animation:kickerPulse 2.8s ease-in-out infinite}
@keyframes kickerPulse{0%,100%{box-shadow:0 0 0 4px rgba(31,143,239,.12)}50%{box-shadow:0 0 0 7px rgba(31,143,239,.18)}}

/* Hover lift (keeps it premium, not noisy) */
.card, .case, .panel, .contact-card{
  transition:transform .14s ease, box-shadow .2s ease, border-color .2s ease;
  will-change:transform;
}

.contact-card a{color:var(--primary); font-weight:800; text-decoration:none}
.contact-card a:hover{text-decoration:underline}
.card:hover, .case:hover, .panel:hover, .contact-card:hover{
  transform:translateY(-2px);
}

/* FAQ smooth expand */
.faq-a{
  display:block;
  max-height:0;
  overflow:hidden;
  opacity:0;
  transform:translateY(-4px);
  padding:0 18px;
  transition:max-height .28s ease, opacity .22s ease, transform .22s ease, padding .22s ease;
}
.faq-item.open .faq-a{
  max-height:620px;
  opacity:1;
  transform:none;
  padding:0 18px 16px;
}

/* Modal smooth opening */
.modal{
  position:fixed; inset:0; z-index:100;
  display:block;
  visibility:hidden;
  opacity:0;
  pointer-events:none;
  transition:opacity .18s ease, visibility 0s linear .18s;
}
.modal.open{
  visibility:visible;
  opacity:1;
  pointer-events:auto;
  transition:opacity .18s ease, visibility 0s;
}
.modal.closing{
  visibility:visible;
  opacity:0;
  pointer-events:none;
  transition:opacity .16s ease, visibility 0s linear .16s;
}
.modal-backdrop{opacity:0; transition:opacity .18s ease}
.modal.open .modal-backdrop{opacity:1}
.modal-panel{
  opacity:0;
  transform:translateY(14px) scale(.985);
  transition:transform .2s ease, opacity .2s ease;
}
.modal.open .modal-panel{
  opacity:1;
  transform:translateY(0) scale(1);
}
.modal.closing .modal-panel{
  opacity:0;
  transform:translateY(14px) scale(.985);
}

/* Scroll-to-top button */
.scrolltop{
  position:fixed;
  right:18px;
  bottom:18px;
  width:52px; height:52px;
  border-radius:18px;
  border:1px solid rgba(15,23,42,.14);
  background:rgba(255,255,255,.88);
  backdrop-filter:saturate(170%) blur(10px);
  box-shadow:var(--shadow2);
  display:grid; place-items:center;
  cursor:pointer;
  opacity:0;
  transform:translateY(10px);
  pointer-events:none;
  transition:opacity .18s ease, transform .18s ease, border-color .18s ease;
  z-index:60;
}
.scrolltop svg{width:22px; height:22px; opacity:.76}
.scrolltop.show{
  opacity:1;
  transform:translateY(0);
  pointer-events:auto;
}
.scrolltop:hover{border-color:rgba(19,76,191,.26)}

@media (prefers-reduced-motion: reduce){
  .bg-fx{display:none}
  .reveal{opacity:1; transform:none; filter:none; transition:none}
  .kicker-dot{animation:none}
  .btn.primary::after{display:none}
  .card:hover, .case:hover, .panel:hover, .contact-card:hover{transform:none}
  .modal, .modal-panel, .modal-backdrop{transition:none}
  .scrolltop{transition:none}
}

a{color:inherit}
img{max-width:100%; display:block}
button, input, select, textarea{font:inherit}
::selection{background:rgba(31,143,239,.18)}
/* Layout */
.container{max-width:var(--container); margin:0 auto; padding:0 20px}
.row{display:flex; gap:18px}
.grid{display:grid; gap:18px}
.hidden{display:none !important}

/* Header */
.header{
  position:sticky; top:0; z-index:50;
  background:linear-gradient(180deg, rgba(255,255,255,.95) 0%, rgba(248,250,255,.90) 100%);
  backdrop-filter:saturate(170%) blur(10px);
  border-bottom:1px solid rgba(19,76,191,.14);
  box-shadow:0 10px 26px rgba(15,23,42,.08);
}

.header-top{
  background:linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(248,250,255,.90) 100%);
  border-bottom:1px solid rgba(19,76,191,.12);
}
body.is-scrolled .header-top{background:linear-gradient(180deg, rgba(255,255,255,.98) 0%, rgba(248,250,255,.94) 100%)}

.header-top-inner{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:10px;
  padding:8px 0;
  font-size:14px;
  color:rgba(15,23,42,.88);
  font-weight:600;
}

.header-top .toplink{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:5px 12px;
  border-radius:999px;
  text-decoration:none;
  color:rgba(15,23,42,.88);
  background:rgba(255,255,255,.70);
  border:1px solid rgba(19,76,191,.14);
  box-shadow:0 1px 0 rgba(15,23,42,.03);
  transition:background .15s ease, border-color .15s ease, transform .08s ease;
  max-width:52vw;
}
.header-top .toplink:hover{background:rgba(31,143,239,.10); border-color:rgba(19,76,191,.22)}
.header-top .toplink:active{transform:translateY(1px)}
.header-top .topicon{width:16px; height:16px; opacity:.95; color:var(--primary)}
.header-top .label{white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.header-top .sep{width:1px; height:16px; background:rgba(15,23,42,.14)}

@media (max-width:520px){
  .header-top-inner{justify-content:space-between}
  .header-top .toplink{max-width:44vw}
}

@media (max-width:400px){
  .header-top-inner{font-size:12px}
  .header-top .toplink{padding:5px 8px; max-width:48vw}
  .header-top .label{display:inline; max-width:34vw}
  .header-top .sep{opacity:.35}
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  padding:14px 0;
}
.brand{
  display:flex; align-items:center; gap:12px; text-decoration:none;
  min-width:240px;
}
.brand img{height:auto; display:block}

.brand-anim{display:flex; align-items:center; gap:12px; position:relative}
.brand-mark{position:relative; width:56px; height:56px; flex:0 0 auto; z-index:1}
.brand-mark .mark{
  position:relative; z-index:2;
  width:56px; height:56px;
  animation:brandSpin 6.5s linear infinite;
  transform-origin:50% 50%;
  filter:drop-shadow(0 10px 18px rgba(19,76,191,.18));
}
.brand-wordmark{position:relative; z-index:3}
.brand-wordmark img{width:210px; height:auto}

.airflow{
  position:absolute;
  left:40px;
  top:50%;
  transform:translateY(-50%);
  width:308px;
  height:72px;
  overflow:visible;
  pointer-events:none;
  opacity:.62;
  z-index:0;
}
.airline{
  stroke-width:2.2;
  stroke-linecap:round;
  fill:none;
  stroke-dasharray:14 18;
  transform-box:fill-box;
  transform-origin:center;
  filter:drop-shadow(0 5px 9px rgba(31,143,239,.10));
  animation:
    airDash var(--dashDur, 1.6s) linear infinite,
    airWave var(--waveDur, 3.8s) ease-in-out infinite,
    airFlicker 4.6s ease-in-out infinite;
}

.airline.a1{
  --dashDur: 1.45s;
  --waveDur: 3.6s;
  opacity:.75;
  animation-delay:0s, -0.8s, -1.4s;
}
.airline.a2{
  --dashDur: 1.95s;
  --waveDur: 4.2s;
  opacity:.62;
  stroke-width:1.95;
  filter:drop-shadow(0 8px 14px rgba(19,76,191,.12));
  animation-delay:0s, -1.25s, -0.6s;
}
.airline.a3{
  --dashDur: 2.35s;
  --waveDur: 4.9s;
  opacity:.52;
  stroke-width:1.75;
  animation-delay:0s, -1.6s, -0.9s;
}

/* Subtle secondary “mist” lines */
.airline.a4{
  --dashDur: 2.75s;
  --waveDur: 5.4s;
  opacity:.28;
  stroke-width:1.25;
  stroke-dasharray:7 22;
  filter:drop-shadow(0 6px 10px rgba(19,76,191,.10));
  animation-delay:0s, -2.1s, -1.2s;
}
.airline.a5{
  --dashDur: 3.05s;
  --waveDur: 5.9s;
  opacity:.24;
  stroke-width:1.15;
  stroke-dasharray:6 24;
  animation-delay:0s, -2.6s, -1.6s;
}

.air-particles{pointer-events:none}
.air-particles .particle{
  transform-box:fill-box;
  transform-origin:center;
  animation:particlePulse 2.6s ease-in-out infinite;
}
.air-particles .particle.p2{animation-duration:3.1s; animation-delay:-1.2s}
.air-particles .particle.p3{animation-duration:3.4s; animation-delay:-2.0s}
.air-particles .particle.p4{animation-duration:3.8s; animation-delay:-1.6s}
.air-particles .particle.p5{animation-duration:4.2s; animation-delay:-2.4s}

/* On hover: slightly faster, a bit brighter (still minimalistic) */
.brand:hover .airflow{opacity:.76}
.brand:hover .airline.a1{--dashDur:1.15s; --waveDur:3.15s}
.brand:hover .airline.a2{--dashDur:1.55s; --waveDur:3.65s}
.brand:hover .airline.a3{--dashDur:1.95s; --waveDur:4.25s}
.brand:hover .airline.a4{--dashDur:2.25s; --waveDur:4.85s}
.brand:hover .airline.a5{--dashDur:2.55s; --waveDur:5.25s}
.brand:hover .brand-mark .mark{animation-duration:4.8s}

@keyframes brandSpin{to{transform:rotate(360deg)}}
@keyframes airDash{to{stroke-dashoffset:-32}}
@keyframes airWave{0%,100%{transform:translateY(-0.8px)}50%{transform:translateY(0.8px)}}
@keyframes airFlicker{0%,100%{opacity:1}50%{opacity:.86}}
@keyframes particlePulse{0%,100%{transform:scale(1)}50%{transform:scale(1.28)}}

@media (prefers-reduced-motion: reduce){
  .brand-mark .mark, .airline{animation:none}
  .airflow{opacity:.65}
  .air-particles{display:none}
}

.nav{
  display:flex; align-items:center; gap:22px;
}
.nav a{
  text-decoration:none;
  font-size:14px;
  color:rgba(15,23,42,.78);
  padding:10px 10px;
  border-radius:12px;
  transition:background .15s ease, color .15s ease;
}
.nav a:hover{background:rgba(31,143,239,.10); color:rgba(15,23,42,.92)}
.nav a.active{background:rgba(19,76,191,.10); color:rgba(15,23,42,.95)}
.header-actions{display:flex; gap:10px; align-items:center}

/* Header CTA label swap (desktop/mobile) */
.cta-short{display:none}
.cta-long{display:inline}

/* Buttons */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  border:1px solid rgba(15,23,42,.14);
  background:#fff;
  color:rgba(15,23,42,.92);
  padding:11px 14px;
  border-radius:14px;
  cursor:pointer;
  box-shadow:0 1px 0 rgba(15,23,42,.03);
  transition:transform .08s ease, box-shadow .2s ease, border-color .2s ease;
}
.btn:hover{border-color:rgba(19,76,191,.26); box-shadow:var(--shadow2)}
.btn:active{transform:translateY(1px)}
.btn.primary{
  border-color:rgba(19,76,191,.22);
  background:linear-gradient(135deg, var(--primary) 0%, var(--primary2) 52%, var(--accent) 100%);
  color:#fff;
  box-shadow:0 10px 22px rgba(19,76,191,.20);
}
.btn.primary:hover{box-shadow:0 12px 26px rgba(19,76,191,.26)}
.btn.ghost{background:transparent}
.btn.small{padding:9px 12px; border-radius:12px; font-size:14px}
.btn.icon{
  width:44px; height:44px; padding:0; border-radius:14px;
}

/* Hero */
.hero{padding:62px 0 22px}
.hero-grid{
  display:grid;
  grid-template-columns: 1.2fr .8fr;
  gap:28px;
  align-items:stretch;
}
.kicker{
  display:inline-flex; align-items:center; gap:10px;
  font-size:13px;
  color:rgba(15,23,42,.72);
  padding:6px 10px;
  border:1px solid rgba(15,23,42,.10);
  border-radius:999px;
  background:rgba(255,255,255,.8);
}
.kicker-dot{
  width:10px; height:10px; border-radius:999px;
  background:linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
  box-shadow:0 0 0 4px rgba(31,143,239,.14);
}
h1{
  font-size:46px; line-height:1.08;
  margin:16px 0 12px;
  letter-spacing:-.02em;
}
.lead{
  font-size:18px;
  color:rgba(15,23,42,.76);
  max-width:58ch;
}

.hero-subtitle{
  margin:0 0 10px;
  font-size:18px;
  font-weight:600;
  color:rgba(15,23,42,.76);
  max-width:70ch;
}
.hero-actions{display:flex; gap:12px; flex-wrap:wrap; margin-top:20px}
.hero-note{
  margin-top:18px;
  font-size:13px;
  color:rgba(15,23,42,.62);
}
.hero-links{
  display:flex; align-items:center; gap:10px;
  margin-top:10px;
  color:rgba(15,23,42,.65);
  font-size:14px;
}
.hero-links .link{
  color:rgba(15,23,42,.72);
  text-decoration:none;
  border-bottom:1px solid rgba(19,76,191,.18);
}
.hero-links .link:hover{color:rgba(15,23,42,.88); border-bottom-color:rgba(19,76,191,.32)}
.hero-links .dotsep{opacity:.5}

.hero-card{
  background:linear-gradient(180deg, rgba(255,255,255,.86) 0%, rgba(248,250,255,.92) 100%);
  border:1px solid rgba(15,23,42,.10);
  border-radius:var(--radius);
  padding:22px;
  box-shadow:var(--shadow);
  height:100%;
  display:flex;
  flex-direction:column;
}
.hero-card .stats{
  display:grid; grid-template-columns:1fr 1fr; gap:12px;
  margin-top:10px;
}
.stat{
  border:1px solid rgba(15,23,42,.10);
  background:#fff;
  border-radius:16px;
  padding:12px;
}
.stat .num{
  font-size:22px; font-weight:700;
  background:linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
  -webkit-background-clip:text;
  background-clip:text;
  color:transparent;
}
.stat .lbl{font-size:12px; color:rgba(15,23,42,.62); margin-top:2px}
.hero-card .bullets{margin:14px 0 0; padding:0; list-style:none; display:grid; gap:10px}
.bullets li{display:flex; gap:10px; align-items:flex-start; color:rgba(15,23,42,.76); font-size:14px}
.mini-icon{
  width:18px; height:18px; flex:0 0 18px; margin-top:2px;
  border-radius:6px;
  display:grid; place-items:center;
  background:rgba(19,76,191,.12);
  border:1px solid rgba(19,76,191,.18);
  color:rgba(19,76,191,.85);
}
.mini-icon svg{width:12px; height:12px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round}

.check{
  width:18px; height:18px; flex:0 0 18px; margin-top:2px;
  border-radius:6px;
  background:rgba(31,143,239,.14);
  border:1px solid rgba(31,143,239,.35);
  position:relative;
}
.check:after{
  content:"";
  position:absolute; left:5px; top:3px;
  width:5px; height:9px;
  border-right:2px solid var(--primary2);
  border-bottom:2px solid var(--primary2);
  transform:rotate(45deg);
}

/* Sections */
.section{padding:72px 0}
.section-head{display:flex; align-items:flex-end; justify-content:space-between; gap:22px; margin-bottom:18px}
.section h2{
  margin:0;
  font-size:clamp(26px, 2.6vw, 36px);
  letter-spacing:-.02em;
}
.section p.sub{
  margin:6px 0 0;
  color:rgba(15,23,42,.70);
  max-width:78ch;
}
.cards{
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  gap:22px;
  align-items:stretch;
}

/* Grid modifiers */
.cards.cards-4 > .card{grid-column:span 3}
.cards.cards-2 > .case{grid-column:span 6}
.card{
  grid-column:span 4;
  border:1px solid rgba(15,23,42,.10);
  background:#fff;
  border-radius:var(--radius);
  padding:22px;
  display:flex;
  flex-direction:column;
  min-height:220px;
  box-shadow:0 1px 0 rgba(15,23,42,.03);
}
.card{transition:transform .12s ease, box-shadow .22s ease, border-color .22s ease, background .22s ease}

.card:hover{box-shadow:var(--shadow)}
.card .title{font-weight:700; margin:0 0 6px}
.card .desc{margin:0; color:rgba(15,23,42,.72); font-size:15px; line-height:1.55}
.badge{
  display:inline-flex; align-items:center; gap:8px;
  font-size:12px; padding:6px 10px; border-radius:999px;
  border:1px solid rgba(19,76,191,.18);
  background:rgba(19,76,191,.07);
  color:rgba(15,23,42,.78);
  margin-bottom:10px;
}
.badge .dot{width:8px; height:8px; border-radius:999px; background:var(--accent)}
.iconbox{
  width:86px; height:86px; border-radius:26px;
  background:
    radial-gradient(28px 28px at 26% 22%, rgba(255,255,255,.95) 0%, rgba(255,255,255,0) 70%),
    radial-gradient(80px 60px at 90% 10%, rgba(31,143,239,.16) 0%, rgba(31,143,239,0) 62%),
    linear-gradient(180deg, rgba(31,143,239,.14) 0%, rgba(19,76,191,.12) 100%);
  border:1px solid rgba(19,76,191,.18);
  box-shadow: 0 12px 26px rgba(19,76,191,.10), inset 0 1px 0 rgba(255,255,255,.85);
  display:grid; place-items:center;
  margin-bottom:14px;
  position:relative;
  overflow:hidden;
  --i1: var(--primary);
  --i2: var(--accent);
}

/* --- Product images for lines (replace icons) --- */
.card-media{
  position:relative;
  border-radius: 20px;
  overflow:hidden;
  border:1px solid rgba(15,23,42,.10);
  background:
    radial-gradient(360px 220px at 30% 10%, rgba(31,143,239,.16) 0%, rgba(31,143,239,0) 60%),
    linear-gradient(180deg, rgba(255,255,255,.92) 0%, rgba(248,250,255,.98) 100%);
  box-shadow: 0 20px 60px rgba(15,23,42,.10), inset 0 1px 0 rgba(255,255,255,.85);
  aspect-ratio: 4 / 5;
  margin: 0 0 14px;
}
.card-media picture{display:block; width:100%; height:100%;}
.card-media img{
  width:100%; height:100%;
  display:block;
  object-fit: contain;
  object-position: 50% 58%;
  transform: translateZ(0);
  filter: saturate(1.02) contrast(1.02);
}
.card-media::after{
  content:"";
  position:absolute; inset:0;
  background: radial-gradient(380px 220px at 35% 10%, rgba(255,255,255,.45) 0%, rgba(255,255,255,0) 55%);
  pointer-events:none;
}
.media-badge{
  position:absolute;
  top:10px; right:10px;
  padding:6px 10px;
  border-radius:999px;
  font-weight:700;
  font-size:12px;
  letter-spacing:.02em;
  color: rgba(12, 29, 66, .92);
  background: rgba(255,255,255,.86);
  border:1px solid rgba(19,76,191,.18);
  box-shadow: 0 12px 28px rgba(15,23,42,.10);
  z-index:2;
}

/* VORTEX: two photos inside flagship */
.flagship-media{
  display:grid;
  grid-template-rows: 1fr 1fr;
  gap: 12px;
}
.flagship-media .shot{
  margin:0;
  border-radius: 18px;
  overflow:hidden;
  border:1px solid rgba(15,23,42,.10);
  background: rgba(255,255,255,.72);
  box-shadow: 0 16px 46px rgba(15,23,42,.10), inset 0 1px 0 rgba(255,255,255,.85);
}
.flagship-media .shot picture{display:block}
.flagship-media .shot img{
  width:100%;
  height:148px;
  object-fit: contain;
  object-position: 50% 58%;
  display:block;
  filter: saturate(1.02) contrast(1.02);
}
.flagship-media .shot figcaption{
  padding:8px 10px;
  font-size:12px;
  color: rgba(17,24,39,.72);
  border-top:1px solid rgba(15,23,42,.08);
  background: rgba(255,255,255,.70);
}

/* Responsive tweaks */
@media (max-width: 980px){
  .card-media{aspect-ratio: 16 / 10;}
  .flagship-media{grid-template-columns: 1fr 1fr; grid-template-rows: auto; }
  .flagship-media .shot img{height:190px}
}
@media (max-width: 560px){
  .card-media{aspect-ratio: 16 / 11;}
  .flagship-media{grid-template-columns: 1fr; }
  .flagship-media .shot img{height:210px}
}
.iconbox::after{
  content:"";
  position:absolute; inset:-1px;
  background:linear-gradient(135deg, rgba(255,255,255,.55) 0%, rgba(255,255,255,0) 45%);
  opacity:.35;
  pointer-events:none;
}
.iconbox svg{width:58px; height:58px; display:block; position:relative; z-index:1}
.iconbox .ip-badge{
  position:absolute; right:10px; bottom:10px;
  font-size:12px; line-height:1;
  padding:5px 9px; border-radius:999px;
  background:rgba(255,255,255,.78);
  border:1px solid rgba(19,76,191,.24);
  color:rgba(15,23,42,.86);
  font-weight:900; letter-spacing:.03em;
  z-index:2;
  backdrop-filter: blur(8px);
}
.card-premium{
  background:linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(248,250,255,.98) 100%);
  box-shadow: 0 12px 34px rgba(15,23,42,.08), inset 0 1px 0 rgba(255,255,255,.85);
  border-color: rgba(15,23,42,.10);
}
.card-premium:hover{
  box-shadow: 0 18px 46px rgba(15,23,42,.12);
  transform: translateY(-2px);
}
.flagship{
  margin-top:26px;
  border-radius: calc(var(--radius) + 6px);
  background:
    radial-gradient(520px 240px at 18% 0%, rgba(31,143,239,.18) 0%, rgba(31,143,239,0) 70%),
    radial-gradient(520px 240px at 90% 40%, rgba(19,76,191,.14) 0%, rgba(19,76,191,0) 72%),
    linear-gradient(180deg, rgba(255,255,255,.92) 0%, rgba(248,250,255,.98) 100%);
  border:1px solid rgba(15,23,42,.10);
  box-shadow: 0 24px 70px rgba(15,23,42,.10), inset 0 1px 0 rgba(255,255,255,.85);
  overflow:hidden;
}
.flagship-inner{
  display:grid;
  grid-template-columns: 230px 1fr 260px;
  gap:20px;
  padding:22px;
  align-items:start;
}
.flagship-icon{margin:0}
.flagship-main{min-width:0}
.flagship-badge{
  display:inline-flex; align-items:center; gap:8px;
  padding:7px 12px; border-radius:999px;
  border:1px solid rgba(19,76,191,.18);
  background:rgba(19,76,191,.07);
  color:rgba(15,23,42,.78);
  font-size:12px;
  margin-bottom:12px;
}
.flagship-badge .dot{width:8px; height:8px; border-radius:999px; background:var(--accent)}
.flagship-title{
  margin:0 0 8px;
  font-size:20px;
  letter-spacing:-.01em;
}
.flagship-desc{
  margin:0 0 12px;
  color:rgba(15,23,42,.72);
  font-size:15px;
  line-height:1.6;
}
.flagship-list{
  margin:0;
  padding:0;
  list-style:none;
  display:grid;
  gap:10px;
}
.flagship-list li{
  display:grid;
  grid-template-columns: 10px 1fr;
  gap:12px;
  align-items:start;
  color:rgba(15,23,42,.74);
  font-size:14px;
}
.flagship-list .bullet{
  width:10px; height:10px; margin-top:7px; border-radius:999px;
  background:linear-gradient(135deg, var(--primary2) 0%, var(--accent) 100%);
  box-shadow:0 0 0 4px rgba(31,143,239,.10);
}
.flagship-list .feat{min-width:0}
.flagship-list .feat-title{font-weight:800; color:rgba(15,23,42,.86); letter-spacing:-.01em}
.flagship-list .feat-desc{margin-top:2px; color:rgba(15,23,42,.70); line-height:1.55; word-break:break-word}
.flagship-side{
  border-left:1px solid rgba(15,23,42,.10);
  padding-left:18px;
  display:grid;
  gap:12px;
}
.spec{
  border:1px solid rgba(15,23,42,.10);
  background:rgba(255,255,255,.66);
  border-radius:16px;
  padding:12px 12px;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.85);
}
.spec .k{font-size:12px; color:rgba(15,23,42,.55); margin-bottom:4px}
.spec .v{font-weight:700; color:rgba(15,23,42,.86); font-size:13px}
.two-col{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:22px;
  align-items:stretch;
}
.panel{
  border:1px solid rgba(15,23,42,.10);
  background:linear-gradient(180deg, rgba(255,255,255,.92) 0%, rgba(248,250,255,.98) 100%);
  border-radius:var(--radius);
  padding:22px;
  height:100%;
  display:flex;
  flex-direction:column;
  box-shadow:0 1px 0 rgba(15,23,42,.03);
}
.list{
  margin:12px 0 0;
  padding:0;
  list-style:none;
  display:grid;
  gap:10px;
}
.list li{display:flex; gap:10px; align-items:flex-start; color:rgba(15,23,42,.75)}
.list .bullet{
  width:10px; height:10px; margin-top:7px; border-radius:999px;
  background:linear-gradient(135deg, var(--primary2) 0%, var(--accent) 100%);
  box-shadow:0 0 0 4px rgba(31,143,239,.10);
}
.steps{display:grid; gap:12px; margin-top:10px}
.step{
  display:grid; grid-template-columns: 34px 1fr; gap:12px;
  padding:12px;
  border:1px solid rgba(15,23,42,.10);
  background:#fff;
  border-radius:16px;
}
.step .n{
  width:34px; height:34px; border-radius:14px; display:grid; place-items:center;
  font-weight:700;
  color:#fff;
  background:linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
}
.step .t{font-weight:700; margin:0}
.step .d{margin:4px 0 0; color:rgba(15,23,42,.72); font-size:14px}

/* Cases */
.case{
  grid-column:span 4;
  border:1px solid rgba(15,23,42,.10);
  background:#fff;
  border-radius:var(--radius);
  padding:22px;
  display:flex;
  flex-direction:column;
  min-height:200px;
  box-shadow:0 1px 0 rgba(15,23,42,.03);
}
.case .meta{display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:10px}
.pill{
  display:inline-flex; align-items:center;
  font-size:12px;
  padding:6px 10px;
  border-radius:999px;
  border:1px solid rgba(15,23,42,.12);
  background:rgba(248,250,255,.8);
  color:rgba(15,23,42,.72);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

/* Keep meta pills readable on narrow screens: left pill shrinks with ellipsis, right pill stays compact */
.case .meta .pill:first-child{flex:1 1 auto; min-width:0}
.case .meta .pill:last-child{flex:0 0 auto}
.case h3{margin:0 0 6px; font-size:16px}
.case p{margin:0; color:rgba(15,23,42,.72); font-size:14px}

/* FAQ */
.faq-h{margin:0}
.faq{border:1px solid rgba(15,23,42,.10); background:#fff; border-radius:var(--radius); overflow:hidden}
.faq-item{border-top:1px solid rgba(15,23,42,.08)}
.faq-item:first-child{border-top:none}
.faq-q{
  width:100%;
  display:flex; justify-content:space-between; align-items:center;
  background:transparent; border:none;
  padding:16px 18px;
  cursor:pointer;
  text-align:left;
}
.faq-q span{font-weight:700}
.chev{width:18px; height:18px; opacity:.65; transition:transform .15s ease}
.faq-item.open .chev{transform:rotate(180deg)}

/* Contact */
.contact-grid{
  display:grid;
  grid-template-columns: 1fr 1fr;
  gap:22px;
  align-items:stretch;
}
.contact-card{
  border:1px solid rgba(15,23,42,.10);
  background:#fff;
  border-radius:var(--radius);
  padding:22px;
  height:100%;
  display:flex;
  flex-direction:column;
  box-shadow:0 1px 0 rgba(15,23,42,.03);
}


/* Contact Map */
.contact-map{grid-column:1 / -1}
.contact-map .map-wrap{
  border-radius:14px;
  overflow:hidden;
  border:1px solid rgba(15,23,42,.10);
  background:#fff;
  min-height:360px;
  position:relative;
}

.contact-map .map-placeholder{
  position:absolute;
  inset:0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:14px;
  text-align:center;
  background:rgba(15,23,42,.03);
  color:rgba(15,23,42,.60);
}
.contact-map .map-wrap.loaded .map-placeholder{display:none;}
.contact-map iframe{
  width:100%;
  height:360px;
  border:0;
  display:block;
}
@media (max-width:560px){
  .contact-map iframe{height:260px}
}

.field{display:grid; gap:6px; margin-top:10px}
label{font-size:13px; color:rgba(15,23,42,.72)}
input, select, textarea{
  border:1px solid rgba(15,23,42,.14);
  background:#fff;
  border-radius:14px;
  padding:12px 12px;
  outline:none;
  transition:border-color .15s ease, box-shadow .15s ease;
}
textarea{min-height:112px; resize:vertical}
input:focus, select:focus, textarea:focus{
  border-color:rgba(31,143,239,.55);
  box-shadow:0 0 0 4px rgba(31,143,239,.14);
}
.hint{font-size:12px; color:rgba(15,23,42,.56)}
hr.sep{border:none; border-top:1px solid rgba(15,23,42,.10); margin:14px 0}

/* Footer */
.footer{
  padding:26px 0;
  border-top:1px solid rgba(15,23,42,.08);
  background:#fff;
}
.footer-inner{display:flex; justify-content:space-between; gap:22px; flex-wrap:wrap}
.small{font-size:13px; color:rgba(15,23,42,.66)}

/* Modal (questionnaire) */
.no-scroll{overflow:hidden}
.modal-backdrop{
  position:absolute; inset:0;
  background:rgba(15,23,42,.52);
}
.modal-panel{
  position:relative;
  max-width:960px;
  margin: min(6vh, 48px) auto;
  background:#fff;
  border-radius:22px;
  box-shadow:0 24px 60px rgba(15,23,42,.28);
  border:1px solid rgba(255,255,255,.18);
  overflow:hidden;

  /* Make the modal usable on small screens: the body scrolls, header stays visible */
  max-height: 92vh;
  display:flex;
  flex-direction:column;
}
.modal-head{
  display:flex; justify-content:space-between; align-items:flex-start; gap:12px;
  padding:16px 18px;
  background:linear-gradient(180deg, rgba(248,250,255,.98) 0%, rgba(255,255,255,.96) 100%);
  border-bottom:1px solid rgba(15,23,42,.08);
}
.modal-title{margin:0; font-size:18px; letter-spacing:-.01em}
.modal-sub{margin:4px 0 0; color:rgba(15,23,42,.66); font-size:13px}
.modal-body{
  padding:16px 18px 18px;
  flex:1;
  overflow:auto;
  -webkit-overflow-scrolling: touch;
}

/* Fixed footer in the questionnaire modal (prevents "buttons not visible" on the last step) */
.modal-footer{
  padding:12px 18px 18px;
  border-top:1px solid rgba(15,23,42,.08);
  background:linear-gradient(180deg, rgba(248,250,255,.96) 0%, rgba(255,255,255,1) 100%);
}
.modal-footer .m-actions{margin-top:0}
.progress{
  height:10px;
  border-radius:999px;
  background:rgba(15,23,42,.08);
  overflow:hidden;
}
.progress > div{
  height:100%;
  width:0%;
  background:linear-gradient(135deg, var(--primary) 0%, var(--accent) 100%);
  border-radius:999px;
  transition:width .2s ease;
}
.stepper{
  display:flex; justify-content:space-between; align-items:center;
  gap:10px;
  margin:12px 0 0;
  font-size:12px;
  color:rgba(15,23,42,.58);
}
.q-grid{display:grid; grid-template-columns: 1fr 1fr; gap:12px}
.q-grid-3{display:grid; grid-template-columns: 1fr 1fr 1fr; gap:12px}
.q-card{
  border:1px solid rgba(15,23,42,.10);
  background:linear-gradient(180deg, rgba(255,255,255,.98) 0%, rgba(248,250,255,.96) 100%);
  border-radius:18px;
  padding:14px;
}
.q-card h3{margin:0 0 8px; font-size:15px}
.q-card p{margin:0 0 10px; color:rgba(15,23,42,.68); font-size:13px}
.q-row{display:grid; grid-template-columns: 1fr 1fr; gap:12px}
.q-row-3{display:grid; grid-template-columns: 1fr 1fr 1fr; gap:12px}
.q-row-4{display:grid; grid-template-columns: 1fr 1fr 1fr 1fr; gap:12px}
.radio-grid{display:grid; grid-template-columns: repeat(3, 1fr); gap:10px}
.radio{
  border:1px solid rgba(15,23,42,.12);
  background:#fff;
  border-radius:16px;
  padding:12px;
  display:flex; gap:10px; align-items:flex-start;
  cursor:pointer;
}
.radio input{margin-top:2px}
.radio strong{display:block; font-size:13px}
.radio span{display:block; font-size:12px; color:rgba(15,23,42,.64); margin-top:2px}
.m-actions{
  display:flex; justify-content:space-between; gap:12px; align-items:center;
  margin-top:14px;
}
.m-actions .right{display:flex; gap:10px; align-items:center; flex-wrap:wrap}

/* Sticky bottom controls inside the questionnaire so buttons are always visible */
.m-actions.q-controls{
  position:sticky;
  bottom:0;
  margin-top:16px;
  padding:12px 0 6px;
  border-top:1px solid rgba(15,23,42,.08);
  background:linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.92) 35%, rgba(255,255,255,1) 100%);
}

/* Give content a bit of breathing room so sticky controls don't cover the last lines */
.modal-body{scroll-padding-bottom:84px}
.warn{
  margin-top:10px;
  padding:10px 12px;
  border-radius:14px;
  background:rgba(255, 203, 37, .14);
  border:1px solid rgba(255, 203, 37, .28);
  color:rgba(15,23,42,.78);
  font-size:13px;
  display:none;
}
.warn.show{display:block}

.result{
  border:1px dashed rgba(19,76,191,.35);
  background:rgba(248,250,255,.9);
  border-radius:18px;
  padding:14px;
}
.result pre{
  margin:0;
  white-space:pre-wrap;
  word-break:break-word;
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size:12.5px;
  color:rgba(15,23,42,.82);
}

kbd{
  font-family:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  font-size:12px;
  padding:2px 6px;
  border:1px solid rgba(15,23,42,.14);
  border-bottom-width:2px;
  border-radius:8px;
  background:#fff;
}
.mobile-menu{display:none}

.mobile-menu .menu-label{
  display:none;
  font-weight:800;
  font-size:13px;
  letter-spacing:.02em;
  color:rgba(15,23,42,.92);
}

/* Mobile panel contact block */
.mobile-panel .mobile-contacts{display:grid; gap:8px; margin-bottom:8px}
.mobile-panel .mcontact{
  display:flex;
  align-items:center;
  gap:10px;
  padding:12px 12px;
  border-radius:14px;
  text-decoration:none;
  background:rgba(19,76,191,.05);
  border:1px solid rgba(19,76,191,.14);
  color:rgba(15,23,42,.92);
}
.mobile-panel .mcontact:hover{background:rgba(31,143,239,.10)}
.mobile-panel .micon{width:18px; height:18px; color:var(--primary); flex:0 0 auto}
.mobile-panel .mlabel{font-weight:800; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.mobile-panel .msep{height:1px; background:rgba(15,23,42,.10); margin:6px 4px 10px}


/* Responsive */
@media (max-width: 980px){
  .hero-grid{grid-template-columns:1fr; }
  .card{grid-column:span 12}
  /* Override specificity from `.cards.cards-2 > .case` so cases become 1 column on mobile */
  .cards.cards-2 > .case{grid-column:span 12}
  .two-col{grid-template-columns:1fr}
  .contact-grid{grid-template-columns:1fr}
  .nav{display:none}
  .mobile-menu{display:inline-flex}
  h1{font-size:38px}
  .q-grid, .q-row, .radio-grid{grid-template-columns:1fr}
  .q-row-3, .q-row-4, .q-grid-3{grid-template-columns:1fr}
  .brand{min-width:auto}
  .brand-wordmark img{width:180px}
  .airflow{width:250px; left:38px; opacity:.66}
  .flagship-inner{grid-template-columns:1fr}
  .flagship-side{border-left:0; padding-left:0; grid-template-columns:repeat(2,1fr)}
}



/* Mobile nav panel */
.mobile-panel{
  position:absolute;
  right:20px;
  /* Always open right under the sticky header (header height is set via JS into --header-h) */
  top: calc(var(--header-h, 96px) - 8px);
  width:min(320px, calc(100vw - 40px));
  background:#fff;
  border:1px solid rgba(15,23,42,.10);
  border-radius:18px;
  box-shadow:var(--shadow);
  padding:10px;
  max-height: calc(100vh - var(--header-h, 96px) - 24px);
  overflow:auto;
}
.mobile-panel a{
  display:block;
  text-decoration:none;
  padding:12px 12px;
  border-radius:14px;
  color:rgba(15,23,42,.82);
}
.mobile-panel a:hover{background:rgba(31,143,239,.10)}
.toast{
  position:fixed;
  left:50%;
  bottom:18px;
  transform:translateX(-50%) translateY(0);
  background:rgba(15,23,42,.92);
  color:#fff;
  padding:10px 14px;
  border-radius:14px;
  box-shadow:0 12px 30px rgba(15,23,42,.24);
  opacity:0;
  pointer-events:none;
  transition:opacity .2s ease, transform .2s ease;
  font-size:13px;
  z-index:150;
}
.toast.show{opacity:1; transform:translateX(-50%) translateY(-4px)}

@media (max-width: 560px){
  :root{--container: 1140px;} /* keep desktop container max, but tighten padding below */
  .container{padding:0 16px}

  /* Header: fit brand + actions without wrapping */
  .header-inner{padding:10px 0; gap:10px}
  .brand-mark{width:48px; height:48px}
  .brand-mark .mark{width:48px; height:48px}
  .brand-wordmark img{width:150px}
  .airflow{display:none}

  /* Make CTA compact but still clear */
  .cta-long{display:none}
  .cta-short{display:inline}
  /* Mobile menu button: premium label */
  .header-actions .mobile-menu.btn.icon{
    width:auto;
    height:40px;
    padding:0 12px;
    gap:8px;
    border-radius:12px;
  }
  .header-actions .mobile-menu svg{width:20px; height:20px}
  .header-actions .mobile-menu .menu-label{
    display:inline;
    font-size:12px;
    font-weight:800;
    letter-spacing:.08em;
    text-transform:uppercase;
    line-height:1;
    color:rgba(15,23,42,.74);
    margin-top:1px;
    white-space:nowrap;
  }
  .header-actions{gap:8px}
  .header-actions .cta{padding:9px 10px; border-radius:12px; font-size:13px; gap:8px}
  .header-actions .cta svg{width:18px; height:18px}

  /* Typography & spacing */
  .hero{padding:44px 0 18px}
  h1{font-size:32px}
  .hero-subtitle{font-size:16px}
  .lead{font-size:16px}
  .section{padding:56px 0}
  .section-head{gap:14px; margin-bottom:14px}

  /* Cards: less padding, smaller iconbox so everything looks "tight" */
  .cards{gap:16px}
  .card{padding:18px; min-height:auto}
  .case{padding:18px; min-height:auto}
  .panel{padding:18px}
  .iconbox{width:74px; height:74px; border-radius:22px; margin-bottom:12px}
  .iconbox svg{width:50px; height:50px}
  .iconbox .ip-badge{right:8px; bottom:8px; font-size:11px; padding:5px 8px}

  /* Hero side card */
  .hero-card{padding:18px}
  .hero-card .stats{grid-template-columns:1fr}

  /* Flagship */
  .flagship-inner{padding:18px; gap:16px}
  .flagship-title{font-size:18px}
  .flagship-desc{font-size:14.5px}
  .flagship-side{grid-template-columns:1fr}

  /* Modal: better full-screen feel on phones */
  .modal-panel{
    max-width: calc(100vw - 16px);
    margin: 8px auto;
    border-radius: 18px;
    max-height: calc(100vh - 16px);
    overflow:auto;
  }
  /* Make the header + close button always visible and never pushed out */
  .modal-head{
    position:sticky;
    top:0;
    z-index:5;
  }
  .modal-head > div{
    min-width:0;
    padding-right:56px; /* reserve space for close button */
  }
  .modal-head [data-close-quote]{
    position:absolute;
    top:10px;
    right:10px;
    background:rgba(255,255,255,.92);
    border-color:rgba(15,23,42,.12);
    box-shadow:0 10px 24px rgba(15,23,42,.14);
  }
}

@media (max-width: 420px){
  /* Extra-tight phones */
  .brand-wordmark img{width:136px}
  h1{font-size:30px}
  .hero-actions{gap:10px}
  .hero-actions .btn{width:100%}
  .header-actions .btn{width:auto}
  .mobile-panel{width:calc(100vw - 32px); right:16px}
}


/* Privacy / personal data policy page */
.policy{
  max-width: 920px;
  margin: 0 auto;
}
.policy h1{
  margin:0 0 10px;
  font-size:clamp(28px, 3.2vw, 44px);
  letter-spacing:-.02em;
}
.policy h2{
  margin:28px 0 10px;
  font-size:20px;
  letter-spacing:-.01em;
}
.policy p{
  margin:10px 0;
  line-height:1.65;
  color:rgba(15,23,42,.86);
}
.policy a{ color:var(--primary2); text-decoration:underline; text-underline-offset:3px; }
.policy .doc-actions{ display:flex; gap:10px; flex-wrap:wrap; margin:14px 0 18px; }

/* Footer link style */
.footer-link{ text-decoration:underline; text-underline-offset:3px; }

/* Consent block in questionnaire result step */
.q-consent{
  margin-top:14px;
  padding:12px 12px;
  border-radius:14px;
  border:1px solid rgba(15,23,42,.12);
  background:rgba(248,250,255,.72);
}
.q-consent .consent-row{
  display:flex;
  gap:10px;
  align-items:flex-start;
  font-size:13px;
  color:rgba(15,23,42,.86);
}
.q-consent input{ margin-top:2px; }

.btn:disabled{opacity:.55; cursor:not-allowed}


/* Contact form — consent + status */
.consent-row{
  display:flex;
  gap:10px;
  align-items:flex-start;
  margin-top:10px;
  padding:10px 12px;
  border:1px solid rgba(15,23,42,.10);
  border-radius:14px;
  background:rgba(15,23,42,.03);
}
.consent-row input{
  width:auto;
  flex:0 0 auto;
  margin-top:2px;
}
.consent-row a{
  text-decoration:underline;
}
.form-status{
  margin-top:10px;
  min-height:18px;
}
