            body {
            background: #000;
            color: white;
            font-family: Arial, sans-serif;
            padding: 20px;
            }
            .control-panel {
            display: flex;
            flex-wrap: wrap;
            gap: 20px;
            margin-bottom: 20px;
            }
            .connection-section, .gun-controls, .status-section {
            flex: 1;
            min-width: 300px;
            background: #111;
            padding: 15px;
            border-radius: 5px;
            }
            .gun-controls {
            display: flex;
            flex-direction: column;
            gap: 10px;
            }
            .gun-config {
            background: #333;
            padding: 10px;
            border-radius: 5px;
            margin-bottom: 10px;
            display: flex;
            align-items: center;
            gap: 10px;
            }
            .gun-config label {
            color: #aaa;
            }
            .gun-config select {
            padding: 5px 10px;
            border-radius: 3px;
            background: #444;
            color: white;
            border: 1px solid #555;
            }
            .gun-section {
            background: #222;
            padding: 10px;
            border-radius: 5px;
            margin-bottom: 10px;
            }
            .gun-title {
            color: #4CAF50;
            font-weight: bold;
            margin-bottom: 5px;
            font-size: 16px;
            }
            .gun-status {
            display: flex;
            align-items: center;
            gap: 10px;
            margin-bottom: 10px;
            }
            .gun-indicator {
            display: inline-block;
            width: 12px;
            height: 12px;
            border-radius: 50%;
            margin-right: 5px;
            }
            .available { background-color: green; }
            .occupied { background-color: yellow; }
            .charging { background-color: orange; }
            .suspendedevse { background-color: blue; }
            .suspendedev { background-color: purple; }
            .finishing { background-color: magenta; }
            .reserved { background-color: cyan; } 
            .unavailable { background-color: gray; }
            .faulted { background-color: red; }
            .plug-indicator {
            font-size: 20px;
            margin-left: 10px;
            }
            .plugged-in { color: #4CAF50; }
            .unplugged { color: #666; }
            button,
            input,
            select {
            display: block;
            width: 100%;
            margin-bottom: 5px;
            cursor: pointer;
            }
            button {
            color: #fff;
            padding: 8px 0;
            border: none;
            border-radius: 3px;
            transition: background 0.3s;
            font-size: 12px;
            }
            button:hover:not(:disabled) {
            opacity: 0.9;
            }
            button:disabled {
            background: #666 !important;
            cursor: not-allowed;
            opacity: 0.5;
            }
            .connect-button {
            background: #369;
            }
            .disconnect-button {
            background: #f44336;
            }
            .plug-button {
            background: #4CAF50;
            }
            .unplug-button {
            background: #ff9800;
            }
            .auth-button {
            background: #2196F3;
            }
            .start-button {
            background: #4CAF50;
            }
            .stop-button {
            background: #f44336;
            }
            .emergency-button {
            background: #b71c1c;
            color: #fff;
            font-weight: bold;
            border: 2px solid #ffeb3b;
            }
            .emergency-button:disabled {
            background: #9e9e9e;
            border-color: #bdbdbd;
            }
            .update-button {
            background: #ff9800;
            }
            .meter-button {
            background: #9C27B0;
            }
            .status-button {
            background: #607D8B;
            }
            .connection-status {
            display: flex;
            gap: 10px;
            margin: 10px 0;
            }
            .indicator {
            display: inline-block;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            margin-right: 5px;
            }
            #red { background-color: red; }
            #green { background-color: green; }
            #blue { background-color: blue; }
            #yellow { background-color: yellow; }
            #console {
            background: #111;
            height: 300px;
            overflow-y: auto;
            padding: 10px;
            border-radius: 5px;
            margin-top: 20px;
            font-family: monospace;
            font-size: 11px;
            }
            .console-line {
            margin-bottom: 2px;
            padding: 2px;
            border-bottom: 1px solid #333;
            }
            .ocpp-response {
            color: #4CAF50;
            }
            .ocpp-request {
            color: #2196F3;
            }
            .ocpp-call {
            color: #FF9800;
            }
            .error {
            color: #f44336;
            }
            .warning {
            color: #ff9800;
            }
            .success {
            color: #8BC34A;
            }
            select, input {
            padding: 8px;
            background: #222;
            color: white;
            border: 1px solid #444;
            border-radius: 3px;
            margin-bottom: 10px;
            font-size: 12px;
            }
            .autocomplete {
            position: relative;
            display: inline-block;
            width: 100%;
            }
            .autocomplete-items {
            position: absolute;
            border: 1px solid #444;
            z-index: 99;
            top: 100%;
            left: 0;
            right: 0;
            background: #222;
            }
            .autocomplete-items div {
            padding: 8px;
            cursor: pointer;
            background-color: #222;
            border-bottom: 1px solid #444;
            font-size: 12px;
            }
            .autocomplete-items div:hover {
            background-color: #333;
            }
            .autocomplete-active {
            background-color: #2196F3 !important;
            color: #fff;
            }
            h3 {
            color: #4CAF50;
            margin-top: 0;
            font-size: 14px;
            }
            label {
            display: block;
            margin-bottom: 5px;
            color: #ccc;
            font-size: 12px;
            }
            .config-group {
            display: flex;
            gap: 10px;
            margin-bottom: 10px;
            }
            .config-group select,
            .config-group input {
            flex: 1;
            }
            .status-info {
            font-size: 12px;
            margin-bottom: 5px;
            }
            .status-label {
            display: inline-block;
            width: 120px;
            color: #aaa;
            }
            .button-row {
            display: flex;
            gap: 5px;
            margin-bottom: 5px;
            }
            .button-row button {
            flex: 1;
            }
            .config-category {
            background: #222;
            padding: 10px;
            margin-bottom: 10px;
            border-radius: 5px;
            }
            .config-category h4 {
            color: #2196F3;
            margin-top: 0;
            margin-bottom: 8px;
            font-size: 12px;
            border-bottom: 1px solid #333;
            padding-bottom: 5px;
            }
            /* Focused, centered setup card shown before the charger is started */
            .setup-mode .control-panel {
            justify-content: center;
            }
            .setup-mode .connection-section {
            max-width: 520px;
            margin: 30px auto;
            box-shadow: 0 8px 30px rgba(0,0,0,0.6);
            }
            .field {
            display: flex;
            flex-direction: column;
            flex: 1;
            }
            .field label {
            margin-bottom: 4px;
            }
            .field > select,
            .field > input,
            .field > .autocomplete > input {
            width: 100%;
            margin-bottom: 0;
            }
            .start-charger-btn {
            padding: 12px 0;
            font-size: 14px;
            font-weight: bold;
            margin-top: 8px;
            }
            .setup-hint {
            font-size: 11px;
            color: #888;
            margin: 6px 0 0;
            text-align: center;
            }
            /* Two-column layout for the online charger summary */
            .summary-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 4px 16px;
            }
            .summary-grid .full {
            grid-column: 1 / -1;
            }
            .summary-grid .status-label {
            width: 100px;
            }

            /* ===================== UI polish pass ===================== */
            body {
            background: radial-gradient(1200px 600px at 50% -10%, #14181f 0%, #0a0c10 55%, #000 100%);
            font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
            -webkit-font-smoothing: antialiased;
            }
            h2 {
            font-size: 20px;
            font-weight: 700;
            letter-spacing: 0.2px;
            display: flex;
            align-items: center;
            gap: 10px;
            margin: 4px 0 18px;
            }
            h2::before {
            content: "";
            width: 6px;
            height: 24px;
            border-radius: 3px;
            background: linear-gradient(#4CAF50, #2196F3);
            }
            /* Cards */
            .connection-section, .gun-controls, .status-section {
            background: linear-gradient(180deg, #14161b 0%, #101216 100%);
            border: 1px solid #23262e;
            border-radius: 10px;
            padding: 18px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.35);
            }
            .gun-section, .config-category {
            border: 1px solid #262a33;
            background: #16181e;
            transition: border-color 0.2s, box-shadow 0.2s;
            }
            .gun-section:hover {
            border-color: #313745;
            }
            /* Section headings with accent bar */
            h3 {
            font-size: 12px;
            font-weight: 700;
            letter-spacing: 0.6px;
            text-transform: uppercase;
            color: #7dd37d;
            display: flex;
            align-items: center;
            gap: 8px;
            margin: 16px 0 10px;
            }
            h3::before {
            content: "";
            width: 4px;
            height: 13px;
            border-radius: 2px;
            background: #4CAF50;
            }
            .gun-title { font-size: 14px; }
            /* Labels a touch clearer */
            label { color: #9aa4b2; font-weight: 500; }
            /* Inputs / selects */
            select, input {
            border: 1px solid #2b2f38;
            background: #1a1d24;
            transition: border-color 0.15s, box-shadow 0.15s;
            }
            select:focus, input:focus {
            outline: none;
            border-color: #2196F3;
            box-shadow: 0 0 0 3px rgba(33,150,243,0.18);
            }
            input[readonly] { color: #8b93a1; }
            /* Buttons: subtle sheen + motion + accessible focus */
            button {
            background-image: linear-gradient(rgba(255,255,255,0.10), rgba(0,0,0,0.12));
            border-radius: 6px;
            font-weight: 600;
            letter-spacing: 0.2px;
            box-shadow: 0 1px 2px rgba(0,0,0,0.3);
            transition: transform 0.08s ease, filter 0.15s ease, box-shadow 0.15s ease, background 0.3s;
            }
            button:hover:not(:disabled) {
            filter: brightness(1.12);
            box-shadow: 0 3px 10px rgba(0,0,0,0.4);
            }
            button:active:not(:disabled) {
            transform: translateY(1px);
            filter: brightness(0.95);
            }
            button:disabled { background-image: none; box-shadow: none; }
            button:focus-visible {
            outline: 2px solid #4CAF50;
            outline-offset: 2px;
            }
            /* Gun status: bigger glowing indicator + prominent label */
            .gun-status > div:first-child {
            display: inline-flex;
            align-items: center;
            gap: 9px;
            font-size: 15px;
            font-weight: 600;
            }
            .gun-indicator {
            width: 13px;
            height: 13px;
            box-shadow: 0 0 0 3px rgba(255,255,255,0.05);
            }
            .gun-indicator.charging,
            .gun-indicator.occupied {
            animation: statusPulse 1.6s ease-in-out infinite;
            }
            .gun-indicator.charging { box-shadow: 0 0 9px 2px rgba(255,152,0,0.75); }
            .gun-indicator.available { box-shadow: 0 0 8px 1px rgba(76,175,80,0.6); }
            .gun-indicator.faulted { box-shadow: 0 0 9px 2px rgba(244,67,54,0.7); }
            @keyframes statusPulse {
            0%, 100% { opacity: 1; }
            50% { opacity: 0.45; }
            }
            /* Connection status as pills */
            .connection-status > div {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            padding: 6px 14px;
            border-radius: 999px;
            font-weight: 600;
            font-size: 13px;
            border: 1px solid #2b2f38;
            background: #15171d;
            }
            #connected-status { color: #9ccc65; background: rgba(139,195,74,0.10); border-color: rgba(139,195,74,0.4); }
            #disconnected-status { color: #ef9a9a; background: rgba(244,67,54,0.10); border-color: rgba(244,67,54,0.35); }
            #connecting-status { color: #ffcc80; background: rgba(255,152,0,0.10); border-color: rgba(255,152,0,0.35); }
            .connection-status .indicator { width: 12px; height: 12px; }
            /* Config sub-heading color already blue; tighten */
            .config-category h4 { letter-spacing: 0.4px; }
            /* Console polish */
            #console {
            border: 1px solid #23262e;
            background: #0c0e12;
            line-height: 1.5;
            border-radius: 10px;
            }
            #console::-webkit-scrollbar, body::-webkit-scrollbar { width: 10px; height: 10px; }
            #console::-webkit-scrollbar-thumb, body::-webkit-scrollbar-thumb {
            background: #2b2f38; border-radius: 6px; border: 2px solid #0c0e12;
            }
            #console::-webkit-scrollbar-thumb:hover, body::-webkit-scrollbar-thumb:hover { background: #3a404c; }
            .console-line { border-bottom: 1px solid #191c22; }
