/* leaflet/leaflet.css */
/* required styles */

.leaflet-pane,
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-tile-container,
.leaflet-pane > svg,
.leaflet-pane > canvas,
.leaflet-zoom-box,
.leaflet-image-layer,
.leaflet-layer {
	position: absolute;
	left: 0;
	top: 0;
	}
.leaflet-container {
	overflow: hidden;
	}
.leaflet-tile,
.leaflet-marker-icon,
.leaflet-marker-shadow {
	-webkit-user-select: none;
	   -moz-user-select: none;
	        user-select: none;
	  -webkit-user-drag: none;
	}
/* Prevents IE11 from highlighting tiles in blue */
.leaflet-tile::selection {
	background: transparent;
}
/* Safari renders non-retina tile on retina better with this, but Chrome is worse */
.leaflet-safari .leaflet-tile {
	image-rendering: -webkit-optimize-contrast;
	}
/* hack that prevents hw layers "stretching" when loading new tiles */
.leaflet-safari .leaflet-tile-container {
	width: 1600px;
	height: 1600px;
	-webkit-transform-origin: 0 0;
	}
.leaflet-marker-icon,
.leaflet-marker-shadow {
	display: block;
	}
/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */
/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */
.leaflet-container .leaflet-overlay-pane svg {
	max-width: none !important;
	max-height: none !important;
	}
.leaflet-container .leaflet-marker-pane img,
.leaflet-container .leaflet-shadow-pane img,
.leaflet-container .leaflet-tile-pane img,
.leaflet-container img.leaflet-image-layer,
.leaflet-container .leaflet-tile {
	max-width: none !important;
	max-height: none !important;
	width: auto;
	padding: 0;
	}

.leaflet-container img.leaflet-tile {
	/* See: https://bugs.chromium.org/p/chromium/issues/detail?id=600120 */
	mix-blend-mode: plus-lighter;
}

.leaflet-container.leaflet-touch-zoom {
	-ms-touch-action: pan-x pan-y;
	touch-action: pan-x pan-y;
	}
.leaflet-container.leaflet-touch-drag {
	-ms-touch-action: pinch-zoom;
	/* Fallback for FF which doesn't support pinch-zoom */
	touch-action: none;
	touch-action: pinch-zoom;
}
.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom {
	-ms-touch-action: none;
	touch-action: none;
}
.leaflet-container {
	-webkit-tap-highlight-color: transparent;
}
.leaflet-container a {
	-webkit-tap-highlight-color: rgba(51, 181, 229, 0.4);
}
.leaflet-tile {
	filter: inherit;
	visibility: hidden;
	}
.leaflet-tile-loaded {
	visibility: inherit;
	}
.leaflet-zoom-box {
	width: 0;
	height: 0;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	z-index: 800;
	}
/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */
.leaflet-overlay-pane svg {
	-moz-user-select: none;
	}

.leaflet-pane         { z-index: 400; }

.leaflet-tile-pane    { z-index: 200; }
.leaflet-overlay-pane { z-index: 400; }
.leaflet-shadow-pane  { z-index: 500; }
.leaflet-marker-pane  { z-index: 600; }
.leaflet-tooltip-pane   { z-index: 650; }
.leaflet-popup-pane   { z-index: 700; }

.leaflet-map-pane canvas { z-index: 100; }
.leaflet-map-pane svg    { z-index: 200; }

.leaflet-vml-shape {
	width: 1px;
	height: 1px;
	}
.lvml {
	behavior: url(#default#VML);
	display: inline-block;
	position: absolute;
	}


/* control positioning */

.leaflet-control {
	position: relative;
	z-index: 800;
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}
.leaflet-top,
.leaflet-bottom {
	position: absolute;
	z-index: 1000;
	pointer-events: none;
	}
.leaflet-top {
	top: 0;
	}
.leaflet-right {
	right: 0;
	}
.leaflet-bottom {
	bottom: 0;
	}
.leaflet-left {
	left: 0;
	}
.leaflet-control {
	float: left;
	clear: both;
	}
.leaflet-right .leaflet-control {
	float: right;
	}
.leaflet-top .leaflet-control {
	margin-top: 10px;
	}
.leaflet-bottom .leaflet-control {
	margin-bottom: 10px;
	}
.leaflet-left .leaflet-control {
	margin-left: 10px;
	}
.leaflet-right .leaflet-control {
	margin-right: 10px;
	}


/* zoom and fade animations */

.leaflet-fade-anim .leaflet-popup {
	opacity: 0;
	-webkit-transition: opacity 0.2s linear;
	   -moz-transition: opacity 0.2s linear;
	        transition: opacity 0.2s linear;
	}
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
	opacity: 1;
	}
.leaflet-zoom-animated {
	-webkit-transform-origin: 0 0;
	    -ms-transform-origin: 0 0;
	        transform-origin: 0 0;
	}
svg.leaflet-zoom-animated {
	will-change: transform;
}

.leaflet-zoom-anim .leaflet-zoom-animated {
	-webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1);
	   -moz-transition:    -moz-transform 0.25s cubic-bezier(0,0,0.25,1);
	        transition:         transform 0.25s cubic-bezier(0,0,0.25,1);
	}
.leaflet-zoom-anim .leaflet-tile,
.leaflet-pan-anim .leaflet-tile {
	-webkit-transition: none;
	   -moz-transition: none;
	        transition: none;
	}

.leaflet-zoom-anim .leaflet-zoom-hide {
	visibility: hidden;
	}


/* cursors */

.leaflet-interactive {
	cursor: pointer;
	}
.leaflet-grab {
	cursor: -webkit-grab;
	cursor:    -moz-grab;
	cursor:         grab;
	}
.leaflet-crosshair,
.leaflet-crosshair .leaflet-interactive {
	cursor: crosshair;
	}
.leaflet-popup-pane,
.leaflet-control {
	cursor: auto;
	}
.leaflet-dragging .leaflet-grab,
.leaflet-dragging .leaflet-grab .leaflet-interactive,
.leaflet-dragging .leaflet-marker-draggable {
	cursor: move;
	cursor: -webkit-grabbing;
	cursor:    -moz-grabbing;
	cursor:         grabbing;
	}

/* marker & overlays interactivity */
.leaflet-marker-icon,
.leaflet-marker-shadow,
.leaflet-image-layer,
.leaflet-pane > svg path,
.leaflet-tile-container {
	pointer-events: none;
	}

.leaflet-marker-icon.leaflet-interactive,
.leaflet-image-layer.leaflet-interactive,
.leaflet-pane > svg path.leaflet-interactive,
svg.leaflet-image-layer.leaflet-interactive path {
	pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */
	pointer-events: auto;
	}

/* visual tweaks */

.leaflet-container {
	background: #ddd;
	outline-offset: 1px;
	}
.leaflet-container a {
	color: #0078A8;
	}
.leaflet-zoom-box {
	border: 2px dotted #38f;
	background: rgba(255,255,255,0.5);
	}


/* general typography */
.leaflet-container {
	font-family: "Helvetica Neue", Arial, Helvetica, sans-serif;
	font-size: 12px;
	font-size: 0.75rem;
	line-height: 1.5;
	}


/* general toolbar styles */

.leaflet-bar {
	box-shadow: 0 1px 5px rgba(0,0,0,0.65);
	border-radius: 4px;
	}
.leaflet-bar a {
	background-color: #fff;
	border-bottom: 1px solid #ccc;
	width: 26px;
	height: 26px;
	line-height: 26px;
	display: block;
	text-align: center;
	text-decoration: none;
	color: black;
	}
.leaflet-bar a,
.leaflet-control-layers-toggle {
	background-position: 50% 50%;
	background-repeat: no-repeat;
	display: block;
	}
.leaflet-bar a:hover,
.leaflet-bar a:focus {
	background-color: #f4f4f4;
	}
.leaflet-bar a:first-child {
	border-top-left-radius: 4px;
	border-top-right-radius: 4px;
	}
.leaflet-bar a:last-child {
	border-bottom-left-radius: 4px;
	border-bottom-right-radius: 4px;
	border-bottom: none;
	}
.leaflet-bar a.leaflet-disabled {
	cursor: default;
	background-color: #f4f4f4;
	color: #bbb;
	}

.leaflet-touch .leaflet-bar a {
	width: 30px;
	height: 30px;
	line-height: 30px;
	}
.leaflet-touch .leaflet-bar a:first-child {
	border-top-left-radius: 2px;
	border-top-right-radius: 2px;
	}
.leaflet-touch .leaflet-bar a:last-child {
	border-bottom-left-radius: 2px;
	border-bottom-right-radius: 2px;
	}

/* zoom control */

.leaflet-control-zoom-in,
.leaflet-control-zoom-out {
	font: bold 18px 'Lucida Console', Monaco, monospace;
	text-indent: 1px;
	}

.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out  {
	font-size: 22px;
	}


/* layers control */

.leaflet-control-layers {
	box-shadow: 0 1px 5px rgba(0,0,0,0.4);
	background: #fff;
	border-radius: 5px;
	}
.leaflet-control-layers-toggle {
	background-image: url(/assets/leaflet/images/layers.png);
	width: 36px;
	height: 36px;
	}
.leaflet-retina .leaflet-control-layers-toggle {
	background-image: url(/assets/leaflet/images/layers-2x.png);
	background-size: 26px 26px;
	}
.leaflet-touch .leaflet-control-layers-toggle {
	width: 44px;
	height: 44px;
	}
.leaflet-control-layers .leaflet-control-layers-list,
.leaflet-control-layers-expanded .leaflet-control-layers-toggle {
	display: none;
	}
.leaflet-control-layers-expanded .leaflet-control-layers-list {
	display: block;
	position: relative;
	}
.leaflet-control-layers-expanded {
	padding: 6px 10px 6px 6px;
	color: #333;
	background: #fff;
	}
.leaflet-control-layers-scrollbar {
	overflow-y: scroll;
	overflow-x: hidden;
	padding-right: 5px;
	}
.leaflet-control-layers-selector {
	margin-top: 2px;
	position: relative;
	top: 1px;
	}
.leaflet-control-layers label {
	display: block;
	font-size: 13px;
	font-size: 1.08333em;
	}
.leaflet-control-layers-separator {
	height: 0;
	border-top: 1px solid #ddd;
	margin: 5px -10px 5px -6px;
	}

/* Default icon URLs */
.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */
	background-image: url(/assets/leaflet/images/marker-icon.png);
	}


/* attribution and scale controls */

.leaflet-container .leaflet-control-attribution {
	background: #fff;
	background: rgba(255, 255, 255, 0.8);
	margin: 0;
	}
.leaflet-control-attribution,
.leaflet-control-scale-line {
	padding: 0 5px;
	color: #333;
	line-height: 1.4;
	}
.leaflet-control-attribution a {
	text-decoration: none;
	}
.leaflet-control-attribution a:hover,
.leaflet-control-attribution a:focus {
	text-decoration: underline;
	}
.leaflet-attribution-flag {
	display: inline !important;
	vertical-align: baseline !important;
	width: 1em;
	height: 0.6669em;
	}
.leaflet-left .leaflet-control-scale {
	margin-left: 5px;
	}
.leaflet-bottom .leaflet-control-scale {
	margin-bottom: 5px;
	}
.leaflet-control-scale-line {
	border: 2px solid #777;
	border-top: none;
	line-height: 1.1;
	padding: 2px 5px 1px;
	white-space: nowrap;
	-moz-box-sizing: border-box;
	     box-sizing: border-box;
	background: rgba(255, 255, 255, 0.8);
	text-shadow: 1px 1px #fff;
	}
.leaflet-control-scale-line:not(:first-child) {
	border-top: 2px solid #777;
	border-bottom: none;
	margin-top: -2px;
	}
.leaflet-control-scale-line:not(:first-child):not(:last-child) {
	border-bottom: 2px solid #777;
	}

.leaflet-touch .leaflet-control-attribution,
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	box-shadow: none;
	}
.leaflet-touch .leaflet-control-layers,
.leaflet-touch .leaflet-bar {
	border: 2px solid rgba(0,0,0,0.2);
	background-clip: padding-box;
	}


/* popup */

.leaflet-popup {
	position: absolute;
	text-align: center;
	margin-bottom: 20px;
	}
.leaflet-popup-content-wrapper {
	padding: 1px;
	text-align: left;
	border-radius: 12px;
	}
.leaflet-popup-content {
	margin: 13px 24px 13px 20px;
	line-height: 1.3;
	font-size: 13px;
	font-size: 1.08333em;
	min-height: 1px;
	}
.leaflet-popup-content p {
	margin: 17px 0;
	margin: 1.3em 0;
	}
.leaflet-popup-tip-container {
	width: 40px;
	height: 20px;
	position: absolute;
	left: 50%;
	margin-top: -1px;
	margin-left: -20px;
	overflow: hidden;
	pointer-events: none;
	}
.leaflet-popup-tip {
	width: 17px;
	height: 17px;
	padding: 1px;

	margin: -10px auto 0;
	pointer-events: auto;

	-webkit-transform: rotate(45deg);
	   -moz-transform: rotate(45deg);
	    -ms-transform: rotate(45deg);
	        transform: rotate(45deg);
	}
.leaflet-popup-content-wrapper,
.leaflet-popup-tip {
	background: white;
	color: #333;
	box-shadow: 0 3px 14px rgba(0,0,0,0.4);
	}
.leaflet-container a.leaflet-popup-close-button {
	position: absolute;
	top: 0;
	right: 0;
	border: none;
	text-align: center;
	width: 24px;
	height: 24px;
	font: 16px/24px Tahoma, Verdana, sans-serif;
	color: #757575;
	text-decoration: none;
	background: transparent;
	}
.leaflet-container a.leaflet-popup-close-button:hover,
.leaflet-container a.leaflet-popup-close-button:focus {
	color: #585858;
	}
.leaflet-popup-scrolled {
	overflow: auto;
	}

.leaflet-oldie .leaflet-popup-content-wrapper {
	-ms-zoom: 1;
	}
.leaflet-oldie .leaflet-popup-tip {
	width: 24px;
	margin: 0 auto;

	-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
	filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
	}

.leaflet-oldie .leaflet-control-zoom,
.leaflet-oldie .leaflet-control-layers,
.leaflet-oldie .leaflet-popup-content-wrapper,
.leaflet-oldie .leaflet-popup-tip {
	border: 1px solid #999;
	}


/* div icon */

.leaflet-div-icon {
	background: #fff;
	border: 1px solid #666;
	}


/* Tooltip */
/* Base styles for the element that has a tooltip */
.leaflet-tooltip {
	position: absolute;
	padding: 6px;
	background-color: #fff;
	border: 1px solid #fff;
	border-radius: 3px;
	color: #222;
	white-space: nowrap;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	pointer-events: none;
	box-shadow: 0 1px 3px rgba(0,0,0,0.4);
	}
.leaflet-tooltip.leaflet-interactive {
	cursor: pointer;
	pointer-events: auto;
	}
.leaflet-tooltip-top:before,
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	position: absolute;
	pointer-events: none;
	border: 6px solid transparent;
	background: transparent;
	content: "";
	}

/* Directions */

.leaflet-tooltip-bottom {
	margin-top: 6px;
}
.leaflet-tooltip-top {
	margin-top: -6px;
}
.leaflet-tooltip-bottom:before,
.leaflet-tooltip-top:before {
	left: 50%;
	margin-left: -6px;
	}
.leaflet-tooltip-top:before {
	bottom: 0;
	margin-bottom: -12px;
	border-top-color: #fff;
	}
.leaflet-tooltip-bottom:before {
	top: 0;
	margin-top: -12px;
	margin-left: -6px;
	border-bottom-color: #fff;
	}
.leaflet-tooltip-left {
	margin-left: -6px;
}
.leaflet-tooltip-right {
	margin-left: 6px;
}
.leaflet-tooltip-left:before,
.leaflet-tooltip-right:before {
	top: 50%;
	margin-top: -6px;
	}
.leaflet-tooltip-left:before {
	right: 0;
	margin-right: -12px;
	border-left-color: #fff;
	}
.leaflet-tooltip-right:before {
	left: 0;
	margin-left: -12px;
	border-right-color: #fff;
	}

/* Printing */

@media print {
	/* Prevent printers from removing background-images of controls. */
	.leaflet-control {
		-webkit-print-color-adjust: exact;
		print-color-adjust: exact;
		}
	}

/* app.css */
/* =========================================================
   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}}

.error-text{color:#a20d18;font-weight:600;overflow-wrap:anywhere}

/* Update 22: parallel charging session cards */
.active-session-stack{display:grid;gap:18px;margin-bottom:22px}.active-session-stack .active-session{margin:0}.active-session .info-box{margin:14px 0}.active-session .card-head small{display:block;margin-top:4px;color:var(--muted,#756d64)}
@media (min-width:1100px){.active-session-stack:has(.active-session:nth-child(2)){grid-template-columns:repeat(2,minmax(0,1fr))}.active-session-stack:has(.active-session:nth-child(2)) .active-session .stats.compact{grid-template-columns:repeat(2,minmax(0,1fr))}}
.active-session-live-meta{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:12px 0;color:var(--muted,#756d64);font-size:.86rem}


/* Update 46: driver self-signup and consent */
.driver-auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;margin:0 0 24px;background:#f5efe5;border:1px solid #e9dece;border-radius:14px}.driver-auth-tabs button{border:0;background:transparent;border-radius:10px;padding:11px 14px;font:inherit;font-weight:800;color:#665e56;cursor:pointer}.driver-auth-tabs button.active{background:#fff;color:#a20d18;box-shadow:0 3px 12px rgba(52,37,24,.09)}.auth-primary{width:100%;margin-top:6px}.auth-switch-copy{text-align:center;color:#756d64;font-size:.88rem;margin:18px 0 0}.auth-text-button{border:0;background:none;color:#a20d18;font:inherit;font-weight:800;padding:0;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.auth-name-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.auth-name-grid label{margin-top:0}.auth-card label small{color:#7c746c;font-weight:500}.terms-consent{display:grid!important;grid-template-columns:auto 1fr!important;align-items:start!important;gap:10px!important;padding:13px 14px;border:1px solid #eadfce;border-radius:12px;background:#fffaf2;font-weight:550!important;line-height:1.45}.terms-consent input{width:18px;height:18px;margin:2px 0 0;padding:0;accent-color:#a20d18}.terms-consent a{color:#a20d18;font-weight:800}.signup-offer{display:grid;gap:5px;padding:15px 16px;margin:16px 0;border:1px solid #ead7aa;border-radius:14px;background:linear-gradient(135deg,#fffaf0,#fff4d8)}.signup-offer strong{color:#a20d18;font-size:.95rem}.signup-offer span{color:#665e56;font-size:.87rem;line-height:1.5}.signup-success{text-align:center}.signup-success-icon{display:grid;place-items:center;width:52px;height:52px;margin:0 auto 14px;border-radius:50%;background:#e0f6e9;color:#087b39;font-size:1.5rem;font-weight:900}.signup-success .signup-offer{text-align:left}.form-message.success{color:#087b39;font-weight:700}.auth-card input[type="checkbox"]:focus{box-shadow:none}
@media(max-width:560px){.auth-card{max-width:none}.auth-name-grid{grid-template-columns:1fr;gap:0}.driver-auth-tabs{margin-bottom:20px}.terms-consent{font-size:.84rem!important}}

.signup-offer-meta{display:block;color:#8a6b25;font-size:.78rem;line-height:1.45;font-weight:650;margin-top:3px}.signup-offer.hidden{display:none!important}

/* Update 51: customer-facing charger details follow admin configuration */
.station-public-description{margin-top:5px!important;color:#665d54;line-height:1.45}
.map-popup-address{font-size:.82rem;color:#665d54;line-height:1.4;padding:2px 0 5px}
.map-popup-customer-info{display:grid;gap:4px;margin-top:7px;padding-top:7px;border-top:1px dashed #eee4d6;color:#665d54;line-height:1.4}
.map-popup-customer-info p{margin:0;color:#332d28}
.map-popup-customer-info small{display:block}

/* Update 59: public terms and refund policy */
.terms-page{width:min(1160px,92vw);margin:0 auto;padding:54px 0 68px}
.terms-hero{padding:42px clamp(24px,5vw,62px);border-radius:28px;background:radial-gradient(circle at 92% 14%,rgba(244,204,99,.24),transparent 28%),linear-gradient(135deg,#251e1c,#98121a);color:#fff;box-shadow:0 20px 48px rgba(48,25,22,.17)}
.terms-hero>span{display:inline-flex;align-items:center;gap:8px;color:#f4cc63;text-transform:uppercase;letter-spacing:.12em;font-size:.74rem;font-weight:850}.terms-hero>span::before{content:"";width:26px;height:2px;background:#f4cc63}
.terms-hero h1{max-width:690px;margin:16px 0 14px;font-size:clamp(2.25rem,5vw,4.4rem);line-height:1.02;letter-spacing:-.055em}.terms-hero h1 em{color:#f4cc63;font-style:normal}.terms-hero p{max-width:610px;margin:0;color:#f5e8e5;font-size:1.07rem;line-height:1.6}
.terms-meta{display:flex;flex-wrap:wrap;gap:9px;margin-top:25px}.terms-meta span{padding:8px 11px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.09);color:#fff;font-size:.8rem;font-weight:700}
.terms-layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:30px;align-items:start;margin-top:32px}.terms-toc{position:sticky;top:20px;display:grid;gap:5px;padding:18px;border:1px solid #e6dcd0;border-radius:18px;background:#fffaf4}.terms-toc strong{padding:3px 8px 10px;color:#2e2622}.terms-toc a{padding:8px;border-radius:8px;color:#766a61;font-size:.88rem;font-weight:720;text-decoration:none}.terms-toc a:hover{background:#f5ece4;color:#a20d18}
.terms-content{padding:clamp(22px,4vw,46px);border:1px solid #e7ddd2;border-radius:24px;background:#fff;box-shadow:0 14px 34px rgba(63,43,26,.06)}.terms-content section+section{margin-top:36px;padding-top:34px;border-top:1px solid #eee5dc}.terms-content h2{margin:0 0 14px;color:#211d1a;font-size:1.45rem;letter-spacing:-.025em}.terms-content h3{margin:22px 0 8px;color:#3b302a;font-size:1.02rem}.terms-content p{margin:0 0 13px;color:#5c514a;line-height:1.72}.terms-content a{color:#a20d18;font-weight:750;text-underline-offset:3px}.terms-note{margin:19px 0;padding:18px 20px;border:1px solid #f1c773;border-radius:15px;background:linear-gradient(135deg,#fff9e9,#fff2d5)}.terms-note strong{display:block;color:#8a4b00}.terms-note p{margin:7px 0 0;color:#654b29;line-height:1.62}
.terms-contact{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden;border:1px solid #e6dcd0;border-radius:14px;background:#e6dcd0}.terms-contact>div{display:grid;gap:4px;padding:15px;background:#fffaf6}.terms-contact strong{font-size:.75rem;letter-spacing:.04em;text-transform:uppercase;color:#8b7c70}.terms-contact span,.terms-contact a{color:#3a302a;line-height:1.45}
@media(max-width:820px){.terms-page{width:min(94vw,720px);padding:24px 0 42px}.terms-hero{padding:30px 24px;border-radius:22px}.terms-hero h1{font-size:clamp(2.15rem,11vw,3.35rem)}.terms-layout{grid-template-columns:1fr;gap:18px;margin-top:20px}.terms-toc{position:static;grid-template-columns:repeat(2,minmax(0,1fr));padding:13px}.terms-toc strong{grid-column:1/-1}.terms-content{padding:26px 21px;border-radius:20px}.terms-content section+section{margin-top:29px;padding-top:27px}.terms-contact{grid-template-columns:1fr}}
@media(max-width:440px){.terms-hero{padding:27px 20px}.terms-hero p{font-size:.98rem}.terms-meta{gap:6px}.terms-meta span{font-size:.72rem;padding:7px 9px}.terms-toc{grid-template-columns:1fr}.terms-toc strong{grid-column:auto}.terms-content{padding:23px 17px}.terms-content h2{font-size:1.28rem}.terms-note{padding:16px}.terms-contact>div{padding:13px}}

/* Update 65: mobile driver signup scrolling */
@media (max-width: 720px) {
  .driver-page:has(#driverSignupPanel:not(.hidden)) {
    height: auto !important;
    min-height: 100dvh !important;
    overflow: visible !important;
    padding-bottom: 40px !important;
  }

  .driver-page:has(#driverSignupPanel:not(.hidden)) #driverLoggedOut {
    height: auto !important;
    max-height: none !important;
    overflow: visible !important;
    margin-bottom: 30px !important;
  }

  body:has(#driverSignupPanel:not(.hidden)) {
    height: auto !important;
    min-height: 100dvh !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;
  }

  #driverSignupPanel {
    overflow: visible !important;
  }

  #driverSignup {
    padding-bottom: 20px;
  }
}

/* admin.css */
.admin-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;gap:12px}.admin-form{background:#fff8e9;border:1px solid #ead399;padding:20px;border-radius:12px;margin-bottom:18px}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(180px,1fr));gap:14px}.form-grid label{display:grid;gap:5px;font-weight:650}.form-grid input,.form-grid select,.form-grid textarea,.filter-row input,.filter-row select{font:inherit;padding:11px;border:1px solid #bbb;border-radius:8px;background:#fff}.form-grid button{align-self:end}.form-grid .wide{grid-column:1/-1}.table-wrap{overflow:auto;background:#fff;border:1px solid #eee0c7;border-radius:12px;margin-bottom:20px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid #e7ddcb;vertical-align:top}th{color:#706861;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}tbody tr:hover{background:#fffaf0}.success-box,.error-box,.warning-box,.info-box{padding:13px;border-radius:9px;margin:12px 0}.success-box{background:#dcf5e6;color:#126c3f}.error-box{background:#fde4e4;color:#a20d18}.warning-box{background:#fff4db;border:1px solid #e8bd59;color:#624000}.info-box{background:#f4efe5;border:1px solid #ded1ba;color:#544c42}.charger-map{width:100%;border-radius:16px}.map-panel{display:block!important;padding:0!important}.driver-page{max-width:1700px;margin:auto}.driver-shell{display:grid;grid-template-columns:255px minmax(0,1fr);gap:24px;align-items:start}.driver-nav{position:sticky;top:92px;background:#211d1a;color:#fff;border-radius:15px;padding:16px;display:grid;gap:10px}.driver-nav>.button{width:100%;text-align:center}.driver-nav nav{display:grid;gap:4px;margin-top:6px}.driver-nav nav button,.driver-nav nav a{display:block;width:100%;border:0;background:transparent;color:#e8e3df;text-align:left;padding:11px 12px;border-radius:8px;font:inherit;cursor:pointer}.driver-nav nav button:hover,.driver-nav nav a:hover,.driver-nav nav .active{background:#a20d18;color:#fff}.driver-support{padding:12px;color:#f4cc63;border-top:1px solid #4e4742;margin-top:8px}.driver-workspace{min-width:0}.button.gold{background:#c99316;color:#17120a}.button.danger{background:#a70d18;margin-right:.75rem}.danger-outline{border-color:#91222a!important;color:#91222a!important}button:disabled{opacity:.55;cursor:not-allowed}.driver-stats{grid-template-columns:repeat(4,1fr)}.driver-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}.driver-grid .wide{grid-column:1/-1}.driver-grid .card{margin:0}.card.inset{margin-top:20px}.active-session{margin:0 0 1.25rem;border-left:5px solid #c99316}.stats.compact{grid-template-columns:repeat(4,minmax(0,1fr));margin:1rem 0}.stats.compact article{min-height:auto;padding:1rem}.confirmation{padding:1rem;border:1px solid #ead9ad;background:#fff9e8;border-radius:12px;line-height:1.65}.data-list{display:grid;gap:9px}.data-row{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid #eee}.data-row:last-child{border:0}.section-heading{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:20px}.section-heading h2{font-size:2rem;margin-bottom:4px;color:#a20d18}.section-heading p{margin:0;color:#706861}.filter-row{display:flex;gap:10px;margin-bottom:14px}.filter-row input{flex:1}.check-grid{display:grid;gap:12px}.check-grid label,.check-label{display:flex!important;align-items:center;gap:8px}.faq-list{display:grid;gap:10px;margin-bottom:20px}.faq-list details{background:#fff;border:1px solid #e7ddcb;border-radius:12px;padding:16px}.faq-list summary{font-weight:750;cursor:pointer}.charger-detail-panel{background:#fff8e9;border:1px solid #e2c678;border-radius:12px;padding:18px;margin:15px 0}.command-console{display:grid;grid-template-columns:220px 1fr auto;gap:10px;align-items:end;margin:16px 0}.command-console label{display:grid;gap:5px;font-weight:650}.command-console textarea,.command-console select{font:inherit;padding:10px;border:1px solid #bbb;border-radius:8px;background:#fff}.severity-CRITICAL{color:#a20d18;font-weight:800}.severity-HIGH{color:#a45b00;font-weight:750}@media(max-width:1000px){.driver-shell{grid-template-columns:1fr}.driver-nav{position:static}.driver-nav nav{display:grid;grid-template-columns:repeat(3,1fr)}.form-grid,.driver-grid{grid-template-columns:1fr}.driver-grid .wide{grid-column:auto}.driver-stats{grid-template-columns:1fr 1fr}}@media(max-width:650px){.stats.compact{grid-template-columns:1fr 1fr}.driver-nav nav{grid-template-columns:1fr 1fr}.command-console{grid-template-columns:1fr}.section-heading{display:block}.section-heading>*+*{margin-top:12px}}@media(max-width:550px){.driver-stats{grid-template-columns:1fr}.driver-nav nav{grid-template-columns:1fr}.filter-row{display:grid}}

/* SwiftCharge major UX update */
.eyebrow{display:inline-block;font-size:.76rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#9a6a09;margin-bottom:6px}
.topup-mini-balance{min-width:190px;background:#211d1a;color:#fff;border-radius:14px;padding:13px 16px;display:grid;gap:1px;box-shadow:0 10px 28px #211d1a18}.topup-mini-balance span,.topup-mini-balance small{color:#ddd}.topup-mini-balance strong{font-size:1.85rem;color:#f4cc63}.topup-load-card{max-width:980px}.topup-intro h3{font-size:1.55rem;margin:.1rem 0 .35rem}.topup-intro p{color:#706861;max-width:720px}.token-amount-grid label span{min-height:112px;display:grid;place-content:center;gap:4px}.token-amount-grid span strong{font-size:1.35rem}.token-amount-grid span small{font-size:.9rem;color:#706861}.custom-topup{display:grid;gap:6px;max-width:380px;font-weight:700;margin:0 0 18px}.custom-topup input{font:inherit;padding:13px;border:1px solid #bbb;border-radius:9px}.custom-topup small{font-weight:500;color:#706861}.topup-submit-row{border-top:1px solid #e7ddcb;padding-top:18px;display:flex;justify-content:space-between;align-items:center;gap:20px}.topup-submit-row>div{display:grid;gap:3px}.topup-submit-row small{color:#706861}.topup-submit-row .button{white-space:nowrap}
.table-actions,.invoice-row-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.invoice-row-actions{justify-content:flex-end}.invoice-history-row{align-items:center}
.invoice-modal-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px}.invoice-modal-toolbar>div:first-child{display:grid}.invoice-modal-toolbar small{color:#706861}.invoice-sheet{width:min(210mm,100%);min-height:297mm;margin:0 auto;background:#fff;color:#181615;padding:16mm 16mm 14mm;border:1px solid #ded8cc;box-shadow:0 18px 60px #00000014;font-family:Arial,Helvetica,sans-serif}.invoice-paper-header{position:static;background:transparent;border:0;padding:0;display:flex;justify-content:space-between;align-items:flex-start}.invoice-paper-header img{width:205px;max-width:45%}.invoice-paper-header>div{text-align:right}.invoice-paper-header span{font-size:.72rem;font-weight:800;letter-spacing:.14em;color:#706861}.invoice-paper-header h2{font-size:1.5rem;color:#a20d18;margin:5px 0}.invoice-paper-header small{color:#706861}.invoice-rule{height:4px;background:#a20d18;margin:18px 0 22px}.invoice-paper-meta{display:grid;grid-template-columns:1fr 1fr;gap:36px;margin-bottom:25px}.invoice-paper-meta h3{font-size:.72rem;letter-spacing:.12em;color:#9a6a09;margin-bottom:8px}.invoice-paper-meta p{margin:3px 0;line-height:1.35}.invoice-paper-meta>div:last-child{padding-left:20px;border-left:1px solid #e7ddcb}.invoice-charge-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;background:#fff8e9;border:1px solid #ead399;border-radius:10px;padding:13px;margin:0 0 20px}.invoice-charge-meta div{display:grid;gap:2px}.invoice-charge-meta span{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#706861}.invoice-charge-meta strong{font-size:.88rem;overflow-wrap:anywhere}.invoice-table-wrap{overflow:visible}.invoice-table{border-collapse:collapse}.invoice-table th{background:#211d1a;color:#fff;border:0;font-size:.67rem;padding:9px}.invoice-table td{font-size:.78rem;padding:9px;border-bottom:1px solid #e7ddcb}.invoice-table th:nth-child(n+2),.invoice-table td:nth-child(n+2){text-align:right}.invoice-totals{width:min(310px,100%);margin:20px 0 0 auto;display:grid;gap:6px}.invoice-totals>div{display:flex;justify-content:space-between;padding:5px 2px}.invoice-grand-total{border-top:2px solid #a20d18;padding-top:10px!important;font-size:1.12rem;color:#a20d18}.invoice-paper-footer{position:static;background:transparent;color:#706861;padding:0;margin-top:38px;border-top:1px solid #e7ddcb;padding-top:14px}.invoice-paper-footer p{font-weight:700;color:#181615;margin:0 0 3px}.invoice-paper-footer small{font-size:.72rem}
.payment-pending,.payment-result{text-align:center;padding:32px}.payment-spinner{width:42px;height:42px;border:4px solid #ead399;border-top-color:#a20d18;border-radius:50%;margin:0 auto 18px;animation:swiftspin .8s linear infinite}@keyframes swiftspin{to{transform:rotate(360deg)}}
.gateway-card{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;background:#211d1a;color:#fff;border-radius:15px;padding:16px;margin-bottom:14px}.gateway-card>div{display:grid;gap:3px}.gateway-card span{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:#bbb}.gateway-card strong{font-size:1.1rem}.gateway-actions{align-items:center;justify-items:end}
.portal-shell{grid-template-columns:260px minmax(0,1fr);background:#f7f3eb}.portal-nav{padding:20px 14px;min-height:calc(100vh - 78px);position:sticky;top:78px;max-height:calc(100vh - 78px);overflow:auto}.portal-brand{padding:10px 9px 18px;border-bottom:1px solid #4a433e;margin-bottom:10px;display:grid;gap:5px}.portal-brand img{width:180px;max-width:100%;filter:brightness(0) invert(1)}.portal-brand span{font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;color:#bbb}.portal-nav nav{display:grid;gap:3px}.portal-nav nav a{border-left:3px solid transparent;padding:9px 11px}.portal-nav nav a:hover{background:#342f2b;color:#fff}.portal-nav nav a.active{border-left-color:#f4cc63;box-shadow:inset 0 0 0 1px #ffffff0d}.portal-logout{margin-top:16px;border:1px solid #6b625d;background:transparent;color:#fff;border-radius:8px;padding:10px;cursor:pointer}.portal-content{padding:28px 34px 45px;min-width:0}.portal-status-strip{display:flex;gap:22px;flex-wrap:wrap;background:#fff;border:1px solid #e7ddcb;border-radius:12px;padding:9px 13px;margin-bottom:18px;font-size:.78rem;color:#706861}.portal-status-strip span:first-child{font-weight:750;color:#181615}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#15844b;margin-right:5px}.portal-content>.card{box-shadow:0 8px 30px #2b21150a}.portal-content .page-title{margin-bottom:18px}.portal-content .page-title h1{font-size:2.25rem}
.lab-cockpit{display:grid;gap:16px}.lab-toolbar{background:linear-gradient(125deg,#211d1a,#342d26);color:#fff;border-radius:16px;padding:18px 20px;margin-bottom:0}.lab-toolbar h3{font-size:1.7rem;margin:0}.lab-toolbar small{color:#ccc}.lab-refresh-controls{display:flex;align-items:center;gap:12px}.lab-refresh-controls label{display:flex;align-items:center;gap:6px;font-size:.85rem}.lab-status-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.lab-status-grid article{background:#fff;border:1px solid #e7ddcb;border-radius:14px;padding:17px;display:grid;gap:3px}.lab-status-grid span{font-size:.75rem;color:#706861;text-transform:uppercase;letter-spacing:.04em}.lab-status-grid strong{font-size:1.15rem;overflow-wrap:anywhere}.lab-status-grid small{color:#706861}.lab-good{color:#15844b}.lab-bad{color:#a20d18}.lab-scenarios{display:flex;gap:10px;flex-wrap:wrap;padding:5px 0}.lab-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:16px}.lab-grid .card,.lab-events{margin:0}.lab-details{display:grid;grid-template-columns:1fr 1fr;gap:0 18px;margin:18px 0 0}.lab-details div{padding:9px 0;border-top:1px solid #eee;display:grid;gap:2px}.lab-details dt{font-size:.72rem;text-transform:uppercase;color:#706861}.lab-details dd{margin:0;font-weight:700;overflow-wrap:anywhere}.lab-start-form{display:grid;gap:14px}.lab-start-form label{display:grid;gap:6px;font-weight:700}.lab-start-form select{font:inherit;padding:11px;border:1px solid #bbb;border-radius:8px}.lab-events .table-wrap{margin:12px 0 0}.lab-payload{display:block;max-width:420px;white-space:normal;overflow-wrap:anywhere;font-size:.72rem;color:#544c42}
@media(max-width:1100px){.gateway-card,.lab-status-grid{grid-template-columns:1fr 1fr}.lab-grid{grid-template-columns:1fr}.portal-shell{grid-template-columns:230px minmax(0,1fr)}}
@media(max-width:850px){.portal-nav{position:static;display:none}.portal-content{padding:22px}.topup-submit-row,.invoice-modal-toolbar{align-items:stretch;flex-direction:column}.topup-mini-balance{min-width:160px}.invoice-paper-meta{gap:18px}.invoice-sheet{padding:11mm}.lab-refresh-controls{align-items:flex-end;flex-direction:column}}
@media(max-width:620px){.gateway-card,.lab-status-grid,.invoice-paper-meta,.invoice-charge-meta,.lab-details{grid-template-columns:1fr}.invoice-paper-meta>div:last-child{padding-left:0;border-left:0;border-top:1px solid #e7ddcb;padding-top:14px}.invoice-paper-header{gap:12px}.invoice-paper-header img{width:150px}.invoice-sheet{padding:8mm;min-height:0}.invoice-table th:nth-child(4),.invoice-table td:nth-child(4){display:none}}
@media print{body *{visibility:hidden!important}.driver-modal,.driver-modal *,.invoice-sheet,.invoice-sheet *{visibility:visible!important}.driver-modal{position:absolute!important;inset:0!important;background:#fff!important;padding:0!important;display:block!important}.driver-modal-card{width:210mm!important;max-width:none!important;max-height:none!important;overflow:visible!important;padding:0!important;margin:0!important;box-shadow:none!important;border-radius:0!important}.driver-modal-card>.modal-close,.invoice-modal-toolbar{display:none!important}.invoice-sheet{position:absolute;left:0;top:0;width:210mm!important;min-height:297mm!important;border:0!important;box-shadow:none!important;margin:0!important;padding:16mm!important}@page{size:A4;margin:0}}


/* Operator control centre update v11 */
.operator-kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:22px}.operator-overview-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.ops-panel{margin:0}.ops-panel.wide{grid-column:1/-1}.ops-health-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.ops-health-card{border:1px solid #e5dac9;border-radius:13px;padding:15px;background:#fff;display:grid;gap:4px}.ops-health-card span{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:#706861;font-weight:700}.ops-health-card strong{font-size:1.55rem}.ops-health-card small{color:#706861}.ops-health-card.good{border-left:4px solid #198754}.ops-health-card.bad{border-left:4px solid #b20e19}.ops-health-card.info{border-left:4px solid #c99316}.ops-metric-list{display:grid;gap:0}.ops-metric-list>div,.ops-list-row{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:12px 0;border-bottom:1px solid #eee4d6}.ops-metric-list>div:last-child,.ops-list-row:last-child{border-bottom:0}.ops-metric-list span,.ops-list-row small{color:#706861}.ops-list-row span{display:grid;gap:3px}.ops-list-row a{white-space:nowrap}.portal-content>.card{border-radius:18px}.portal-content .table-wrap{border-radius:12px}.portal-content table td{vertical-align:middle}
@media(max-width:1050px){.operator-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.operator-overview-grid{grid-template-columns:1fr}.ops-panel.wide{grid-column:auto}.ops-health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.operator-kpis,.ops-health-grid{grid-template-columns:1fr}}

/* Operator charger onboarding + resilient portal v12 */
.portal-load-error{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;padding:26px;border:1px solid #e3c778;background:#fff9e9;border-radius:16px}.portal-load-error-icon{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:#a20d18;color:#fff;font-weight:900;font-size:1.25rem}.portal-load-error h3{margin:0 0 4px;color:#a20d18}.portal-load-error p{margin:0 0 4px}.portal-load-error small{color:#706861}
.charger-admin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:18px}.charger-admin-head h3{font-size:1.7rem;margin:0 0 6px}.charger-admin-head p{margin:0;max-width:780px;color:#706861}.charger-onboarding{background:#f8f3e9;border:1px solid #dfd1bc;border-radius:20px;padding:22px;margin:0 0 22px;box-shadow:0 18px 50px #2a1c0e0e}.charger-wizard-title{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding-bottom:18px;border-bottom:1px solid #e4d8c6;margin-bottom:20px}.charger-wizard-title h3{font-size:1.6rem;margin:0 0 5px}.charger-wizard-title p{margin:0;color:#706861}.charger-onboarding-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);gap:22px;align-items:start}.charger-form-column{display:grid;gap:14px}.charger-wizard-section{position:relative;display:grid;grid-template-columns:42px minmax(0,1fr);gap:14px;background:#fff;border:1px solid #e7ddcb;border-radius:16px;padding:18px}.wizard-section-number{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#211d1a;color:#fff;font-weight:850}.wizard-section-body h4{font-size:1.1rem;margin:5px 0 14px}.wizard-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.wizard-fields label,.connector-config-card label{display:grid;gap:6px;font-weight:700;font-size:.9rem}.wizard-fields input,.wizard-fields select,.connector-config-card input,.connector-config-card select{width:100%;font:inherit;padding:11px;border:1px solid #cfc2ae;border-radius:10px;background:#fff}.wizard-fields .wide{grid-column:1/-1}.location-mode-toggle{display:flex;gap:9px;flex-wrap:wrap;margin:0 0 12px}.location-mode-toggle label{position:relative;cursor:pointer}.location-mode-toggle input{position:absolute;opacity:0}.location-mode-toggle label{padding:10px 13px;border:1px solid #d9cbb8;border-radius:11px;background:#fff;font-weight:700}.location-mode-toggle label:has(input:checked){border-color:#a20d18;background:#fff4f4;box-shadow:0 0 0 2px #a20d1811;color:#a20d18}.charger-current-selector{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.charger-current-selector label{position:relative;cursor:pointer}.charger-current-selector input{position:absolute;opacity:0}.charger-current-selector span{min-height:76px;display:grid;align-content:center;gap:3px;border:1px solid #d9cbb8;border-radius:12px;padding:12px;background:#fff}.charger-current-selector strong{font-size:1.1rem}.charger-current-selector small{color:#706861}.charger-current-selector label:has(input:checked) span{border:2px solid #a20d18;background:#fff5f4;box-shadow:0 0 0 3px #a20d180b}.connector-config-grid{display:grid;gap:9px;margin-top:14px}.connector-config-card{display:grid;grid-template-columns:38px 1fr 1fr;gap:10px;align-items:end;padding:11px;background:#faf7f0;border:1px solid #e6dac8;border-radius:12px}.connector-config-number{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:#a20d18;color:#fff;font-weight:850;align-self:center}.charger-power-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}.charger-power-summary>div{display:grid;gap:2px;padding:10px 11px;border:1px solid #eadbc4;background:#fff;border-radius:10px}.charger-power-summary span{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#706861}.charger-power-summary strong{font-size:.9rem}.charger-power-summary .summary-warning{grid-column:1/-1;border-color:#d69225;background:#fff3d8;color:#7b4e04}.charger-create-submit{width:100%;padding:14px;font-size:1.02rem}.charger-map-column{position:sticky;top:96px}.charger-map-help{display:grid;gap:2px;margin-bottom:9px}.charger-map-help span{color:#706861;font-size:.88rem}.charger-onboarding-map{height:520px;width:100%;border:1px solid #d9cbb8;border-radius:16px;overflow:hidden;background:#ece7df}.charger-current-badge{display:inline-grid;place-items:center;min-width:54px;padding:6px 9px;border-radius:9px;font-weight:900;font-size:.75rem;letter-spacing:.05em;background:#211d1a;color:#fff}.charger-current-badge.DC{background:#a20d18}.charger-current-badge.AC{background:#1b6e93}.charger-current-badge.AC-DC{background:#6e3c89}.charger-created-box{padding:18px;border-radius:15px;border:1px solid #94caa7;background:#eefaf2;margin:0 0 18px}.charger-created-box h3{margin:0 0 4px;color:#126c3f}.charger-created-box p{margin:7px 0}.credential-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}.credential-grid>div{display:grid;gap:4px;background:#fff;border:1px solid #cfe4d6;border-radius:10px;padding:11px}.credential-grid span{font-size:.72rem;text-transform:uppercase;color:#706861}.credential-grid code{overflow-wrap:anywhere;font-size:.83rem}.charger-map-column .info-box{margin-top:12px}
@media(max-width:1200px){.charger-onboarding-grid{grid-template-columns:1fr}.charger-map-column{position:static}.charger-onboarding-map{height:440px}}
@media(max-width:720px){.charger-admin-head,.charger-wizard-title{display:grid}.wizard-fields,.charger-current-selector,.charger-power-summary{grid-template-columns:1fr}.connector-config-card{grid-template-columns:34px 1fr}.connector-config-card label:last-child{grid-column:2}.portal-load-error{grid-template-columns:auto 1fr}.portal-load-error button{grid-column:1/-1}.credential-grid{grid-template-columns:1fr}}

/* Charger availability schedule v14 */
.charger-hours-card{display:grid;gap:13px;margin-top:15px;padding:15px;border:1px solid #e3d6c3;border-radius:14px;background:#faf7f1}.charger-hours-heading{display:grid;grid-template-columns:minmax(0,1fr) minmax(180px,240px);gap:14px;align-items:end}.charger-hours-heading>div{display:grid;gap:3px}.charger-hours-heading>div>span{color:#706861;font-size:.84rem;line-height:1.4}.charger-hours-heading>label{display:grid;gap:5px;font-size:.82rem;font-weight:750}.charger-hours-heading select{font:inherit;padding:10px;border:1px solid #cfc2ae;border-radius:9px;background:#fff}.hours-mode-toggle{display:grid;grid-template-columns:1fr 1fr;gap:9px}.hours-mode-toggle label{position:relative;cursor:pointer}.hours-mode-toggle input{position:absolute;opacity:0}.hours-mode-toggle label>span{display:grid;gap:2px;padding:11px 12px;border:1px solid #d9cbb8;border-radius:11px;background:#fff}.hours-mode-toggle small{color:#706861}.hours-mode-toggle label:has(input:checked)>span{border:2px solid #a20d18;background:#fff5f4;box-shadow:0 0 0 3px #a20d180b;color:#a20d18}.weekly-hours-grid{display:grid;gap:7px}.weekly-hours-row{display:grid;grid-template-columns:92px 1fr 1fr;gap:9px;align-items:end;padding:9px 10px;border:1px solid #e6dac8;border-radius:10px;background:#fff}.weekly-hours-row>label:not(.hours-day){display:grid;gap:4px;font-size:.75rem;color:#706861}.weekly-hours-row input[type=time]{width:100%;font:inherit;padding:9px;border:1px solid #d4c7b4;border-radius:8px;background:#fff}.hours-day{display:flex!important;align-items:center;gap:8px;font-weight:800!important;padding-bottom:8px}.hours-day input{width:17px;height:17px}.weekly-hours-row.hours-disabled{opacity:.55}.hours-live-summary{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:10px 12px;background:#211d1a;color:#fff;border-radius:10px}.hours-live-summary span{font-size:.76rem;color:#ddd1c6}.hours-live-summary strong{text-align:right}
@media(max-width:720px){.charger-hours-heading,.hours-mode-toggle{grid-template-columns:1fr}.weekly-hours-row{grid-template-columns:74px 1fr 1fr}.hours-live-summary{display:grid;gap:2px}.hours-live-summary strong{text-align:left}}
@media(max-width:430px){.weekly-hours-row{grid-template-columns:1fr 1fr}.hours-day{grid-column:1/-1;padding-bottom:0}.charger-hours-card{padding:12px}}


/* Native Android scan-to-charge QR management v16 */
.charger-qr-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,340px);gap:24px;align-items:center;background:#fff;border:1px solid #dfd1bc;border-radius:20px;padding:22px;margin:0 0 22px;box-shadow:0 16px 45px #211d1a12}.charger-qr-copy h3{font-size:1.65rem;margin:0 0 3px;color:#a20d18}.charger-qr-copy p{color:#5f5750;line-height:1.5}.charger-qr-copy code{display:block;overflow-wrap:anywhere;background:#f7f3eb;border:1px solid #e4d8c6;border-radius:9px;padding:10px;margin:12px 0;font-size:.78rem}.charger-qr-actions{display:flex;gap:9px;flex-wrap:wrap;margin:14px 0 7px}.charger-qr-image-wrap{display:grid;justify-items:center;gap:6px;border:2px solid #211d1a;border-radius:18px;padding:18px;background:#fff}.charger-qr-image{width:min(280px,100%);aspect-ratio:1;object-fit:contain}.charger-qr-image-wrap>strong{font-size:1rem;letter-spacing:.1em}.charger-qr-image-wrap>span{font-size:.85rem;color:#706861;overflow-wrap:anywhere;max-width:100%}.charger-qr{border-color:#a20d18!important;color:#a20d18!important;font-weight:800!important}@media(max-width:820px){.charger-qr-panel{grid-template-columns:1fr}.charger-qr-image-wrap{order:-1}.charger-qr-image{width:min(250px,85vw)}}

.error-text{color:#a20d18;font-weight:600;overflow-wrap:anywhere}

/* Update 21: Test Charger Lab + animated portal branding */
.driver-brand{display:grid;gap:6px;padding:8px 6px 14px;border-bottom:1px solid #4a433e;margin-bottom:2px}.driver-brand img,.portal-brand-motion{width:100%!important;max-width:220px!important;height:auto!important;max-height:82px!important;object-fit:contain!important;border-radius:10px;background:#fffaf0;display:block}.driver-brand span,.portal-brand span{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:#c9c0b9}.portal-brand{gap:7px}.portal-brand .portal-brand-motion{filter:none!important}
.lab-session-builder{margin:0}.lab-selector-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:16px 0}.lab-selector-grid label{display:grid;gap:6px;font-weight:750}.lab-selector-grid select,.lab-auto-complete select{font:inherit;width:100%;padding:12px;border:1px solid #c9bcaa;border-radius:10px;background:#fff;color:#181615}.lab-readiness{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:12px 0}.lab-readiness article{display:flex;gap:10px;align-items:center;border:1px solid #e7ddcb;background:#fffaf4;border-radius:12px;padding:12px}.lab-readiness article>span{display:grid;place-items:center;width:28px;height:28px;flex:0 0 28px;border-radius:50%;font-weight:900}.lab-readiness article.ready>span{background:#dcf5e6;color:#126c3f}.lab-readiness article.blocked>span{background:#fde4e4;color:#a20d18}.lab-readiness strong,.lab-readiness small{display:block}.lab-readiness small{color:#706861;margin-top:2px}.lab-start-row{display:flex;justify-content:space-between;align-items:center;gap:18px;padding-top:14px;border-top:1px solid #eee0c7}.lab-start-row>div{display:grid;gap:2px}.lab-start-row small{color:#706861}.lab-source{display:inline-block;margin-left:8px;padding:4px 8px;border-radius:999px;font-size:.64rem;vertical-align:middle;letter-spacing:.07em}.lab-source.simulator{background:#dcf5e6;color:#126c3f}.lab-source.live{background:#fff0d4;color:#8b5400}.lab-live-warning{margin-bottom:12px}.lab-live-session{margin:0;border-left:4px solid #15844b}.lab-session-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:12px 0}.lab-session-metrics>div{padding:12px;background:#fffaf0;border:1px solid #eee0c7;border-radius:10px;display:grid;gap:3px}.lab-session-metrics span{font-size:.72rem;text-transform:uppercase;color:#706861}.lab-session-metrics strong{font-size:1.05rem}.lab-auto-complete{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;margin-top:14px}.lab-auto-complete label{display:grid;gap:5px;font-weight:700}.success-text{color:#15844b!important}.error-text{color:#a20d18!important}.lab-toolbar .lab-source{font-size:.6rem}.lab-control-card,.lab-scenario-card{min-height:100%}
@media(max-width:1050px){.lab-selector-grid{grid-template-columns:1fr 1fr}.lab-readiness{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.lab-selector-grid,.lab-readiness,.lab-session-metrics{grid-template-columns:1fr}.lab-start-row{align-items:stretch;flex-direction:column}.lab-start-row .button{width:100%}.lab-auto-complete{grid-template-columns:1fr}.driver-brand img,.portal-brand-motion{max-width:190px!important}}

/* Update 23 invoice control centre */
.invoice-admin-stats{margin:16px 0 20px}.invoice-filter-row label{display:flex;gap:6px;align-items:center;font-size:12px;color:#756d64}.invoice-filter-row label input{min-width:145px}.admin-invoice-preview{margin:0 0 20px;padding:22px;border:1px solid #e6d6bf;border-radius:22px;background:#fffdf9;box-shadow:0 16px 40px rgba(74,48,20,.08)}.admin-invoice-preview .card-head{margin-bottom:18px}.invoice-admin-parties,.invoice-admin-session{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:14px 0}.invoice-admin-parties>div,.invoice-admin-session>div{border:1px solid #eadfce;border-radius:16px;padding:15px;background:#fffaf2;display:grid;gap:4px}.invoice-admin-parties span,.invoice-admin-session span{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:#87786a}.invoice-admin-parties small{display:block;color:#6f665d}.invoice-admin-totals{display:flex;justify-content:flex-end;gap:22px;flex-wrap:wrap;margin-top:16px;padding-top:14px;border-top:1px solid #eadfce}.invoice-admin-totals span{display:grid;gap:3px;color:#756d64}.invoice-admin-totals strong{font-size:18px;color:#a80f1c}@media(max-width:760px){.invoice-admin-parties,.invoice-admin-session{grid-template-columns:1fr}.invoice-filter-row label{width:100%;justify-content:space-between}.invoice-filter-row label input{flex:1}}

/* Update 24: site month-end settlement and profit share */
.commercial-terms-card,.month-end-detail{margin:0 0 20px;padding:22px;border:1px solid #dfd1bc;border-radius:20px;background:#fffdf9;box-shadow:0 15px 42px rgba(55,34,14,.08)}
.month-end-builder{display:grid;gap:18px;margin-bottom:30px;padding:22px;border:1px solid #dfd1bc;border-radius:22px;background:linear-gradient(145deg,#fffdf9,#fff7ea)}
.month-end-builder-head{display:flex;justify-content:space-between;gap:20px;align-items:start}.month-end-builder-head h3{margin:2px 0 6px;font-size:1.55rem;color:#a20d18}.month-end-builder-head p{margin:0;max-width:780px;color:#6b6259;line-height:1.5}
.month-end-form{grid-template-columns:repeat(3,minmax(0,1fr))}.month-end-form input[type=number]{min-width:0}.month-end-notes{grid-column:span 2}.month-end-notes textarea{width:100%;min-height:82px;resize:vertical;font:inherit;padding:11px;border:1px solid #d3c5b1;border-radius:10px;background:#fff}.check-line{display:flex!important;align-items:center;gap:9px!important;align-self:end;padding:12px;border:1px dashed #d6c4a8;border-radius:11px;background:#fffaf1;font-weight:650!important}.check-line input{width:18px;height:18px}.month-end-actions{display:flex;gap:10px;grid-column:1/-1;justify-content:flex-end}
.month-end-kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin:4px 0 18px}.month-end-kpis article,.month-end-detail-kpis article{position:relative}.month-end-payable{border:2px solid #c89518!important;background:linear-gradient(150deg,#fff9e6,#fff)!important}.month-end-payable strong{color:#a20d18!important}.month-end-formula{padding:13px 15px;margin:0 0 18px;border-left:4px solid #d7a51b;border-radius:10px;background:#fff7df;color:#574b3b;line-height:1.5;font-size:.92rem}.month-end-history-section{display:grid;gap:13px;margin-top:10px}.month-end-history-section>.admin-toolbar{margin-bottom:0}.month-end-history-section .stats{margin:0 0 5px}.month-end-detail .card-head{margin-bottom:16px}.month-end-detail-kpis{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.month-end-note{padding:14px 16px;margin:12px 0 18px;border:1px solid #eadfce;border-radius:14px;background:#fffaf2}.month-end-note p{margin:5px 0 0;color:#675d55;white-space:pre-wrap}.eyebrow{display:block;font-size:.7rem;font-weight:850;letter-spacing:.11em;text-transform:uppercase;color:#178552}.mini.danger{border-color:#e4b2b5;color:#9e111c;background:#fff7f7}
@media(max-width:1100px){.month-end-form{grid-template-columns:repeat(2,minmax(0,1fr))}.month-end-kpis,.month-end-detail-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.month-end-notes{grid-column:1/-1}}
@media(max-width:700px){.month-end-builder,.month-end-detail,.commercial-terms-card{padding:15px;border-radius:16px}.month-end-form,.month-end-kpis,.month-end-detail-kpis{grid-template-columns:1fr}.month-end-notes{grid-column:auto}.month-end-actions{display:grid}.month-end-actions>*{width:100%}.month-end-builder-head{display:block}}
@media print{.portal-nav,.portal-status-strip,.mobile-context-bar,.admin-toolbar button,.filter-row,.month-end-history-section,.page-title,.portal-content>.card>.card-head{display:none!important}.portal-shell,.portal-content{display:block!important;margin:0!important;padding:0!important}.month-end-detail{box-shadow:none;border:0;margin:0;padding:0}.month-end-detail .actions{display:none!important}}

/* Update 39: Operator Super Rebuild */
.portal-grouped-nav{display:grid!important;gap:7px!important}.portal-dashboard-link{display:flex!important;gap:9px;align-items:center}.portal-nav-icon{font-size:1.1rem}.portal-nav-group{border:1px solid #4a433e;border-radius:11px;overflow:hidden;background:#2a2522}.portal-nav-group summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 12px;cursor:pointer;color:#f7f0e8;font-size:.86rem;font-weight:800}.portal-nav-group summary::-webkit-details-marker{display:none}.portal-nav-group summary b{transition:transform .18s ease;color:#d9c6ae}.portal-nav-group[open] summary b{transform:rotate(180deg)}.portal-nav-group>div{display:grid;padding:0 6px 7px}.portal-nav-group a{padding:9px 10px!important;margin:0!important;border-radius:8px!important;font-size:.83rem!important;color:#d8cec5!important}.portal-nav-group a.active{background:#a20d18!important;color:#fff!important}.portal-dashboard-link.active{background:#a20d18!important;color:#fff!important}
.operator-global-search{position:relative;margin:16px 0 6px;z-index:80}.operator-search-box{height:50px;display:flex;align-items:center;gap:10px;border:1px solid #d9cbb8;border-radius:14px;background:#fff;box-shadow:0 5px 20px #211d1a0a;padding:0 15px}.operator-search-box>span{font-size:1.4rem;color:#86796d}.operator-search-box input{border:0!important;outline:0!important;background:transparent!important;width:100%;font:inherit;font-size:.95rem}.operator-search-results{position:absolute;left:0;right:0;top:57px;max-height:520px;overflow:auto;background:#fff;border:1px solid #ddcfbb;border-radius:16px;box-shadow:0 22px 65px #211d1a2b;padding:10px;z-index:90}.operator-search-results section+section{border-top:1px solid #eee3d5;margin-top:8px;padding-top:8px}.operator-search-results h4{margin:3px 8px 5px;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:#8a7c70}.operator-search-results a{display:flex;justify-content:space-between;gap:14px;padding:10px;border-radius:10px;color:#211d1a;text-decoration:none}.operator-search-results a:hover{background:#fff5e9}.operator-search-results a span{display:grid;gap:2px}.operator-search-results a small{color:#786f67}.operator-search-results a b{font-size:1.3rem;color:#a20d18}.operator-search-empty{padding:18px;color:#746a62;text-align:center}
.operator-dashboard-kicker{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:15px 0 14px}.operator-dashboard-kicker span{font-size:.7rem;font-weight:900;letter-spacing:.11em;text-transform:uppercase;color:#178552}.operator-dashboard-kicker h2{margin:3px 0 0;font-size:1.45rem}.operator-dashboard-kicker small{color:#776e66}.super-kpis{grid-template-columns:repeat(5,minmax(0,1fr))!important}.super-kpis article{min-height:122px}.super-kpis .promo-liability-card{border:2px solid #d3a62e;background:linear-gradient(145deg,#fff8dc,#fff)}.super-kpis .promo-liability-card strong{color:#a20d18}
.super-toolbar>div{display:grid;gap:3px}.super-toolbar h3{margin:0;font-size:1.6rem}.super-toolbar small{color:#766d65;max-width:760px}.customer-name-link{border:0;background:none;padding:0;text-align:left;cursor:pointer;display:grid;gap:2px;font:inherit;color:inherit}.customer-name-link strong{color:#a20d18}.free-credit-text{font-weight:800;color:#87630b}.funding-badge{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;font-size:.68rem;font-weight:900;letter-spacing:.06em;background:#ece8e2;color:#3f3934}.funding-badge.free{background:#fff1c9;color:#795500}.funding-badge.paid{background:#e6f5ec;color:#126c3f}.funding-badge.mixed{background:#eee8ff;color:#59339a}.funding-badge.unfunded{background:#f2eeee;color:#6b6262}
.customer-profile-head{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;gap:16px;align-items:center;margin-bottom:18px;padding:18px;border:1px solid #e1d5c4;border-radius:18px;background:linear-gradient(145deg,#fffdf9,#fff7e9)}.customer-avatar{width:58px;height:58px;border-radius:17px;display:grid;place-items:center;background:#211d1a;color:#fff;font-size:1.15rem;font-weight:900;text-transform:uppercase}.customer-profile-head h2{margin:2px 0;font-size:1.6rem}.customer-profile-head p{margin:0;color:#736a62}.customer-visible-balance{text-align:right;display:grid;gap:1px}.customer-visible-balance span,.customer-visible-balance small{font-size:.72rem;color:#746a62}.customer-visible-balance strong{font-size:1.8rem;color:#a20d18}.customer-funding-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.super-metric{display:grid;gap:4px;padding:14px;border:1px solid #e2d6c5;background:#fff;border-radius:13px}.super-metric span{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:#756c64;font-weight:800}.super-metric strong{font-size:1.25rem}.super-metric small{color:#766d65}.super-metric.promo{border-color:#e2c56c;background:#fffaf0}.profile-tabs{display:flex;gap:6px;overflow:auto;padding:6px;background:#f4eee5;border-radius:13px;margin:0 0 14px}.profile-tabs button{white-space:nowrap;border:0;background:transparent;border-radius:9px;padding:9px 12px;font:inherit;font-size:.82rem;font-weight:800;cursor:pointer}.profile-tabs button.active{background:#fff;color:#a20d18;box-shadow:0 2px 10px #211d1a12}.profile-grid,.wallet-two-column{display:grid;grid-template-columns:1fr 1fr;gap:14px}.profile-panel{border:1px solid #e4d9c9;border-radius:15px;padding:17px;background:#fff;margin-bottom:14px}.profile-panel h3{margin:0 0 13px}.detail-list{display:grid;gap:0;margin:0}.detail-list>div{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid #eee5d8}.detail-list>div:last-child{border-bottom:0}.detail-list dt{color:#766d65}.detail-list dd{margin:0;font-weight:750;text-align:right}.profile-number-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.profile-number-grid>div{display:grid;gap:3px;padding:13px;background:#faf6ef;border-radius:10px}.profile-number-grid span{font-size:.75rem;color:#746b63}.profile-number-grid strong{font-size:1.4rem}.wallet-bucket{display:flex;justify-content:space-between;align-items:center;padding:14px;border-radius:12px;margin-top:9px;font-weight:800}.wallet-bucket.paid{background:#edf8f1;border:1px solid #badfc8}.wallet-bucket.free{background:#fff7dc;border:1px solid #ead17b}.wallet-bucket strong{font-size:1.2rem}.muted{color:#766d65;font-size:.87rem;line-height:1.5}.wallet-rule-banner{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:16px 18px;border-radius:15px;background:#211d1a;color:#fff;margin-bottom:16px}.wallet-rule-banner>div{display:grid;gap:3px}.wallet-rule-banner span{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:#d6cabf}.wallet-rule-banner strong{color:#f4cc63}.wallet-rule-banner p{margin:0;max-width:600px;color:#e2d9d1;font-size:.85rem}.voucher-code-result{padding:17px;border:1px solid #c3daa9;background:#f3fbeb;border-radius:14px;margin:12px 0}.voucher-code-result textarea{width:100%;margin-top:10px;padding:10px;font:inherit;font-family:monospace;border:1px solid #bfd1ad;border-radius:9px;background:#fff}.voucher-code-result p{margin:5px 0;color:#655d55}
.report-centre-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin:10px 0 18px}.report-centre-grid a{display:grid;gap:5px;padding:16px;border:1px solid #e2d5c2;border-radius:14px;text-decoration:none;color:#211d1a;background:#fff;transition:transform .15s ease,box-shadow .15s ease}.report-centre-grid a:hover{transform:translateY(-2px);box-shadow:0 10px 28px #211d1a12}.report-centre-grid a strong{color:#a20d18}.report-centre-grid a span{color:#756d65;font-size:.84rem}.report-centre-grid a.promo{border-color:#dfc168;background:#fffaf0}.report-super-stats{grid-template-columns:repeat(4,minmax(0,1fr));margin:14px 0}.report-filter-bar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;padding:12px;background:#f7f2ea;border:1px solid #e3d6c4;border-radius:13px;margin:0 0 14px}.report-filter-bar select,.report-filter-bar input{font:inherit;padding:9px 10px;border:1px solid #cec0ad;border-radius:9px;background:#fff}.hidden{display:none!important}
@media(max-width:1280px){.super-kpis{grid-template-columns:repeat(3,minmax(0,1fr))!important}.customer-funding-strip,.report-super-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.report-centre-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:800px){.operator-dashboard-kicker,.wallet-rule-banner{display:grid}.customer-profile-head{grid-template-columns:auto minmax(0,1fr)}.customer-profile-head>#customerBack{grid-column:1/-1}.customer-visible-balance{grid-column:1/-1;text-align:left}.profile-grid,.wallet-two-column{grid-template-columns:1fr}.report-centre-grid{grid-template-columns:1fr}.operator-search-results{position:fixed;left:12px;right:12px;top:110px;max-height:70vh}.portal-nav-group summary{padding:12px}.portal-nav-group a{padding:11px!important}}
@media(max-width:560px){.super-kpis,.customer-funding-strip,.report-super-stats{grid-template-columns:1fr!important}.operator-dashboard-kicker h2{font-size:1.2rem}.profile-tabs{margin-left:-4px;margin-right:-4px}.report-filter-bar>*{width:100%}}

/* Update 40: responsive operator portal, Charge Management and Customer Management */
body[data-page="portal"]{overflow-x:hidden}
body[data-page="portal"] *{box-sizing:border-box}
body[data-page="portal"] .portal-shell{grid-template-columns:270px minmax(0,1fr);width:100%;max-width:100%;transition:grid-template-columns .2s ease}
body[data-page="portal"] .portal-content{min-width:0;width:100%;max-width:100%;overflow:hidden;padding:clamp(18px,2.3vw,32px)}
body[data-page="portal"] .portal-content>.card{min-width:0;max-width:100%;overflow:hidden}
body[data-page="portal"] #portalSectionContent,body[data-page="portal"] #portalSectionContent>*{min-width:0;max-width:100%}
body[data-page="portal"] .table-wrap{max-width:100%;overflow:auto;overscroll-behavior-inline:contain}
body[data-page="portal"] table{min-width:720px;table-layout:auto}
body[data-page="portal"] td,body[data-page="portal"] th{overflow-wrap:anywhere}
body[data-page="portal"] input,body[data-page="portal"] select,body[data-page="portal"] textarea{min-width:0;max-width:100%;width:100%}
body[data-page="portal"] button,body[data-page="portal"] .button,body[data-page="portal"] .secondary{max-width:100%}
.portal-sidebar-toggle{display:flex;align-items:center;gap:9px;width:100%;min-height:40px;border:1px solid #4c433d;background:#302a26;color:#e7ddd4;border-radius:10px;padding:8px 10px;font:inherit;font-weight:750;cursor:pointer}.portal-sidebar-toggle:hover{background:#3b332e}.sidebar-toggle-icon{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;background:#463c35;color:#fff;font-size:1.25rem;padding:0!important}.portal-nav .portal-sidebar-toggle span{padding:0}.portal-nav-icon{display:inline-grid!important;place-items:center;flex:0 0 24px;width:24px;height:24px;padding:0!important}.portal-subnav-dot{display:inline-grid!important;place-items:center;width:18px;padding:0!important;color:#aa9584}.portal-nav-group a{display:flex!important;align-items:center;gap:7px}.portal-nav-group summary{justify-content:flex-start}.portal-nav-group summary b{margin-left:auto}
.portal-shell.sidebar-collapsed{grid-template-columns:76px minmax(0,1fr)}.portal-shell.sidebar-collapsed .portal-nav{padding-left:10px;padding-right:10px}.portal-shell.sidebar-collapsed .portal-brand{justify-content:center}.portal-shell.sidebar-collapsed .portal-brand img{max-width:40px}.portal-shell.sidebar-collapsed .portal-brand span,.portal-shell.sidebar-collapsed .sidebar-toggle-text,.portal-shell.sidebar-collapsed .portal-nav-label,.portal-shell.sidebar-collapsed .portal-group-label,.portal-shell.sidebar-collapsed .portal-nav-group summary b,.portal-shell.sidebar-collapsed .portal-subnav-dot{display:none!important}.portal-shell.sidebar-collapsed .portal-sidebar-toggle{justify-content:center;padding:8px}.portal-shell.sidebar-collapsed .sidebar-toggle-icon{transform:rotate(180deg)}.portal-shell.sidebar-collapsed .portal-dashboard-link,.portal-shell.sidebar-collapsed .portal-nav-group summary{justify-content:center!important;padding:10px!important}.portal-shell.sidebar-collapsed .portal-nav-group{overflow:visible;background:transparent;border-color:transparent}.portal-shell.sidebar-collapsed .portal-nav-group>div{display:none}.portal-shell.sidebar-collapsed .portal-nav-group[open]>div{display:none}.portal-shell.sidebar-collapsed .portal-logout{font-size:0;padding:10px}.portal-shell.sidebar-collapsed .portal-logout::before{content:"↪";font-size:1rem}
.toolbar-actions,.card-actions,.section-title-actions,.sticky-form-actions,.remote-quick-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.section-title-actions{justify-content:space-between;margin:8px 0 14px}.section-title-actions h3{margin:0}.section-title-actions small{color:#766d65}.compact-action{padding:7px 11px!important;font-size:.78rem!important;white-space:nowrap}.danger{border:1px solid #b42832!important;background:#fff1f1!important;color:#99141e!important;border-radius:8px;padding:9px 12px;font:inherit;font-weight:800;cursor:pointer}.danger:hover{background:#a20d18!important;color:#fff!important}.button-link{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.field-span{grid-column:1/-1!important}.form-grid.no-overlap{grid-template-columns:repeat(2,minmax(0,1fr))}.check-field{display:flex!important;align-items:flex-start!important;gap:10px!important;padding:11px;border:1px solid #ddd0bf;border-radius:10px;background:#fff}.check-field input{width:auto!important;min-width:18px!important;margin-top:2px}.check-field span{display:grid;gap:2px;padding:0!important}.check-field small{font-weight:500;color:#766d65}.sticky-form-actions{position:sticky;bottom:0;z-index:20;justify-content:flex-end;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-top:1px solid #eadfce;padding:12px 0;margin-top:18px}
.v40-filter{align-items:center}.charger-management-grid,.site-management-grid,.entity-card-grid,.nfc-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:18px}.charger-management-card,.site-management-card,.entity-card,.nfc-management-card{min-width:0;border:1px solid #e2d5c3;border-radius:17px;background:#fff;padding:17px;box-shadow:0 7px 24px #211d1a0a}.charger-card-top,.site-management-card>.card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.charger-card-top>div:first-child,.site-management-card>.card-head>div:first-child{min-width:0;display:grid;gap:2px}.charger-card-top small,.site-management-card small{color:#7d7268}.charger-card-top h4,.site-management-card h4,.entity-card h4,.nfc-management-card h4{margin:0;font-size:1.15rem;color:#211d1a;overflow-wrap:anywhere}.charger-card-stats,.site-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0}.charger-card-stats>div,.site-summary-grid>div{min-width:0;background:#faf6ef;border:1px solid #eee3d5;border-radius:10px;padding:10px;display:grid;gap:3px}.charger-card-stats span,.site-summary-grid span,.diagnostic-grid span{font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:#7a7067;font-weight:800}.charger-card-stats strong,.site-summary-grid strong{overflow-wrap:anywhere}.charger-card-stats small,.site-summary-grid small{color:#7a7067;overflow-wrap:anywhere}.v40-detail-shell{margin:22px 0 4px;padding:clamp(14px,2vw,22px);border:1px solid #dacdbb;border-radius:19px;background:#fbf8f2;box-shadow:0 15px 45px #211d1a12;min-width:0;max-width:100%}.detail-page-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;margin-bottom:17px}.detail-page-head h2{margin:2px 0;font-size:clamp(1.35rem,2vw,1.9rem)}.detail-page-head p{margin:0;color:#756b63}.charger-control-kpis{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important}.connector-control-grid,.connector-edit-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.connector-control-grid>article,.connector-edit-grid>article{min-width:0;border:1px solid #e1d5c5;background:#fff;border-radius:13px;padding:14px}.connector-control-grid h4,.connector-edit-grid h4{margin:0}.detail-list.compact>div{padding:7px 0;font-size:.86rem}.remote-control-panel{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,420px);gap:16px}.inline-action-form{display:grid;grid-template-columns:1fr 1fr auto;align-items:end;gap:9px;padding:13px;border:1px solid #ded1c0;border-radius:12px;background:#faf6ef}.inline-action-form h4{grid-column:1/-1;margin:0}.inline-action-form label{display:grid;gap:5px;font-weight:700}.inline-action-form input,.inline-action-form select{padding:9px;border:1px solid #cfc0ad;border-radius:8px;background:#fff;font:inherit}.diagnostic-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:14px}.diagnostic-grid>div{min-width:0;display:grid;gap:3px;padding:11px;border-radius:10px;background:#f8f4ed;border:1px solid #e8ddce}.diagnostic-grid strong,.diagnostic-grid small{overflow-wrap:anywhere}.technical-details{margin-top:14px;border:1px solid #dfd4c5;border-radius:11px;background:#fff}.technical-details summary{cursor:pointer;padding:12px 14px;font-weight:800}.technical-details>.table-wrap{border:0;border-top:1px solid #eee3d5;border-radius:0;margin:0}
.v40-editor-tabs{display:flex;gap:6px;overflow-x:auto;scrollbar-width:thin;padding:7px;background:#eee8de;border-radius:13px;margin-bottom:14px}.v40-editor-tabs button{white-space:nowrap;border:0;background:transparent;color:#5f554d;padding:9px 12px;border-radius:9px;font:inherit;font-weight:800;cursor:pointer}.v40-editor-tabs button.active{background:#fff;color:#a20d18;box-shadow:0 2px 9px #211d1a12}.v40-editor-section{display:none;min-width:0}.v40-editor-section.active{display:block}.v40-editor-section .form-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.map-editor-layout{display:grid;grid-template-columns:minmax(300px,.75fr) minmax(420px,1.25fr);gap:16px;align-items:stretch}.v40-map{min-height:430px;width:100%;border:1px solid #d7c8b5;border-radius:14px;overflow:hidden;background:#ede7dd}.v40-map .leaflet-control-container{font-size:.8rem}.qr-professional-layout{display:grid;grid-template-columns:minmax(280px,420px) minmax(0,1fr);gap:20px;align-items:start}.qr-preview-card{display:grid;justify-items:center;gap:7px;border:1px solid #dfd1bf;background:#fff;border-radius:18px;padding:22px;text-align:center}.qr-preview-card img{width:min(100%,340px);aspect-ratio:1;object-fit:contain}.qr-preview-card strong{font-size:1.15rem}.qr-preview-card small{color:#776c63}.qr-management code{overflow-wrap:anywhere;white-space:normal}
.tariff-master-detail{display:grid;grid-template-columns:minmax(280px,.7fr) minmax(420px,1.3fr);gap:16px;align-items:start}.tariff-card-list{display:grid;gap:9px;max-height:72vh;overflow:auto;padding-right:3px}.tariff-card{border:1px solid #dfd2c1;background:#fff;border-radius:13px;padding:13px;text-align:left;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;cursor:pointer;font:inherit;color:#211d1a}.tariff-card:hover,.tariff-card.selected{border-color:#c69321;background:#fff9e9}.tariff-card span{display:grid;gap:2px}.tariff-card small{color:#766d65}.tariff-card b{color:#a20d18}.tariff-card em{grid-column:1/-1;font-size:.68rem;font-style:normal;font-weight:900;color:#75706a}.tariff-editor-panel{min-width:0;border:1px solid #dfd2c1;border-radius:15px;background:#fff;padding:17px;position:sticky;top:92px}.tariff-editor-panel .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.customer-overview-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:13px}.customer-glance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.compact-history-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid #eee5da}.compact-history-row:last-child{border:0}.compact-history-row>span{display:grid;gap:2px}.compact-history-row small{color:#766d65}.wallet-v40-layout{display:grid;grid-template-columns:minmax(260px,.75fr) minmax(420px,1.25fr);gap:14px}.entity-card-grid,.nfc-card-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.entity-card,.nfc-management-card{display:flex;flex-direction:column}.entity-card .card-actions,.nfc-management-card .card-actions{margin-top:auto;padding-top:12px}.inline-editor{border-color:#d4ae52;background:#fffaf0}.message-thread{display:grid;gap:10px}.message-bubble{max-width:min(850px,100%);border:1px solid #dfd4c5;background:#fff;border-radius:14px;padding:13px 15px}.message-bubble>div:first-child{display:flex;justify-content:space-between;gap:12px;align-items:center}.message-bubble small{display:block;color:#7b7067;margin:3px 0 8px}.message-bubble p{white-space:pre-wrap;margin:0 0 10px;line-height:1.55}.customer-profile-v40 .profile-tabs{position:sticky;top:78px;z-index:30;background:#eee8de}.responsive-table{max-width:100%}
@media(max-width:1440px){.charger-management-grid,.site-management-grid{grid-template-columns:1fr}.customer-overview-kpis{grid-template-columns:repeat(4,minmax(130px,1fr))}.entity-card-grid,.nfc-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.diagnostic-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.v40-editor-section .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1280px){body[data-page="portal"] .portal-shell{grid-template-columns:240px minmax(0,1fr)}body[data-page="portal"] .portal-shell.sidebar-collapsed{grid-template-columns:70px minmax(0,1fr)}.charger-card-stats,.site-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.charger-control-kpis,.customer-overview-kpis{grid-template-columns:repeat(3,minmax(0,1fr))!important}.map-editor-layout,.tariff-master-detail,.wallet-v40-layout{grid-template-columns:1fr}.tariff-editor-panel{position:static}.v40-map{min-height:360px}.remote-control-panel{grid-template-columns:1fr}.qr-professional-layout{grid-template-columns:minmax(260px,.65fr) minmax(0,1fr)}}
@media(max-width:1024px){.detail-page-head{grid-template-columns:1fr}.detail-page-head>.secondary{justify-self:start}.charger-control-kpis,.customer-overview-kpis{grid-template-columns:repeat(2,minmax(0,1fr))!important}.connector-control-grid,.connector-edit-grid,.customer-glance-grid{grid-template-columns:1fr}.v40-editor-section .form-grid,.tariff-editor-panel .form-grid,.form-grid.no-overlap{grid-template-columns:1fr 1fr}.diagnostic-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.entity-card-grid,.nfc-card-grid{grid-template-columns:1fr 1fr}.inline-action-form{grid-template-columns:1fr 1fr}.inline-action-form .button{grid-column:1/-1}.customer-profile-head{grid-template-columns:auto minmax(0,1fr) auto}.customer-profile-head>.secondary{grid-column:1/-1;justify-self:start}}
@media(max-width:900px){body[data-page="portal"] .portal-shell,body[data-page="portal"] .portal-shell.sidebar-collapsed{grid-template-columns:1fr}.portal-sidebar-toggle{display:none}.portal-shell.sidebar-collapsed .portal-brand span,.portal-shell.sidebar-collapsed .portal-nav-label,.portal-shell.sidebar-collapsed .portal-group-label,.portal-shell.sidebar-collapsed .portal-nav-group summary b,.portal-shell.sidebar-collapsed .portal-subnav-dot{display:initial!important}.portal-shell.sidebar-collapsed .portal-subnav-dot{display:inline-grid!important}.portal-shell.sidebar-collapsed .portal-nav-group>div,.portal-shell.sidebar-collapsed .portal-nav-group[open]>div{display:grid}.portal-shell.sidebar-collapsed .portal-logout{font-size:inherit}.portal-shell.sidebar-collapsed .portal-logout::before{content:none}body[data-page="portal"] .portal-content{padding:18px}.v40-editor-tabs,.profile-tabs{position:static}.customer-profile-v40 .profile-tabs{top:auto}.qr-professional-layout{grid-template-columns:1fr}.qr-preview-card{max-width:430px;margin:auto;width:100%}}
@media(max-width:700px){.charger-control-kpis,.customer-overview-kpis{grid-template-columns:1fr!important}.charger-card-stats,.site-summary-grid,.diagnostic-grid,.entity-card-grid,.nfc-card-grid,.v40-editor-section .form-grid,.tariff-editor-panel .form-grid,.form-grid.no-overlap{grid-template-columns:1fr}.toolbar-actions,.section-title-actions,.sticky-form-actions{align-items:stretch}.section-title-actions{display:grid}.toolbar-actions>*{flex:1}.customer-profile-head{grid-template-columns:1fr;text-align:left}.customer-visible-balance{text-align:left!important}.inline-action-form{grid-template-columns:1fr}.map-editor-layout{grid-template-columns:1fr}.v40-map{min-height:300px}.v40-detail-shell{padding:12px;border-radius:13px}.portal-content>.card{padding:14px}}
@media print{.portal-sidebar-toggle,.v40-close-workspace,.v40-close-site,.v40-editor-tabs,.sticky-form-actions,.card-actions,.remote-control-panel{display:none!important}.qr-management{border:0;box-shadow:none;background:#fff}.qr-professional-layout{display:block}.qr-professional-layout>.profile-panel{display:none}.qr-preview-card{border:0}}

/* SwiftCharge Update 41: admin GUI cleanup only. No OCPP/backend changes. */
body[data-page="portal"] .portal-status-strip{display:none!important}
body[data-page="portal"] .portal-section-card{padding:clamp(14px,1.7vw,22px);border-radius:18px}
body[data-page="portal"] #adminNotice:empty,body[data-page="portal"] .form-message:empty,body[data-page="portal"] .operator-search-results:empty{display:none!important}

/* The desktop menu now really hides instead of leaving a narrow, confusing rail. */
body[data-page="portal"] .portal-shell.sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)!important}
body[data-page="portal"] .portal-shell.sidebar-collapsed .portal-nav{width:0!important;min-width:0!important;padding:0!important;border:0!important;opacity:0;overflow:hidden!important;pointer-events:none;transform:translateX(-105%)}
body[data-page="portal"] .portal-nav{transition:width .2s ease,padding .2s ease,opacity .16s ease,transform .2s ease}
.portal-sidebar-restore{display:none;position:sticky;top:86px;z-index:140;align-items:center;gap:8px;width:max-content;max-width:100%;margin:0 0 12px;padding:9px 13px;border:1px solid #dacdbd;border-radius:11px;background:#fff;color:#302821;box-shadow:0 7px 22px #211d1a14;font:inherit;font-weight:800;cursor:pointer}
.portal-shell.sidebar-collapsed .portal-sidebar-restore{display:inline-flex}
.portal-sidebar-restore:hover{border-color:#bc8a21;background:#fff9e9}
.portal-sidebar-toggle{min-height:42px}
.portal-sidebar-toggle .sidebar-toggle-text{white-space:nowrap}

/* Cleaner common admin layout and safer auto-fit forms. */
body[data-page="portal"] .admin-toolbar{align-items:flex-start;gap:16px}
body[data-page="portal"] .admin-toolbar h3{margin:2px 0 3px}
body[data-page="portal"] .super-toolbar small{display:block;max-width:760px;line-height:1.45;color:#746a62}
body[data-page="portal"] .form-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:12px 14px}
body[data-page="portal"] .form-grid label{min-width:0}
body[data-page="portal"] .form-grid input,body[data-page="portal"] .form-grid select,body[data-page="portal"] .form-grid textarea{width:100%;min-width:0;box-sizing:border-box}
body[data-page="portal"] .profile-panel{min-width:0;overflow:hidden}
body[data-page="portal"] .state{display:inline-flex!important;align-items:center;justify-content:center;max-width:100%;min-height:28px;padding:5px 9px!important;line-height:1.05;white-space:nowrap!important;word-break:normal!important;overflow-wrap:normal!important}
body[data-page="portal"] .table-wrap{width:100%;max-width:100%;overflow-x:auto}
body[data-page="portal"] .responsive-table th,body[data-page="portal"] .responsive-table td{min-width:0}
body[data-page="portal"] .responsive-table td .state{vertical-align:middle}
body[data-page="portal"] .table-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
body[data-page="portal"] .button,body[data-page="portal"] .secondary,body[data-page="portal"] .danger{line-height:1.15}

/* Customer management is now card-based so status and actions never overlap. */
.customer-management-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.customer-management-card{display:flex;flex-direction:column;min-width:0;padding:16px;border:1px solid #e3d7c6;border-radius:16px;background:#fff;box-shadow:0 7px 24px #211d1a0b}
.customer-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;min-width:0}
.customer-card-identity{display:flex;gap:11px;align-items:center;min-width:0}
.customer-avatar.compact{width:42px;height:42px;flex:0 0 42px;border-radius:12px;font-size:.83rem}
.customer-card-identity>div:last-child{display:grid;gap:2px;min-width:0}
.customer-card-identity h4{margin:0;font-size:1.03rem;overflow-wrap:anywhere}
.customer-card-identity small{color:#766d65;overflow-wrap:anywhere}
.customer-card-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:14px 0 10px}
.customer-card-metrics>div{display:grid;gap:2px;min-width:0;padding:9px;border:1px solid #eee3d5;border-radius:10px;background:#faf7f1}
.customer-card-metrics span,.customer-card-meta small{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:#7b7168;font-weight:800}
.customer-card-metrics strong{font-size:.9rem;overflow-wrap:anywhere}
.customer-card-meta{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.customer-card-meta>span{display:grid;gap:2px;min-width:0}
.customer-card-meta strong{font-size:.78rem;font-weight:700;overflow-wrap:anywhere}
.customer-profile-action{width:100%;margin-top:auto;justify-content:center;padding:9px 12px!important}

/* Wallets & Credits: no overlapping labels, inputs or balance cards. */
.wallet-v41-layout{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:14px;align-items:start}
.wallet-adjustment-panel,.wallet-v41-summary,.wallet-ledger-summary{margin-bottom:14px}
.wallet-adjustment-form{grid-template-columns:repeat(2,minmax(0,1fr))!important}
.wallet-adjustment-form>label:first-child{grid-column:1/-1}
.wallet-adjustment-actions{display:flex;justify-content:flex-end;padding-top:2px}
.wallet-adjustment-actions .button{min-width:210px}
.wallet-total-list{display:grid;gap:9px}
.wallet-total-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;padding:12px 13px;border-radius:12px;border:1px solid #e5d9c8;background:#faf7f1}
.wallet-total-row span{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:#756b63;font-weight:800}
.wallet-total-row strong{font-size:1.2rem;white-space:nowrap}
.wallet-total-row small{grid-column:1/-1;color:#796f67}
.wallet-total-row.paid{border-left:4px solid #268258;background:#f1faf5}
.wallet-total-row.free{border-left:4px solid #c99b27;background:#fff9e8}
.wallet-total-row.combined{border-left:4px solid #a20d18;background:#fff5f5}
.wallet-ledger-summary .table-wrap{margin-bottom:0}

/* Generic portal polish for the remaining sections. */
body[data-page="portal"] .filter-row{align-items:center;flex-wrap:wrap}
body[data-page="portal"] .filter-row>input{min-width:min(100%,260px)}
body[data-page="portal"] .filter-row>select{width:auto;min-width:160px;flex:0 1 220px}
body[data-page="portal"] .stats{gap:10px}
body[data-page="portal"] .stats article{min-width:0}
body[data-page="portal"] .stats strong{overflow-wrap:anywhere}
body[data-page="portal"] .section-title-actions>div:first-child{min-width:0}
body[data-page="portal"] code{max-width:100%;overflow-wrap:anywhere}

@media(max-width:1320px){
  .customer-management-grid{grid-template-columns:1fr}
  .customer-card-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
  .wallet-v41-layout{grid-template-columns:1fr}
  .wallet-v41-summary{order:-1}
}
@media(max-width:900px){
  .portal-sidebar-restore{display:none!important}
  body[data-page="portal"] .portal-shell.sidebar-collapsed{grid-template-columns:1fr!important}
  body[data-page="portal"] .portal-shell.sidebar-collapsed .portal-nav{width:min(86vw,330px)!important;opacity:1;pointer-events:auto;transform:translateX(-105%);padding:max(16px,env(safe-area-inset-top)) 14px max(20px,env(safe-area-inset-bottom))!important;overflow-y:auto!important}
  .wallet-adjustment-form{grid-template-columns:1fr!important}
  .wallet-adjustment-form>label:first-child{grid-column:auto}
  .wallet-adjustment-actions{justify-content:stretch}
  .wallet-adjustment-actions .button{width:100%;min-width:0}
}
@media(max-width:640px){
  .customer-card-head{display:grid;grid-template-columns:1fr}
  .customer-card-head>.state{justify-self:start}
  .customer-card-metrics,.customer-card-meta{grid-template-columns:1fr}
}

/* Operator portal has its own navigation. Hide the public-site hamburger/nav to remove the blank header control. */
body[data-page="portal"] header .menu-toggle,body[data-page="portal"] header #mainNav{display:none!important}
body[data-page="portal"] header{justify-content:flex-start}

/* Update 47 welcome campaign management */
.welcome-campaign-card{border:1px solid #ead8bb;border-radius:20px;background:linear-gradient(145deg,#fffdf8,#fff8eb);padding:22px;margin:0 0 22px;box-shadow:0 12px 32px rgba(78,54,29,.06)}.campaign-kpis{display:grid;grid-template-columns:repeat(6,minmax(130px,1fr));gap:10px;margin:18px 0}.campaign-kpis article{min-width:0}.campaign-editor{border-top:1px solid #eadfce;padding-top:18px}.campaign-secondary-form{margin-top:16px}@media(max-width:1100px){.campaign-kpis{grid-template-columns:repeat(3,1fr)}}@media(max-width:680px){.welcome-campaign-card{padding:16px}.campaign-kpis{grid-template-columns:repeat(2,1fr)}}

/* SwiftCharge Update 55: unified admin and partner workspaces. */
body[data-page="portal"] .portal-sidebar-restore{position:relative!important;top:auto!important;left:auto!important;float:none!important;margin:0 0 12px!important;box-shadow:none!important}
body[data-page="portal"] .promo-liability-card{background:#fff!important;border-color:#e3d7c6!important;color:inherit!important}
body[data-page="portal"] .promo-liability-card:before{display:none!important}
body[data-page="portal"] .portal-content{max-width:100%;min-width:0}
.site-photo-preview{width:100%;height:180px;object-fit:cover;border-radius:14px;border:1px solid #e4d9cc;background:#f2eee7}.site-photo-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-top:12px}.site-photo-form label{flex:1;min-width:240px}.site-photo-form input{width:100%}.map-popup-site-photo{width:100%;height:145px;object-fit:cover;border-radius:10px;margin:0 0 10px;background:#eee}
body[data-page="partner"]{background:#f4f1eb;color:#211d1a}.partner-login-logo{width:210px;max-width:80%;height:auto;margin:0 auto 22px;display:block}.partner-shell{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr)}.partner-nav{position:sticky;top:0;height:100vh;box-sizing:border-box;padding:24px 16px;background:#211d1a;color:#fff;display:flex;flex-direction:column;gap:22px;overflow:auto}.partner-brand{display:grid;gap:8px}.partner-brand img{width:190px;max-width:100%;filter:brightness(0) invert(1)}.partner-brand small{color:#d6c9ba;text-transform:uppercase;letter-spacing:.12em;font-weight:800}.partner-nav nav{display:grid;gap:7px}.partner-nav nav button{border:0;border-radius:11px;padding:12px 14px;background:transparent;color:#e8dfd5;text-align:left;font:inherit;font-weight:750;cursor:pointer}.partner-nav nav button:hover,.partner-nav nav button.active{background:#a20d18;color:#fff}.partner-nav>.secondary{margin-top:auto;background:#fff;color:#211d1a}.partner-content{padding:clamp(16px,2.2vw,30px);min-width:0;max-width:1700px;width:100%;box-sizing:border-box;margin:auto}.partner-workspace{min-width:0}.partner-mobile-bar{display:none}.partner-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:22px;border-radius:18px;background:linear-gradient(135deg,#a20d18,#6e0710);color:#fff;margin-bottom:14px}.partner-hero h2{margin:4px 0;font-size:clamp(1.5rem,3vw,2.4rem)}.partner-hero p{margin:0;color:#f7dfe1}.partner-hero>b{font-size:1.1rem;padding:10px 13px;border-radius:10px;background:#ffffff1c}.partner-kpis{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:14px}.partner-kpis article{background:#fff;border:1px solid #e2d7c9}.partner-two-column{display:grid;grid-template-columns:minmax(320px,.8fr) minmax(0,1.2fr);gap:14px}.partner-report-head{display:flex;justify-content:space-between;gap:14px;align-items:end}.partner-report-head form{display:flex;gap:8px;flex-wrap:wrap}.partner-profile{max-width:900px}
@media(max-width:1050px){.partner-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.partner-two-column{grid-template-columns:1fr}}@media(max-width:760px){.partner-shell{display:block}.partner-nav{position:fixed;z-index:300;left:0;top:0;width:min(84vw,320px);transform:translateX(-105%);transition:transform .2s}.partner-menu-open .partner-nav{transform:none}.partner-content{padding:14px}.partner-mobile-bar{display:flex;align-items:center;gap:12px;margin-bottom:12px}.partner-mobile-bar button{border:1px solid #dacdbd;border-radius:10px;background:#fff;padding:9px 12px}.partner-kpis{grid-template-columns:1fr}.partner-hero{align-items:flex-start}.partner-report-head{display:grid}.partner-report-head form{display:grid;grid-template-columns:1fr 1fr}.partner-report-head form button{grid-column:1/-1}}
.charge-location-switch{display:flex;gap:8px;margin-bottom:14px;padding:5px;border:1px solid #e2d6c6;border-radius:13px;background:#f4efe7;width:max-content;max-width:100%}.charge-location-switch button{border:0;border-radius:9px;background:transparent;padding:10px 14px;font:inherit;font-weight:800;cursor:pointer}.charge-location-switch button.active{background:#a20d18;color:#fff}.site-photo-manager{margin-bottom:14px}.tariff-section-title{padding:8px 4px}.tariff-section-title h3{margin:0}.tariff-active-list,.tariff-history-list{display:grid;gap:8px}.tariff-history{margin-top:18px;border-top:1px solid #e3d7c6;padding-top:12px}.tariff-history summary{cursor:pointer;font-weight:800;margin-bottom:10px}.charger-hub-actions{margin-bottom:14px}.staff-access-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.staff-access-card{margin:0}.permission-form{display:grid;grid-template-columns:1fr 1fr;gap:10px}.permission-form fieldset{border:1px solid #e3d7c6;border-radius:10px;display:grid;gap:6px}.permission-form label{font-size:.82rem}.permission-form button{grid-column:1/-1}.field-span{grid-column:1/-1}@media(max-width:1100px){.staff-access-grid{grid-template-columns:1fr}}@media(max-width:700px){.charge-location-switch{display:grid;width:100%;box-sizing:border-box}.permission-form{grid-template-columns:1fr}.permission-form button{grid-column:auto}}

/* Update 56.1: partner charger assignment */
.partner-charger-picker { grid-column: 1 / -1; min-width: 0; }
.partner-charger-picker > .muted { margin: 0 0 12px; }
.partner-site-group { display: block; margin: 0 0 12px; padding: 14px; border: 1px solid #e8ddd0; border-radius: 12px; background: #fff; }
.partner-site-group > .card-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 8px; padding: 0 0 10px; border-bottom: 1px solid #eee5dc; }
.partner-site-group > .card-head > strong { min-width: 0; font-size: 15px; color: #281f1c; }
.partner-site-group > label { display: grid !important; grid-template-columns: 22px minmax(150px, .55fr) minmax(190px, 1fr); align-items: center; gap: 10px; width: 100%; min-width: 0; margin: 0; padding: 10px 8px; border-bottom: 1px solid #f2ece6; cursor: pointer; }
.partner-site-group > label:last-child { border-bottom: 0; }
.partner-site-group > label:hover { background: #fbf8f4; }
.partner-site-group > label > input[type="checkbox"] { width: 18px !important; height: 18px !important; margin: 0; }
.partner-site-group > label > strong, .partner-site-group > label > small { display: block; min-width: 0; overflow-wrap: anywhere; }
.partner-site-group > label > small { color: #6f625d; }
@media (max-width: 720px) {
  .partner-site-group { padding: 11px; }
  .partner-site-group > label { grid-template-columns: 22px minmax(0, 1fr); gap: 6px 9px; }
  .partner-site-group > label > small { grid-column: 2; }
}

/* Update 57: compact partner dashboard and shared commercial terms. */
body[data-page="partner"] .partner-content{padding:clamp(12px,1.5vw,22px);max-width:1900px}
body[data-page="partner"] .page-title{margin:0 0 10px;font-size:clamp(1.45rem,2.2vw,2rem)}
.partner-compact-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px;border:1px solid #e3d7c9;border-radius:15px;background:#fff;margin-bottom:10px}
.partner-compact-head h2{margin:2px 0;font-size:clamp(1.25rem,2vw,1.8rem)}
.partner-compact-head p{margin:0;color:#766a62}
.partner-live-pill{padding:8px 11px;border-radius:999px;background:#fff1dd;color:#82550b;font-weight:850;white-space:nowrap}.partner-live-pill.online{background:#e8f7ee;color:#176c43}
.compact-partner-kpis{grid-template-columns:repeat(5,minmax(0,1fr));gap:9px;margin:0 0 10px}
.partner-metric{min-height:92px!important;padding:12px 13px!important;border-radius:14px!important;background:#fff!important;border:1px solid #e3d7c9!important}
.partner-metric span{font-size:.68rem!important}.partner-metric strong{font-size:clamp(1.05rem,1.6vw,1.42rem)!important;line-height:1.15}.partner-metric small{font-size:.72rem!important}
.partner-metric.online{border-left:4px solid #27855b!important}.partner-metric.warning{border-left:4px solid #c58718!important}.partner-metric.live{border-left:4px solid #a20d18!important}
.partner-compact-panel{padding:14px!important;margin:0 0 10px!important;border-radius:15px!important}.partner-compact-panel h3{margin:0 0 4px}.partner-compact-panel .card-head{margin-bottom:9px}
.partner-terms-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.partner-terms-card{display:grid;grid-template-columns:minmax(150px,1.3fr) repeat(2,minmax(125px,.8fr)) auto;gap:9px;align-items:end;padding:11px;border:1px solid #e5dbcf;border-radius:12px;background:#faf8f4}
.partner-terms-card>strong{align-self:center}.partner-terms-card label{font-size:.73rem;font-weight:800}.partner-terms-card input{min-height:38px;padding:7px 9px}.partner-terms-card .button{min-height:38px;padding:8px 12px}.partner-form-message{grid-column:1/-1}.partner-form-message:empty{display:none}
body[data-page="partner"] .table-wrap{margin-top:8px}body[data-page="partner"] table th,body[data-page="partner"] table td{padding:8px 9px}
@media(max-width:1250px){.compact-partner-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}.partner-terms-grid{grid-template-columns:1fr}}
@media(max-width:820px){.compact-partner-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.partner-terms-card{grid-template-columns:1fr 1fr}.partner-terms-card>strong,.partner-terms-card .button{grid-column:1/-1}}
@media(max-width:540px){.partner-compact-head{align-items:flex-start;padding:12px}.compact-partner-kpis{grid-template-columns:1fr 1fr}.partner-metric{min-height:82px!important}.partner-terms-card{grid-template-columns:1fr}.partner-terms-card>strong,.partner-terms-card .button{grid-column:auto}.partner-report-head form{grid-template-columns:1fr}}

/* Update 57.1: aligned commercial terms and approval-only rate changes. */
.partner-terms-grid{grid-template-columns:1fr}
.partner-terms-card{grid-template-columns:minmax(210px,1.35fr) minmax(210px,1fr) minmax(150px,.7fr) minmax(150px,auto);align-items:center;padding:14px 16px}
.partner-terms-site{display:grid;gap:4px;min-width:0}.partner-terms-site strong{font-size:1.05rem;overflow-wrap:anywhere}.partner-terms-site small{color:#6f635b}
.partner-terms-card label{display:grid;gap:5px;margin:0}.partner-terms-card label input{width:100%;box-sizing:border-box}
.partner-readonly-term{display:grid;gap:3px;padding:8px 11px;border:1px solid #e1d6c8;border-radius:10px;background:#fff}.partner-readonly-term span{font-size:.7rem;font-weight:800;text-transform:uppercase;color:#756961}.partner-readonly-term strong{font-size:1.1rem}.partner-readonly-term small{font-size:.7rem;color:#756961}
.partner-terms-card>.button{width:100%;min-width:0;white-space:normal}.partner-pending-rate{grid-column:1/-1;display:flex;align-items:center;gap:9px;padding-top:2px}.partner-pending-rate small{color:#74675f}
@media(max-width:1050px){.partner-terms-card{grid-template-columns:1fr 1fr}.partner-terms-site{grid-column:1/-1}.partner-terms-card>.button{align-self:end}.partner-readonly-term{min-height:62px;box-sizing:border-box}}
@media(max-width:620px){.partner-terms-card{grid-template-columns:1fr;padding:12px}.partner-terms-site,.partner-pending-rate{grid-column:auto}.partner-pending-rate{display:grid}.partner-terms-card>.button{width:100%}}

.connector-icon-admin{display:grid;grid-template-columns:1fr 1fr;gap:14px}.connector-icon-admin form{display:grid;grid-template-columns:72px 1fr auto;gap:10px;align-items:end}.connector-icon-admin img{width:64px;height:64px;object-fit:contain;border:1px solid #ddd;border-radius:12px;padding:5px}@media(max-width:800px){.connector-icon-admin,.connector-icon-admin form{grid-template-columns:1fr}.connector-icon-admin img{width:54px;height:54px}}

dialog.customer-session-dialog{width:min(1180px,94vw);max-width:94vw;max-height:90dvh;box-sizing:border-box;border:1px solid #ddd;border-radius:22px;padding:24px;background:#f6f7f9;color:#17222b;box-shadow:0 30px 90px #0004;overflow:auto}dialog.customer-session-dialog::backdrop{background:#10202bbc;backdrop-filter:blur(3px)}dialog.customer-session-dialog .v40-detail-shell{margin:0;padding:0;border:0;box-shadow:none}dialog.customer-session-dialog .customer-profile-head{position:relative;top:auto;flex-wrap:wrap}dialog.customer-session-dialog .profile-tabs{position:relative;top:auto;overflow:auto}dialog.customer-session-dialog .profile-panel{min-width:0}dialog.customer-session-dialog .customer-edit-panel{margin-bottom:20px;border-top:4px solid #ab1020}dialog.customer-session-dialog .form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.session-detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:20px}.session-detail-head h2{margin:8px 0}.session-detail-summary{display:flex;align-items:center;gap:15px;flex-wrap:wrap;margin-bottom:20px}.session-detail-summary strong{font-size:24px}.session-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.session-detail-grid dd{overflow-wrap:anywhere}.history-pagination{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:18px 0}.management-table td:last-child,#v40CustomerList td:last-child{text-align:right}.management-table code{font-size:11px;overflow-wrap:anywhere}.management-table th,#v40CustomerList th{white-space:nowrap}.customer-save-message:empty{display:none}#v40CustomerList .table-wrap{border:1px solid #e3e6e9;border-radius:16px;background:white}.customer-session-dialog .detail-list>div{min-width:0}.customer-session-dialog .detail-list dd{word-break:break-word}@media(max-width:700px){dialog.customer-session-dialog{width:96vw;max-width:96vw;padding:14px;border-radius:14px;max-height:94dvh}.session-detail-grid,dialog.customer-session-dialog .form-grid{grid-template-columns:minmax(0,1fr)}.customer-session-dialog .customer-overview-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.history-pagination{font-size:12px}.session-detail-head code{overflow-wrap:anywhere}}

/* patch6.css */
.driver-modal{position:fixed;inset:0;background:#181615aa;z-index:1000;display:grid;place-items:center;padding:20px}
.driver-modal-card{position:relative;background:#fff;border-radius:16px;padding:28px;width:min(860px,96vw);max-height:90vh;overflow:auto;box-shadow:0 24px 80px #0004}
.modal-close{position:absolute;right:14px;top:10px;border:0;background:transparent;font-size:2rem;cursor:pointer}
.amount-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}
.amount-grid label{cursor:pointer}.amount-grid input{position:absolute;opacity:0}
.amount-grid span{display:block;border:2px solid var(--line);border-radius:12px;padding:22px;text-align:center;font-size:1.35rem;font-weight:800}
.amount-grid input:checked+span{border-color:var(--red);background:#fff3f0;color:var(--red)}
.driver-workspace>.active-session{margin-bottom:20px}.filter-row label{display:grid;gap:4px}.lab-actions{margin:18px 0}.leaflet-popup-content{min-width:240px}.danger-outline{border-color:#a20d18!important;color:#a20d18!important}
@media(max-width:650px){.amount-grid{grid-template-columns:1fr 1fr}.driver-modal-card{padding:24px 18px}.filter-row{align-items:stretch}}
.station-card-actions{display:flex;flex-direction:column;align-items:flex-end;gap:9px}.station-directions{padding:8px 12px;font-size:.86rem;white-space:nowrap}.map-popup-actions{margin-top:14px}.map-popup-actions .station-directions{display:inline-block}@media(max-width:550px){.station-card-actions{grid-column:2;align-items:flex-start;flex-direction:row;flex-wrap:wrap}.station-card .state{grid-column:auto}}

/* mobile.css */
/* =========================================================
   SwiftCharge Mobile UX v13
   Phone-first layout for public map, driver and operator UI.
   ========================================================= */

/* Mobile-only driver chrome must stay completely hidden on desktop. */
.mobile-context-bar,.mobile-drawer-close,.mobile-nav-backdrop,.swift-mobile-brand,.swift-mobile-balance{display:none}

@media (max-width:900px){
  :root{--header-h:64px}
  html,body{width:100%;max-width:100%;overflow-x:hidden}
  body{font-size:15px;padding-bottom:env(safe-area-inset-bottom)}
  body.driver-nav-open,body.portal-nav-open{overflow:hidden;touch-action:none}
  img,svg,canvas,video{max-width:100%;height:auto}
  button,a,input,select,textarea{max-width:100%}
  input,select,textarea{font-size:16px!important;min-width:0}
  .hidden{display:none!important}

  /* Primary site header */
  header{height:64px;padding:0 max(14px,env(safe-area-inset-left)) 0 max(14px,env(safe-area-inset-right));z-index:1100}
  .logo-wrap{width:164px;height:40px}
  .logo-wrap img{max-height:40px}
  .logo-spark{right:6px;top:4px}
  .menu-toggle{display:flex;flex:0 0 44px}
  header #mainNav{display:none;position:absolute;top:64px;left:0;right:0;z-index:1090;padding:12px 14px 18px;flex-direction:column;align-items:stretch;gap:5px;background:#fffaf0;border-bottom:1px solid var(--line);box-shadow:0 18px 40px #0002}
  body.nav-open header #mainNav{display:flex}
  header #mainNav a{display:flex;align-items:center;min-height:46px;padding:11px 14px;border-radius:11px}
  header #mainNav .nav-cta{justify-content:center;margin-top:4px}

  /* Shared mobile page geometry */
  .page{width:100%;padding:22px 14px 32px;min-height:0}
  .page-title{margin-bottom:16px;gap:10px;align-items:flex-start}
  .page-title>div{min-width:0;flex:1}
  .page-title h1{font-size:clamp(1.72rem,8vw,2.2rem);line-height:1.05;overflow-wrap:anywhere}
  .page-title p{margin:.3rem 0 0}
  .page-title>.button,.page-title>.secondary{min-height:42px;padding:9px 12px}
  .card,.grid article,.stats article{padding:18px 16px;border-radius:14px}
  .card-head{gap:10px;align-items:flex-start;flex-wrap:wrap}
  .card-head>*{min-width:0}
  .card-head .actions{width:100%}
  .section-heading{display:grid!important;grid-template-columns:1fr;gap:12px;margin-bottom:16px}
  .section-heading h2{font-size:1.55rem!important;line-height:1.1}
  .section-heading p{line-height:1.45}
  .section-heading>.button,.section-heading>.secondary,.section-heading>.topup-mini-balance{width:100%;max-width:none}
  .actions{gap:8px}
  .actions>.button,.actions>.secondary,.actions>a{min-height:44px}
  .data-row{display:grid!important;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}
  .data-row>*{min-width:0;overflow-wrap:anywhere}
  .loading,.empty{padding:24px 12px}

  /* Home */
  .hero{grid-template-columns:1fr!important;gap:24px;min-height:auto;padding:34px 16px 38px}
  .hero h1{font-size:clamp(2.4rem,13vw,3.45rem);line-height:.96;margin:.12em 0 .28em}
  .hero p{font-size:1rem;line-height:1.55}
  .hero-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px}
  .hero-actions .button,.hero-actions .secondary{width:100%;min-height:48px;padding:11px}
  .hero aside{padding:23px 20px;border-radius:18px}
  .hero aside strong{font-size:2.35rem}
  .grid{grid-template-columns:1fr!important;padding:22px 16px 36px;gap:12px}

  /* Public map */
  .map-filter-bar{grid-template-columns:1fr 1fr!important;gap:9px;padding:11px;margin-bottom:12px;border-radius:12px}
  .map-filter-bar label:first-child{grid-column:1/-1!important}
  .map-filter-bar label{min-width:0}
  .map-filter-bar input,.map-filter-bar select{width:100%;min-height:44px;padding:9px 10px}
  .map-filter-bar .secondary{width:100%;min-height:44px}
  .map-layout,.driver-map-layout{display:grid!important;grid-template-columns:1fr!important;gap:12px}
  .map-panel{min-height:0;border-radius:14px}
  .charger-map,.driver-map-layout .charger-map{height:clamp(330px,52dvh,470px)!important;position:static!important;border-radius:14px}
  .station-list{gap:10px}
  .station-card{display:grid!important;grid-template-columns:48px minmax(0,1fr)!important;gap:10px;padding:13px;align-items:start}
  .station-card .pin{width:44px;min-width:44px;height:48px;border-radius:13px}
  .station-card>div:nth-child(2){min-width:0}
  .station-card h3{font-size:1rem;overflow-wrap:anywhere}
  .station-card p,.station-card small{font-size:.78rem;line-height:1.4;overflow-wrap:anywhere}
  .station-meta{gap:5px;margin-top:6px}
  .station-meta span{font-size:.66rem}
  .station-card-actions{grid-column:1/-1!important;display:grid!important;grid-template-columns:auto 1fr 1fr 1fr;gap:6px;align-items:center!important;width:100%;min-width:0}
  .station-card-actions .state{justify-self:start;white-space:nowrap}
  .station-directions{min-width:0!important;width:100%;padding:8px 7px;font-size:.74rem;white-space:normal!important;text-align:center}
  .leaflet-popup-content-wrapper{max-width:calc(100vw - 36px)}
  .leaflet-popup-content{min-width:0!important;width:min(270px,calc(100vw - 70px))!important;margin:13px 15px!important;overflow-wrap:anywhere}
  .map-popup-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}
  .swift-map-pin{width:46px;height:50px;border-radius:15px 15px 15px 4px}

  /* Shared mobile context navigation */
  .mobile-context-bar{display:flex;align-items:center;gap:8px;position:sticky;top:70px;z-index:800;margin:0 0 14px;padding:8px;background:rgba(255,250,240,.96);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:13px;box-shadow:0 8px 24px #211d1a12}
  .mobile-context-menu{display:flex;align-items:center;gap:10px;min-width:0;flex:1;border:0;background:transparent;text-align:left;padding:6px 7px;color:var(--ink);font:inherit;cursor:pointer}
  .mobile-context-menu>span:last-child{display:grid;min-width:0;line-height:1.15}
  .mobile-context-menu small{font-size:.67rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:750}
  .mobile-context-menu strong{font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .mobile-menu-icon{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border-radius:9px;background:#211d1a;color:#fff;font-size:1rem}
  .mobile-credit-button,.mobile-home-button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;flex:0 0 auto;padding:8px 11px;border:0;border-radius:10px;background:var(--red);color:#fff;font:inherit;font-weight:800;text-decoration:none;cursor:pointer}
  .mobile-home-button{background:#fff;color:var(--red);border:1px solid #d8b3b6}
  .mobile-drawer-close{display:block;width:100%;min-height:44px;margin-bottom:6px;border:1px solid #5c534e;border-radius:10px;background:#342f2b;color:#fff;font:inherit;font-weight:700;cursor:pointer}
  .mobile-nav-backdrop{display:none;position:fixed;inset:0;z-index:1200;border:0;background:rgba(12,10,9,.56);backdrop-filter:blur(2px)}
  body.driver-nav-open #driverNavBackdrop,body.portal-nav-open #mobileNavBackdrop{display:block}

  /* Driver dashboard */
  .driver-page{max-width:none;margin:0;padding-top:18px}
  .driver-page>.page-title{align-items:center}
  .driver-page>.page-title #driverLogout{font-size:.8rem;padding:8px 10px;min-height:40px}
  .driver-shell{display:block!important;width:100%;min-width:0}
  .driver-nav{display:grid!important;position:fixed!important;z-index:1300;top:0!important;bottom:0;left:0;width:min(86vw,330px);max-height:none!important;overflow-y:auto;padding:max(16px,env(safe-area-inset-top)) 14px max(20px,env(safe-area-inset-bottom));border-radius:0 18px 18px 0;transform:translateX(-105%);transition:transform .24s ease;box-shadow:20px 0 60px #0005}
  body.driver-nav-open .driver-nav{transform:translateX(0)}
  .driver-nav nav{display:grid!important;position:static!important;inset:auto!important;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important;grid-template-columns:1fr!important;gap:3px!important}
  .driver-nav nav button,.driver-nav nav a{min-height:44px;padding:11px 12px!important;font-size:.92rem!important}
  .driver-nav>.button{min-height:46px}
  .driver-support{display:block;text-decoration:none}
  .driver-workspace{width:100%;min-width:0;overflow:visible}
  .driver-grid{display:grid!important;grid-template-columns:1fr!important;gap:12px!important;margin-top:12px}
  .driver-grid .wide{grid-column:auto!important}
  .driver-stats,.stats.compact{display:grid!important;grid-template-columns:1fr 1fr!important;gap:9px!important;margin-bottom:12px}
  .driver-stats article,.stats.compact article{padding:14px 12px!important;min-height:94px}
  .driver-stats article strong,.stats.compact article strong{font-size:1.35rem!important;overflow-wrap:anywhere}
  .active-session{border-left-width:4px;padding:15px 14px}
  .active-session h2,.active-session h3{font-size:1.25rem}
  .topup-mini-balance{min-width:0!important;width:100%;padding:12px 14px}
  .topup-mini-balance strong{font-size:1.55rem}
  .topup-load-card{max-width:none}
  .amount-grid,.token-amount-grid{grid-template-columns:1fr 1fr!important;gap:8px!important;margin:14px 0!important}
  .amount-grid span,.token-amount-grid label span{min-height:82px!important;padding:13px 8px!important;font-size:1.05rem!important}
  .topup-submit-row{display:grid!important;grid-template-columns:1fr;gap:13px!important;align-items:stretch!important}
  .topup-submit-row .button{width:100%;min-height:48px}
  .custom-topup{max-width:none}

  /* Begin charging */
  .charge-start-banner{display:grid!important;grid-template-columns:1fr;gap:14px;padding:18px 16px;border-radius:16px}
  .charge-start-banner h3{font-size:1.35rem}
  .charge-credit{width:100%;min-width:0!important;padding:12px 14px}
  .charge-flow{display:grid!important;grid-template-columns:1fr!important;gap:11px!important}
  .charge-step-card{padding:16px 14px;border-radius:15px}
  .charge-step-title{gap:9px;margin-bottom:13px}
  .charge-step-title>span{width:30px;height:30px;flex-basis:30px}
  .connector-choice{display:grid!important;grid-template-columns:1fr;gap:9px!important;align-items:start!important;padding:12px!important}
  .connector-choice-main{align-items:flex-start;min-width:0}
  .connector-choice-main>span:last-child{min-width:0}
  .connector-choice-main strong,.connector-choice-main small{overflow-wrap:anywhere}
  .connector-choice-meta{display:flex!important;text-align:left!important;gap:7px!important;flex-wrap:wrap}
  .charge-review{grid-template-columns:1fr!important;gap:7px}
  .charge-empty-state{padding:32px 16px}

  /* Forms */
  .form-grid{display:grid!important;grid-template-columns:1fr!important;gap:11px!important}
  .form-grid .wide{grid-column:auto!important}
  .form-grid label{min-width:0}
  .form-grid input,.form-grid select,.form-grid textarea,.filter-row input,.filter-row select{width:100%;min-height:44px;padding:10px 11px}
  .form-grid textarea{min-height:110px;resize:vertical}
  .form-grid button{width:100%;min-height:46px}
  .filter-row{display:grid!important;grid-template-columns:1fr 1fr;gap:8px!important;align-items:stretch!important}
  .filter-row>input,.filter-row>label:first-child{grid-column:1/-1}
  .filter-row label{min-width:0}
  .filter-row>.button,.filter-row>.secondary{min-height:44px;width:100%}
  .check-grid label,.check-label{align-items:flex-start!important}

  /* Mobile-friendly data tables: generated tables become labelled cards */
  .responsive-table{overflow:visible!important;border:0!important;background:transparent!important;margin:0 0 16px!important;border-radius:0!important}
  .responsive-table table,.responsive-table tbody,.responsive-table tr,.responsive-table td{display:block;width:100%}
  .responsive-table thead{display:none}
  .responsive-table tbody{display:grid;gap:10px}
  .responsive-table tr{background:#fff;border:1px solid #e5d9c7;border-radius:13px;overflow:hidden;box-shadow:0 4px 14px #211d1a08}
  .responsive-table tr:hover{background:#fff}
  .responsive-table td{display:grid!important;grid-template-columns:minmax(92px,34%) minmax(0,1fr);gap:10px;align-items:start;padding:10px 12px!important;border:0!important;border-bottom:1px solid #f0e7da!important;text-align:left!important;overflow-wrap:anywhere;white-space:normal!important}
  .responsive-table td:last-child{border-bottom:0!important}
  .responsive-table td::before{content:attr(data-label);font-size:.67rem;line-height:1.35;text-transform:uppercase;letter-spacing:.045em;color:#756d66;font-weight:800}
  .responsive-table td[colspan]{display:block!important;text-align:center!important}
  .responsive-table td[colspan]::before{display:none}
  .responsive-table .table-actions,.responsive-table .invoice-row-actions{justify-content:flex-start!important;gap:6px}
  .responsive-table .mini{min-height:38px;padding:7px 9px}
  .invoice-history-grid{border-radius:11px}
  .invoice-history-grid-head{display:none!important}
  .invoice-history-grid-row{display:grid!important;grid-template-columns:1fr!important}
  .invoice-history-grid-row>div{border-left:0!important;border-top:1px solid #f0e8dc!important;padding:11px 12px!important}
  .invoice-history-grid-row>div:first-child{border-top:0!important}
  .invoice-row-actions{justify-content:flex-start!important}

  /* Invoice preview stays compact on screen; print rules still produce A4 */
  .driver-modal{padding:8px!important;align-items:start!important;overflow:auto}
  .driver-modal-card{width:100%!important;max-width:100%!important;max-height:calc(100dvh - 16px)!important;padding:19px 13px!important;border-radius:14px!important}
  .modal-close{right:9px;top:4px;z-index:5;width:42px;height:42px}
  .invoice-modal-toolbar{display:grid!important;grid-template-columns:1fr;gap:10px!important;padding-right:34px}
  .invoice-modal-toolbar .actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .invoice-sheet{width:100%!important;min-height:0!important;padding:18px 14px!important;box-shadow:none!important;border-radius:8px}
  .invoice-paper-header{gap:10px;align-items:flex-start}
  .invoice-paper-header img{width:128px!important;max-width:44%}
  .invoice-paper-header h2{font-size:1.05rem!important;overflow-wrap:anywhere}
  .invoice-paper-meta,.invoice-charge-meta{grid-template-columns:1fr!important;gap:12px!important}
  .invoice-paper-meta>div:last-child{padding-left:0!important;border-left:0!important;border-top:1px solid #e7ddcb;padding-top:12px}
  .invoice-table-wrap{overflow-x:auto!important;-webkit-overflow-scrolling:touch}
  .invoice-table{min-width:520px}
  .invoice-totals{width:100%}

  /* Operator shell */
  .portal-shell{display:block!important;width:100%;min-width:0;background:#f7f3eb}
  .portal-nav{display:grid!important;position:fixed!important;z-index:1300;top:0!important;bottom:0;left:0;width:min(88vw,340px);min-height:0!important;max-height:none!important;overflow-y:auto;padding:max(16px,env(safe-area-inset-top)) 14px max(20px,env(safe-area-inset-bottom));border-radius:0 18px 18px 0;transform:translateX(-105%);transition:transform .24s ease;box-shadow:20px 0 60px #0005}
  body.portal-nav-open .portal-nav{transform:translateX(0)}
  .portal-nav nav{display:grid!important;position:static!important;inset:auto!important;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important;gap:3px!important}
  .portal-nav nav a{display:block!important;min-height:42px;padding:9px 10px!important;border-radius:8px!important;font-size:.9rem!important}
  .portal-brand img{width:166px}
  .portal-content{width:100%;min-width:0;padding:16px 12px 34px!important}
  .portal-mobile-context{top:70px}
  .portal-status-strip{display:grid!important;grid-template-columns:1fr 1fr;gap:6px 12px;padding:10px 11px;margin-bottom:12px;font-size:.7rem}
  .portal-status-strip span:first-child{grid-column:1/-1}
  .portal-content .page-title{display:flex;align-items:flex-start}
  .portal-content .page-title h1{font-size:1.75rem!important}
  .portal-content .live-badge{font-size:.72rem;white-space:nowrap;margin-top:5px}
  .portal-content>.card{padding:15px 12px;border-radius:14px}
  .operator-kpis,.ops-health-grid{grid-template-columns:1fr 1fr!important;gap:8px!important}
  .operator-kpis article,.ops-health-card{padding:13px 11px!important}
  .operator-kpis article strong,.ops-health-card strong{font-size:1.35rem!important}
  .operator-overview-grid,.lab-grid{grid-template-columns:1fr!important;gap:11px!important}
  .ops-panel.wide{grid-column:auto!important}
  .ops-metric-list>div,.ops-list-row{gap:10px;padding:10px 0;align-items:flex-start}
  .ops-list-row{display:grid!important;grid-template-columns:minmax(0,1fr) auto}
  .admin-toolbar{display:grid!important;grid-template-columns:1fr;gap:10px!important;align-items:stretch!important}
  .admin-toolbar h3{margin:0}
  .admin-toolbar>.button,.admin-toolbar>.secondary{width:100%;min-height:44px}
  .admin-form{padding:14px 12px;border-radius:12px}
  .gateway-card,.lab-status-grid{grid-template-columns:1fr 1fr!important;gap:8px!important}
  .gateway-card{padding:12px}
  .lab-toolbar{padding:15px 13px!important}
  .lab-toolbar h3{font-size:1.38rem!important}
  .lab-refresh-controls{display:grid!important;grid-template-columns:1fr 1fr;align-items:center!important;gap:8px!important}
  .lab-refresh-controls .secondary{width:100%}
  .lab-scenarios,.lab-actions{display:grid!important;grid-template-columns:1fr 1fr;gap:8px!important}
  .lab-scenarios>*:first-child{grid-column:1/-1}
  .lab-scenarios .button,.lab-scenarios .secondary,.lab-actions .secondary{width:100%;min-height:42px}
  .lab-details{grid-template-columns:1fr!important}
  .lab-payload{max-width:100%!important;font-size:.7rem}
  .portal-load-error{grid-template-columns:40px minmax(0,1fr)!important;gap:10px!important;padding:16px 13px!important}
  .portal-load-error button{grid-column:1/-1;width:100%}

  /* Charger onboarding */
  .charger-admin-head,.charger-wizard-title{display:grid!important;grid-template-columns:1fr;gap:11px!important}
  .charger-admin-head h3,.charger-wizard-title h3{font-size:1.35rem!important}
  .charger-admin-head .button,.charger-wizard-title .button,.charger-wizard-title .secondary{width:100%;min-height:44px}
  .charger-onboarding{padding:14px 11px!important;border-radius:15px!important}
  .charger-onboarding-grid{grid-template-columns:1fr!important;gap:12px!important}
  .charger-wizard-section{grid-template-columns:32px minmax(0,1fr)!important;gap:9px!important;padding:13px 10px!important;border-radius:13px!important}
  .wizard-section-number{width:30px!important;height:30px!important;font-size:.8rem}
  .wizard-fields,.charger-current-selector,.charger-power-summary,.credential-grid{grid-template-columns:1fr!important;gap:9px!important}
  .wizard-fields .wide,.charger-power-summary .summary-warning{grid-column:auto!important}
  .location-mode-toggle{display:grid!important;grid-template-columns:1fr 1fr;gap:7px!important}
  .location-mode-toggle label{padding:9px 10px!important;text-align:center}
  .charger-current-selector span{min-height:64px!important;padding:10px!important}
  .connector-config-card{grid-template-columns:32px minmax(0,1fr)!important;align-items:start!important;padding:10px!important}
  .connector-config-card label{grid-column:2!important}
  .connector-config-number{width:30px!important;height:30px!important}
  .charger-map-column{position:static!important}
  .charger-onboarding-map{height:clamp(300px,45dvh,390px)!important;border-radius:13px!important}
  .charger-create-submit{min-height:48px}
  .credential-grid code{font-size:.75rem;word-break:break-all}

  /* Generic overflow protection */
  code,pre{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
  .table-wrap:not(.responsive-table){max-width:100%;overflow-x:auto!important;-webkit-overflow-scrolling:touch}
  .table-wrap:not(.responsive-table)>table{min-width:620px}
  footer{display:grid;grid-template-columns:1fr;padding:22px 16px calc(22px + env(safe-area-inset-bottom));font-size:.8rem;line-height:1.5}
}

/* SwiftCharge Update 61 — mobile application refresh.
   Deliberately scoped to the driver app below 900px; desktop and operator layouts are untouched. */
@media (max-width:900px){
  body[data-page="driver"]{
    --sc61-red:#a20d18;--sc61-red-bright:#c61625;--sc61-gold:#d8a014;
    background:#f2f4f7!important;color:#171720!important;
    padding-bottom:calc(104px + env(safe-area-inset-bottom))!important;
  }
  body[data-page="driver"] .driver-workspace{max-width:720px!important;padding:0 18px 28px!important;margin:0 auto!important;}
  body[data-page="driver"] .swift-mobile-brand{padding-top:calc(15px + env(safe-area-inset-top))!important;}
  body[data-page="driver"][data-driver-view]:not([data-driver-view="charge"]) .swift-mobile-brand,
  body[data-page="driver"][data-driver-view]:not([data-driver-view="charge"]) .swift-mobile-scan{display:none!important;}
  body[data-page="driver"][data-driver-view="charge"] .swift-mobile-brand{background:transparent!important;}
  body[data-page="driver"] #driverSectionContent{padding-top:calc(22px + env(safe-area-inset-top))!important;}
  body[data-page="driver"][data-driver-view="charge"] #driverSectionContent{padding-top:4px!important;}

  .swift-mobile-bottom-nav{
    grid-template-columns:repeat(5,1fr)!important;left:16px!important;right:16px!important;bottom:calc(12px + env(safe-area-inset-bottom))!important;
    min-height:76px!important;padding:8px!important;border:1px solid rgba(255,255,255,.85)!important;border-radius:38px!important;
    background:rgba(255,255,255,.96)!important;box-shadow:0 16px 46px rgba(39,34,48,.17)!important;
  }
  .swift-mobile-bottom-nav button{min-width:0!important;min-height:58px!important;border-radius:29px!important;color:#aeb2ba!important;gap:2px!important;transition:background .18s ease,color .18s ease!important;}
  .swift-mobile-bottom-nav button small{font-size:.64rem!important;white-space:nowrap!important;}
  .swift-mobile-bottom-nav button.active{background:linear-gradient(135deg,var(--sc61-red),var(--sc61-red-bright))!important;color:#fff!important;box-shadow:0 8px 22px rgba(162,13,24,.25)!important;}
  .swift-mobile-bottom-nav button.active span{color:#f7d879!important;}

  .swift61-home-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:4px 2px 22px;}
  .swift61-home-head small{display:block;color:#7c7f88;font-size:1rem;margin-bottom:1px}.swift61-home-head h1{margin:0;font-size:2rem;line-height:1;letter-spacing:-.04em;}
  .swift61-home-head button{display:grid;place-items:center;width:58px;height:58px;border:0;border-radius:18px;background:linear-gradient(145deg,var(--sc61-red),var(--sc61-red-bright));color:#fff;box-shadow:0 10px 25px rgba(162,13,24,.22)}
  .swift61-home-head svg{width:27px;height:27px}.swift61-nearest-card{overflow:hidden;background:#fff;border:1px solid #ececf0;border-radius:25px;padding:22px 22px 0;box-shadow:0 14px 38px rgba(39,38,49,.08);}
  .swift61-card-kicker{color:var(--sc61-red);font-weight:800;font-size:.78rem;letter-spacing:.03em;text-transform:uppercase}.swift61-nearest-card h2{font-size:1.5rem;letter-spacing:-.035em;margin:16px 0 5px}.swift61-nearest-card p{color:#777b86;margin:0 0 16px;line-height:1.45}
  .swift61-station-pills{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.swift61-station-pills span{padding:8px 11px;border-radius:999px;background:#f4f5f7;font-size:.76rem;font-weight:750}.swift61-station-pills .available{background:#f7ecd0;color:#8d6100}
  .swift61-map-preview{width:calc(100% + 44px);margin-left:-22px;min-height:64px;padding:0 22px;border:0;border-top:1px solid #eeeef1;background:linear-gradient(90deg,#fff9ea,#fff);display:flex;align-items:center;justify-content:space-between;color:#6e0d15;font:inherit;font-weight:850;text-align:left}.swift61-map-preview b{font-size:1.5rem}
  .swift61-home-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0}.swift61-home-actions button,.swift61-home-actions a{min-height:52px;border:1px solid #e3d0d2;border-radius:999px;background:#fff;color:var(--sc61-red);display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;font:inherit;font-weight:800}
  .swift61-home-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.swift61-session-tile,.swift61-wallet-tile{min-height:176px;border:0;border-radius:25px;padding:20px;text-align:left;box-shadow:0 13px 35px rgba(39,38,49,.08)}.swift61-session-tile{display:flex;flex-direction:column;justify-content:space-between;background:#fff}.swift61-session-tile>span{font-size:2rem;color:#bbb}.swift61-session-tile div{display:grid;gap:5px}.swift61-session-tile small{color:#7d8089}.swift61-wallet-tile{display:flex;flex-direction:column;color:#fff;background:linear-gradient(145deg,#6f0912,var(--sc61-red) 58%,#c59118);}.swift61-wallet-tile span{align-self:flex-end;font-weight:800}.swift61-wallet-tile small{margin-top:auto;opacity:.72;font-size:.64rem;letter-spacing:.16em}.swift61-wallet-tile strong{font-size:1.9rem;margin-top:6px}.swift61-wallet-tile em{font-style:normal;opacity:.8;font-size:.75rem}

  .swift-mobile-heading{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;margin-bottom:18px!important;padding:0!important}.swift-mobile-heading h1{font-size:2rem!important;letter-spacing:-.045em!important}.swift-mobile-heading select{min-height:45px;padding:0 34px 0 14px;border:1px solid #e3e4e8;border-radius:999px;background:#fff;font:inherit;font-weight:750;color:#292934}
  .swift61-insight-card{min-height:300px;padding:22px;border:1px solid #ebebef;border-radius:27px;background:#fff;box-shadow:0 16px 38px rgba(39,38,49,.08)}.swift61-insight-title{display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:10px}.swift61-insight-title>span{display:grid;place-items:center;width:42px;height:42px;border-radius:13px;background:#fbebed;color:var(--sc61-red);font-size:1.2rem}.swift61-insight-title small{padding:8px 11px;border-radius:999px;background:#fff6dd;color:#7c5800;font-weight:800}.swift61-insight-total{display:flex;align-items:end;gap:14px;margin:20px 0}.swift61-insight-total b{font-size:2.4rem;line-height:1}.swift61-insight-total span{color:#8a8d96}.swift61-insight-empty{display:grid;place-items:center;min-height:150px;color:#a1a3aa;text-align:center}.swift61-history-title{font-size:1.25rem;margin:24px 4px 12px}.swift61-history-list{display:grid;gap:10px}.swift61-history-list article{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:15px 17px;border:1px solid #ececf0;border-radius:18px;background:#fff}.swift61-history-list article div{display:grid;gap:4px}.swift61-history-list small{color:#7f828b}.swift61-no-history{padding:42px 20px;border:1px dashed #d6d7dc;border-radius:20px;color:#92949c;text-align:center}

  body[data-page="driver"] .swift-map-card{border:0!important;border-radius:26px!important;box-shadow:0 16px 38px rgba(39,38,49,.11)!important}.swift-map-search label,.swift-map-search>button{border-color:#e5e5e9!important;border-radius:17px!important}.swift-map-filter-row button.active{background:var(--sc61-red)!important;color:#fff!important}.swift-map-card .charger-map{height:clamp(470px,65dvh,680px)!important}
  .swift-account-compact,.swift-live-session-card,.swift-focused-charge-card,.swift-mobile-empty{border:0!important;border-radius:26px!important;box-shadow:0 16px 38px rgba(39,38,49,.08)!important}.swift-account-shortcuts{grid-template-columns:repeat(2,1fr)!important}.swift-account-shortcuts button:last-child{grid-column:1/-1!important}.swift-account-pay,.swift-primary-charge-button,.swift-mobile-scan button{background:linear-gradient(135deg,var(--sc61-red),var(--sc61-red-bright))!important;color:#fff!important;border-radius:999px!important}.swift-gold-button{background:linear-gradient(135deg,#bf8810,#e1ad2e)!important;color:#201704!important}
  .driver-modal{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.driver-modal-card{border-radius:27px!important;box-shadow:0 25px 80px rgba(25,22,29,.3)!important}
}

@media (max-width:390px){.swift61-home-grid{grid-template-columns:1fr}.swift61-session-tile,.swift61-wallet-tile{min-height:145px}.swift-mobile-bottom-nav{left:8px!important;right:8px!important}.swift-mobile-bottom-nav button small{font-size:.59rem!important}}

@media (max-width:560px){
  .map-filter-bar{grid-template-columns:1fr!important}
  .map-filter-bar label:first-child{grid-column:auto!important}
  .station-card-actions{grid-template-columns:1fr 1fr!important}
  .station-card-actions .state{grid-column:1/-1}
  .hero-actions{grid-template-columns:1fr}
  .driver-stats,.stats.compact,.operator-kpis,.ops-health-grid,.gateway-card,.lab-status-grid{grid-template-columns:1fr!important}
  .filter-row{grid-template-columns:1fr!important}
  .filter-row>*{grid-column:auto!important}
  .portal-status-strip{grid-template-columns:1fr}
  .portal-status-strip span:first-child{grid-column:auto}
  .lab-refresh-controls,.lab-scenarios,.lab-actions{grid-template-columns:1fr!important}
  .lab-scenarios>*:first-child{grid-column:auto}
  .mobile-context-bar{top:68px;margin-left:-2px;margin-right:-2px}
  .mobile-credit-button,.mobile-home-button{font-size:.78rem;padding:8px 9px}
  .responsive-table td{grid-template-columns:88px minmax(0,1fr);gap:8px;padding:9px 10px!important}
  .data-row{grid-template-columns:1fr!important}
  .data-row>small,.data-row>strong,.data-row>button{justify-self:start}
}

@media (max-width:380px){
  .page{padding-left:10px;padding-right:10px}
  header{padding-left:10px;padding-right:10px}
  .logo-wrap{width:145px}
  .mobile-context-bar{padding:6px}
  .mobile-context-menu{gap:7px;padding:5px}
  .mobile-menu-icon{width:31px;height:31px;flex-basis:31px}
  .mobile-credit-button,.mobile-home-button{padding:7px 8px;font-size:.72rem}
  .responsive-table td{grid-template-columns:1fr;gap:3px}
  .responsive-table td::before{margin-bottom:1px}
  .amount-grid,.token-amount-grid{grid-template-columns:1fr!important}
}

/* Landscape phones: reduce tall maps while keeping controls reachable. */
@media (max-width:900px) and (orientation:landscape) and (max-height:520px){
  .charger-map,.driver-map-layout .charger-map,.charger-onboarding-map{height:300px!important}
  .mobile-context-bar{position:relative;top:auto}
}

/* Map fit refinement v14 */
@media (max-width:900px){
  .map-layout,.driver-map-layout{grid-template-columns:1fr!important;gap:12px!important}
  .map-panel{width:100%;min-width:0;overflow:hidden}
  .charger-map,.driver-map-layout .charger-map{width:100%!important;height:clamp(380px,54dvh,520px)!important;min-height:380px!important;position:static!important}
  .station-list{max-height:none!important;overflow:visible!important;padding-right:0!important;grid-template-columns:1fr!important}
  .station-title-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .swift-map-legend{max-width:calc(100vw - 56px);white-space:normal}
}
@media (max-width:560px){
  .charger-map,.driver-map-layout .charger-map{height:clamp(360px,50dvh,460px)!important;min-height:360px!important}
  .station-card{grid-template-columns:48px minmax(0,1fr)!important}
  .station-card-actions{grid-template-columns:1fr 1fr!important}
  .station-card-actions .state{grid-column:1/-1}
  .map-popup-actions{grid-template-columns:1fr 1fr!important}
  .leaflet-control-zoom a{width:34px;height:34px;line-height:34px}
}

/* SwiftCharge simple mobile charging flow v27 */
@media (max-width:900px){
  .driver-mobile-context{grid-template-columns:minmax(0,1fr) auto auto!important;gap:7px!important}
  .mobile-scan-button{display:inline-flex!important;align-items:center;justify-content:center;min-height:42px;padding:8px 12px;border:0;border-radius:12px;background:#b20814;color:#fff;font-weight:800;font-size:.82rem;white-space:nowrap;box-shadow:0 8px 20px rgba(178,8,20,.22)}
  .simple-charge-intro{text-align:center;padding:8px 2px 14px}
  .simple-charge-intro .eyebrow{display:block;margin-bottom:5px}
  .simple-charge-intro h2{margin:0 0 6px;font-size:1.65rem}
  .simple-charge-intro p{margin:0;color:var(--muted,#68727d)}
  .simple-charge-actions{display:grid;gap:10px;margin:12px 0}
  .simple-charge-actions .button{width:100%;min-height:56px;font-size:1.05rem;font-weight:850;border-radius:14px}
  .simple-balance{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 14px;margin:10px 0 14px;border:1px solid rgba(127,127,127,.2);border-radius:14px;background:rgba(127,127,127,.06)}
  .simple-balance span{font-size:.82rem}.simple-balance strong{font-size:1.2rem}
  .simple-credit-warning{padding:16px;border-radius:14px;background:rgba(178,8,20,.08);border:1px solid rgba(178,8,20,.18);text-align:center;margin:12px 0}
  .simple-credit-warning h3{margin:0 0 5px}.simple-credit-warning p{margin:0 0 12px}
  .simple-connector-list{display:grid;gap:9px;margin-top:14px}
  .simple-connector-list .connector-choice{padding:12px!important;border-radius:13px!important}
  .simple-optional{margin-top:12px}
  .simple-optional summary{cursor:pointer;text-align:center;font-weight:700;padding:10px;color:var(--muted,#68727d)}
  .charge-review-card{padding:14px!important}
  .charge-review-card .charge-step-title{display:none!important}
  .charge-start-button{min-height:58px!important;font-size:1.08rem!important;width:100%!important}
  .driver-workspace>.section-heading{display:none}
}
@media (max-width:560px){
  .driver-mobile-context{grid-template-columns:minmax(0,1fr) auto!important}
  .driver-mobile-context .mobile-credit-button{display:none!important}
  .mobile-scan-button{font-size:.78rem;padding:8px 10px}
}

/* SwiftCharge Mobile App Experience v29 */
.swift-mobile-scan,.swift-mobile-bottom-nav{display:none}
@media (max-width:900px){
  body[data-page="driver"]{background:#fffaf2;color:#171513;padding-bottom:92px}
  body[data-page="driver"]>header,body[data-page="driver"]>footer{display:none!important}
  body[data-page="driver"] .driver-page{padding:0 14px 100px!important;background:linear-gradient(180deg,#fffaf2 0%,#fffdf8 70%)}
  body[data-page="driver"] .driver-page>.page-title{display:none!important}
  body[data-page="driver"] .driver-shell{display:block!important;grid-template-columns:1fr!important;max-width:620px;margin:0 auto}
  body[data-page="driver"] .driver-nav,body[data-page="driver"] .driver-mobile-context,body[data-page="driver"] .driver-backdrop{display:none!important}
  body[data-page="driver"] .driver-workspace{min-width:0;padding:0!important;background:transparent!important}
  body[data-page="driver"] #driverLoggedOut{margin:24px auto;max-width:520px}
  body[data-page="driver"] #driverDashboard.hidden{display:none!important}
  .swift-mobile-scan{display:block;position:sticky;top:0;z-index:1050;padding:calc(12px + env(safe-area-inset-top)) 22px 12px;margin:0 -14px 10px;background:linear-gradient(180deg,#fffaf2 75%,rgba(255,250,242,0))}
  .swift-mobile-scan button{display:flex;width:min(100%,330px);margin:auto;min-height:54px;align-items:center;justify-content:center;gap:10px;border:0;border-radius:28px;background:linear-gradient(135deg,#b70816,#c71620);color:white;font-size:1.03rem;font-weight:850;box-shadow:0 10px 25px rgba(183,8,22,.18)}
  #driverSectionContent{padding:0 2px 8px}
  #driverSectionContent>.section-heading{display:block!important;margin:12px 2px 16px!important}
  #driverSectionContent>.section-heading h2{font-size:1.8rem!important;letter-spacing:-.035em;margin:0 0 5px}
  #driverSectionContent>.section-heading p{margin:0;color:#6d6761;font-size:.92rem}
  #activeSessionArea{display:none}
  body[data-driver-view="active"] #activeSessionArea{display:block;margin:0 2px 14px}
  body[data-driver-view="active"] #activeSessionArea .active-session{border-radius:16px!important;box-shadow:0 8px 24px rgba(37,29,20,.08)}
  .swift-mobile-bottom-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;left:0;right:0;bottom:0;z-index:1200;min-height:72px;padding:7px max(10px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));background:rgba(255,255,255,.96);border-top:1px solid #e9e2d8;box-shadow:0 -8px 25px rgba(39,30,20,.07);backdrop-filter:blur(16px)}
  .swift-mobile-bottom-nav button{border:0;background:transparent;color:#4d4844;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:56px;font-weight:700}
  .swift-mobile-bottom-nav button>span{font-size:1.45rem;line-height:1}.swift-mobile-bottom-nav button>small{font-size:.72rem}
  .swift-mobile-bottom-nav button.active{color:#b70816}
  /* Map: app-like, map first, no long charger list */
  body[data-driver-view="map"] .driver-map-tools{grid-template-columns:1fr auto!important;padding:0!important;background:transparent!important;border:0!important;box-shadow:none!important}
  body[data-driver-view="map"] .driver-map-tools label:first-child{grid-column:auto!important}
  body[data-driver-view="map"] .driver-map-tools label:not(:first-child),body[data-driver-view="map"] #clearStationFilters{display:none!important}
  body[data-driver-view="map"] .driver-map-layout>section:nth-child(2){display:none!important}
  body[data-driver-view="map"] .driver-map-layout .charger-map{height:calc(100dvh - 270px)!important;min-height:420px!important;border:1px solid #eee2d3;border-radius:18px!important;box-shadow:0 8px 25px rgba(37,29,20,.08)}
  body[data-driver-view="map"] .map-filter-bar input{border-radius:13px!important;background:#fff!important;border:1px solid #e7ded3!important}
  /* Account and More */
  .swift-account-card,.swift-credit-card,.swift-menu-card{background:#fff;border:1px solid #eee4d8;border-radius:16px;box-shadow:0 7px 22px rgba(45,34,22,.055);margin-bottom:12px}
  .swift-account-card{display:flex;align-items:center;gap:12px;padding:14px}
  .swift-avatar{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:#b70816;color:#fff;font-weight:850}
  .swift-account-card>div:last-child{display:grid;gap:2px}.swift-account-card small{color:#716a64}
  .swift-credit-card{padding:14px}.swift-credit-card>div{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px}.swift-credit-card strong{color:#b70816;font-size:1.05rem}.swift-credit-card .button{width:100%;border-radius:11px}
  .swift-menu-card{overflow:hidden}
  .swift-menu-card button{width:100%;display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;min-height:53px;padding:11px 14px;border:0;border-bottom:1px solid #eee8df;background:#fff;color:#1e1b19;text-align:left;font-size:.95rem}
  .swift-menu-card button:last-child{border-bottom:0}.swift-menu-card button>b{font-size:1.35rem;font-weight:400}.swift-menu-card .swift-logout-row{color:#b70816;background:#fffafa}
  .swift-empty-active{text-align:center;padding:34px 20px!important}.swift-empty-icon{font-size:2.4rem;color:#d59a00}.swift-empty-active h3{margin:8px 0 5px}.swift-empty-active p{color:#716a64;margin:0 0 16px}
  /* Focused QR result remains minimal */
  body[data-driver-view="charge"] #driverSectionContent>.section-heading{display:none!important}
  body[data-driver-view="charge"] .charge-step-card{border-radius:17px!important;box-shadow:0 7px 22px rgba(45,34,22,.055)}
  body[data-driver-view="charge"] .charge-start-banner{border-radius:17px!important}
}

/* SwiftCharge Mobile Final Experience v30 */
@media (max-width:900px){
  html,body[data-page="driver"]{background:#fffaf2!important;min-height:100%;}
  body[data-page="driver"]{padding:0 0 calc(84px + env(safe-area-inset-bottom))!important;overflow-x:hidden!important;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;color:#171513!important;}
  body[data-page="driver"] .driver-page{max-width:600px!important;margin:0 auto!important;padding:0 18px 110px!important;min-height:100dvh!important;background:linear-gradient(180deg,#fffaf2 0%,#fffdf9 100%)!important;}
  body[data-page="driver"] .driver-shell{display:block!important;width:100%!important;max-width:none!important;margin:0!important;}
  body[data-page="driver"] .driver-workspace{display:block!important;width:100%!important;overflow:visible!important;}
  body[data-page="driver"] #driverSectionContent{display:block!important;visibility:visible!important;opacity:1!important;min-height:420px!important;padding:0 0 20px!important;}
  body[data-page="driver"] #activeSessionArea{display:none!important;}
  .swift-mobile-scan{display:block!important;position:sticky!important;top:0!important;z-index:1500!important;padding:calc(14px + env(safe-area-inset-top)) 0 12px!important;margin:0!important;background:linear-gradient(180deg,#fffaf2 78%,rgba(255,250,242,.94) 90%,rgba(255,250,242,0))!important;}
  .swift-mobile-scan button{width:min(100%,320px)!important;min-height:52px!important;margin:0 auto!important;border-radius:28px!important;background:linear-gradient(135deg,#b40715,#c91923)!important;box-shadow:0 10px 24px rgba(183,8,22,.18)!important;font-size:1rem!important;font-weight:800!important;letter-spacing:-.01em!important;}
  .swift-mobile-scan button svg{width:22px;height:22px;flex:0 0 22px;}
  .swift-mobile-heading{padding:10px 2px 14px!important;}
  .swift-mobile-heading h1{margin:0 0 4px!important;font-size:1.62rem!important;line-height:1.05!important;letter-spacing:-.035em!important;color:#171513!important;}
  .swift-mobile-heading p{margin:0!important;color:#6e6761!important;font-size:.9rem!important;line-height:1.4!important;}

  /* Bottom app navigation is mounted directly under BODY in JS so iOS Safari keeps it viewport-fixed. */
  .swift-mobile-bottom-nav{display:grid!important;grid-template-columns:repeat(4,1fr)!important;position:fixed!important;left:0!important;right:0!important;bottom:0!important;top:auto!important;z-index:5000!important;height:auto!important;min-height:72px!important;padding:7px max(10px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))!important;background:rgba(255,255,255,.97)!important;border-top:1px solid #ebe4db!important;box-shadow:0 -10px 28px rgba(32,24,18,.08)!important;backdrop-filter:blur(18px)!important;-webkit-backdrop-filter:blur(18px)!important;transform:none!important;}
  .swift-mobile-bottom-nav.hidden{display:none!important;}
  .swift-mobile-bottom-nav button{min-height:56px!important;border:0!important;background:transparent!important;color:#4d4844!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;gap:3px!important;padding:4px!important;font:inherit!important;font-weight:700!important;}
  .swift-mobile-bottom-nav button span{display:grid!important;place-items:center!important;width:25px!important;height:25px!important;font-size:0!important;}
  .swift-mobile-bottom-nav button svg{width:23px!important;height:23px!important;display:block!important;}
  .swift-mobile-bottom-nav button small{font-size:.72rem!important;line-height:1!important;}
  .swift-mobile-bottom-nav button.active{color:#ba0a18!important;}

  /* Map */
  .swift-map-search{display:grid!important;grid-template-columns:1fr 48px!important;gap:9px!important;margin:0 0 12px!important;}
  .swift-map-search label{height:48px!important;display:flex!important;align-items:center!important;gap:8px!important;padding:0 13px!important;background:#fff!important;border:1px solid #eadfd2!important;border-radius:13px!important;box-shadow:0 4px 14px rgba(40,30,20,.035)!important;}
  .swift-map-search label span{font-size:1.3rem!important;color:#6f6861!important;}
  .swift-map-search input{width:100%!important;border:0!important;outline:0!important;background:transparent!important;font:inherit!important;font-size:.9rem!important;padding:0!important;}
  .swift-map-search>button{border:1px solid #eadfd2!important;border-radius:13px!important;background:#fff!important;color:#302b27!important;font-size:1.25rem!important;box-shadow:0 4px 14px rgba(40,30,20,.035)!important;}
  .swift-map-card{position:relative!important;overflow:hidden!important;border-radius:19px!important;border:1px solid #eadfd2!important;background:#e9eee8!important;box-shadow:0 10px 28px rgba(48,34,21,.08)!important;}
  .swift-map-card .charger-map{display:block!important;width:100%!important;height:clamp(420px,58dvh,610px)!important;min-height:420px!important;border:0!important;border-radius:0!important;margin:0!important;}
  .swift-map-filter-dock{position:absolute!important;z-index:800!important;left:10px!important;right:10px!important;bottom:10px!important;display:grid!important;grid-template-columns:repeat(4,1fr)!important;background:rgba(255,255,255,.96)!important;border:1px solid rgba(224,215,204,.92)!important;border-radius:14px!important;padding:6px!important;box-shadow:0 8px 22px rgba(28,22,17,.14)!important;backdrop-filter:blur(14px)!important;-webkit-backdrop-filter:blur(14px)!important;}
  .swift-map-filter-dock button{border:0!important;background:transparent!important;display:flex!important;flex-direction:column!important;align-items:center!important;gap:2px!important;padding:6px 2px!important;color:#4e4843!important;font-weight:700!important;}
  .swift-map-filter-dock button b{font-size:1rem!important;line-height:1!important;}
  .swift-map-filter-dock button small{font-size:.67rem!important;}
  .swift-map-filter-dock button.active{color:#ba0a18!important;}
  .swift-map-count{padding:9px 3px 0!important;color:#766e67!important;font-size:.78rem!important;}
  .swift-hidden-map-controls{display:none!important;}

  /* Active */
  .swift-live-session-card,.swift-mobile-empty,.swift-profile-summary,.swift-credit-panel,.swift-mobile-list,.swift-focused-charge-card{background:#fff!important;border:1px solid #eee4d9!important;border-radius:17px!important;box-shadow:0 8px 24px rgba(44,32,20,.06)!important;}
  .swift-live-session-card{padding:14px!important;}
  .swift-live-session-head{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:12px!important;padding:0 0 12px!important;border-bottom:1px solid #eee8e1!important;}
  .swift-live-session-head>div{display:grid!important;gap:3px!important;min-width:0!important;}
  .swift-live-session-head strong{font-size:1rem!important;line-height:1.25!important;}
  .swift-live-session-head small{color:#756d66!important;font-size:.78rem!important;}
  .swift-ac-badge{display:grid!important;place-items:center!important;width:31px!important;height:31px!important;border-radius:8px!important;background:#14964c!important;color:#fff!important;font-weight:900!important;}
  .swift-live-row,.swift-focused-row{display:flex!important;justify-content:space-between!important;align-items:center!important;gap:15px!important;padding:12px 2px!important;border-bottom:1px solid #eee8e1!important;}
  .swift-live-row span,.swift-focused-row span{font-size:.88rem!important;color:#403b37!important;}
  .swift-live-row strong,.swift-focused-row strong{font-size:.9rem!important;text-align:right!important;color:#181513!important;}
  .swift-live-status{color:#109044!important;}
  .swift-live-progress{display:grid!important;gap:2px!important;margin:13px 0!important;padding:12px!important;border-radius:12px!important;background:#fff8e9!important;}
  .swift-live-progress span{font-weight:800!important;}
  .swift-live-progress small{color:#6f665d!important;}
  .swift-stop-button{width:100%!important;min-height:45px!important;border:1px solid #c40d1c!important;border-radius:10px!important;background:#fff!important;color:#bd0a18!important;font-weight:800!important;font-size:.9rem!important;}
  .swift-mobile-empty{text-align:center!important;padding:30px 20px!important;}
  .swift-mobile-empty-icon{width:52px!important;height:52px!important;margin:0 auto 8px!important;color:#bd0a18!important;}
  .swift-mobile-empty-icon svg{width:100%!important;height:100%!important;}
  .swift-mobile-empty h2{margin:0 0 6px!important;font-size:1.22rem!important;}
  .swift-mobile-empty p{margin:0 auto 16px!important;color:#716a63!important;max-width:310px!important;}

  /* Account + More */
  .swift-profile-summary{display:grid!important;grid-template-columns:48px minmax(0,1fr) 30px!important;align-items:center!important;gap:11px!important;padding:13px!important;margin-bottom:11px!important;}
  .swift-profile-summary>div:nth-child(2){display:grid!important;gap:2px!important;min-width:0!important;}
  .swift-profile-summary strong{font-size:.98rem!important;}
  .swift-profile-summary small{font-size:.75rem!important;color:#716a63!important;overflow:hidden!important;text-overflow:ellipsis!important;}
  .swift-profile-summary>button{border:0!important;background:transparent!important;font-size:1.55rem!important;color:#3d3834!important;}
  .swift-credit-panel{padding:13px!important;margin-bottom:16px!important;}
  .swift-credit-panel>div{display:flex!important;justify-content:space-between!important;gap:10px!important;margin-bottom:11px!important;align-items:center!important;}
  .swift-credit-panel span{font-size:.86rem!important;}
  .swift-credit-panel strong{font-size:1rem!important;color:#b90b18!important;}
  .swift-gold-button{width:100%!important;min-height:43px!important;border:0!important;border-radius:10px!important;background:linear-gradient(135deg,#d8a014,#e7ad12)!important;color:#fff!important;font-weight:800!important;font-size:.9rem!important;}
  .swift-list-title{font-size:.9rem!important;margin:16px 2px 8px!important;}
  .swift-mobile-list{overflow:hidden!important;margin-bottom:14px!important;}
  .swift-mobile-list button{width:100%!important;min-height:52px!important;display:grid!important;grid-template-columns:30px 1fr 20px!important;align-items:center!important;gap:7px!important;padding:10px 13px!important;border:0!important;border-bottom:1px solid #eee8e1!important;background:#fff!important;color:#181513!important;text-align:left!important;font:inherit!important;font-size:.9rem!important;}
  .swift-mobile-list button:last-child{border-bottom:0!important;}
  .swift-list-icon{display:grid!important;place-items:center!important;font-size:1.05rem!important;color:#514a44!important;}
  .swift-mobile-list button>b{font-size:1.3rem!important;font-weight:400!important;color:#5e5751!important;}
  .swift-mobile-list .swift-logout-row{color:#bd0a18!important;background:#fffafa!important;}

  /* Focused QR flow */
  body[data-driver-view="charge"] #driverSectionContent{min-height:0!important;}
  .swift-charge-progress{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:7px!important;margin:9px 0 18px!important;}
  .swift-charge-progress span{display:grid!important;place-items:center!important;min-height:31px!important;border:1px solid #e6ded4!important;border-radius:999px!important;background:#fff!important;color:#817971!important;font-size:.68rem!important;font-weight:850!important;letter-spacing:.08em!important;}
  .swift-charge-progress span.done{background:#169451!important;border-color:#169451!important;color:#fff!important;}
  .swift-charge-selected-title{display:flex!important;gap:10px!important;align-items:flex-start!important;margin:0 1px 14px!important;}
  .swift-check{display:grid!important;place-items:center!important;flex:0 0 28px!important;height:28px!important;border-radius:50%!important;background:#15964e!important;color:#fff!important;font-weight:900!important;}
  .swift-charge-selected-title h1{margin:0 0 3px!important;font-size:1.34rem!important;letter-spacing:-.025em!important;}
  .swift-charge-selected-title p{margin:0!important;color:#716a63!important;font-size:.86rem!important;}
  .swift-focused-charge-card{padding:14px!important;}
  .swift-focused-head{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:12px!important;padding-bottom:12px!important;border-bottom:1px solid #eee8e1!important;}
  .swift-focused-head>div{display:grid!important;gap:4px!important;}
  .swift-focused-head strong{font-size:1rem!important;line-height:1.25!important;}
  .swift-focused-head small{font-size:.78rem!important;color:#716a63!important;}
  .swift-mode-badge{display:grid!important;place-items:center!important;min-width:34px!important;height:31px!important;border-radius:8px!important;background:#16964f!important;color:#fff!important;font-size:.78rem!important;font-weight:900!important;}
  .swift-mode-badge.dc{background:#b90a18!important;}
  .swift-focused-row strong.ready{color:#128b48!important;}.swift-focused-row strong.not-ready{color:#bd0a18!important;}
  .swift-plug-warning{display:grid!important;grid-template-columns:30px 1fr!important;gap:10px!important;align-items:start!important;margin:13px 0!important;padding:12px!important;background:#fff0f0!important;border-radius:12px!important;color:#9f111a!important;}
  .swift-plug-warning>b{display:grid!important;place-items:center!important;width:25px!important;height:25px!important;border-radius:50%!important;background:#d83b45!important;color:#fff!important;}
  .swift-plug-warning strong{display:block!important;margin-bottom:2px!important;}.swift-plug-warning p{margin:0!important;font-size:.8rem!important;line-height:1.45!important;}
  .swift-primary-charge-button{width:100%!important;min-height:49px!important;margin-top:4px!important;border:0!important;border-radius:11px!important;background:linear-gradient(135deg,#d8a014,#e4aa12)!important;color:#17120a!important;font-size:.94rem!important;font-weight:900!important;}
  .swift-primary-charge-button:disabled{background:#ead9a8!important;color:#7c7056!important;opacity:1!important;}
  .swift-charge-hint{display:block!important;text-align:center!important;margin-top:8px!important;color:#817970!important;font-size:.72rem!important;}

  /* Secondary screens opened from Account/More remain compact and usable. */
  body[data-driver-view]:not([data-driver-view="map"]):not([data-driver-view="active"]):not([data-driver-view="account"]):not([data-driver-view="more"]):not([data-driver-view="charge"]) #driverSectionContent>.section-heading{display:block!important;margin:9px 1px 14px!important;}
  body[data-driver-view]:not([data-driver-view="map"]):not([data-driver-view="active"]):not([data-driver-view="account"]):not([data-driver-view="more"]):not([data-driver-view="charge"]) #driverSectionContent>.section-heading h2{color:#171513!important;font-size:1.5rem!important;}
}


/* SwiftCharge Mobile UX + QR/OCPP polish v31 */
@media (max-width:900px){
  .swift-mobile-brand{display:flex!important;justify-content:center!important;align-items:center!important;padding:calc(8px + env(safe-area-inset-top)) 0 2px!important;}
  .swift-mobile-brand img{display:block!important;width:min(58vw,210px)!important;height:auto!important;max-height:48px!important;object-fit:contain!important;}
  .swift-mobile-scan{top:0!important;padding:8px 0 12px!important;background:linear-gradient(180deg,#fffaf2 82%,rgba(255,250,242,.94) 92%,rgba(255,250,242,0))!important;}
  .swift-map-search:after{content:'Location';position:absolute;left:-9999px;}
  .swift-directions-button{display:flex!important;align-items:center!important;justify-content:center!important;min-height:44px!important;margin:12px 0 2px!important;border:1px solid #e4d8ca!important;border-radius:11px!important;background:#fffaf3!important;color:#a80b18!important;text-decoration:none!important;font-weight:850!important;font-size:.88rem!important;}
  .swift-charge-action-immediate{margin:12px 0 4px!important;}
  .swift-charge-action-immediate .swift-primary-charge-button{margin:0!important;min-height:54px!important;font-size:1rem!important;}
  .swift-scan-required{background:#fff!important;border:1px solid #eee4d9!important;border-radius:17px!important;box-shadow:0 8px 24px rgba(44,32,20,.06)!important;text-align:center!important;padding:30px 20px!important;margin-top:10px!important;}
  .swift-scan-required .swift-mobile-empty-icon{margin-bottom:10px!important;}
  .swift-scan-required h2{margin:0 0 7px!important;font-size:1.25rem!important;}
  .swift-scan-required p{margin:0!important;color:#706861!important;line-height:1.5!important;}
  .swift-charge-hint.error{color:#b10d19!important;}
  .swift-charge-progress span.ready-step{border-color:#d8a014!important;color:#a47300!important;background:#fff8e6!important;}
  body[data-driver-view="charge"] .simple-charge-actions,
  body[data-driver-view="charge"] #driverQrScanButton{display:none!important;}
  .swift-map-card .leaflet-popup-content-wrapper{border-radius:14px!important;box-shadow:0 10px 28px rgba(31,23,16,.18)!important;}
  .swift-map-card .map-popup-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px!important;margin-top:9px!important;}
  .swift-map-card .map-popup-actions .station-directions{min-height:38px!important;display:flex!important;align-items:center!important;justify-content:center!important;}
}


/* SwiftCharge Mobile balance header + scroll-friendly map v32 */
@media (max-width:900px){
  .swift-mobile-brand{
    display:grid!important;
    grid-template-columns:minmax(64px,1fr) auto minmax(64px,1fr)!important;
    align-items:center!important;
    gap:10px!important;
    padding:calc(8px + env(safe-area-inset-top)) 8px 4px!important;
  }
  .swift-mobile-brand img{
    grid-column:2!important;
    justify-self:center!important;
    width:min(46vw,178px)!important;
    max-height:46px!important;
  }
  .swift-mobile-balance{
    grid-column:3!important;
    justify-self:end!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    gap:7px!important;
    min-width:78px!important;
    min-height:38px!important;
    padding:8px 12px!important;
    border:1px solid #ead8bd!important;
    border-radius:999px!important;
    background:#fff!important;
    color:#a80b18!important;
    box-shadow:0 5px 16px rgba(51,34,15,.08)!important;
    font:inherit!important;
    font-size:.86rem!important;
    font-weight:850!important;
    white-space:nowrap!important;
  }
  .swift-mobile-balance b{
    display:grid!important;
    place-items:center!important;
    width:20px!important;
    height:20px!important;
    border-radius:50%!important;
    background:#d9a11a!important;
    color:#fff!important;
    font-size:1rem!important;
    line-height:1!important;
  }
  .swift-map-card .charger-map{
    height:clamp(300px,40dvh,380px)!important;
    min-height:300px!important;
    touch-action:pan-y!important;
  }
  .swift-map-card .leaflet-container{
    touch-action:pan-y!important;
  }
  .swift-map-card .leaflet-control-zoom a{
    width:36px!important;
    height:36px!important;
    line-height:36px!important;
  }
}
@media (max-width:380px){
  .swift-mobile-brand{grid-template-columns:minmax(54px,1fr) auto minmax(54px,1fr)!important;gap:6px!important;}
  .swift-mobile-brand img{width:min(43vw,158px)!important;}
  .swift-mobile-balance{min-width:70px!important;padding:7px 9px!important;font-size:.8rem!important;}
}

/* =========================================================
   SwiftCharge Mobile Driver UX v37
   Mobile-only refinements. Desktop layout intentionally untouched.
   ========================================================= */
.swift-mobile-login-logo{display:none}
@media (max-width:900px){
  /* Login */
  body[data-page="driver"] #driverLoggedOut{margin:calc(34px + env(safe-area-inset-top)) auto 20px!important;padding:24px 20px 22px!important;border-radius:20px!important;}
  .swift-mobile-login-logo{display:flex!important;align-items:center;justify-content:center;margin:0 auto 16px!important;}
  .swift-mobile-login-logo img{display:block;width:min(68vw,230px)!important;height:auto!important;max-height:58px!important;object-fit:contain!important;}
  body[data-page="driver"] #driverLoggedOut h2{text-align:center!important;margin:0 0 5px!important;}
  body[data-page="driver"] #driverLoggedOut>p{text-align:center!important;margin:0 auto 16px!important;max-width:330px!important;}

  /* Modals must always sit above the persistent Scan to Charge and bottom navigation. */
  .driver-modal{z-index:12000!important;background:rgba(18,15,13,.66)!important;backdrop-filter:blur(4px)!important;-webkit-backdrop-filter:blur(4px)!important;}
  body.swift-modal-open .swift-mobile-scan,body.swift-modal-open .swift-mobile-bottom-nav{visibility:hidden!important;pointer-events:none!important;}

  /* Map: compact, genuinely interactive, and with controls outside the map canvas. */
  .swift-map-search{grid-template-columns:minmax(0,1fr) 44px 44px!important;gap:7px!important;margin-bottom:7px!important;}
  .swift-map-search label{height:44px!important;padding:0 11px!important;}
  .swift-map-search>button{min-width:44px!important;height:44px!important;padding:0!important;font-size:1.12rem!important;}
  .swift-location-status{min-height:0!important;margin:0 2px 7px!important;font-size:.72rem!important;line-height:1.3!important;color:#6e6761!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;}
  .swift-location-status:empty{display:none!important;}
  .swift-location-status.success{color:#147a43!important;}.swift-location-status.error{color:#b30d1a!important;}
  .swift-map-card{overflow:hidden!important;background:#fff!important;}
  .swift-map-canvas{position:relative!important;background:#e8eee8!important;}
  .swift-map-card .charger-map{height:clamp(270px,34dvh,330px)!important;min-height:270px!important;touch-action:none!important;}
  .swift-map-card .leaflet-container{touch-action:none!important;cursor:grab!important;}
  .swift-map-card .leaflet-container:active{cursor:grabbing!important;}
  .swift-map-card .swift-map-legend{display:none!important;}
  .swift-map-touch-hint{position:absolute!important;z-index:700!important;right:8px!important;top:8px!important;padding:5px 8px!important;border-radius:999px!important;background:rgba(255,255,255,.9)!important;color:#5e5751!important;font-size:.64rem!important;font-weight:750!important;box-shadow:0 3px 10px rgba(30,24,18,.12)!important;pointer-events:none!important;}
  .swift-map-filter-dock{position:static!important;left:auto!important;right:auto!important;bottom:auto!important;z-index:auto!important;border:0!important;border-top:1px solid #eee6dc!important;border-radius:0!important;padding:5px 6px!important;box-shadow:none!important;background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}
  .swift-map-filter-dock button{min-height:43px!important;padding:4px 2px!important;}
  .swift-map-count{padding:6px 3px 0!important;}

  /* Mobile heading can carry a compact action, e.g. refresh. */
  .swift-mobile-heading{display:flex!important;align-items:flex-start!important;justify-content:space-between!important;gap:10px!important;}
  .swift-mobile-heading>div{min-width:0!important;}
  .swift-active-refresh{flex:0 0 auto!important;display:inline-flex!important;align-items:center!important;gap:4px!important;min-height:34px!important;padding:6px 9px!important;margin-top:-2px!important;border:1px solid #eadfd2!important;border-radius:999px!important;background:#fff!important;color:#a80b18!important;font:inherit!important;font-size:.72rem!important;font-weight:800!important;box-shadow:0 3px 10px rgba(40,30,20,.04)!important;}
  .swift-active-refresh.busy{opacity:.55!important;}
  .swift-soc-note{margin:8px 0 0!important;padding:8px 10px!important;border-radius:9px!important;background:#f7f3ed!important;color:#736b64!important;font-size:.68rem!important;line-height:1.35!important;}

  /* Account: one-screen top-up flow. */
  body[data-driver-view="account"] #driverSectionContent{min-height:0!important;padding-bottom:0!important;}
  body[data-driver-view="account"] .swift-mobile-heading{padding:3px 2px 8px!important;}
  body[data-driver-view="account"] .swift-mobile-heading h1{font-size:1.38rem!important;margin-bottom:1px!important;}
  body[data-driver-view="account"] .swift-mobile-heading p{font-size:.74rem!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;}
  .swift-account-compact{display:grid!important;gap:7px!important;padding:10px!important;background:#fff!important;border:1px solid #eee4d9!important;border-radius:17px!important;box-shadow:0 8px 24px rgba(44,32,20,.06)!important;}
  .swift-account-profile-row{display:grid!important;grid-template-columns:38px minmax(0,1fr) 28px!important;align-items:center!important;gap:8px!important;min-height:44px!important;}
  .swift-account-profile-row .swift-avatar{width:38px!important;height:38px!important;font-size:.78rem!important;}
  .swift-account-profile-row>div:nth-child(2){display:grid!important;gap:0!important;min-width:0!important;}
  .swift-account-profile-row strong{font-size:.87rem!important;line-height:1.2!important;}.swift-account-profile-row small{font-size:.68rem!important;color:#756e67!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;}
  .swift-account-profile-row>button{border:0!important;background:transparent!important;color:#4f4944!important;font-size:1.4rem!important;}
  .swift-account-balance-row{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;padding:8px 10px!important;border-radius:11px!important;background:#fff8e8!important;}
  .swift-account-balance-row>span{font-size:.72rem!important;color:#655e57!important;font-weight:700!important;}.swift-account-balance-row>strong{color:#aa0b18!important;font-size:.9rem!important;}.swift-account-balance-row>strong small{font-size:.68rem!important;color:#766d64!important;font-weight:650!important;margin-left:4px!important;}
  .swift-account-topup{display:grid!important;gap:7px!important;}
  .swift-account-amounts{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:5px!important;}
  .swift-account-amounts label{min-width:0!important;}
  .swift-account-amounts input{position:absolute!important;opacity:0!important;pointer-events:none!important;}
  .swift-account-amounts span{display:grid!important;place-items:center!important;min-height:42px!important;border:1px solid #e7ddd1!important;border-radius:9px!important;background:#fff!important;color:#3c3632!important;font-size:.72rem!important;font-weight:850!important;}
  .swift-account-amounts input:checked+span{border-color:#c48c08!important;background:#fff5d9!important;color:#9f0b16!important;box-shadow:inset 0 0 0 1px #d9a11a!important;}
  .swift-account-custom{display:grid!important;grid-template-columns:auto minmax(0,1fr)!important;align-items:center!important;gap:8px!important;padding:0!important;font-size:.7rem!important;}
  .swift-account-custom input{min-height:38px!important;padding:7px 9px!important;border:1px solid #e5dacd!important;border-radius:9px!important;}.swift-account-custom small{grid-column:1/-1!important;font-size:.62rem!important;color:#756d65!important;}
  .swift-account-pay{min-height:43px!important;border:0!important;border-radius:10px!important;background:linear-gradient(135deg,#d79d0d,#e8ae13)!important;color:#19140b!important;font-size:.82rem!important;font-weight:900!important;}
  .swift-account-topup #topupMessage{font-size:.68rem!important;line-height:1.25!important;}
  .swift-account-shortcuts{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:5px!important;padding-top:1px!important;}
  .swift-account-shortcuts button{display:grid!important;place-items:center!important;gap:1px!important;min-height:46px!important;padding:4px 2px!important;border:1px solid #eee6dd!important;border-radius:9px!important;background:#fff!important;color:#4c4641!important;font:inherit!important;}
  .swift-account-shortcuts b{font-size:.95rem!important;font-weight:500!important;line-height:1!important;}.swift-account-shortcuts span{font-size:.62rem!important;font-weight:750!important;}

  /* Add-to-home-screen guidance. */
  .swift-install-help{text-align:left!important;padding:5px 2px!important;}.swift-install-help img{display:block!important;width:190px!important;max-height:48px!important;object-fit:contain!important;margin:2px auto 18px!important;}.swift-install-help h2{text-align:center!important;margin:0 0 12px!important;}.swift-install-help ol{padding-left:22px!important;line-height:1.65!important;}.swift-install-note{padding:10px!important;border-radius:10px!important;background:#fff8e8!important;color:#625a52!important;font-size:.8rem!important;}
}
@media (max-width:360px){
  .swift-account-compact{padding:8px!important;gap:5px!important;}
  .swift-account-amounts span{font-size:.66rem!important;min-height:39px!important;}
  .swift-account-shortcuts button{min-height:43px!important;}
  .swift-map-card .charger-map{height:260px!important;min-height:260px!important;}
}


/* =========================================================
   SwiftCharge Mobile Driver UX v38
   Map chrome cleanup, top-on-navigation and page zoom guard.
   Desktop layout intentionally untouched.
   ========================================================= */
@media (max-width:900px){
  body[data-page="driver"]{
    touch-action:pan-x pan-y!important;
    -webkit-text-size-adjust:100%!important;
  }
  body[data-page="driver"] button,
  body[data-page="driver"] a,
  body[data-page="driver"] input,
  body[data-page="driver"] select,
  body[data-page="driver"] textarea,
  body[data-page="driver"] label{
    touch-action:manipulation;
  }
  body[data-page="driver"] #chargerMap,
  body[data-page="driver"] #chargerMap *,
  body[data-page="driver"] .leaflet-container{
    touch-action:none!important;
  }
  .swift-map-touch-hint{display:none!important;}
  .swift-map-meta-row{
    display:flex!important;
    align-items:center!important;
    justify-content:space-between!important;
    gap:10px!important;
    min-height:27px!important;
    padding:5px 9px!important;
    border-top:1px solid #eee6dc!important;
    background:#fff!important;
    color:#756e67!important;
    font-size:.62rem!important;
    line-height:1.2!important;
  }
  .swift-map-meta-row span{white-space:nowrap!important;}
  .swift-map-meta-row a{
    color:#756e67!important;
    text-decoration:none!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .swift-map-card .leaflet-control-attribution{display:none!important;}
  .swift-map-card .leaflet-bottom.leaflet-right{right:5px!important;bottom:5px!important;}
  .swift-map-card .leaflet-control-zoom{margin:9px!important;}
}
@media (max-width:380px){
  .swift-map-meta-row{font-size:.58rem!important;gap:6px!important;padding:5px 7px!important;}
}

/* =========================================================
   SwiftCharge Mobile Driver UX v44
   Header token-balance pill proportion fix.
   ========================================================= */
@media (max-width:900px){
  body[data-page="driver"] .swift-mobile-balance{
    box-sizing:border-box!important;
    min-width:0!important;
    height:44px!important;
    min-height:44px!important;
    padding:6px 8px 6px 14px!important;
    gap:8px!important;
    align-items:center!important;
    justify-content:center!important;
    line-height:1!important;
  }
  body[data-page="driver"] .swift-mobile-balance span{
    display:block!important;
    margin:0!important;
    padding:0!important;
    font-size:.98rem!important;
    line-height:1!important;
    font-weight:850!important;
    letter-spacing:-.01em!important;
  }
  body[data-page="driver"] .swift-mobile-balance b{
    box-sizing:border-box!important;
    display:flex!important;
    flex:0 0 24px!important;
    width:24px!important;
    height:24px!important;
    min-width:24px!important;
    min-height:24px!important;
    margin:0!important;
    padding:0!important;
    align-items:center!important;
    justify-content:center!important;
    border-radius:50%!important;
    font-family:Arial,sans-serif!important;
    font-size:16px!important;
    font-weight:700!important;
    line-height:24px!important;
    text-align:center!important;
    transform:none!important;
  }
}
@media (max-width:380px){
  body[data-page="driver"] .swift-mobile-balance{
    height:40px!important;
    min-height:40px!important;
    padding:5px 7px 5px 11px!important;
    gap:6px!important;
  }
  body[data-page="driver"] .swift-mobile-balance span{font-size:.88rem!important;}
  body[data-page="driver"] .swift-mobile-balance b{
    flex-basis:22px!important;
    width:22px!important;
    height:22px!important;
    min-width:22px!important;
    min-height:22px!important;
    font-size:15px!important;
    line-height:22px!important;
  }
}


/* =========================================================
   SwiftCharge Mobile Driver UX v45
   Crisp header, proportional token control and stable map filters.
   Driver-only visual polish. Charging, billing and OCPP are untouched.
   ========================================================= */
@media (max-width:900px){
  /* Crisp top chrome: keep the logo centred and the wallet control fully inside the viewport. */
  body[data-page="driver"] .driver-workspace{
    overflow:visible!important;
  }
  body[data-page="driver"] .swift-mobile-brand{
    position:relative!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    min-height:58px!important;
    padding:calc(8px + env(safe-area-inset-top)) 8px 5px!important;
    background:#fffaf2!important;
    box-shadow:none!important;
    filter:none!important;
    backdrop-filter:none!important;
    -webkit-backdrop-filter:none!important;
    overflow:visible!important;
    isolation:isolate!important;
  }
  body[data-page="driver"] .swift-mobile-brand img{
    position:relative!important;
    z-index:1!important;
    width:min(42vw,165px)!important;
    max-width:165px!important;
    max-height:44px!important;
    margin:0 auto!important;
    object-fit:contain!important;
    filter:none!important;
  }
  body[data-page="driver"] .swift-mobile-balance{
    position:absolute!important;
    z-index:2!important;
    right:4px!important;
    top:calc(50% + (env(safe-area-inset-top) / 2))!important;
    transform:translateY(-50%)!important;
    display:inline-flex!important;
    align-items:center!important;
    justify-content:flex-start!important;
    width:auto!important;
    min-width:102px!important;
    max-width:138px!important;
    height:42px!important;
    min-height:42px!important;
    margin:0!important;
    padding:5px 6px 5px 12px!important;
    gap:7px!important;
    border:1px solid #ead8bd!important;
    border-radius:999px!important;
    background:#fff!important;
    color:#a80b18!important;
    box-shadow:0 3px 10px rgba(51,34,15,.07)!important;
    overflow:visible!important;
    white-space:nowrap!important;
    line-height:1!important;
  }
  body[data-page="driver"] .swift-mobile-balance span{
    display:block!important;
    flex:1 1 auto!important;
    min-width:0!important;
    margin:0!important;
    padding:0!important;
    color:#a80b18!important;
    font-size:.9rem!important;
    font-weight:850!important;
    font-variant-numeric:tabular-nums!important;
    letter-spacing:-.015em!important;
    line-height:1!important;
    white-space:nowrap!important;
  }
  body[data-page="driver"] .swift-mobile-balance b{
    display:grid!important;
    place-items:center!important;
    flex:0 0 28px!important;
    width:28px!important;
    height:28px!important;
    min-width:28px!important;
    min-height:28px!important;
    margin:0!important;
    padding:0!important;
    border-radius:50%!important;
    background:#d9a11a!important;
    color:#fff!important;
    font-family:Arial,sans-serif!important;
    font-size:17px!important;
    font-weight:700!important;
    line-height:1!important;
    text-align:center!important;
    transform:none!important;
  }

  /* The Scan control should not float over the brand area or cast a blur across it. */
  body[data-page="driver"] .swift-mobile-scan{
    position:relative!important;
    top:auto!important;
    z-index:auto!important;
    margin:0!important;
    padding:9px 0 14px!important;
    background:#fffaf2!important;
    box-shadow:none!important;
    filter:none!important;
    backdrop-filter:none!important;
    -webkit-backdrop-filter:none!important;
  }
  body[data-page="driver"] .swift-mobile-scan button{
    width:min(100%,320px)!important;
    box-shadow:0 5px 12px rgba(183,8,22,.10)!important;
  }

  /* Consistent page breathing room beneath the fixed mobile chrome. */
  body[data-page="driver"] .swift-mobile-heading{
    margin-top:5px!important;
    padding:0 2px 8px!important;
  }
  body[data-page="driver"] .swift-mobile-heading h1{
    letter-spacing:-.025em!important;
  }

  /* v45 map filters are a normal row in document flow, never a floating overlay. */
  body[data-page="driver"] .swift-map-filter-dock{
    display:none!important;
  }
  body[data-page="driver"] .swift-map-filter-row{
    position:relative!important;
    inset:auto!important;
    z-index:1!important;
    display:grid!important;
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    width:100%!important;
    margin:0!important;
    padding:0 8px!important;
    border:0!important;
    border-top:1px solid #eee6dc!important;
    border-radius:0!important;
    background:#fff!important;
    box-shadow:none!important;
    filter:none!important;
    backdrop-filter:none!important;
    -webkit-backdrop-filter:none!important;
    transform:none!important;
    overflow:hidden!important;
  }
  body[data-page="driver"] .swift-map-filter-row button{
    position:relative!important;
    display:flex!important;
    align-items:center!important;
    justify-content:center!important;
    min-width:0!important;
    min-height:48px!important;
    margin:0!important;
    padding:8px 2px 9px!important;
    border:0!important;
    border-radius:0!important;
    background:transparent!important;
    color:#4e4843!important;
    box-shadow:none!important;
    font:inherit!important;
    font-size:.76rem!important;
    font-weight:750!important;
    line-height:1!important;
    white-space:nowrap!important;
  }
  body[data-page="driver"] .swift-map-filter-row button::after{
    content:'';
    position:absolute;
    left:22%;
    right:22%;
    bottom:0;
    height:3px;
    border-radius:3px 3px 0 0;
    background:transparent;
  }
  body[data-page="driver"] .swift-map-filter-row button.active{
    color:#ba0a18!important;
    font-weight:850!important;
  }
  body[data-page="driver"] .swift-map-filter-row button.active::after{
    background:#ba0a18!important;
  }
  body[data-page="driver"] .swift-map-card{
    overflow:hidden!important;
    contain:layout paint!important;
  }
  body[data-page="driver"] .swift-map-canvas{
    position:relative!important;
    z-index:0!important;
    overflow:hidden!important;
  }
  body[data-page="driver"] .swift-map-count{
    margin-top:8px!important;
    padding:0 3px!important;
  }
}

@media (max-width:390px){
  body[data-page="driver"] .swift-mobile-brand img{
    width:min(40vw,154px)!important;
    max-width:154px!important;
  }
  body[data-page="driver"] .swift-mobile-balance{
    right:1px!important;
    min-width:98px!important;
    max-width:122px!important;
    height:40px!important;
    min-height:40px!important;
    padding:5px 5px 5px 10px!important;
    gap:6px!important;
  }
  body[data-page="driver"] .swift-mobile-balance span{
    font-size:.82rem!important;
  }
  body[data-page="driver"] .swift-mobile-balance b{
    flex-basis:26px!important;
    width:26px!important;
    height:26px!important;
    min-width:26px!important;
    min-height:26px!important;
    font-size:16px!important;
  }
}

/* v61 cascade lock: keep the new app shell above legacy mobile compatibility rules. */
@media (max-width:900px){
  body[data-page="driver"]{background:#f2f4f7!important;color:#171720!important;padding-bottom:calc(104px + env(safe-area-inset-bottom))!important}
  body[data-page="driver"] .driver-workspace{max-width:720px!important;padding:0 18px 28px!important;margin:0 auto!important}
  body[data-page="driver"][data-driver-view]:not([data-driver-view="charge"]) .swift-mobile-brand,
  body[data-page="driver"][data-driver-view]:not([data-driver-view="charge"]) .swift-mobile-scan{display:none!important}
  body[data-page="driver"] #driverSectionContent{padding-top:calc(22px + env(safe-area-inset-top))!important}
  body[data-page="driver"][data-driver-view="charge"] #driverSectionContent{padding-top:4px!important}
  .swift-mobile-bottom-nav{grid-template-columns:repeat(5,1fr)!important;left:16px!important;right:16px!important;bottom:calc(12px + env(safe-area-inset-bottom))!important;min-height:76px!important;padding:8px!important;border:1px solid rgba(255,255,255,.85)!important;border-radius:38px!important;background:rgba(255,255,255,.96)!important;box-shadow:0 16px 46px rgba(39,34,48,.17)!important}
  .swift-mobile-bottom-nav button{min-width:0!important;min-height:58px!important;border-radius:29px!important;color:#aeb2ba!important;gap:2px!important}
  .swift-mobile-bottom-nav button small{font-size:.64rem!important;white-space:nowrap!important}
  .swift-mobile-bottom-nav button.active{background:linear-gradient(135deg,#a20d18,#c61625)!important;color:#fff!important;box-shadow:0 8px 22px rgba(162,13,24,.25)!important}
  .swift-mobile-bottom-nav button.active span{color:#f7d879!important}
  .swift-map-card{border:0!important;border-radius:26px!important;box-shadow:0 16px 38px rgba(39,38,49,.11)!important}
  .swift-map-card .charger-map{height:clamp(470px,65dvh,680px)!important}
  .swift-account-compact,.swift-live-session-card,.swift-focused-charge-card,.swift-mobile-empty{border:0!important;border-radius:26px!important;box-shadow:0 16px 38px rgba(39,38,49,.08)!important}
  .swift-account-shortcuts{grid-template-columns:repeat(2,1fr)!important}.swift-account-shortcuts button:last-child{grid-column:1/-1!important}
  .swift-account-pay,.swift-primary-charge-button,.swift-mobile-scan button{background:linear-gradient(135deg,#a20d18,#c61625)!important;color:#fff!important;border-radius:999px!important}
}
@media (max-width:390px){.swift-mobile-bottom-nav{left:8px!important;right:8px!important}.swift-mobile-bottom-nav button small{font-size:.59rem!important}}

/* update61.css */
.sc61-public header{display:flex;flex-wrap:wrap;gap:1rem;padding:1.25rem}.sc61-public header nav{display:flex;flex-wrap:wrap;gap:1rem}.sc61-public main{max-width:1100px;margin:auto;min-height:65vh;padding:1.5rem}.sc61-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:1rem}.sc61-contact{max-width:760px}.sc61-contact label{display:flex;flex-direction:column;gap:.5rem}.sc61-contact .wide{grid-column:1/-1}.sc61-trap{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.sc61-public footer a{color:#f4cc63}.sc61-results{display:grid;gap:.5rem;margin:1rem 0}.sc61-results button{text-align:left;white-space:normal}.sc61-archive-tabs{display:flex;gap:.5rem;flex-wrap:wrap;margin:1rem 0}.sc61-facebook{display:inline-flex;align-items:center;gap:.35rem}.sc61-facebook svg{width:16px;height:16px;fill:currentColor}@media(max-width:600px){.sc61-public header nav{display:flex!important;position:static;width:100%;background:transparent}.sc61-public .form-grid{grid-template-columns:1fr}.sc61-public main{padding:1rem}.sc61-public h1{font-size:2rem}}

/* update611.css */
:root{--sc611-red:#a20d18;--sc611-red-dark:#6d0810;--sc611-gold:#d29a17;--sc611-ink:#1e1d25;--sc611-muted:#737681;--sc611-line:#e8e6e3;--sc611-surface:#fff;--sc611-soft:#f5f6f8}
body.swift-station-detail-open{overflow:hidden}
.swift-station-detail{position:fixed;inset:0;z-index:2500;display:grid;place-items:center;padding:24px}
.swift-station-backdrop{position:absolute;inset:0;width:100%;height:100%;border:0;background:rgba(18,18,23,.58);backdrop-filter:blur(7px)}
.swift-station-sheet{position:relative;width:min(760px,calc(100vw - 48px));max-height:calc(100dvh - 48px);overflow:auto;border:1px solid rgba(255,255,255,.75);border-radius:30px;background:var(--sc611-surface);box-shadow:0 30px 90px rgba(13,11,13,.32);color:var(--sc611-ink)}
.swift-station-close{position:absolute;right:18px;top:18px;z-index:3;display:grid;place-items:center;width:46px;height:46px;border:1px solid rgba(255,255,255,.75);border-radius:50%;background:rgba(23,23,29,.58);color:#fff;font:300 2rem/1 system-ui;cursor:pointer;backdrop-filter:blur(8px)}
.swift-station-photo{position:relative;min-height:245px;overflow:hidden;background:linear-gradient(135deg,var(--sc611-red-dark),var(--sc611-red) 56%,var(--sc611-gold))}
.swift-station-photo:after{content:"";position:absolute;inset:20% 0 0;background:linear-gradient(transparent,rgba(10,8,10,.82))}
.swift-station-photo.no-photo:before{content:"SwiftCharge";position:absolute;inset:0;display:grid;place-items:center;color:rgba(255,255,255,.18);font-size:4rem;font-weight:900;letter-spacing:-.06em}
.swift-station-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.swift-station-photo>div{position:absolute;z-index:1;left:30px;right:80px;bottom:25px;color:#fff}
.swift-station-photo span{display:inline-flex;padding:7px 11px;border:1px solid rgba(255,255,255,.35);border-radius:999px;background:rgba(22,18,20,.42);font-size:.74rem;font-weight:850;text-transform:uppercase;letter-spacing:.07em;backdrop-filter:blur(7px)}
.swift-station-photo h2{margin:10px 0 5px;color:#fff;font-size:2rem;line-height:1.05;letter-spacing:-.04em}
.swift-station-photo p{margin:0;color:rgba(255,255,255,.85);font-size:1rem}
.swift-station-body{padding:24px 30px 30px}
.swift-station-badges{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.swift-station-badges span{padding:8px 12px;border-radius:999px;background:#f1f2f5;color:#545762;font-size:.76rem;font-weight:800}.swift-station-badges .available{background:#e8f7ed;color:#158342}.swift-station-badges .unavailable{background:#fbe9ea;color:#9a1720}
.swift-station-description{margin:0 0 19px;color:#555964;line-height:1.55}
.swift-station-heading{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:0 0 12px}.swift-station-heading small{display:block;color:var(--sc611-red);font-weight:800}.swift-station-heading h3{margin:3px 0 0;font-size:1.22rem}.swift-station-heading>strong{color:var(--sc611-red);font-size:.9rem}
.swift-station-sockets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.swift-station-socket{position:relative;display:grid;grid-template-columns:54px minmax(0,1fr) auto;align-items:center;gap:12px;min-height:88px;padding:14px;border:1px solid #e4e5e8;border-radius:20px;background:linear-gradient(145deg,#fff,#f7f8fa);cursor:pointer;transition:.18s ease;box-shadow:0 7px 20px rgba(35,35,42,.045)}
.swift-station-socket:hover{transform:translateY(-1px);border-color:#d6b5b7}.swift-station-socket:has(input:checked){border-color:var(--sc611-red);box-shadow:0 0 0 3px rgba(162,13,24,.1),0 10px 25px rgba(35,35,42,.07)}.swift-station-socket input{position:absolute;opacity:0;pointer-events:none}
.swift-socket-icon{display:grid;place-items:center;width:54px;height:54px;border-radius:16px;background:#f7e9ea;color:var(--sc611-red);font-size:1.12rem;font-weight:900}.swift-socket-icon.dc{background:#fff3d7;color:#b27600}.swift-station-socket span:nth-of-type(2){display:grid;gap:4px}.swift-station-socket span:nth-of-type(2) small{color:var(--sc611-muted)}.swift-station-socket>b{font-size:1.1rem;white-space:nowrap}.swift-station-socket.is-free span:nth-of-type(2) small{color:#188246;font-weight:750}
.swift-station-cost{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:15px 0}.swift-station-cost>div{display:grid;gap:4px;padding:15px 17px;border-radius:18px;background:#f5f6f8}.swift-station-cost span,.swift-station-cost small{color:var(--sc611-muted);font-size:.76rem}.swift-station-cost strong{font-size:1.2rem}
.swift-station-info{display:grid;gap:1px;overflow:hidden;margin:15px 0;border:1px solid var(--sc611-line);border-radius:17px;background:var(--sc611-line)}.swift-station-info>div{display:grid;grid-template-columns:140px 1fr;gap:15px;padding:12px 15px;background:#fff}.swift-station-info span{color:var(--sc611-muted);font-size:.78rem}.swift-station-info strong{font-size:.86rem;font-weight:650;line-height:1.45}
.swift-station-vehicle{display:grid;gap:6px;margin:15px 0;font-size:.78rem;font-weight:800;color:var(--sc611-muted)}.swift-station-vehicle select{min-height:47px;padding:9px 12px;border:1px solid #dedfe3;border-radius:13px;background:#fff;color:var(--sc611-ink);font:inherit}
.swift-station-actions{display:grid;grid-template-columns:2fr 1fr 1fr;gap:10px;margin-top:18px}.swift-station-actions>*{display:flex;align-items:center;justify-content:center;min-height:52px;padding:11px 14px;border-radius:16px;text-align:center;text-decoration:none;font:inherit;font-weight:850;cursor:pointer}.swift-station-start{border:0;background:linear-gradient(135deg,var(--sc611-red-dark),var(--sc611-red));color:#fff;box-shadow:0 11px 24px rgba(162,13,24,.22)}.swift-station-notify,.swift-station-directions{border:1px solid #e0c7c9;background:#fff;color:var(--sc611-red)}.swift-station-action-note{display:block;margin-top:10px;color:var(--sc611-muted);text-align:center}.swift-station-actions button:disabled{opacity:.55;cursor:wait}
.swift-completed-session{max-width:850px;margin:0 auto 20px;padding:28px;border:1px solid #ead9c2;border-radius:24px;background:linear-gradient(145deg,#fff,#fffaf0);box-shadow:0 16px 42px rgba(46,36,25,.08);text-align:center}.swift-completed-check{display:grid;place-items:center;width:66px;height:66px;margin:0 auto 14px;border-radius:50%;background:#e8f7ed;color:#168b49;font-size:2rem;font-weight:900}.swift-completed-title span{color:#168b49;font-weight:850}.swift-completed-title h2{margin:5px 0;font-size:1.7rem}.swift-completed-title p{margin:0;color:var(--sc611-muted)}.swift-completed-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:22px 0}.swift-completed-grid>div{display:grid;gap:6px;padding:15px;border-radius:16px;background:#f5f5f7}.swift-completed-grid span{color:var(--sc611-muted);font-size:.75rem}.swift-completed-grid strong{font-size:1.05rem}.swift-completed-note{color:var(--sc611-muted);line-height:1.5}.swift-completed-session .dismiss-completed-session{min-width:180px;margin-top:6px}
@media(max-width:900px){
  .swift-station-detail{align-items:end;padding:0}.swift-station-sheet{width:100%;max-height:92dvh;border-radius:28px 28px 0 0;border-bottom:0}.swift-station-close{right:16px;top:15px;width:44px;height:44px}.swift-station-photo{min-height:220px}.swift-station-photo>div{left:20px;right:70px;bottom:20px}.swift-station-photo h2{font-size:1.55rem}.swift-station-photo p{font-size:.86rem}.swift-station-body{padding:18px 18px calc(22px + env(safe-area-inset-bottom))}.swift-station-sockets{grid-template-columns:1fr}.swift-station-socket{min-height:78px}.swift-station-cost{grid-template-columns:1fr 1fr}.swift-station-info>div{grid-template-columns:1fr;gap:4px}.swift-station-actions{grid-template-columns:1fr 1fr;position:sticky;bottom:calc(-18px - env(safe-area-inset-bottom));z-index:2;margin:18px -18px calc(-22px - env(safe-area-inset-bottom));padding:14px 18px calc(14px + env(safe-area-inset-bottom));background:rgba(255,255,255,.94);border-top:1px solid #ececef;backdrop-filter:blur(13px)}.swift-station-start{grid-column:1/-1}.swift-station-actions>*{min-height:50px}.swift-station-action-note{margin:10px 0 74px}.swift-completed-session{padding:22px 17px;border-radius:24px}.swift-completed-grid{grid-template-columns:1fr 1fr}.swift-completed-title h2{font-size:1.4rem}.swift-completed-session .dismiss-completed-session{width:100%;min-height:50px}
}
@media(max-width:430px){.swift-station-photo{min-height:195px}.swift-station-cost{grid-template-columns:1fr}.swift-station-socket{grid-template-columns:48px minmax(0,1fr) auto;padding:12px}.swift-socket-icon{width:48px;height:48px}.swift-station-badges span{font-size:.7rem}.swift-completed-grid{gap:8px}.swift-completed-grid>div{padding:13px 9px}}

/* update62.css */
/* SwiftCharge Update 62: mobile viewport polish */
@media (max-width:900px){
html,body[data-page="driver"]{height:100%;height:100dvh;overflow:hidden!important}
body[data-page="driver"] .driver-page,body[data-page="driver"] #driverDashboard,body[data-page="driver"] .driver-shell{height:100dvh!important;min-height:0!important;overflow:hidden!important}
body[data-page="driver"] .driver-workspace{height:calc(100dvh - 94px - env(safe-area-inset-bottom))!important;min-height:0!important;overflow:hidden!important;padding:0 16px 0!important}
body[data-page="driver"] #driverSectionContent{height:100%!important;min-height:0!important;overflow:hidden!important;padding-top:14px!important;padding-bottom:6px!important;display:flex!important;flex-direction:column!important}
.swift-mobile-bottom-nav{z-index:5000!important}
.swift61-home-head{flex:0 0 auto!important}.swift61-nearest-card{min-height:0!important;flex:1 1 auto!important;overflow:hidden!important}.swift61-home-actions,.swift61-home-grid{flex:0 0 auto!important}
.swift61-session-tile{border:0!important;text-align:left!important;font:inherit!important;cursor:pointer!important;width:100%!important}
.swift-heading-qr{width:42px!important;height:42px!important;min-width:42px!important;border:0!important;border-radius:14px!important;background:#a20d18!important;color:#fff!important;padding:9px!important;display:grid!important;place-items:center!important}.swift-heading-qr svg{width:23px!important;height:23px!important}
body[data-driver-view="map"] #driverSectionContent{padding-top:10px!important}.swift-map-card{flex:1 1 auto!important;min-height:0!important;display:flex!important;flex-direction:column!important}.swift-map-canvas{flex:1 1 auto!important;min-height:0!important}.swift-map-card .charger-map{height:100%!important;min-height:220px!important;max-height:none!important}.swift-map-count{flex:0 0 auto!important}
.swift-station-detail{z-index:6000!important;overflow:hidden!important}.swift-station-sheet{max-height:calc(100dvh - 112px - env(safe-area-inset-bottom))!important;overflow:hidden!important;display:flex!important;flex-direction:column!important}.swift-station-photo{flex:0 0 auto!important;max-height:22dvh!important}.swift-station-body{overflow:hidden!important;padding:12px 14px!important;display:flex!important;flex-direction:column!important;gap:7px!important}.swift-station-sockets{max-height:none!important;overflow:visible!important}.swift-station-socket{min-height:46px!important;padding:6px 8px!important}.swift-station-cost,.swift-station-info{margin:0!important}.swift-station-actions{margin-top:auto!important}.swift-socket-icon img{width:34px!important;height:34px!important;object-fit:contain!important}
body[data-driver-view="charge"] #driverSectionContent{padding-top:10px!important}.swift-focused-charge-card,.swift-live-session-card{min-height:0!important;overflow:hidden!important}.swift-focused-charge-form{min-height:0!important;overflow:hidden!important}.swift-charge-progress{flex:0 0 auto!important}
.swift-mobile-heading{flex:0 0 auto!important;min-width:0!important}.swift-mobile-heading>div{min-width:0!important}.swift-mobile-heading select{max-width:132px!important;width:auto!important;min-width:118px!important;padding:8px 26px 8px 9px!important;font-size:.76rem!important;white-space:nowrap!important}
.swift61-insight-card{flex:0 0 auto!important}.swift61-history-title{flex:0 0 auto!important;margin:10px 0 6px!important}.swift61-history-list{min-height:0!important;overflow:hidden!important;display:grid!important;gap:6px!important}.swift61-history-row{cursor:pointer!important;padding:8px 10px!important;min-height:0!important}.swift61-history-money{display:grid!important;text-align:right!important}.swift61-history-money small{font-size:.62rem!important;color:#a20d18!important}
body[data-driver-view="account"] .swift-account-compact{height:100%!important;min-height:0!important;overflow:hidden!important;grid-template-rows:auto auto auto 1fr!important}.swift-account-shortcuts{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:6px!important;min-height:0!important}.swift-account-shortcuts button,.swift-account-shortcuts button:last-child{grid-column:auto!important;min-height:58px!important;padding:6px 3px!important}.swift-account-shortcuts button b{font-size:1rem!important}.swift-account-shortcuts button span{font-size:.63rem!important}
.swift62-support{display:grid!important;grid-template-rows:auto 1fr!important;gap:10px!important;min-height:0!important;overflow:hidden!important}.swift62-call{display:flex!important;align-items:center!important;gap:10px!important;text-decoration:none!important;background:linear-gradient(135deg,#a20d18,#c61625)!important;color:#fff!important;border-radius:18px!important;padding:11px 14px!important}.swift62-call>span{display:grid!important}.swift62-call small{color:#f7d879!important}.swift62-support-card{background:#fff!important;border-radius:22px!important;padding:13px!important;box-shadow:0 12px 32px rgba(39,38,49,.08)!important;overflow:hidden!important}.swift62-support-card h2{font-size:1rem!important;margin:0 0 3px!important}.swift62-support-card p{font-size:.72rem!important;margin:0 0 7px!important;color:#706a65!important}.swift62-support-card form{display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px!important}.swift62-support-card label{font-size:.7rem!important}.swift62-support-card label:last-of-type{grid-column:1/-1!important}.swift62-support-card select,.swift62-support-card textarea{padding:8px!important;min-height:38px!important}.swift62-submit{grid-column:1/-1!important;border:0!important;border-radius:999px!important;background:#a20d18!important;color:#fff!important;padding:10px!important;font-weight:850!important}
}
@media(max-width:390px){body[data-page="driver"] .driver-workspace{padding:0 10px!important}.swift-account-shortcuts{grid-template-columns:repeat(4,minmax(0,1fr))!important}.swift-account-shortcuts button span{font-size:.58rem!important}.swift-station-photo{max-height:18dvh!important}}

/* update63.css */
/* SwiftCharge Update 63: account tools, quick start, scrollable history/insights */
@media (max-width:900px){
  /* Home quick-start button sits directly below the live map action. */
  .swift63-home-start{
    width:100%!important;
    min-height:40px!important;
    margin-top:7px!important;
    border:0!important;
    border-radius:12px!important;
    background:linear-gradient(135deg,#a20d18,#c61625)!important;
    color:#fff!important;
    font:inherit!important;
    font-size:.78rem!important;
    font-weight:900!important;
    box-shadow:0 8px 18px rgba(162,13,24,.18)!important;
    cursor:pointer!important;
  }

  /* Account keeps the credit loader first, then all account + More tools in compact blocks. */
  body[data-driver-view="account"] .swift-account-compact{
    grid-template-rows:auto auto auto auto!important;
    align-content:start!important;
  }
  body[data-driver-view="account"] .swift-account-shortcuts{
    grid-template-columns:repeat(4,minmax(0,1fr))!important;
    gap:5px!important;
    align-content:start!important;
  }
  body[data-driver-view="account"] .swift-account-shortcuts button,
  body[data-driver-view="account"] .swift-account-shortcuts button:last-child{
    min-height:42px!important;
    padding:4px 2px!important;
    border-radius:8px!important;
    grid-column:auto!important;
  }
  body[data-driver-view="account"] .swift-account-shortcuts b{
    font-size:.88rem!important;
    line-height:1!important;
  }
  body[data-driver-view="account"] .swift-account-shortcuts span{
    font-size:.56rem!important;
    line-height:1.05!important;
  }

  /* History and Insights are intentionally scrollable pages. */
  body[data-driver-view="sessions"] #driverSectionContent,
  body[data-driver-view="reports"] #driverSectionContent{
    overflow-y:auto!important;
    overflow-x:hidden!important;
    display:block!important;
    -webkit-overflow-scrolling:touch!important;
    overscroll-behavior-y:contain!important;
    padding-bottom:94px!important;
  }
  body[data-driver-view="sessions"] .swift-mobile-heading,
  body[data-driver-view="reports"] .swift-mobile-heading{
    position:sticky!important;
    top:0!important;
    z-index:5!important;
    background:#f3f5f8!important;
    padding-top:8px!important;
  }
  body[data-driver-view="reports"] #swift61InsightBody{
    padding-bottom:12px!important;
  }
  body[data-driver-view="reports"] .swift61-history-list{
    overflow:visible!important;
    max-height:none!important;
  }

  /* Mobile charging history cards. */
  .swift63-scroll-page{padding-bottom:10px!important}
  .swift63-history-cards{display:grid!important;gap:8px!important}
  .swift63-history-card{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    gap:10px!important;
    align-items:center!important;
    padding:11px 12px!important;
    border:1px solid #e8e6e4!important;
    border-radius:16px!important;
    background:#fff!important;
    box-shadow:0 7px 18px rgba(39,38,49,.05)!important;
    cursor:default!important;
  }
  .swift63-history-card[data-session-invoice]{cursor:pointer!important}
  .swift63-history-main,.swift63-history-side{display:grid!important;gap:3px!important;min-width:0!important}
  .swift63-history-main strong{font-size:.82rem!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .swift63-history-main small,.swift63-history-side small{font-size:.64rem!important;color:#7e7b79!important}
  .swift63-history-main span{font-size:.6rem!important;font-weight:850!important;color:#a20d18!important;text-transform:capitalize!important}
  .swift63-history-side{text-align:right!important;justify-items:end!important}
  .swift63-history-side b{font-size:.8rem!important}
  .swift63-history-download,.swift63-inline-download{
    border:0!important;
    border-radius:999px!important;
    background:#f8e7e9!important;
    color:#a20d18!important;
    font:inherit!important;
    font-size:.6rem!important;
    font-weight:900!important;
    padding:5px 8px!important;
    cursor:pointer!important;
  }
  .swift63-inline-download{margin-top:2px!important;justify-self:end!important}
}

@media (max-width:390px){
  body[data-driver-view="account"] .swift-account-shortcuts button,
  body[data-driver-view="account"] .swift-account-shortcuts button:last-child{min-height:39px!important}
  body[data-driver-view="account"] .swift-account-shortcuts span{font-size:.52rem!important}
  .swift63-history-card{padding:9px 10px!important}
}

/* update64.css */
/* SwiftCharge Update 64
   Mobile map QR, visible Home quick-start, scrollable utility pages,
   and crisp/stable top chrome. Driver UI only. */
@media (max-width:900px){
  /* Stabilise the mobile viewport. Keep content below the top chrome and above the floating menu. */
  html,body[data-page="driver"]{height:100%!important;max-height:100%!important}
  body[data-page="driver"]{overflow:hidden!important;background:#f3f5f8!important}
  body[data-page="driver"] .driver-shell{height:100dvh!important;min-height:0!important;overflow:hidden!important}
  body[data-page="driver"] .driver-workspace{
    display:flex!important;
    flex-direction:column!important;
    width:100%!important;
    height:calc(100dvh - 96px - env(safe-area-inset-bottom))!important;
    min-height:0!important;
    max-height:calc(100dvh - 96px - env(safe-area-inset-bottom))!important;
    margin:0 auto!important;
    padding:0 14px!important;
    overflow:hidden!important;
    transform:none!important;
    filter:none!important;
    backdrop-filter:none!important;
    -webkit-backdrop-filter:none!important;
  }

  /* Remove the hazy/"pushed upward" appearance at the top of every driver page. */
  body[data-page="driver"] .swift-mobile-brand,
  body[data-page="driver"] .swift-mobile-scan,
  body[data-page="driver"] .swift-mobile-heading{
    position:relative!important;
    top:auto!important;
    transform:none!important;
    filter:none!important;
    backdrop-filter:none!important;
    -webkit-backdrop-filter:none!important;
    opacity:1!important;
  }
  body[data-page="driver"] .swift-mobile-brand{
    flex:0 0 auto!important;
    min-height:54px!important;
    padding:calc(6px + env(safe-area-inset-top)) 6px 3px!important;
    background:#f3f5f8!important;
  }
  body[data-page="driver"] .swift-mobile-scan{
    flex:0 0 auto!important;
    padding:5px 0 7px!important;
    margin:0!important;
    background:#f3f5f8!important;
  }
  body[data-page="driver"] #activeSessionArea{flex:0 0 auto!important;min-height:0!important}
  body[data-page="driver"] #driverSectionContent{
    flex:1 1 auto!important;
    min-height:0!important;
    height:auto!important;
    padding:6px 0 8px!important;
    overflow:hidden!important;
    transform:none!important;
    filter:none!important;
  }

  /* Home: quick start is outside the clipped nearest-station card and always visible. */
  .swift64-home-start{
    display:block!important;
    width:100%!important;
    min-height:44px!important;
    margin:8px 0 10px!important;
    border:0!important;
    border-radius:14px!important;
    background:linear-gradient(135deg,#a20d18,#c61625)!important;
    color:#fff!important;
    font:inherit!important;
    font-size:.82rem!important;
    font-weight:900!important;
    box-shadow:0 8px 18px rgba(162,13,24,.18)!important;
    cursor:pointer!important;
  }

  /* Map: Home-style square QR scanner at the top right. */
  .swift64-map-head{position:relative!important;flex:0 0 auto!important;padding-right:54px!important}
  .swift64-map-head .swift-mobile-heading{margin:0!important;padding:2px 0 8px!important}
  .swift64-map-qr{
    position:absolute!important;
    top:0!important;
    right:0!important;
    z-index:8!important;
    display:grid!important;
    place-items:center!important;
    width:46px!important;
    height:46px!important;
    min-width:46px!important;
    padding:9px!important;
    border:0!important;
    border-radius:15px!important;
    background:linear-gradient(145deg,#a20d18,#c61625)!important;
    color:#fff!important;
    box-shadow:0 8px 18px rgba(162,13,24,.18)!important;
    cursor:pointer!important;
  }
  .swift64-map-qr svg{display:block!important;width:25px!important;height:25px!important}
  body[data-driver-view="map"] #driverSectionContent{display:flex!important;flex-direction:column!important;overflow:hidden!important}
  body[data-driver-view="map"] .swift-map-card{flex:1 1 auto!important;min-height:0!important}

  /* Pages that contain lists/forms must scroll inside the safe content area. */
  body[data-driver-view="invoices"] #driverSectionContent,
  body[data-driver-view="topup"] #driverSectionContent,
  body[data-driver-view="profile"] #driverSectionContent,
  body[data-driver-view="notifications"] #driverSectionContent,
  body[data-driver-view="orders"] #driverSectionContent,
  body[data-driver-view="help"] #driverSectionContent,
  body[data-driver-view="sessions"] #driverSectionContent,
  body[data-driver-view="reports"] #driverSectionContent{
    display:block!important;
    overflow-y:auto!important;
    overflow-x:hidden!important;
    -webkit-overflow-scrolling:touch!important;
    overscroll-behavior-y:contain!important;
    padding:6px 1px 108px!important;
  }
  .swift64-scroll-page{min-height:0!important;padding-bottom:20px!important}
  body[data-driver-view="help"] .swift62-support{overflow:visible!important;min-height:auto!important}
  body[data-driver-view="help"] .swift62-support-card{overflow:visible!important}

  /* Keep headings crisp and in normal flow on scrolling pages. */
  body[data-driver-view="invoices"] .swift-mobile-heading,
  body[data-driver-view="topup"] .swift-mobile-heading,
  body[data-driver-view="profile"] .swift-mobile-heading,
  body[data-driver-view="notifications"] .swift-mobile-heading,
  body[data-driver-view="orders"] .swift-mobile-heading,
  body[data-driver-view="help"] .swift-mobile-heading,
  body[data-driver-view="sessions"] .swift-mobile-heading,
  body[data-driver-view="reports"] .swift-mobile-heading{
    position:relative!important;
    top:auto!important;
    z-index:1!important;
    background:transparent!important;
  }

  /* Invoice tables remain horizontally usable while the page itself scrolls vertically. */
  body[data-driver-view="invoices"] .table-wrap,
  body[data-driver-view="invoices"] .table-scroll,
  body[data-driver-view="invoices"] .data-table-wrap{overflow-x:auto!important;max-width:100%!important}
}

@media (max-width:390px){
  body[data-page="driver"] .driver-workspace{padding:0 10px!important}
  .swift64-map-head{padding-right:50px!important}
  .swift64-map-qr{width:42px!important;height:42px!important;min-width:42px!important;border-radius:14px!important}
  .swift64-home-start{min-height:41px!important;margin-top:7px!important}
}
