/* =========================================================
   SwiftCharge – Premium public UI
   Brand: crimson red · gold · cream · ink
   ========================================================= */
:root{
  --red:#a20d18;
  --red-deep:#7a0a12;
  --gold:#d4a62a;
  --gold-bright:#f0c94a;
  --ink:#181615;
  --cream:#fffaf0;
  --cream-dark:#f3ebe0;
  --muted:#706861;
  --line:#e7ddcb;
  --green:#15844b;
  --shadow:0 12px 40px rgba(24,22,21,.08);
  --shadow-lg:0 24px 60px rgba(24,22,21,.14);
  --radius:16px;
  --header-h:76px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font:16px/1.55 "Segoe UI",system-ui,-apple-system,sans-serif;
  color:var(--ink);
  background:var(--cream);
  -webkit-font-smoothing:antialiased;
}

/* ---------- Header ---------- */
header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:0 5vw;
  height:var(--header-h);
  background:rgba(255,250,240,.92);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(231,221,203,.8);
  position:sticky;
  top:0;
  z-index:100;
  box-shadow:0 4px 24px rgba(24,22,21,.04);
}
.brand{
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  color:inherit;
}
.logo-wrap{
  position:relative;
  width:min(210px,42vw);
  height:48px;
  display:flex;
  align-items:center;
}
.logo-wrap img{
  width:100%;
  height:auto;
  max-height:48px;
  object-fit:contain;
  display:block;
  position:relative;
  z-index:1;
  transition:transform .35s cubic-bezier(.2,.8,.2,1), filter .35s;
}
.logo-wrap::before{
  content:"";
  position:absolute;
  inset:-8px -14px;
  border-radius:14px;
  background:radial-gradient(circle at 30% 50%, rgba(212,166,42,.35), transparent 65%);
  opacity:0;
  transition:opacity .4s;
  z-index:0;
  animation:logoGlow 3.2s ease-in-out infinite;
}
.logo-wrap:hover img{
  transform:scale(1.04);
  filter:drop-shadow(0 4px 12px rgba(162,13,24,.25));
}
.logo-wrap:hover::before{opacity:1}
@keyframes logoGlow{
  0%,100%{opacity:.35; transform:scale(1)}
  50%{opacity:.7; transform:scale(1.03)}
}
.logo-spark{
  position:absolute;
  width:8px;height:8px;
  border-radius:50%;
  background:var(--gold-bright);
  box-shadow:0 0 12px var(--gold);
  top:6px;right:10px;
  animation:sparkPulse 1.8s ease-in-out infinite;
  z-index:2;
  pointer-events:none;
}
@keyframes sparkPulse{
  0%,100%{opacity:.4; transform:scale(.8)}
  50%{opacity:1; transform:scale(1.3)}
}

nav{
  display:flex;
  align-items:center;
  gap:8px;
}
nav a{
  color:var(--muted);
  text-decoration:none;
  font-weight:600;
  font-size:.92rem;
  padding:8px 14px;
  border-radius:999px;
  transition:color .2s, background .2s, transform .2s;
}
nav a:hover{
  color:var(--ink);
  background:rgba(162,13,24,.06);
}
nav a.active{
  color:var(--red);
  background:rgba(162,13,24,.08);
  font-weight:750;
  box-shadow:inset 0 -2px 0 var(--gold);
}
nav a.nav-cta{
  background:linear-gradient(135deg,var(--red),var(--red-deep));
  color:#fff !important;
  box-shadow:0 6px 18px rgba(162,13,24,.28);
}
nav a.nav-cta:hover{
  filter:brightness(1.08);
  transform:translateY(-1px);
}

.menu-toggle{
  display:none;
  width:44px;height:44px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
  cursor:pointer;
  align-items:center;
  justify-content:center;
  flex-direction:column;
  gap:5px;
  padding:0;
}
.menu-toggle span{
  display:block;
  width:18px;height:2px;
  background:var(--ink);
  border-radius:2px;
  transition:.25s;
}
body.nav-open .menu-toggle span:nth-child(1){transform:translateY(7px) rotate(45deg)}
body.nav-open .menu-toggle span:nth-child(2){opacity:0}
body.nav-open .menu-toggle span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- Buttons ---------- */
.button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border:0;
  background:linear-gradient(135deg,var(--red),var(--red-deep));
  color:#fff;
  padding:13px 22px;
  border-radius:12px;
  font-weight:750;
  font-size:.95rem;
  cursor:pointer;
  text-decoration:none;
  box-shadow:0 8px 22px rgba(162,13,24,.28);
  transition:transform .2s, box-shadow .2s, filter .2s;
}
.button:hover{
  transform:translateY(-2px);
  box-shadow:0 12px 28px rgba(162,13,24,.35);
  filter:brightness(1.05);
}
.secondary{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border:1.5px solid rgba(162,13,24,.35);
  background:#fff;
  color:var(--red);
  padding:12px 18px;
  border-radius:12px;
  font-weight:700;
  cursor:pointer;
  text-decoration:none;
  transition:background .2s, border-color .2s, transform .2s;
}
.secondary:hover{
  background:rgba(162,13,24,.06);
  border-color:var(--red);
  transform:translateY(-1px);
}

/* ---------- Hero ---------- */
.hero{
  min-height:calc(100vh - var(--header-h));
  padding:8vh 6vw 10vh;
  display:grid;
  grid-template-columns:1.35fr .85fr;
  gap:6vw;
  align-items:center;
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(ellipse 70% 55% at 85% 15%, rgba(240,201,74,.28), transparent 55%),
    radial-gradient(ellipse 50% 40% at 10% 80%, rgba(162,13,24,.08), transparent 50%),
    linear-gradient(180deg, #fffaf0 0%, #f7f0e4 100%);
}
.hero::after{
  content:"";
  position:absolute;
  width:420px;height:420px;
  right:-80px;bottom:-120px;
  border-radius:50%;
  background:radial-gradient(circle, rgba(212,166,42,.12), transparent 70%);
  pointer-events:none;
  animation:floatOrb 8s ease-in-out infinite;
}
@keyframes floatOrb{
  0%,100%{transform:translate(0,0)}
  50%{transform:translate(-20px,-30px)}
}
.hero > div{position:relative;z-index:1}
.hero > div > span,
.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:8px;
  font-size:.78rem;
  font-weight:800;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:#9a6a09;
  background:rgba(212,166,42,.12);
  border:1px solid rgba(212,166,42,.28);
  padding:6px 12px;
  border-radius:999px;
  margin-bottom:18px;
}
h1{
  font-size:clamp(2.6rem, 6.2vw, 4.8rem);
  line-height:.98;
  margin:.12em 0 .35em;
  color:var(--red);
  letter-spacing:-.02em;
  font-weight:800;
}
.hero p{
  font-size:1.12rem;
  color:var(--muted);
  max-width:34rem;
  margin:0 0 28px;
}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px}
.hero aside{
  position:relative;
  z-index:1;
  background:linear-gradient(160deg,#211d1a 0%, #2c2622 100%);
  color:#fff;
  padding:36px 32px;
  border-radius:24px;
  box-shadow:var(--shadow-lg);
  border:1px solid rgba(255,255,255,.06);
  overflow:hidden;
}
.hero aside::before{
  content:"";
  position:absolute;
  top:-40px;right:-40px;
  width:140px;height:140px;
  border-radius:50%;
  background:radial-gradient(circle, rgba(212,166,42,.25), transparent 70%);
}
.hero aside h2{margin:0 0 8px;font-size:1rem;font-weight:600;color:#cbb;position:relative}
.hero aside strong{
  display:block;
  font-size:clamp(2.4rem, 4vw, 3.2rem);
  color:var(--gold-bright);
  margin:4px 0 6px;
  position:relative;
  text-shadow:0 0 30px rgba(240,201,74,.25);
}
.hero aside p{color:#bbb;margin:0 0 18px;position:relative}
.status,.live-badge{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:#75d89e;
  font-weight:700;
  font-size:.9rem;
  position:relative;
}
.status::before,.live-badge::before{
  content:"";
  width:8px;height:8px;
  border-radius:50%;
  background:#75d89e;
  box-shadow:0 0 0 0 rgba(117,216,158,.5);
  animation:livePulse 2s ease-out infinite;
}
@keyframes livePulse{
  0%{box-shadow:0 0 0 0 rgba(117,216,158,.45)}
  70%{box-shadow:0 0 0 10px rgba(117,216,158,0)}
  100%{box-shadow:0 0 0 0 rgba(117,216,158,0)}
}

/* ---------- Feature grid ---------- */
.grid,.stats{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:20px;
}
.grid{padding:4vw 6vw 6vw}
.grid article,.stats article,.card{
  background:#fff;
  padding:26px 24px;
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  transition:transform .25s, box-shadow .25s, border-color .25s;
}
.grid article{
  border-top:4px solid var(--gold);
  position:relative;
  overflow:hidden;
}
.grid article:hover{
  transform:translateY(-6px);
  box-shadow:var(--shadow-lg);
  border-color:rgba(212,166,42,.45);
}
.grid article h3{margin:0 0 8px;font-size:1.15rem}
.grid article p{margin:0;color:var(--muted);font-size:.95rem}
h2,h3{margin-top:0}

/* ---------- Pages ---------- */
.page{padding:40px 5vw;min-height:70vh}
.narrow{max-width:1100px;margin:auto}
.page-title{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  margin-bottom:26px;
  flex-wrap:wrap;
}
.page-title h1{font-size:clamp(1.9rem, 4vw, 2.6rem);margin:0}
.page-title span,.stats span{color:var(--muted);font-size:.85rem;font-weight:650}

/* ---------- Map ---------- */
.map-layout{display:grid;grid-template-columns:1.1fr .9fr;gap:20px}
.map-panel{
  min-height:520px;
  background:linear-gradient(135deg,#efe5cc,#d5c095);
  border-radius:18px;
  overflow:hidden;
  box-shadow:var(--shadow);
}
.charger-map{width:100%;height:520px;border-radius:18px}
.map-filter-bar{
  display:grid;
  grid-template-columns:minmax(200px,1.6fr) repeat(3,minmax(140px,1fr)) auto;
  gap:10px;
  align-items:end;
  background:#fff;
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px;
  margin-bottom:18px;
  box-shadow:var(--shadow);
}
.map-filter-bar label{display:grid;gap:5px}
.map-filter-bar label span{
  font-size:.72rem;
  text-transform:uppercase;
  letter-spacing:.05em;
  font-weight:750;
  color:var(--muted);
}
.map-filter-bar input,.map-filter-bar select{
  font:inherit;
  padding:10px 12px;
  border:1px solid #c9c0b1;
  border-radius:10px;
  background:#fff;
  transition:border-color .2s, box-shadow .2s;
}
.map-filter-bar input:focus,.map-filter-bar select:focus{
  outline:none;
  border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(212,166,42,.2);
}
.station-list{display:grid;gap:12px}
.station-card{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:14px;
  align-items:center;
  background:#fff;
  padding:16px;
  border:1px solid var(--line);
  border-radius:14px;
  box-shadow:0 4px 16px rgba(24,22,21,.04);
  transition:transform .2s, border-color .2s, box-shadow .2s;
}
.station-card:hover{
  transform:translateY(-2px);
  border-color:rgba(212,166,42,.4);
  box-shadow:var(--shadow);
}
.station-card h3,.station-card p{margin:0}
.pin{
  width:46px;height:46px;
  border-radius:50%;
  display:grid;place-items:center;
  color:#fff;background:#777;
  font-weight:800;
  box-shadow:0 4px 12px rgba(0,0,0,.12);
}
.pin.online{background:var(--green);box-shadow:0 4px 14px rgba(21,132,75,.3)}
.state{
  font-size:.75rem;
  font-weight:800;
  padding:6px 10px;
  border-radius:20px;
}
.state.available{background:#dff5e8;color:var(--green)}
.state.offline{background:#eee;color:#666}
.station-meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:8px}
.station-meta span{
  font-size:.7rem;
  padding:3px 8px;
  border-radius:20px;
  background:#f4efe5;
  color:#706861;
  font-weight:700;
}
.station-card-actions{min-width:102px;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.station-directions{padding:8px 12px;font-size:.86rem;white-space:nowrap}

/* ---------- Auth ---------- */
.auth-card{max-width:480px;margin:auto;box-shadow:var(--shadow-lg)}
.auth-card h2{color:var(--red)}
.auth-card label{display:grid;gap:6px;margin:14px 0;font-weight:650;font-size:.9rem}
.auth-card input{
  font:inherit;
  padding:13px 14px;
  border:1px solid #c9c0b1;
  border-radius:10px;
  transition:border-color .2s, box-shadow .2s;
}
.auth-card input:focus{
  outline:none;
  border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(212,166,42,.2);
}
.form-message{margin-top:12px}
.error{color:#a20d18;padding:12px}
.hidden{display:none!important}

/* ---------- Stats / portal bits used on public ---------- */
.stats{grid-template-columns:repeat(4,1fr);margin-bottom:22px}
.stats article strong{font-size:1.85rem;display:block;color:var(--red)}
.stats small{color:var(--muted)}
.actions{display:flex;gap:10px;flex-wrap:wrap}
.portal-shell{display:grid;grid-template-columns:240px 1fr;min-height:78vh}
.portal-nav{
  background:#211d1a;
  color:#ddd;
  padding:24px 16px;
  display:grid;
  align-content:start;
  gap:5px;
}
.portal-nav a,.portal-nav span{padding:10px 12px;border-radius:8px}
.portal-nav .active{background:var(--red);color:#fff}
.portal-content{padding:32px}
.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px}
.loading,.empty{padding:32px;text-align:center;color:var(--muted)}

/* ---------- Footer ---------- */
footer{
  padding:28px 6vw;
  background:#211d1a;
  color:#cbb;
  font-size:.9rem;
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:12px;
  border-top:3px solid var(--gold);
}
footer strong{color:#fff}

/* ---------- Entrance animation ---------- */
@keyframes fadeUp{
  from{opacity:0;transform:translateY(18px)}
  to{opacity:1;transform:translateY(0)}
}
.hero > div,.hero aside,.grid article{
  animation:fadeUp .7s ease-out both;
}
.hero aside{animation-delay:.12s}
.grid article:nth-child(1){animation-delay:.05s}
.grid article:nth-child(2){animation-delay:.15s}
.grid article:nth-child(3){animation-delay:.25s}

/* ---------- Responsive ---------- */
@media(max-width:1050px){
  .map-filter-bar{grid-template-columns:1fr 1fr 1fr}
  .map-filter-bar label:first-child{grid-column:span 2}
}
@media(max-width:900px){
  .menu-toggle{display:flex}
  nav{
    display:none;
    position:absolute;
    top:var(--header-h);
    left:0;right:0;
    flex-direction:column;
    align-items:stretch;
    gap:4px;
    padding:16px 5vw 20px;
    background:rgba(255,250,240,.98);
    border-bottom:1px solid var(--line);
    box-shadow:0 16px 40px rgba(0,0,0,.08);
  }
  body.nav-open nav{display:flex}
  nav a{padding:14px 16px;border-radius:12px}
  .hero,.map-layout,.portal-shell{grid-template-columns:1fr}
  .grid,.stats{grid-template-columns:1fr 1fr}
  .portal-nav{display:none}
  .portal-content{padding:22px}
  .hero{min-height:auto;padding:48px 5vw 56px}
}
@media(max-width:650px){
  .map-filter-bar{grid-template-columns:1fr 1fr}
  .map-filter-bar label:first-child{grid-column:1/-1}
  .map-filter-bar .secondary{width:100%}
  .grid,.stats{grid-template-columns:1fr}
  .page{padding:28px 18px}
  .station-card{grid-template-columns:auto 1fr}
  .station-card-actions{grid-column:2;align-items:flex-start;flex-direction:row;flex-wrap:wrap}
  .station-card .state{grid-column:auto}
  .hero{padding:36px 18px 48px}
  .hero aside{padding:26px 22px}
}


/* Driver experience update v11 */
.pin{min-width:54px;height:54px;border-radius:16px;display:grid;place-items:center;align-content:center;gap:0;color:#fff}.pin strong{font-size:.72rem;line-height:1}.pin span{font-size:1.05rem;line-height:1}.pin.offline{background:#b3121b}.pin.online{background:#17824b}
.swift-marker-wrap{background:transparent!important;border:0!important}.swift-map-pin{width:54px;height:58px;border-radius:18px 18px 18px 4px;transform:rotate(-45deg);display:grid;place-items:center;align-content:center;box-shadow:0 7px 18px #0004;border:3px solid #fff;color:#fff}.swift-map-pin>*{transform:rotate(45deg)}.swift-map-pin.available{background:#198754}.swift-map-pin.unavailable{background:#b20e19}.swift-map-pin span{font-size:.72rem;font-weight:900;line-height:1;letter-spacing:.02em}.swift-map-pin b{font-size:1.05rem;line-height:1;margin-top:2px}
.driver-map-layout{grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr)}.driver-map-tools{margin-bottom:18px}.driver-map-layout .charger-map{height:620px;position:sticky;top:96px}
.charge-start-banner{display:flex;justify-content:space-between;gap:24px;align-items:center;padding:24px 26px;background:linear-gradient(135deg,#211d1a,#3b322c);color:#fff;border-radius:20px;margin-bottom:18px}.charge-start-banner h3{font-size:1.65rem;margin:4px 0 7px;color:#fff}.charge-start-banner p{margin:0;color:#e8e0d7;max-width:720px}.charge-credit{min-width:190px;background:#fff;color:#211d1a;padding:16px 18px;border-radius:15px;display:grid;gap:2px;box-shadow:0 10px 30px #0002}.charge-credit span,.charge-credit small{color:#706861}.charge-credit strong{font-size:1.65rem;color:#a20d18}.charge-flow{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:18px;align-items:start}.charge-step-card{background:#fff;border:1px solid #e7ddcb;border-radius:18px;padding:22px;box-shadow:0 8px 24px #3a2b180b}.charge-step-card:first-child{grid-row:span 2}.charge-review-card{background:#fff9ec;border-color:#e1c478}.charge-step-title{display:flex;gap:12px;align-items:flex-start;margin-bottom:17px}.charge-step-title>span{display:grid;place-items:center;flex:0 0 34px;height:34px;border-radius:50%;background:#a20d18;color:#fff;font-weight:800}.charge-step-title h3{margin:0;font-size:1.12rem}.charge-step-title p{margin:3px 0 0;color:#706861;font-size:.9rem}.connector-choice-grid{display:grid;gap:10px}.connector-choice{position:relative;display:flex!important;justify-content:space-between;align-items:center;gap:16px;border:1px solid #ddd2c3;background:#fff;padding:15px;border-radius:14px;cursor:pointer;transition:.16s ease}.connector-choice:hover{border-color:#c99316;transform:translateY(-1px)}.connector-choice:has(input:checked){border:2px solid #a20d18;background:#fff8f2;box-shadow:0 0 0 3px #a20d1810}.connector-choice input{position:absolute;opacity:0;pointer-events:none}.connector-choice-main{display:flex;align-items:center;gap:12px}.connector-choice-main span:last-child{display:grid;gap:3px}.connector-choice-main small,.connector-choice-meta small{color:#706861}.connector-choice-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:13px;background:#211d1a;color:#fff;font-size:.78rem;font-weight:900}.connector-choice-meta{display:grid;text-align:right;gap:2px}.charge-map-shortcut{margin-top:14px}.charge-vehicle-select{display:grid!important;gap:8px;font-weight:700}.charge-vehicle-select select{font:inherit;padding:12px;border:1px solid #cfc4b3;border-radius:10px;background:#fff}.charge-review{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.charge-review>div{display:grid;gap:3px;padding:11px;background:#fff;border:1px solid #ead9ad;border-radius:10px}.charge-review span{font-size:.72rem;color:#706861;text-transform:uppercase;letter-spacing:.04em}.charge-start-button{width:100%;font-size:1.05rem;padding:14px}.charge-empty-state{text-align:center;background:#fff;border:1px solid #e7ddcb;border-radius:18px;padding:48px 24px}.charge-empty-icon{font-size:2.4rem}.charge-empty-state h3{font-size:1.4rem;margin:8px 0}.charge-empty-state p{color:#706861;max-width:560px;margin:0 auto 20px}
.invoice-history-card{overflow:hidden}.invoice-history-grid{border:1px solid #e4d7c3;border-radius:12px;overflow:hidden}.invoice-history-grid-head,.invoice-history-grid-row{display:grid;grid-template-columns:minmax(150px,1fr) minmax(180px,1.4fr) minmax(90px,.55fr) minmax(190px,1fr);align-items:center}.invoice-history-grid-head{background:#211d1a;color:#fff;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.invoice-history-grid-head span{padding:10px 12px}.invoice-history-grid-row{background:#fff;border-top:1px solid #e4d7c3}.invoice-history-grid-row:first-of-type{border-top:0}.invoice-history-grid-row>div{padding:13px 12px;min-width:0}.invoice-history-grid-row>div+div{border-left:1px solid #eee4d6}.invoice-history-grid-row small{display:block;color:#706861;margin-top:3px}.invoice-grid-empty{padding:22px}
@media(max-width:980px){.charge-flow,.driver-map-layout{grid-template-columns:1fr}.charge-step-card:first-child{grid-row:auto}.driver-map-layout .charger-map{position:static;height:500px}.invoice-history-grid-head{display:none}.invoice-history-grid-row{grid-template-columns:1fr 1fr}.invoice-history-grid-row>div{border-left:0!important;border-top:1px solid #f0e8dc}.invoice-history-grid-row>div:first-child,.invoice-history-grid-row>div:nth-child(2){border-top:0}.charge-start-banner{align-items:stretch}.charge-credit{min-width:165px}}
@media(max-width:620px){.charge-start-banner{display:grid}.charge-flow{display:grid}.connector-choice{align-items:flex-start;flex-direction:column}.connector-choice-meta{text-align:left;display:flex;gap:10px;flex-wrap:wrap}.charge-review{grid-template-columns:1fr}.invoice-history-grid-row{grid-template-columns:1fr}.invoice-history-grid-row>div{border-top:1px solid #f0e8dc!important}.invoice-history-grid-row>div:first-child{border-top:0!important}.driver-map-layout .charger-map{height:420px}}

/* Charging map refinement v14 */
.map-layout,.driver-map-layout{grid-template-columns:minmax(0,1.65fr) minmax(320px,.65fr);gap:18px;align-items:start}
.map-panel{min-height:0;background:#e8e2d8;border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--shadow)}
.charger-map,.driver-map-layout .charger-map{height:clamp(540px,68vh,720px);min-height:540px;position:static;border-radius:18px}
.station-list{max-height:clamp(540px,68vh,720px);overflow-y:auto;overscroll-behavior:contain;padding-right:5px;scrollbar-width:thin}
.station-card{grid-template-columns:58px minmax(0,1fr) auto;align-items:start;padding:15px}
.station-card-main{min-width:0}.station-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.station-title-row h3{margin:0}
.hours-now{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;font-size:.66rem;font-weight:850;letter-spacing:.02em}.hours-now.open{background:#dff5e8;color:#126c3f}.hours-now.closed{background:#fde4e4;color:#a20d18}
.swift-map-legend{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:rgba(255,255,255,.94);border:1px solid #d8cec0;border-radius:10px;padding:7px 9px;box-shadow:0 4px 14px #0002;font:700 .72rem/1.2 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#3f3934}.swift-map-legend span{display:flex;align-items:center;gap:5px}.legend-dot{width:10px;height:10px;border-radius:50%;display:inline-block}.legend-dot.available{background:#198754}.legend-dot.unavailable{background:#b20e19}
.swift-map-pin{width:58px;height:58px;border-radius:18px 18px 18px 5px}.swift-map-popup{min-width:250px}.map-popup-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}.map-popup-title>strong{font-size:1rem}.map-popup-hours{padding:6px 0 8px;color:#665d54;font-size:.82rem;border-bottom:1px solid #eee4d6}.map-popup-charger{display:grid;gap:2px;padding:9px 0;border-bottom:1px solid #eee4d6}.map-popup-charger>span,.map-popup-charger>small{color:#665d54;line-height:1.45}.map-popup-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.map-popup-actions a{text-align:center}
@media(max-width:1100px){.map-layout,.driver-map-layout{grid-template-columns:1fr}.charger-map,.driver-map-layout .charger-map{height:500px;min-height:500px}.station-list{max-height:none;overflow:visible;grid-template-columns:repeat(2,minmax(0,1fr))}.station-card{height:100%}}
@media(max-width:720px){.charger-map,.driver-map-layout .charger-map{height:clamp(360px,52dvh,500px);min-height:360px;border-radius:14px}.station-list{grid-template-columns:1fr}.map-panel{border-radius:14px}.swift-map-legend{font-size:.67rem;gap:7px;padding:6px 8px}.leaflet-control-attribution{font-size:9px}.swift-map-popup{min-width:0}}

/* Public website under-construction page v17 */
.construction-header{background:rgba(255,250,240,.92);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.construction-header-links{display:flex;align-items:center;gap:10px}
.construction-header-links a{font-weight:800;text-decoration:none;color:var(--ink);padding:11px 15px;border-radius:12px}
.construction-header-links a:not(.nav-cta):hover{background:#f4eadc}
.construction-page{min-height:calc(100svh - var(--header-h));background:radial-gradient(circle at 82% 18%,rgba(236,180,42,.17),transparent 31%),radial-gradient(circle at 15% 78%,rgba(162,13,24,.09),transparent 32%),linear-gradient(145deg,#fffaf0 0%,#fff 48%,#f8efe3 100%);overflow:hidden}
.construction-shell{width:min(1180px,90vw);min-height:calc(100svh - var(--header-h) - 150px);margin:0 auto;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(390px,.95fr);gap:72px;align-items:center;padding:64px 0 50px}
.construction-copy{position:relative;z-index:2}
.construction-kicker{display:inline-flex;align-items:center;gap:9px;color:#786d62;font-size:.78rem;font-weight:900;text-transform:uppercase;letter-spacing:.15em;margin-bottom:22px}
.construction-kicker span{width:10px;height:10px;border-radius:50%;background:#19a35b;box-shadow:0 0 0 7px rgba(25,163,91,.12)}
.construction-copy h1{font-size:clamp(3.4rem,6.8vw,6.7rem);line-height:.91;letter-spacing:-.065em;margin:0;color:#211d1a;max-width:780px}
.construction-copy h1::after{content:"";display:block;width:95px;height:7px;margin:28px 0 0;border-radius:99px;background:linear-gradient(90deg,#a20d18,#f1b72b)}
.construction-lead{max-width:650px;margin:28px 0 0;font-size:clamp(1.05rem,1.5vw,1.25rem);line-height:1.68;color:#665d54}
.construction-progress{max-width:620px;margin:34px 0 0}
.construction-progress-bar{height:8px;border-radius:99px;background:#eadfce;overflow:hidden}
.construction-progress-bar span{display:block;width:72%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#a20d18,#efaa20);position:relative;overflow:hidden}
.construction-progress-bar span::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.65),transparent);transform:translateX(-100%);animation:constructionShine 2.7s infinite}
.construction-progress-meta{display:flex;justify-content:space-between;gap:18px;margin-top:10px;font-size:.78rem;color:#776c62}.construction-progress-meta strong{color:#3c342e}
.construction-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:34px}.construction-actions .button,.construction-actions .secondary{min-width:155px;text-align:center}
.construction-note{margin:17px 0 0;color:#7a7067;font-size:.86rem}
.construction-visual{position:relative;width:min(480px,42vw);aspect-ratio:1;margin:auto;display:grid;place-items:center}
.charge-core{position:relative;z-index:3;width:52%;aspect-ratio:1;border-radius:38px;background:linear-gradient(150deg,#211d1a 0%,#342b25 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;box-shadow:0 38px 90px rgba(45,32,22,.25),inset 0 1px 0 rgba(255,255,255,.08);transform:rotate(7deg)}
.charge-core::before{content:"";position:absolute;inset:10px;border:1px solid rgba(244,204,99,.27);border-radius:30px}
.charge-bolt{font-size:5.2rem;line-height:.8;color:#f3b51f;text-shadow:0 0 30px rgba(243,181,31,.25);font-family:Arial,sans-serif}
.charge-core small{margin-top:17px;font-size:.62rem;font-weight:900;letter-spacing:.22em;color:#d6c7b8}.charge-core strong{margin-top:6px;font-size:.92rem;letter-spacing:.08em;color:#fff}
.charge-orbit{position:absolute;border:1px solid rgba(162,13,24,.20);border-radius:50%}.orbit-one{inset:8%;animation:constructionSpin 18s linear infinite}.orbit-two{inset:20%;border-color:rgba(239,170,32,.28);animation:constructionSpin 12s linear infinite reverse}
.charge-orbit::before,.charge-orbit::after{content:"";position:absolute;width:12px;height:12px;border-radius:50%;background:#a20d18;box-shadow:0 0 0 6px rgba(162,13,24,.10)}.charge-orbit::before{top:-6px;left:50%}.charge-orbit::after{bottom:12%;right:5%;background:#eda71d;box-shadow:0 0 0 6px rgba(237,167,29,.12)}
.charge-node{position:absolute;width:15px;height:15px;border-radius:50%;background:#211d1a;box-shadow:0 0 0 8px rgba(33,29,26,.08)}.node-a{left:2%;top:45%}.node-b{right:4%;top:22%;background:#a20d18}.node-c{right:12%;bottom:12%;background:#e7a41b}
.construction-strip{width:min(1180px,90vw);margin:0 auto 44px;border-top:1px solid #dfd4c4;display:grid;grid-template-columns:repeat(3,1fr)}
.construction-strip>div{display:grid;grid-template-columns:auto 1fr;column-gap:14px;padding:25px 28px 8px 0}.construction-strip>div+div{padding-left:28px;border-left:1px solid #dfd4c4}.construction-strip span{grid-row:1/3;color:#a20d18;font-size:.76rem;font-weight:900;letter-spacing:.08em}.construction-strip strong{font-size:.94rem}.construction-strip small{color:#776d64;margin-top:3px}
@keyframes constructionSpin{to{transform:rotate(360deg)}}
@keyframes constructionShine{55%,100%{transform:translateX(120%)}}
@media(max-width:900px){.construction-header-links a:not(.nav-cta){display:none}.construction-shell{grid-template-columns:1fr;gap:22px;min-height:auto;padding:54px 0 38px}.construction-copy{text-align:center}.construction-kicker{justify-content:center}.construction-copy h1{font-size:clamp(3.2rem,13vw,5.4rem);margin-inline:auto}.construction-copy h1::after{margin:24px auto 0}.construction-lead,.construction-progress{margin-left:auto;margin-right:auto}.construction-actions{justify-content:center}.construction-visual{width:min(390px,82vw);order:-1}.construction-strip{grid-template-columns:1fr;margin-bottom:30px}.construction-strip>div,.construction-strip>div+div{border-left:0;border-top:1px solid #dfd4c4;padding:18px 4px}.construction-strip>div:first-child{border-top:0}}
@media(max-width:520px){.construction-header{padding-left:16px;padding-right:16px}.construction-header .brand img{width:164px;height:auto}.construction-header-links .nav-cta{font-size:.78rem;padding:10px 12px}.construction-shell{width:min(92vw,560px);padding-top:34px}.construction-copy h1{font-size:clamp(2.8rem,14vw,4rem)}.construction-lead{font-size:1rem}.construction-actions{display:grid}.construction-actions .button,.construction-actions .secondary{width:100%}.construction-visual{width:min(300px,78vw)}.charge-core{border-radius:30px}.construction-progress-meta{font-size:.72rem}}

/* Public construction simplification v18 */
.construction-page{min-height:100svh;display:grid;align-items:center}
.construction-shell{min-height:100svh;padding:54px 0;box-sizing:border-box}
.construction-email{display:inline-flex;margin-top:30px;color:#a20d18;font-size:1.05rem;font-weight:850;text-decoration:none;letter-spacing:.01em;border-bottom:2px solid rgba(162,13,24,.22);padding-bottom:3px;transition:.18s ease}
.construction-email:hover{border-bottom-color:#a20d18;transform:translateY(-1px)}
@media(max-width:900px){.construction-shell{min-height:100svh;padding:34px 0 44px}.construction-email{justify-content:center;margin-top:26px}}
