/* ============================================================
   KBSM — Design tokens
   ============================================================ */
:root{
  --navy-900:#061a33;
  --navy-800:#0b2545;
  --navy-700:#123a63;
  --navy-600:#1b4f80;
  --blue-500:#2f7fd1;
  --blue-300:#8fc0ee;
  --amber-500:#f2a413;
  --amber-400:#ffc247;
  --green-600:#157f4d;
  --green-500:#1fa463;

  --bg:#f5f8fc;
  --surface:#ffffff;
  --surface-2:#eef3f9;
  --text:#0d1b2a;
  --text-soft:#4a5f76;
  --text-mute:#7b8ca0;
  --border:#dbe4ee;
  --shadow-sm:0 1px 2px rgba(6,26,51,.06), 0 2px 8px rgba(6,26,51,.05);
  --shadow-md:0 8px 28px rgba(6,26,51,.10);
  --shadow-lg:0 24px 60px rgba(6,26,51,.16);

  --radius-sm:10px;
  --radius:16px;
  --radius-lg:24px;
  --radius-pill:999px;

  --font-head:'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --font-body:'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;

  --maxw:1180px;
  --nav-h:74px;
  --ease:cubic-bezier(.22,.75,.28,1);
}

html[data-theme="dark"]{
  --bg:#05121f;
  --surface:#0b1e31;
  --surface-2:#102a41;
  --text:#eaf2fb;
  --text-soft:#b0c3d6;
  --text-mute:#8198ad;
  --border:#1c3b57;
  --shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --shadow-md:0 8px 28px rgba(0,0,0,.45);
  --shadow-lg:0 24px 60px rgba(0,0,0,.55);
}

*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth; -webkit-text-size-adjust:100%}
body{
  margin:0;
  font-family:var(--font-body);
  background:var(--bg);
  color:var(--text);
  line-height:1.65;
  font-size:16px;
  overflow-x:hidden;
  transition:background .35s var(--ease), color .35s var(--ease);
}
h1,h2,h3,h4{font-family:var(--font-head); line-height:1.15; margin:0; letter-spacing:-.02em; font-weight:800}
p{margin:0}
a{color:inherit; text-decoration:none}
img,svg{display:block; max-width:100%}
button,input,select,textarea{font:inherit; color:inherit}
ul{margin:0; padding:0; list-style:none}

.container{width:min(100% - 2.5rem, var(--maxw)); margin-inline:auto}
.section{padding:clamp(4rem,9vw,7rem) 0; position:relative}
.section-head{max-width:760px; margin-bottom:clamp(2.25rem,5vw,3.5rem)}
.eyebrow{
  display:inline-flex; align-items:center; gap:.5rem;
  font-family:var(--font-head); font-size:.72rem; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase;
  color:var(--navy-700); background:rgba(47,127,209,.10);
  border:1px solid rgba(47,127,209,.22);
  padding:.4rem .8rem; border-radius:var(--radius-pill); margin-bottom:1rem;
}
html[data-theme="dark"] .eyebrow{color:var(--blue-300); background:rgba(143,192,238,.10); border-color:rgba(143,192,238,.22)}
.eyebrow .dot{width:6px; height:6px; border-radius:50%; background:var(--amber-500); animation:pulse 2.4s infinite}
@keyframes pulse{0%,100%{opacity:1; transform:scale(1)}50%{opacity:.35; transform:scale(.7)}}
.section-title{font-size:clamp(1.85rem,4.4vw,2.9rem)}
.section-sub{margin-top:1rem; color:var(--text-soft); font-size:1.05rem}

/* ============================================================
   Buttons
   ============================================================ */
.btn{
  --btn-bg:var(--navy-800); --btn-fg:#fff;
  display:inline-flex; align-items:center; justify-content:center; gap:.55rem;
  padding:.82rem 1.5rem; border-radius:var(--radius-pill);
  background:var(--btn-bg); color:var(--btn-fg);
  font-family:var(--font-head); font-weight:700; font-size:.94rem;
  border:1px solid transparent; cursor:pointer;
  transition:transform .22s var(--ease), box-shadow .22s var(--ease), background .22s var(--ease);
  white-space:nowrap;
}
.btn:hover{transform:translateY(-2px); box-shadow:var(--shadow-md)}
.btn:active{transform:translateY(0)}
.btn:focus-visible{outline:3px solid var(--amber-400); outline-offset:3px}
.btn--amber{--btn-bg:linear-gradient(135deg,var(--amber-500),#e08c00); color:#231500}
.btn--ghost{--btn-bg:transparent; --btn-fg:var(--text); border-color:var(--border); background:var(--surface)}
.btn--ghost:hover{border-color:var(--blue-500); color:var(--blue-500)}
.btn--lg{padding:1rem 1.9rem; font-size:1rem}
.btn--sm{padding:.55rem 1.05rem; font-size:.85rem}
.btn svg{width:17px; height:17px; flex:none}

/* ============================================================
   Header / Nav
   ============================================================ */
.header{
  position:fixed; inset:0 0 auto 0; z-index:100; height:var(--nav-h);
  display:flex; align-items:center;
  background:color-mix(in srgb, var(--bg) 82%, transparent);
  backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease), background .3s var(--ease), box-shadow .3s var(--ease);
}
.header.is-scrolled{border-bottom-color:var(--border); box-shadow:var(--shadow-sm)}
.nav{display:flex; align-items:center; justify-content:space-between; gap:1.5rem; width:100%}
.brand{display:flex; align-items:center; gap:.7rem; font-family:var(--font-head); font-weight:800; font-size:1.18rem; letter-spacing:-.03em}
.brand-mark{
  width:40px; height:40px; border-radius:12px; flex:none;
  background:linear-gradient(145deg,var(--navy-800),var(--navy-600));
  display:grid; place-items:center; color:#fff;
  box-shadow:0 6px 16px rgba(11,37,69,.28);
  position:relative; overflow:hidden;
}
.brand-mark::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(115deg,transparent 35%,rgba(255,255,255,.32) 50%,transparent 65%);
  transform:translateX(-120%);
}
.brand:hover .brand-mark::after{animation:sheen .8s var(--ease)}
@keyframes sheen{to{transform:translateX(120%)}}
.brand-mark svg{width:22px; height:22px}
.brand small{display:block; font-size:.62rem; font-weight:600; letter-spacing:.13em; color:var(--text-mute); text-transform:uppercase; margin-top:-2px}

.nav-links{display:flex; align-items:center; gap:.2rem}
.nav-links a{
  position:relative; padding:.5rem .85rem; border-radius:var(--radius-sm);
  font-size:.92rem; font-weight:500; color:var(--text-soft);
  transition:color .2s var(--ease), background .2s var(--ease);
}
.nav-links a:hover{color:var(--text); background:var(--surface-2)}
.nav-links a::after{
  content:""; position:absolute; left:.85rem; right:.85rem; bottom:.28rem; height:2px;
  background:var(--amber-500); border-radius:2px; transform:scaleX(0); transform-origin:left;
  transition:transform .3s var(--ease);
}
.nav-links a.active{color:var(--text); font-weight:600}
.nav-links a.active::after{transform:scaleX(1)}
.nav-actions{display:flex; align-items:center; gap:.6rem}

.icon-btn{
  width:40px; height:40px; border-radius:12px; display:grid; place-items:center;
  background:var(--surface); border:1px solid var(--border); cursor:pointer;
  transition:transform .2s var(--ease), border-color .2s var(--ease);
}
.icon-btn:hover{transform:translateY(-2px); border-color:var(--blue-500)}
.icon-btn svg{width:18px; height:18px}
.icon-btn .i-moon{display:none}
html[data-theme="dark"] .icon-btn .i-moon{display:block}
html[data-theme="dark"] .icon-btn .i-sun{display:none}

.burger{display:none}
.burger span{display:block; width:19px; height:2px; background:var(--text); border-radius:2px; transition:transform .3s var(--ease), opacity .2s}
.burger.is-open span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.burger.is-open span:nth-child(2){opacity:0}
.burger.is-open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

.scroll-progress{position:fixed; top:0; left:0; height:3px; width:100%; z-index:101; background:transparent}
.scroll-progress i{display:block; height:100%; width:0%; background:linear-gradient(90deg,var(--blue-500),var(--amber-500)); transition:width .1s linear}

/* ============================================================
   Hero
   ============================================================ */
.hero{
  position:relative; padding-top:calc(var(--nav-h) + clamp(3rem,7vw,5.5rem)); padding-bottom:clamp(3.5rem,8vw,6rem);
  overflow:hidden;
  background:
    radial-gradient(900px 480px at 82% -8%, rgba(47,127,209,.20), transparent 60%),
    radial-gradient(700px 420px at 8% 108%, rgba(242,164,19,.16), transparent 60%),
    var(--bg);
}
.hero::before{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.5;
  background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(760px 460px at 60% 22%,#000,transparent 78%);
  -webkit-mask-image:radial-gradient(760px 460px at 60% 22%,#000,transparent 78%);
}
.hero-grid{position:relative; display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(2rem,5vw,4rem); align-items:center}
.hero h1{font-size:clamp(2.3rem,5.6vw,3.9rem); margin:1.1rem 0 1.2rem}
.hero h1 .grad{
  background:linear-gradient(100deg,var(--blue-500),var(--green-500) 55%,var(--amber-500));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.hero-lead{color:var(--text-soft); font-size:clamp(1rem,1.5vw,1.12rem); max-width:56ch}
.hero-cta{display:flex; flex-wrap:wrap; gap:.8rem; margin-top:2rem}

.hero-badges{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:2rem}
.chip{
  display:inline-flex; align-items:center; gap:.45rem;
  font-size:.78rem; font-weight:600; color:var(--text-soft);
  background:var(--surface); border:1px solid var(--border);
  padding:.4rem .8rem; border-radius:var(--radius-pill); box-shadow:var(--shadow-sm);
}
.chip svg{width:14px; height:14px; color:var(--green-500)}

/* Hero visual: animated route board */
.board{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg);
  box-shadow:var(--shadow-lg); overflow:hidden; position:relative;
}
.board-top{
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1rem 1.2rem; background:linear-gradient(120deg,var(--navy-900),var(--navy-700)); color:#fff;
}
.board-top .live{display:inline-flex; align-items:center; gap:.45rem; font-size:.7rem; font-weight:700; letter-spacing:.12em; text-transform:uppercase; color:var(--amber-400)}
.board-top .live i{width:7px; height:7px; border-radius:50%; background:var(--amber-400); animation:pulse 1.6s infinite}
.board-top strong{font-family:var(--font-head); font-size:.95rem; letter-spacing:-.01em}
.board-body{padding:1.1rem 1.2rem 1.3rem}
.route-row{
  display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:.85rem;
  padding:.72rem .6rem; border-radius:var(--radius-sm);
  border-bottom:1px dashed var(--border); transition:background .25s var(--ease);
}
.route-row:last-child{border-bottom:0}
.route-row:hover{background:var(--surface-2)}
.route-code{
  font-family:var(--font-head); font-weight:800; font-size:.74rem; letter-spacing:.04em;
  background:rgba(47,127,209,.12); color:var(--navy-700);
  padding:.3rem .5rem; border-radius:8px; min-width:52px; text-align:center;
}
html[data-theme="dark"] .route-code{color:var(--blue-300)}
.route-name{font-size:.9rem; font-weight:600}
.route-name span{display:block; font-size:.76rem; font-weight:400; color:var(--text-mute)}
.route-status{font-size:.74rem; font-weight:700; padding:.24rem .6rem; border-radius:var(--radius-pill); white-space:nowrap}
.st-on{background:rgba(31,164,99,.13); color:var(--green-600)}
.st-soon{background:rgba(242,164,19,.16); color:#a06a00}
.st-plan{background:rgba(47,127,209,.13); color:var(--navy-600)}
html[data-theme="dark"] .st-soon{color:var(--amber-400)}
html[data-theme="dark"] .st-plan{color:var(--blue-300)}
.board-foot{padding:.85rem 1.2rem; background:var(--surface-2); border-top:1px solid var(--border); font-size:.78rem; color:var(--text-mute); display:flex; justify-content:space-between; gap:1rem}
.board-foot b{color:var(--text); font-family:var(--font-head)}

.float-card{
  position:absolute; background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius); box-shadow:var(--shadow-md); padding:.7rem .95rem;
  display:flex; align-items:center; gap:.7rem; animation:floaty 5.5s ease-in-out infinite;
}
.float-card strong{font-family:var(--font-head); font-size:1.05rem; display:block; line-height:1.1}
.float-card span{font-size:.72rem; color:var(--text-mute)}
.fc-1{left:-18px; top:26%}
.fc-2{right:-16px; bottom:14%; animation-delay:-2.7s}
.fc-ico{width:34px; height:34px; border-radius:10px; display:grid; place-items:center; flex:none; background:rgba(31,164,99,.13); color:var(--green-600)}
.fc-2 .fc-ico{background:rgba(242,164,19,.16); color:#a06a00}
.fc-ico svg{width:18px; height:18px}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-11px)}}

/* Stats strip */
.stats{
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px;
  background:var(--border); border:1px solid var(--border); border-radius:var(--radius-lg);
  overflow:hidden; margin-top:clamp(3rem,6vw,4.5rem); box-shadow:var(--shadow-sm);
}
.stat{background:var(--surface); padding:1.5rem 1.2rem; text-align:center; transition:background .3s var(--ease)}
.stat:hover{background:var(--surface-2)}
.stat b{display:block; font-family:var(--font-head); font-size:clamp(1.6rem,3.6vw,2.3rem); font-weight:800; color:var(--navy-800); letter-spacing:-.03em}
html[data-theme="dark"] .stat b{color:var(--blue-300)}
.stat span{font-size:.82rem; color:var(--text-mute); font-weight:500}

/* ============================================================
   Marquee
   ============================================================ */
.marquee{
  border-block:1px solid var(--border); background:var(--surface);
  overflow:hidden; padding:.95rem 0; position:relative;
}
.marquee::before,.marquee::after{content:""; position:absolute; top:0; bottom:0; width:90px; z-index:2; pointer-events:none}
.marquee::before{left:0; background:linear-gradient(90deg,var(--surface),transparent)}
.marquee::after{right:0; background:linear-gradient(270deg,var(--surface),transparent)}
.marquee-track{display:flex; gap:2.5rem; width:max-content; animation:scrollx 34s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-track span{display:inline-flex; align-items:center; gap:.55rem; font-family:var(--font-head); font-weight:600; font-size:.86rem; color:var(--text-mute); white-space:nowrap}
.marquee-track span::before{content:""; width:6px; height:6px; border-radius:50%; background:var(--amber-500)}
@keyframes scrollx{to{transform:translateX(-50%)}}

/* ============================================================
   About
   ============================================================ */
.about-grid{display:grid; grid-template-columns:1fr 1fr; gap:clamp(2rem,5vw,4rem); align-items:start}
.about-copy p + p{margin-top:1.1rem}
.about-copy p{color:var(--text-soft)}
.pillars{display:grid; gap:1rem; margin-top:1.6rem}
.pillar{
  display:flex; gap:1rem; padding:1.1rem; border-radius:var(--radius);
  background:var(--surface); border:1px solid var(--border); box-shadow:var(--shadow-sm);
  transition:transform .28s var(--ease), box-shadow .28s var(--ease), border-color .28s var(--ease);
}
.pillar:hover{transform:translateX(6px); box-shadow:var(--shadow-md); border-color:var(--blue-300)}
.pillar-ico{width:44px; height:44px; border-radius:12px; flex:none; display:grid; place-items:center; background:rgba(47,127,209,.12); color:var(--navy-700)}
html[data-theme="dark"] .pillar-ico{color:var(--blue-300)}
.pillar-ico svg{width:22px; height:22px}
.pillar h4{font-size:1rem; margin-bottom:.25rem}
.pillar p{font-size:.9rem; color:var(--text-soft)}

.about-panel{
  background:linear-gradient(160deg,var(--navy-900),var(--navy-700)); color:#fff;
  border-radius:var(--radius-lg); padding:clamp(1.6rem,3.5vw,2.4rem);
  box-shadow:var(--shadow-lg); position:relative; overflow:hidden;
}
.about-panel::after{
  content:""; position:absolute; width:340px; height:340px; right:-130px; bottom:-150px;
  border-radius:50%; background:radial-gradient(circle,rgba(242,164,19,.30),transparent 68%);
}
.about-panel h3{font-size:1.35rem; margin-bottom:.7rem; position:relative}
.about-panel > p{color:#c6d8ea; font-size:.95rem; position:relative}
.commit-list{margin-top:1.5rem; display:grid; gap:.75rem; position:relative}
.commit-list li{display:flex; gap:.7rem; align-items:flex-start; font-size:.92rem; color:#dce9f5}
.commit-list svg{width:19px; height:19px; flex:none; color:var(--amber-400); margin-top:2px}
.panel-quote{
  margin-top:1.7rem; padding-top:1.4rem; border-top:1px solid rgba(255,255,255,.15);
  font-family:var(--font-head); font-size:1.02rem; font-weight:600; line-height:1.5; position:relative;
}
.panel-quote cite{display:block; margin-top:.55rem; font-family:var(--font-body); font-size:.8rem; font-weight:400; font-style:normal; color:#9fb8cf}

/* ============================================================
   Services
   ============================================================ */
.services{background:var(--surface-2); border-block:1px solid var(--border)}
.services-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:1.3rem}
.svc{
  background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg);
  padding:1.9rem 1.6rem; box-shadow:var(--shadow-sm); position:relative; overflow:hidden;
  transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
}
.svc::before{
  content:""; position:absolute; inset:0 0 auto 0; height:4px;
  background:linear-gradient(90deg,var(--c1),var(--c2)); transform:scaleX(0); transform-origin:left;
  transition:transform .45s var(--ease);
}
.svc:hover{transform:translateY(-8px); box-shadow:var(--shadow-lg); border-color:transparent}
.svc:hover::before{transform:scaleX(1)}
.svc:nth-child(1){--c1:#2f7fd1; --c2:#1fa463}
.svc:nth-child(2){--c1:#f2a413; --c2:#e07800}
.svc:nth-child(3){--c1:#1fa463; --c2:#0b2545}
.svc-badge{
  width:58px; height:58px; border-radius:16px; display:grid; place-items:center;
  font-family:var(--font-head); font-weight:800; font-size:1.4rem; color:#fff;
  background:linear-gradient(140deg,var(--c1),var(--c2)); box-shadow:0 10px 24px color-mix(in srgb,var(--c1) 34%, transparent);
  margin-bottom:1.3rem; transition:transform .4s var(--ease);
}
.svc:hover .svc-badge{transform:rotate(-6deg) scale(1.06)}
.svc h3{font-size:1.22rem; margin-bottom:.7rem}
.svc p{color:var(--text-soft); font-size:.95rem}
.svc ul{margin-top:1.2rem; display:grid; gap:.55rem}
.svc ul li{display:flex; gap:.55rem; align-items:flex-start; font-size:.87rem; color:var(--text-soft)}
.svc ul svg{width:16px; height:16px; flex:none; color:var(--green-500); margin-top:3px}
.svc-link{
  margin-top:1.4rem; display:inline-flex; align-items:center; gap:.4rem;
  font-family:var(--font-head); font-weight:700; font-size:.87rem; color:var(--navy-700);
}
html[data-theme="dark"] .svc-link{color:var(--blue-300)}
.svc-link svg{width:16px; height:16px; transition:transform .3s var(--ease)}
.svc:hover .svc-link svg{transform:translateX(5px)}

/* ============================================================
   Fleet gallery
   ============================================================ */
.fleet{
  background:linear-gradient(160deg,var(--navy-900),var(--navy-700));
  color:#fff; border-block:1px solid rgba(255,255,255,.08);
}
.fleet .eyebrow{color:var(--amber-400); background:rgba(242,164,19,.12); border-color:rgba(242,164,19,.30)}
.fleet .section-title{color:#fff}
.fleet .section-sub{color:#c6d8ea}
.fleet-grid{display:grid; grid-template-columns:1fr 1fr; gap:1.3rem}
.fleet-card{
  position:relative; margin:0; border-radius:var(--radius-lg); overflow:hidden; cursor:zoom-in;
  border:1px solid rgba(255,255,255,.14); background:var(--navy-800);
  box-shadow:0 18px 44px rgba(0,0,0,.35);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease);
}
.fleet-card:hover,.fleet-card:focus-visible{transform:translateY(-6px); box-shadow:0 28px 60px rgba(0,0,0,.45)}
.fleet-card:focus-visible{outline:3px solid var(--amber-400); outline-offset:3px}
.fleet-card img{
  width:100%; aspect-ratio:4/3; object-fit:cover; object-position:center;
  transition:transform .7s var(--ease);
}
.fleet-card:hover img{transform:scale(1.05)}
.fleet-card figcaption{
  position:absolute; inset:auto 0 0 0; padding:2.6rem 1.3rem 1.15rem;
  background:linear-gradient(transparent, rgba(3,12,24,.92));
}
.fleet-card figcaption b{display:block; font-family:var(--font-head); font-size:1.02rem; letter-spacing:-.01em}
.fleet-card figcaption span{font-size:.83rem; color:#c6d8ea}
.fleet-zoom{
  position:absolute; top:.9rem; right:.9rem; width:38px; height:38px; border-radius:11px;
  background:rgba(4,16,30,.55); color:#fff; display:grid; place-items:center;
  backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px);
  opacity:0; transform:translateY(-6px); transition:.3s var(--ease); pointer-events:none;
}
.fleet-card:hover .fleet-zoom,.fleet-card:focus-visible .fleet-zoom{opacity:1; transform:none}
.fleet-zoom svg{width:16px; height:16px}

/* Lightbox */
.lightbox{
  position:fixed; inset:0; z-index:130; display:grid; place-items:center; padding:1.5rem;
  background:rgba(3,10,18,.90); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px);
  opacity:0; pointer-events:none; transition:opacity .3s var(--ease);
}
.lightbox.open{opacity:1; pointer-events:auto}
.lightbox figure{margin:0; max-width:min(1080px,94vw); transform:scale(.95); transition:transform .32s var(--ease)}
.lightbox.open figure{transform:none}
.lightbox img{max-width:100%; max-height:78vh; border-radius:var(--radius); box-shadow:var(--shadow-lg); background:#000}
.lightbox figcaption{margin-top:.9rem; color:#c6d8ea; font-size:.9rem; text-align:center}
.lb-close{
  position:absolute; top:1.1rem; right:1.1rem; width:44px; height:44px; border-radius:12px;
  background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.22); color:#fff;
  cursor:pointer; display:grid; place-items:center; transition:background .25s var(--ease), transform .25s var(--ease);
}
.lb-close:hover{background:rgba(255,255,255,.22); transform:rotate(90deg)}
.lb-close svg{width:18px; height:18px}

/* ============================================================
   Process
   ============================================================ */
.process-wrap{position:relative}
.process-line{
  position:absolute; left:0; right:0; top:38px; height:2px; background:var(--border); z-index:0;
}
.process-line i{display:block; height:100%; width:0; background:linear-gradient(90deg,var(--blue-500),var(--amber-500)); transition:width 1.6s var(--ease)}
.process-line.in i{width:100%}
.steps{display:grid; grid-template-columns:repeat(4,1fr); gap:1.3rem; position:relative; z-index:1}
.step{text-align:center; padding:0 .3rem}
.step-num{
  width:76px; height:76px; margin:0 auto 1.2rem; border-radius:50%;
  display:grid; place-items:center; background:var(--surface); border:2px solid var(--border);
  font-family:var(--font-head); font-weight:800; font-size:1.45rem; color:var(--text-mute);
  position:relative; transition:all .4s var(--ease);
}
.step-num svg{width:30px; height:30px}
.step.in .step-num{
  border-color:var(--blue-500); color:#fff;
  background:linear-gradient(140deg,var(--navy-700),var(--blue-500));
  box-shadow:0 12px 26px rgba(47,127,209,.30); transform:scale(1.05);
}
.step h4{font-size:1.05rem; margin-bottom:.5rem}
.step p{font-size:.89rem; color:var(--text-soft)}
.step-tag{
  display:inline-block; margin-top:.8rem; font-size:.7rem; font-weight:700; letter-spacing:.08em;
  text-transform:uppercase; color:var(--text-mute); background:var(--surface-2);
  border:1px solid var(--border); padding:.24rem .6rem; border-radius:var(--radius-pill);
}

/* ============================================================
   Zones
   ============================================================ */
.zones{background:var(--surface-2); border-block:1px solid var(--border)}
.zones-head{display:flex; flex-wrap:wrap; align-items:flex-end; justify-content:space-between; gap:1.5rem; margin-bottom:2rem}
.zones-head .section-head{margin-bottom:0}
.zone-tools{display:flex; gap:.6rem; align-items:center; flex-wrap:wrap}
.search{
  display:flex; align-items:center; gap:.55rem; background:var(--surface);
  border:1px solid var(--border); border-radius:var(--radius-pill); padding:.55rem 1rem;
  transition:border-color .25s var(--ease), box-shadow .25s var(--ease); min-width:230px;
}
.search:focus-within{border-color:var(--blue-500); box-shadow:0 0 0 4px rgba(47,127,209,.14)}
.search svg{width:17px; height:17px; color:var(--text-mute); flex:none}
.search input{border:0; outline:0; background:transparent; width:100%; font-size:.9rem}
.zone-count{font-size:.85rem; color:var(--text-mute); font-weight:500}
.zone-count b{color:var(--text); font-family:var(--font-head)}

.zone-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:.9rem}
.zone{
  position:relative; background:var(--surface); border:1px solid var(--border);
  border-radius:var(--radius); padding:1.1rem 1.15rem; cursor:pointer; overflow:hidden;
  transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease);
}
.zone:hover{transform:translateY(-5px); box-shadow:var(--shadow-md); border-color:var(--blue-500)}
.zone::after{
  content:""; position:absolute; right:-30px; top:-30px; width:90px; height:90px; border-radius:50%;
  background:radial-gradient(circle,rgba(47,127,209,.16),transparent 70%); opacity:0; transition:opacity .3s var(--ease);
}
.zone:hover::after{opacity:1}
.zone-top{display:flex; align-items:center; justify-content:space-between; gap:.6rem; position:relative}
.zone h4{font-size:1rem; letter-spacing:-.01em}
.zone-pin{width:30px; height:30px; border-radius:9px; display:grid; place-items:center; background:rgba(31,164,99,.12); color:var(--green-600); flex:none}
.zone-pin svg{width:16px; height:16px}
.zone-meta{display:flex; align-items:center; justify-content:space-between; gap:.6rem; margin-top:.7rem; position:relative}
.zone-meta small{font-size:.76rem; color:var(--text-mute)}
.load{height:5px; border-radius:3px; background:var(--surface-2); overflow:hidden; flex:1; max-width:82px}
.load i{display:block; height:100%; width:0; border-radius:3px; background:linear-gradient(90deg,var(--blue-500),var(--green-500)); transition:width 1.1s var(--ease)}
.zone.is-hi .load i{background:linear-gradient(90deg,var(--amber-500),#e07800)}
.zone.hide{display:none}
.empty-state{
  grid-column:1/-1; text-align:center; padding:3rem 1rem; color:var(--text-mute);
  border:1px dashed var(--border); border-radius:var(--radius-lg); background:var(--surface);
}
.empty-state strong{display:block; font-family:var(--font-head); color:var(--text); font-size:1.05rem; margin-bottom:.3rem}

/* ============================================================
   Franchise form
   ============================================================ */
.apply-grid{display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(2rem,4.5vw,3.5rem); align-items:start}
.apply-aside h2{font-size:clamp(1.7rem,3.6vw,2.4rem); margin-bottom:1rem}
.apply-aside > p{color:var(--text-soft)}
.benefits{margin-top:1.8rem; display:grid; gap:.85rem}
.benefit{display:flex; gap:.8rem; align-items:flex-start}
.benefit-ico{width:36px; height:36px; border-radius:11px; flex:none; display:grid; place-items:center; background:rgba(242,164,19,.15); color:#a06a00}
html[data-theme="dark"] .benefit-ico{color:var(--amber-400)}
.benefit-ico svg{width:18px; height:18px}
.benefit b{display:block; font-family:var(--font-head); font-size:.94rem}
.benefit span{font-size:.85rem; color:var(--text-mute)}
.help-box{
  margin-top:2rem; padding:1.15rem 1.25rem; border-radius:var(--radius);
  background:var(--surface-2); border:1px solid var(--border); font-size:.88rem; color:var(--text-soft);
}
.help-box a{color:var(--blue-500); font-weight:600}

.form-card{background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-lg); box-shadow:var(--shadow-md); overflow:hidden}
.form-progress{display:flex; gap:0; background:var(--surface-2); border-bottom:1px solid var(--border); padding:0}
.fp-step{flex:1; padding:.95rem .6rem; text-align:center; font-size:.78rem; font-weight:600; color:var(--text-mute); position:relative; transition:color .3s var(--ease)}
.fp-step::after{content:""; position:absolute; left:0; right:0; bottom:-1px; height:3px; background:var(--blue-500); transform:scaleX(0); transition:transform .4s var(--ease)}
.fp-step.active{color:var(--navy-700)}
html[data-theme="dark"] .fp-step.active{color:var(--blue-300)}
.fp-step.active::after,.fp-step.done::after{transform:scaleX(1)}
.fp-step.done{color:var(--green-600)}
.fp-step b{display:block; font-family:var(--font-head); font-size:.68rem; letter-spacing:.1em; text-transform:uppercase; opacity:.7}

.form-body{padding:clamp(1.4rem,3vw,2rem)}
.fstep{display:none; animation:fadeUp .45s var(--ease)}
.fstep.active{display:block}
@keyframes fadeUp{from{opacity:0; transform:translateY(14px)}to{opacity:1; transform:none}}
.fstep > h3{font-size:1.2rem; margin-bottom:.3rem}
.fstep > p.hint{font-size:.87rem; color:var(--text-mute); margin-bottom:1.5rem}
.field-grid{display:grid; grid-template-columns:1fr 1fr; gap:1rem}
.field{display:flex; flex-direction:column; gap:.4rem; margin-bottom:1rem}
.field.full{grid-column:1/-1}
.field label{font-size:.83rem; font-weight:600; font-family:var(--font-head)}
.field label .req{color:#d14343}
.field input,.field select,.field textarea{
  background:var(--bg); border:1px solid var(--border); border-radius:var(--radius-sm);
  padding:.72rem .9rem; font-size:.92rem; outline:0; width:100%;
  transition:border-color .22s var(--ease), box-shadow .22s var(--ease), background .22s var(--ease);
}
.field textarea{resize:vertical; min-height:96px}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--blue-500); box-shadow:0 0 0 4px rgba(47,127,209,.14); background:var(--surface)}
.field .err{font-size:.76rem; color:#d14343; min-height:1em; opacity:0; transform:translateY(-3px); transition:.2s var(--ease)}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-color:#d14343; box-shadow:0 0 0 4px rgba(209,67,67,.10)}
.field.invalid .err{opacity:1; transform:none}
.opt-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:.7rem}
.opt{
  position:relative; display:flex; gap:.7rem; align-items:flex-start; cursor:pointer;
  border:1px solid var(--border); border-radius:var(--radius-sm); padding:.8rem .9rem; background:var(--bg);
  transition:border-color .22s var(--ease), background .22s var(--ease);
}
.opt:hover{border-color:var(--blue-300)}
.opt input{position:absolute; opacity:0; pointer-events:none}
.opt .box{
  width:19px; height:19px; border-radius:6px; border:2px solid var(--border); flex:none; margin-top:2px;
  display:grid; place-items:center; transition:.22s var(--ease); background:var(--surface);
}
.opt .box svg{width:12px; height:12px; color:#fff; opacity:0; transform:scale(.5); transition:.22s var(--ease)}
.opt input:checked ~ .box{background:var(--blue-500); border-color:var(--blue-500)}
.opt input:checked ~ .box svg{opacity:1; transform:none}
.opt:has(input:checked){border-color:var(--blue-500); background:rgba(47,127,209,.07)}
.opt input:focus-visible ~ .box{outline:3px solid var(--amber-400); outline-offset:2px}
.opt-txt b{display:block; font-size:.89rem; font-family:var(--font-head)}
.opt-txt span{font-size:.78rem; color:var(--text-mute)}
.form-nav{display:flex; justify-content:space-between; align-items:center; gap:1rem; margin-top:1.6rem; padding-top:1.4rem; border-top:1px solid var(--border)}
.form-nav .count{font-size:.8rem; color:var(--text-mute)}
.success{display:none; text-align:center; padding:1.5rem .5rem}
.success.show{display:block; animation:fadeUp .5s var(--ease)}
.success-ico{
  width:78px; height:78px; margin:0 auto 1.3rem; border-radius:50%; display:grid; place-items:center;
  background:rgba(31,164,99,.13); color:var(--green-600);
}
.success-ico svg{width:38px; height:38px; stroke-dasharray:60; stroke-dashoffset:60; animation:draw .7s .15s var(--ease) forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.success h3{font-size:1.35rem; margin-bottom:.6rem}
.success p{color:var(--text-soft); max-width:44ch; margin-inline:auto; font-size:.95rem}
.ref{
  display:inline-block; margin-top:1.3rem; font-family:var(--font-head); font-weight:700;
  background:var(--surface-2); border:1px dashed var(--border); border-radius:var(--radius-sm);
  padding:.6rem 1rem; font-size:.9rem; letter-spacing:.06em;
}

/* ============================================================
   CTA band + Footer
   ============================================================ */
.cta-band{
  background:linear-gradient(125deg,var(--navy-900),var(--navy-700) 55%,var(--navy-600));
  border-radius:var(--radius-lg); padding:clamp(2rem,4.5vw,3.2rem); color:#fff;
  display:grid; grid-template-columns:1.4fr auto; gap:2rem; align-items:center;
  box-shadow:var(--shadow-lg); position:relative; overflow:hidden;
}
.cta-band::before{
  content:""; position:absolute; inset:0; opacity:.22;
  background-image:radial-gradient(circle at 1px 1px, rgba(255,255,255,.55) 1px, transparent 0);
  background-size:22px 22px;
  mask-image:linear-gradient(105deg,#000,transparent 72%);
  -webkit-mask-image:linear-gradient(105deg,#000,transparent 72%);
}
.cta-band h2{font-size:clamp(1.5rem,3.4vw,2.2rem); margin-bottom:.7rem; position:relative}
.cta-band p{color:#c3d6e8; max-width:56ch; position:relative}
.cta-band .btn{position:relative}

.footer{background:var(--navy-900); color:#a9c0d6; margin-top:clamp(3rem,7vw,5rem); padding:clamp(3rem,6vw,4.5rem) 0 0}
html[data-theme="dark"] .footer{background:#030c16}
.footer-grid{display:grid; grid-template-columns:1.6fr 1fr 1fr 1.2fr; gap:2.5rem}
.footer .brand{color:#fff; margin-bottom:1rem}
.footer .brand small{color:#7f9ab4}
.footer-about p{font-size:.9rem; max-width:38ch; line-height:1.7}
.footer h5{font-family:var(--font-head); color:#fff; font-size:.82rem; letter-spacing:.12em; text-transform:uppercase; margin:0 0 1.1rem}
.footer ul{display:grid; gap:.65rem}
.footer ul a{font-size:.9rem; transition:color .2s var(--ease), padding-left .2s var(--ease)}
.footer ul a:hover{color:var(--amber-400); padding-left:4px}
.contact-line{display:flex; gap:.65rem; align-items:flex-start; font-size:.88rem; margin-bottom:.85rem}
.contact-line svg{width:17px; height:17px; flex:none; color:var(--amber-400); margin-top:3px}
.socials{display:flex; gap:.55rem; margin-top:1.3rem}
.socials a{
  width:38px; height:38px; border-radius:11px; display:grid; place-items:center;
  background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.11);
  transition:transform .25s var(--ease), background .25s var(--ease);
}
.socials a:hover{transform:translateY(-3px); background:var(--amber-500); color:#231500}
.socials svg{width:17px; height:17px}
.footer-bottom{
  margin-top:clamp(2.5rem,5vw,3.5rem); padding:1.4rem 0; border-top:1px solid rgba(255,255,255,.10);
  display:flex; flex-wrap:wrap; gap:1rem; justify-content:space-between; font-size:.82rem; color:#7f9ab4;
}
.footer-bottom nav{display:flex; gap:1.4rem; flex-wrap:wrap}
.footer-bottom a:hover{color:var(--amber-400)}

/* ============================================================
   Toast + back to top
   ============================================================ */
.to-top{
  position:fixed; right:1.4rem; bottom:1.4rem; z-index:90;
  width:48px; height:48px; border-radius:14px; border:1px solid var(--border);
  background:var(--surface); box-shadow:var(--shadow-md); cursor:pointer; display:grid; place-items:center;
  opacity:0; transform:translateY(18px) scale(.9); pointer-events:none;
  transition:all .32s var(--ease);
}
.to-top.show{opacity:1; transform:none; pointer-events:auto}
.to-top:hover{background:var(--navy-800); color:#fff; border-color:var(--navy-800)}
.to-top svg{width:19px; height:19px}

.toasts{position:fixed; right:1.4rem; bottom:5.2rem; z-index:120; display:grid; gap:.6rem; justify-items:end}
.toast{
  display:flex; gap:.7rem; align-items:center; background:var(--surface); color:var(--text);
  border:1px solid var(--border); border-left:4px solid var(--green-500);
  border-radius:var(--radius-sm); padding:.8rem 1.05rem; box-shadow:var(--shadow-lg);
  font-size:.87rem; max-width:330px; animation:toastIn .38s var(--ease);
}
.toast.info{border-left-color:var(--blue-500)}
.toast.out{animation:toastOut .3s var(--ease) forwards}
.toast svg{width:18px; height:18px; flex:none; color:var(--green-500)}
.toast.info svg{color:var(--blue-500)}
@keyframes toastIn{from{opacity:0; transform:translateX(30px) scale(.95)}to{opacity:1; transform:none}}
@keyframes toastOut{to{opacity:0; transform:translateX(30px) scale(.95)}}

/* ============================================================
   Reveal animations
   ============================================================ */
.reveal{opacity:0; transform:translateY(26px); transition:opacity .7s var(--ease), transform .7s var(--ease)}
.reveal.in{opacity:1; transform:none}
.reveal[data-d="1"]{transition-delay:.09s}
.reveal[data-d="2"]{transition-delay:.18s}
.reveal[data-d="3"]{transition-delay:.27s}
.reveal[data-d="4"]{transition-delay:.36s}

.sr-only{position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0}
.skip{position:absolute; left:-9999px; top:0; z-index:200; background:var(--navy-800); color:#fff; padding:.8rem 1.2rem; border-radius:0 0 10px 0}
.skip:focus{left:0}

/* ============================================================
   Responsive
   ============================================================ */
@media (max-width:1040px){
  .hero-grid{grid-template-columns:1fr; gap:3rem}
  .hero-visual{max-width:560px; margin-inline:auto; width:100%}
  .services-grid{grid-template-columns:1fr 1fr}
  .steps{grid-template-columns:1fr 1fr; gap:2.2rem 1.3rem}
  .process-line{display:none}
  .zone-grid{grid-template-columns:repeat(3,1fr)}
  .apply-grid{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr 1fr; gap:2rem}
  .about-grid{grid-template-columns:1fr}
}
@media (max-width:820px){
  .nav-links{
    position:fixed; top:var(--nav-h); left:0; right:0; z-index:99;
    flex-direction:column; align-items:stretch; gap:.2rem;
    background:var(--surface); border-bottom:1px solid var(--border);
    padding:1rem 1.25rem 1.4rem; box-shadow:var(--shadow-md);
    transform:translateY(-14px); opacity:0; pointer-events:none;
    transition:opacity .28s var(--ease), transform .28s var(--ease);
  }
  .nav-links.open{transform:none; opacity:1; pointer-events:auto}
  .nav-links a{padding:.85rem .9rem; border-radius:var(--radius-sm); font-size:1rem}
  .nav-links a::after{display:none}
  .nav-links a.active{background:var(--surface-2)}
  .burger{display:grid}
  .nav-actions .btn{display:none}
  .stats{grid-template-columns:1fr 1fr}
  .cta-band{grid-template-columns:1fr}
  .fleet-grid{grid-template-columns:1fr}
}
@media (max-width:640px){
  .services-grid{grid-template-columns:1fr}
  .zone-grid{grid-template-columns:1fr 1fr}
  .field-grid,.opt-grid{grid-template-columns:1fr}
  .float-card{display:none}
  .footer-grid{grid-template-columns:1fr}
  .zones-head{flex-direction:column; align-items:stretch}
  .search{min-width:0; width:100%}
  .form-nav{flex-wrap:wrap}
}
@media (max-width:420px){
  .steps{grid-template-columns:1fr}
  .zone-grid{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important}
  .reveal{opacity:1; transform:none}
}
