:root{--ui-bg:#f4f7fb;--ui-surface:#fff;--ui-surface-2:#f8fafc;--ui-surface-3:#eef2f7;--ui-text:#172033;--ui-muted:#697386;--ui-border:#e4e9f2;--ui-primary:#2563eb;--ui-primary-2:#1d4ed8;--ui-primary-soft:#eaf1ff;--ui-success:#16a34a;--ui-warning:#d97706;--ui-danger:#dc2626;--ui-info:#0891b2;--ui-sidebar:#111827;--ui-sidebar-2:#172033;--ui-sidebar-text:#cbd5e1;--ui-sidebar-active:#2563eb;--ui-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.06);--ui-shadow-lg:0 18px 50px rgba(16,24,40,.14);--ui-radius:14px;--ui-radius-sm:10px;--ui-sidebar-width:252px;--ui-header-height:70px;--ui-transition:.2s ease;color-scheme:light}
[data-theme="dark"]{--ui-bg:#0b1120;--ui-surface:#111827;--ui-surface-2:#172033;--ui-surface-3:#202b3d;--ui-text:#e5edf8;--ui-muted:#94a3b8;--ui-border:#273449;--ui-primary:#60a5fa;--ui-primary-2:#3b82f6;--ui-primary-soft:#182a46;--ui-success:#4ade80;--ui-warning:#fbbf24;--ui-danger:#f87171;--ui-info:#22d3ee;--ui-sidebar:#070c16;--ui-sidebar-2:#0d1422;--ui-sidebar-text:#b9c5d6;--ui-sidebar-active:#2563eb;--ui-shadow:0 1px 2px rgba(0,0,0,.3),0 12px 32px rgba(0,0,0,.22);--ui-shadow-lg:0 22px 60px rgba(0,0,0,.38);color-scheme:dark}
*{scrollbar-color:var(--ui-border) transparent;scrollbar-width:thin}html,body{min-height:100%;background:var(--ui-bg);color:var(--ui-text);transition:background var(--ui-transition),color var(--ui-transition)}body{font-family:Inter,Nunito,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:14px}a{color:var(--ui-primary)}h1,h2,h3,h4,h5,h6{color:var(--ui-text);font-weight:700;letter-spacing:-.02em}.text-muted{color:var(--ui-muted)!important}.page-heading>h3,#main>h3,.page-title h5{font-size:1.5rem;margin:0 0 1.25rem}.page-content,.page-heading{animation:uiFade .25s ease}@keyframes uiFade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
#sidebar.active .sidebar-wrapper{left:0}#sidebar:not(.active) .sidebar-wrapper{left:calc(-1 * var(--ui-sidebar-width))}#sidebar:not(.active)~#main{margin-left:0}.sidebar-wrapper{width:var(--ui-sidebar-width);background:linear-gradient(180deg,var(--ui-sidebar),var(--ui-sidebar-2));border-right:1px solid rgba(255,255,255,.06);box-shadow:none;overflow-x:hidden}.sidebar-wrapper .sidebar-header{height:var(--ui-header-height);padding:14px 18px;display:flex;align-items:center;border-bottom:1px solid rgba(255,255,255,.06)}.sidebar-wrapper .sidebar-header>div{width:100%;align-items:center!important}.sidebar-wrapper .sidebar-header .logo{display:flex;align-items:center}.sidebar-wrapper .sidebar-header img{height:42px;max-width:176px;object-fit:contain;filter:drop-shadow(0 2px 5px rgba(0,0,0,.16))}.sidebar-wrapper .sidebar-header .sidebar-hide{width:36px;height:36px;display:grid!important;place-items:center;border-radius:10px;color:#fff;background:rgba(255,255,255,.08)}.sidebar-wrapper .menu{margin-top:14px;padding:0 12px 24px}.sidebar-wrapper .menu .sidebar-title{padding:8px 12px;margin:8px 0 4px;font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:#64748b}.sidebar-wrapper .menu .sidebar-item{margin:4px 0}.sidebar-wrapper .menu .sidebar-link{min-height:44px;padding:10px 12px;border-radius:11px;color:var(--ui-sidebar-text);gap:12px;font-weight:600;transition:background var(--ui-transition),color var(--ui-transition),transform var(--ui-transition)}.sidebar-wrapper .menu .sidebar-link span{margin-left:0}.sidebar-wrapper .menu .sidebar-link i{width:20px;color:#8493a8;font-size:1.05rem;text-align:center}.sidebar-wrapper .menu .sidebar-link:hover{background:rgba(255,255,255,.07);color:#fff;transform:translateX(2px)}.sidebar-wrapper .menu .sidebar-item.active .sidebar-link{background:linear-gradient(135deg,var(--ui-sidebar-active),#3b82f6);box-shadow:0 7px 20px rgba(37,99,235,.28);color:#fff}.sidebar-wrapper .menu .sidebar-item.active .sidebar-link i{color:#fff}.sidebar-wrapper .menu #logout-btn{margin-top:16px;padding-top:12px;border-top:1px solid rgba(255,255,255,.07)}
#main{min-height:100vh;margin-left:var(--ui-sidebar-width);padding:calc(var(--ui-header-height) + 26px) 28px 20px;transition:margin-left .25s ease;background:var(--ui-bg)}#main>header{position:fixed;z-index:9;top:0;left:var(--ui-sidebar-width);right:0;height:var(--ui-header-height);padding:0 28px!important;margin:0!important;background:color-mix(in srgb,var(--ui-surface) 94%,transparent);border-bottom:1px solid var(--ui-border);backdrop-filter:blur(12px);display:flex;align-items:center;transition:left .25s ease}#sidebar:not(.active)~#main>header{left:0}.portal-topbar{width:100%;display:flex;align-items:center;justify-content:space-between;gap:16px}.portal-topbar-left,.portal-topbar-right{display:flex;align-items:center;gap:12px}.portal-topbar-title{margin:0;font-size:1rem;font-weight:700;color:var(--ui-text)}.portal-topbar-subtitle{font-size:.76rem;color:var(--ui-muted);margin-top:1px}.portal-icon-btn{width:40px;height:40px;border:1px solid var(--ui-border);border-radius:11px;background:var(--ui-surface);color:var(--ui-text);display:grid;place-items:center;box-shadow:0 1px 2px rgba(16,24,40,.03);transition:all var(--ui-transition)}.portal-icon-btn:hover{color:var(--ui-primary);border-color:color-mix(in srgb,var(--ui-primary) 35%,var(--ui-border));background:var(--ui-primary-soft)}.portal-user{display:flex;align-items:center;gap:10px;padding:5px 10px 5px 5px;border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-surface)}.portal-avatar{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;background:linear-gradient(135deg,var(--ui-primary),#7c3aed);color:#fff;font-size:.78rem;font-weight:800}.portal-user-name{font-size:.82rem;font-weight:700;line-height:1.1}.portal-user-role{font-size:.68rem;color:var(--ui-muted);margin-top:2px}.burger-btn{width:40px;height:40px;border:1px solid var(--ui-border);border-radius:11px;background:var(--ui-surface);display:grid!important;place-items:center;color:var(--ui-text)!important}.burger-btn i{font-size:1.25rem!important}
.card{background:var(--ui-surface);border:1px solid var(--ui-border)!important;border-radius:var(--ui-radius)!important;box-shadow:var(--ui-shadow)!important;color:var(--ui-text);overflow:visible}.card .card-header{background:transparent;border-color:var(--ui-border);padding:18px 20px}.card .card-body{padding:20px}.card .card-title{color:var(--ui-text)}.row.g-3>.col,.row.g-3>[class*=col-]{margin-top:1rem}.shadow-sm{box-shadow:var(--ui-shadow)!important}
.btn{border-radius:10px;font-weight:700;box-shadow:none!important;transition:transform var(--ui-transition),background var(--ui-transition),border-color var(--ui-transition)}.btn:hover{transform:translateY(-1px)}.btn-primary{background:var(--ui-primary);border-color:var(--ui-primary)}.btn-primary:hover,.btn-primary:focus{background:var(--ui-primary-2);border-color:var(--ui-primary-2)}.btn-sm{padding:.48rem .8rem;font-size:.78rem}.btn-outline-primary{color:var(--ui-primary);border-color:var(--ui-primary)}
.form-control,.form-select,.dataTable-input{min-height:40px;background:var(--ui-surface)!important;border:1px solid var(--ui-border)!important;color:var(--ui-text)!important;border-radius:10px!important;font-size:.84rem!important;box-shadow:none!important}.form-control::placeholder{color:color-mix(in srgb,var(--ui-muted) 80%,transparent)}.form-control:focus,.form-select:focus,.dataTable-input:focus{border-color:var(--ui-primary)!important;box-shadow:0 0 0 3px color-mix(in srgb,var(--ui-primary) 14%,transparent)!important}.form-select option{background:var(--ui-surface);color:var(--ui-text)}label,.form-label{color:var(--ui-text);font-weight:600;font-size:.8rem}
.table-responsive,.table-wrapper{border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-surface)}.table{margin:0;color:var(--ui-text);--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--ui-text);--bs-table-hover-color:var(--ui-text);--bs-table-hover-bg:var(--ui-surface-2)}.table>:not(caption)>*>*{border-color:var(--ui-border);background:transparent;color:inherit}.table thead,.table-primary,.table-primary>th,.table-primary>td{background:var(--ui-surface-2)!important;color:var(--ui-muted)!important}.table thead th{font-size:.72rem!important;font-weight:800!important;text-transform:uppercase;letter-spacing:.045em;border-bottom:1px solid var(--ui-border)!important;padding:12px 10px!important}.table tbody td{padding:11px 10px!important;font-size:.79rem!important}.table-hover>tbody>tr:hover>*{background:var(--ui-surface-2)!important}.table-wrapper::-webkit-scrollbar{height:8px;width:8px}.table-wrapper::-webkit-scrollbar-thumb{background:var(--ui-border);border-radius:999px}.table-wrapper::-webkit-scrollbar-track{background:transparent}
#toolbar{display:flex;gap:12px;align-items:center;margin-bottom:16px!important}#toolbar .left-buttons,#filter-section{display:flex;align-items:center;gap:9px}#filter-section{margin-left:auto}#toolbar #filterTableInput{margin:0!important;min-width:220px}#pagination-wrapper{margin-top:14px;padding-top:14px;border-top:1px solid var(--ui-border);color:var(--ui-muted)}.pagination{gap:4px}.pagination .page-link{border:1px solid var(--ui-border);border-radius:8px!important;background:var(--ui-surface);color:var(--ui-text)}.pagination .page-item.active .page-link{background:var(--ui-primary);border-color:var(--ui-primary);color:#fff}.pagination-info{color:var(--ui-muted)}
.modal-content,.dialog-content{background:var(--ui-surface)!important;color:var(--ui-text)!important;border:1px solid var(--ui-border)!important;border-radius:16px!important;box-shadow:var(--ui-shadow-lg)!important}.modal-header,.modal-footer{border-color:var(--ui-border)!important}.dropdown-menu{background:var(--ui-surface);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow-lg);border-radius:12px}.dropdown-item{color:var(--ui-text)}.dropdown-item:hover{background:var(--ui-surface-2);color:var(--ui-text)}
.badge{font-weight:700;border-radius:999px;padding:.42em .7em}.bg-success{background:color-mix(in srgb,var(--ui-success) 85%,transparent)!important}.bg-danger{background:color-mix(in srgb,var(--ui-danger) 85%,transparent)!important}.bg-warning{background:color-mix(in srgb,var(--ui-warning) 85%,transparent)!important}.bg-info{background:color-mix(in srgb,var(--ui-info) 85%,transparent)!important}
footer{padding:20px 2px 0}footer p{font-size:.76rem;color:var(--ui-muted);margin:0}.chart-loading-overlay{background:color-mix(in srgb,var(--ui-surface) 92%,transparent)!important;border-radius:12px}.apexcharts-canvas text{fill:var(--ui-muted)!important}.apexcharts-gridline{stroke:var(--ui-border)!important}.apexcharts-tooltip,.apexcharts-xaxistooltip{background:var(--ui-surface)!important;border-color:var(--ui-border)!important;color:var(--ui-text)!important;box-shadow:var(--ui-shadow)!important}.apexcharts-tooltip-title{background:var(--ui-surface-2)!important;border-color:var(--ui-border)!important}.apexcharts-menu{background:var(--ui-surface)!important;border-color:var(--ui-border)!important}
#statistics .card{height:100%;position:relative;overflow:hidden}#statistics .card:before{content:"";position:absolute;width:96px;height:96px;border-radius:50%;right:-28px;top:-28px;background:color-mix(in srgb,var(--ui-primary) 8%,transparent)}#statistics .card h6,#statistics .card p{color:var(--ui-muted)}#statistics .card h1,#statistics .card h2,#statistics .card h3,#statistics .card h4{color:var(--ui-text)}
#auth{min-height:100vh;height:auto!important;background:radial-gradient(circle at 12% 8%,color-mix(in srgb,var(--ui-primary) 10%,transparent),transparent 36%),var(--ui-bg)}#auth>.row{min-height:100vh;margin:0}#auth #auth-left{max-width:520px;margin:auto;padding:56px 58px!important;background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:24px;box-shadow:var(--ui-shadow-lg)}#auth .col-lg-5{display:flex;align-items:center;padding:36px 5vw}#auth #auth-left .auth-logo{margin-bottom:28px!important}#auth #auth-left .auth-logo img{height:72px!important;max-width:210px;object-fit:contain}#auth #auth-left .auth-title{font-size:1.55rem!important;margin:0 0 28px!important;letter-spacing:-.035em}#auth #auth-right{height:calc(100vh - 48px)!important;margin:24px;border-radius:24px;background-position:center!important;background-size:cover!important;box-shadow:var(--ui-shadow-lg);position:relative;overflow:hidden}#auth #auth-right:after{content:"TERA GREEN\A ADMIN PORTAL";white-space:pre;position:absolute;left:48px;bottom:48px;color:#fff;font-size:2.4rem;font-weight:800;line-height:1.08;letter-spacing:-.04em;text-shadow:0 4px 24px rgba(0,0,0,.26)}#auth .form-control-xl{min-height:52px;padding-left:48px!important;border-radius:13px!important}#auth .form-control-icon{color:var(--ui-muted)}#auth #login-btn{min-height:52px;border-radius:13px;font-size:.95rem;margin-top:24px!important}#error-message-container{border:1px solid color-mix(in srgb,var(--ui-danger) 22%,var(--ui-border));background:color-mix(in srgb,var(--ui-danger) 8%,var(--ui-surface))!important;border-radius:12px!important}#error-message-container #error-message,#error-message-container i{color:var(--ui-danger)!important}.login-theme-toggle{position:fixed;right:22px;top:22px;z-index:20}
[data-theme="dark"] img[src*="tera_logo"]{filter:brightness(1.12) drop-shadow(0 2px 5px rgba(0,0,0,.25))}[data-theme="dark"] .table-primary{--bs-table-bg:var(--ui-surface-2);--bs-table-color:var(--ui-muted)}[data-theme="dark"] .text-dark{color:var(--ui-text)!important}[data-theme="dark"] .bg-white{background:var(--ui-surface)!important}[data-theme="dark"] .modal-backdrop{background:#020617}
@media(max-width:1199px){#main{margin-left:0;padding:calc(var(--ui-header-height) + 20px) 20px 18px}#main>header{left:0;padding:0 20px!important}.sidebar-wrapper{left:calc(-1 * var(--ui-sidebar-width));box-shadow:var(--ui-shadow-lg)}#sidebar.active .sidebar-wrapper{left:0}.portal-topbar-title{font-size:.92rem}}
@media(max-width:767px){#main{padding:calc(var(--ui-header-height) + 16px) 14px 16px}#main>header{padding:0 14px!important}.portal-user-meta{display:none}.portal-user{padding-right:5px}.card .card-body{padding:15px}.page-heading>h3,#main>h3,.page-title h5{font-size:1.25rem}#toolbar,#filter-section{align-items:stretch;flex-direction:column;width:100%}#toolbar .left-buttons{width:100%}#toolbar .left-buttons .btn,#filter-section>*{width:100%!important;max-width:none!important}#toolbar #filterTableInput{min-width:0}.table tbody td{font-size:.76rem!important}#pagination-wrapper{gap:10px}#auth .col-lg-5{padding:20px}#auth #auth-left{padding:34px 24px!important;border-radius:18px}#auth #auth-left .auth-logo img{height:60px!important}.login-theme-toggle{right:14px;top:14px}}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(2,6,23,.48);backdrop-filter:blur(2px);z-index:8}@media(max-width:1199px){#sidebar.active~.sidebar-overlay,.sidebar-overlay:has(~ #sidebar.active){display:block}body:has(#sidebar.active) .sidebar-overlay{display:block}.sidebar-wrapper{z-index:11}}
.stat-card{min-height:112px;padding:18px;display:flex;flex-direction:row;align-items:center;gap:14px;overflow:hidden!important}.stat-card:after{content:"";position:absolute;width:86px;height:86px;right:-24px;bottom:-30px;border-radius:50%;background:color-mix(in srgb,var(--stat-accent) 12%,transparent)}.stat-icon{width:46px;height:46px;flex:0 0 46px;border-radius:13px;display:grid;place-items:center;background:color-mix(in srgb,var(--stat-accent) 13%,var(--ui-surface));color:var(--stat-accent);font-size:1.2rem}.stat-content{min-width:0;position:relative;z-index:1}.stat-label{font-size:.78rem;color:var(--ui-muted);font-weight:700;margin-bottom:5px}.stat-value p{margin:0!important;color:var(--ui-text)!important;font-size:1.25rem!important;font-weight:800;letter-spacing:-.035em}.statistic-loading-box{height:24px!important;min-width:88px;border-radius:8px!important}

/* V3 platform modules */
.module-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.module-span-12{grid-column:span 12}.module-span-8{grid-column:span 8}.module-span-6{grid-column:span 6}.module-span-4{grid-column:span 4}.module-span-3{grid-column:span 3}.module-card{background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);padding:18px}.module-card-title{font-size:.95rem;font-weight:800;margin:0 0 14px}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.metric-box{padding:14px;border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-surface-2)}.metric-label{font-size:.73rem;color:var(--ui-muted);font-weight:700}.metric-value{font-size:1.25rem;font-weight:800;margin-top:4px}.metric-delta{font-size:.72rem;margin-top:4px}.metric-delta.up{color:var(--ui-success)}.metric-delta.down{color:var(--ui-danger)}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:6px}.status-online{background:var(--ui-success)}.status-charging{background:var(--ui-primary)}.status-fault{background:var(--ui-danger)}.status-offline{background:#94a3b8}.filter-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:14px}.filter-bar .form-group{min-width:150px;flex:1}.empty-state{padding:28px;text-align:center;color:var(--ui-muted);border:1px dashed var(--ui-border);border-radius:12px}.api-pending{padding:10px 12px;border:1px solid color-mix(in srgb,var(--ui-warning) 35%,var(--ui-border));background:color-mix(in srgb,var(--ui-warning) 8%,var(--ui-surface));border-radius:10px;color:var(--ui-warning);font-size:.78rem}.map-shell{min-height:430px;border:1px solid var(--ui-border);border-radius:14px;background:radial-gradient(circle at 30% 30%,color-mix(in srgb,var(--ui-primary) 12%,transparent),transparent 36%),var(--ui-surface-2);position:relative;overflow:hidden}.map-placeholder{position:absolute;inset:0;display:grid;place-items:center;color:var(--ui-muted);text-align:center;padding:30px}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:.75rem;color:var(--ui-muted)}.tabs-modern{display:flex;gap:6px;overflow:auto;border-bottom:1px solid var(--ui-border);margin-bottom:16px}.tabs-modern button{border:0;background:transparent;color:var(--ui-muted);padding:10px 12px;font-weight:700;white-space:nowrap;border-bottom:2px solid transparent}.tabs-modern button.active{color:var(--ui-primary);border-bottom-color:var(--ui-primary)}.split-panel{display:grid;grid-template-columns:260px 1fr;gap:16px}.tree-panel{border:1px solid var(--ui-border);border-radius:12px;padding:12px;background:var(--ui-surface-2)}.tree-item{padding:9px 10px;border-radius:9px;cursor:pointer}.tree-item:hover,.tree-item.active{background:var(--ui-primary-soft);color:var(--ui-primary)}.severity-1,.severity-2,.severity-3{color:var(--ui-danger);font-weight:800}.severity-4,.severity-5{color:var(--ui-warning);font-weight:800}.action-link{border:0;background:transparent;color:var(--ui-primary);font-weight:700;padding:3px 6px}.action-link.danger{color:var(--ui-danger)}.kpi-spark{height:34px;margin-top:7px;opacity:.75}.ticket-status{padding:.28rem .55rem;border-radius:999px;font-size:.7rem;font-weight:800}.ticket-pending{background:color-mix(in srgb,var(--ui-warning) 13%,var(--ui-surface));color:var(--ui-warning)}.ticket-progress{background:var(--ui-primary-soft);color:var(--ui-primary)}.ticket-closed{background:color-mix(in srgb,var(--ui-success) 13%,var(--ui-surface));color:var(--ui-success)}
@media(max-width:1199px){.module-span-8,.module-span-6,.module-span-4,.module-span-3{grid-column:span 12}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.split-panel{grid-template-columns:1fr}}
@media(max-width:575px){.metric-grid{grid-template-columns:1fr}.filter-bar{flex-direction:column;align-items:stretch}.filter-bar .form-group{width:100%}.module-card{padding:14px}}

/* V4 consistency + map system */
.portal-theme-btn{font-size:1.08rem;color:var(--ui-primary);background:color-mix(in srgb,var(--ui-primary) 10%,var(--ui-surface));border-color:color-mix(in srgb,var(--ui-primary) 30%,var(--ui-border))}.portal-theme-btn:hover{color:#fff;background:var(--ui-primary);border-color:var(--ui-primary);transform:translateY(-1px)}.portal-icon-btn i,.sidebar-hide i,.burger-btn i,.sidebar-link i,.btn i{line-height:1;display:inline-flex;align-items:center;justify-content:center}.sidebar-wrapper .menu .sidebar-link{display:flex;align-items:center}.sidebar-wrapper .menu .sidebar-link i{flex:0 0 20px;display:inline-flex;align-items:center;justify-content:center}.btn,.chart-toggle,.tabs-modern button,.action-link{display:inline-flex;align-items:center;justify-content:center;line-height:1.2}.form-control,.form-select,textarea{color:var(--ui-text)!important;background:var(--ui-surface)!important;border-color:var(--ui-border)!important}.form-control::placeholder,textarea::placeholder{color:var(--ui-muted)!important;opacity:1}.modal-content,.dropdown-menu,.offcanvas{background:var(--ui-surface)!important;color:var(--ui-text)!important;border-color:var(--ui-border)!important}[data-theme="dark"] .table,[data-theme="dark"] .table>*{color:var(--ui-text)!important}[data-theme="dark"] .table thead th{color:#dbe6f4!important}[data-theme="dark"] .text-muted{color:#aab8ca!important}[data-theme="dark"] .apexcharts-text,[data-theme="dark"] .apexcharts-title-text,[data-theme="dark"] .apexcharts-legend-text{fill:#dbe6f4!important}[data-theme="dark"] .apexcharts-gridline{stroke:#314056!important}[data-theme="dark"] .chart-toggle{color:var(--ui-text)!important}.sidebar-wrapper .sidebar-header .sidebar-hide{width:38px;height:38px;display:grid!important;place-items:center;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.06)}@media(min-width:1200px){.sidebar-wrapper .sidebar-header .toggler,.sidebar-wrapper .sidebar-header .sidebar-hide{display:none!important}}
.map-filter-grid{display:grid;grid-template-columns:minmax(260px,1.8fr) minmax(170px,1fr) minmax(150px,.8fr) auto;gap:12px;align-items:end}.map-filter-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.map-card{padding-bottom:14px}.map-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.map-shell{height:560px;min-height:560px;border:1px solid var(--ui-border);border-radius:14px;overflow:hidden;background:var(--ui-surface-2)}.map-station-list{display:flex;flex-direction:column;gap:9px;max-height:620px;overflow:auto;padding-right:2px}.station-list-card{width:100%;text-align:left;border:1px solid var(--ui-border);background:var(--ui-surface-2);color:var(--ui-text);border-radius:12px;padding:12px 13px;transition:.18s}.station-list-card:hover,.station-list-card.active{background:var(--ui-primary-soft);border-color:color-mix(in srgb,var(--ui-primary) 35%,var(--ui-border));transform:translateY(-1px)}.station-list-top{display:flex;justify-content:space-between;gap:10px}.station-list-top b{display:block;font-size:.83rem}.station-list-top div>span{display:block;font-size:.72rem;color:var(--ui-muted);margin-top:3px}.station-list-metrics{display:flex;gap:10px;flex-wrap:wrap;margin-top:9px;font-size:.7rem;color:var(--ui-muted)}.station-status{padding:.27rem .5rem;border-radius:999px;font-size:.67rem;font-weight:800;white-space:nowrap}.station-status-online{background:color-mix(in srgb,var(--ui-success) 14%,var(--ui-surface));color:var(--ui-success)}.station-status-charging{background:var(--ui-primary-soft);color:var(--ui-primary)}.station-status-fault{background:color-mix(in srgb,var(--ui-danger) 14%,var(--ui-surface));color:var(--ui-danger)}.station-status-offline{background:color-mix(in srgb,#64748b 15%,var(--ui-surface));color:#94a3b8}
.geo-map{position:relative;width:100%;height:100%;min-height:inherit;user-select:none;touch-action:none}.geo-map-stage,.geo-map-svg{position:absolute;inset:0;width:100%;height:100%}.geo-map-svg{cursor:grab;color:var(--ui-border)}.geo-map-svg:active{cursor:grabbing}.geo-map-bg{fill:var(--ui-surface-2)}.geo-map-grid{color:var(--ui-border)}.geo-map-content{filter:url(#geoShadow)}.geo-empty{fill:var(--ui-muted);font-size:14px}.geo-marker{cursor:pointer}.geo-marker-halo{fill:currentColor;opacity:.12}.geo-marker-dot{fill:currentColor;stroke:#fff;stroke-width:3}.geo-marker-label{fill:var(--ui-text);font-size:11px;font-weight:700;paint-order:stroke;stroke:var(--ui-surface);stroke-width:4;stroke-linejoin:round}.geo-online{color:#16a34a}.geo-charging{color:#2563eb}.geo-fault{color:#dc2626}.geo-offline{color:#64748b}.geo-marker.selected .geo-marker-halo{opacity:.25;animation:geoPulse 1.5s infinite}.geo-cluster{cursor:pointer}.geo-cluster-ring{fill:var(--ui-primary);opacity:.18}.geo-cluster-core{fill:var(--ui-primary)}.geo-cluster-text{fill:#fff;font-size:11px;font-weight:800}@keyframes geoPulse{0%,100%{r:17}50%{r:23}}.geo-map-controls{position:absolute;right:14px;top:14px;display:flex;flex-direction:column;gap:6px}.geo-map-controls button{width:38px;height:38px;border:1px solid var(--ui-border);border-radius:10px;background:color-mix(in srgb,var(--ui-surface) 94%,transparent);color:var(--ui-text);font-size:1rem;font-weight:800;box-shadow:var(--ui-shadow)}.geo-map-controls button:hover{background:var(--ui-primary-soft);color:var(--ui-primary)}.geo-map-caption{position:absolute;left:14px;bottom:14px;padding:8px 11px;border:1px solid var(--ui-border);border-radius:10px;background:color-mix(in srgb,var(--ui-surface) 92%,transparent);backdrop-filter:blur(8px);box-shadow:var(--ui-shadow);pointer-events:none}.geo-map-caption b,.geo-map-caption span{display:block}.geo-map-caption b{font-size:.76rem}.geo-map-caption span{font-size:.65rem;color:var(--ui-muted);margin-top:2px}.geo-map-popup{position:absolute;z-index:8;transform:translate(-50%,-100%);opacity:0;pointer-events:none;transition:opacity .16s}.geo-map-popup.show{opacity:1;pointer-events:auto}.geo-popup-card{width:300px;background:color-mix(in srgb,var(--ui-surface) 97%,transparent);color:var(--ui-text);border:1px solid var(--ui-border);border-radius:14px;padding:14px;box-shadow:var(--ui-shadow-lg);backdrop-filter:blur(10px)}.geo-popup-head{display:flex;justify-content:space-between;gap:10px}.geo-popup-head b{display:block;font-size:.9rem}.geo-popup-head div>span{font-size:.7rem;color:var(--ui-muted)}.geo-popup-row{display:flex;align-items:flex-start;gap:7px;margin:10px 0;color:var(--ui-muted);font-size:.76rem}.geo-popup-row i{color:var(--ui-primary)}.geo-popup-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.geo-popup-grid>div{padding:7px 5px;text-align:center;border:1px solid var(--ui-border);border-radius:9px;background:var(--ui-surface-2)}.geo-popup-grid span,.geo-popup-grid b{display:block}.geo-popup-grid span{font-size:.58rem;color:var(--ui-muted)}.geo-popup-grid b{font-size:.8rem;margin-top:2px}.geo-popup-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:10px}
@media(max-width:1199px){.map-filter-grid{grid-template-columns:1fr 1fr}.map-filter-search,.map-filter-actions{grid-column:span 2}.map-shell{height:500px;min-height:500px}}@media(max-width:767px){.map-filter-grid{grid-template-columns:1fr}.map-filter-search,.map-filter-actions{grid-column:auto}.map-filter-actions .btn{flex:1}.map-card-head{flex-direction:column}.map-shell{height:440px;min-height:440px}.geo-marker-label{display:none}.geo-popup-card{width:min(290px,calc(100vw - 50px))}.geo-popup-grid{grid-template-columns:repeat(2,1fr)}}

/* V4 view fit + control alignment */
.table-fit-layout{display:flex;flex-direction:column;min-height:0}.table-fit-layout>.table-wrapper,.table-fit-layout>.module-table-wrap{flex:1 1 auto;min-height:220px}.table-fit-layout>#pagination-wrapper{flex:0 0 auto}.table-wrapper,.module-table-wrap{overflow:auto}
#toolbar .btn,#toolbar .form-select,#toolbar .form-control,#toolbar #orderStatusSelector,#toolbar #selector-result-wrapper,.filter-bar .btn,.filter-bar .form-select,.filter-bar .form-control,.filter-bar .form-group .form-control,.filter-bar .form-group .form-select{min-height:40px;height:40px}.filter-bar .btn,.filter-bar .form-group,.filter-bar>.btn{margin-bottom:0}#toolbar #filter-section{align-items:stretch}#toolbar #filter-section>*{flex:0 0 auto}#toolbar #queryRangeSelector{min-width:112px}#toolbar #orderStatusSelector{min-width:184px;border-radius:10px;background:var(--ui-surface)}#toolbar #selector-result-wrapper{padding:0 12px;color:var(--ui-text);background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:10px}#toolbar #selector-result-wrapper p{width:auto!important;flex:1;max-width:none;color:var(--ui-text)}#toolbar #selector-result-wrapper i{margin-left:8px;color:var(--ui-muted)}#toolbar #selector-dropdown{background:var(--ui-surface)!important;border:1px solid var(--ui-border)!important;border-radius:12px!important;box-shadow:var(--ui-shadow-lg)!important}#toolbar #selector-dropdown .selector-item{display:flex;align-items:center;gap:10px;color:var(--ui-text)}#toolbar #selector-dropdown .selector-item:hover,#toolbar #selector-dropdown .selector-item.selected{background:var(--ui-surface-2)!important}
.table-action-btn,.table td .btn.btn-sm{display:inline-flex;align-items:center;justify-content:center;min-width:92px;min-height:28px;padding:.38rem .8rem!important;font-size:.76rem!important;font-weight:700;border-radius:999px}.action-link{min-height:32px;padding:.35rem .75rem;border-radius:999px;background:var(--ui-primary-soft);border:1px solid color-mix(in srgb,var(--ui-primary) 25%,var(--ui-border))}.action-link:hover{background:color-mix(in srgb,var(--ui-primary) 14%,var(--ui-surface));color:var(--ui-primary)}
.station-status-offline{background:color-mix(in srgb,#94a3b8 26%,var(--ui-surface));color:#dbe6f4;border:1px solid color-mix(in srgb,#cbd5e1 36%,transparent)}.geo-offline{color:#cbd5e1}.status-offline{background:#cbd5e1}.geo-marker.geo-offline .geo-marker-dot{stroke:var(--ui-surface);stroke-width:3.5}.geo-marker.geo-offline .geo-marker-halo{opacity:.2}.station-list-card:has(.station-status-offline){border-color:color-mix(in srgb,#94a3b8 22%,var(--ui-border))}
#main{overflow-x:hidden}.card{overflow:hidden}.page-heading .card .card-body,.page-content .module-card{min-height:0}.page-heading .section,.page-content{min-height:0}#pagination-wrapper{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;position:relative;z-index:2;background:var(--ui-surface)}#pagination{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.pagination .page-item{min-width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px!important}.page-dots{display:inline-flex;align-items:center;justify-content:center;min-width:20px;color:var(--ui-muted)}
@media(min-width:860px){.page-heading .section .card .card-body{display:flex;flex-direction:column;min-height:calc(100vh - 220px)}.page-heading .section .card .card-body .table-wrapper{flex:1 1 auto}.page-content .module-card{display:flex;flex-direction:column}.page-content .module-card .module-table-wrap{flex:1 1 auto}}
@media(max-width:859px){#toolbar #filter-section{width:100%}#toolbar #filter-section>*{width:100%!important;max-width:none!important}#pagination-wrapper{flex-direction:column;align-items:stretch}.pagination{justify-content:flex-start}}

/* V4.2 table density, header contrast and offline contrast */
:root{--ui-table-head-bg:#e7edf7;--ui-table-head-text:#334155;--ui-offline-row:#eef2f7;--ui-offline-text:#334155}
[data-theme="dark"]{--ui-table-head-bg:#22304a;--ui-table-head-text:#f8fafc;--ui-offline-row:#1e293b;--ui-offline-text:#f1f5f9}
.table thead,.table-primary,.table-primary>th,.table-primary>td,.table thead th{background:var(--ui-table-head-bg)!important;color:var(--ui-table-head-text)!important}.table thead th{padding:8px 10px!important;line-height:1.2!important;border-bottom:1px solid color-mix(in srgb,var(--ui-table-head-text) 22%,var(--ui-border))!important;position:sticky;top:0;z-index:3}.table tbody td{padding:6px 10px!important;line-height:1.25!important}.table tbody tr{height:auto}.table-action-btn,.table td .btn.btn-sm{min-height:26px!important;min-width:88px!important;padding:.28rem .7rem!important;font-size:.72rem!important}
.station-offline-row>td{background:var(--ui-offline-row)!important;color:var(--ui-offline-text)!important}.station-offline-row:hover>td{background:color-mix(in srgb,var(--ui-offline-row) 82%,var(--ui-primary-soft))!important}.station-offline-row .col-connectStatus{font-weight:800;color:#b45309!important}[data-theme="dark"] .station-offline-row .col-connectStatus{color:#fbbf24!important}.station-offline-row>td:first-child{box-shadow:inset 3px 0 0 #94a3b8}[data-theme="dark"] .station-offline-row>td:first-child{box-shadow:inset 3px 0 0 #cbd5e1}
[data-theme="dark"] .station-status-offline{background:#334155!important;color:#f8fafc!important;border-color:#64748b!important}[data-theme="dark"] .geo-offline{color:#e2e8f0!important}[data-theme="dark"] .status-offline{background:#e2e8f0!important}
/* V4.2: only table cards receive viewport min-height; regular cards must remain compact */
@media(min-width:860px){.page-heading .section .card .card-body:not(.table-fit-layout){display:block!important;min-height:0!important}.page-heading .section .card .card-body.table-fit-layout{display:flex!important;flex-direction:column;min-height:0!important}.page-heading .section .card .card-body.table-fit-layout .table-wrapper{flex:1 1 auto}}

/* V4.3 commercial pricing / promotion / VIN */
.commercial-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.commercial-toolbar>.form-control,.commercial-toolbar>.form-select{width:auto;min-width:180px;max-width:320px}.commercial-toolbar>.btn{height:40px}.commercial-quote-grid{display:grid;grid-template-columns:1.2fr 1.5fr 1fr 1fr auto;gap:10px;align-items:center}.rule-note{display:flex;align-items:center;gap:9px;padding:10px 12px;border-radius:10px;background:var(--ui-primary-soft);color:var(--ui-text);font-size:.78rem}.rule-note i{color:var(--ui-primary)}.quote-result{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.quote-result>div{padding:12px;border:1px solid var(--ui-border);border-radius:11px;background:var(--ui-surface-2)}.quote-result span,.quote-result b{display:block}.quote-result span{font-size:.7rem;color:var(--ui-muted)}.quote-result b{font-size:.92rem;margin-top:4px}.quote-result .total{background:var(--ui-primary-soft);border-color:color-mix(in srgb,var(--ui-primary) 30%,var(--ui-border))}.quote-result .total b{color:var(--ui-primary);font-size:1.05rem}.customer-type{display:inline-flex;align-items:center;padding:.3rem .55rem;border-radius:999px;font-size:.72rem;font-weight:800}.type-internal{background:color-mix(in srgb,var(--ui-success) 16%,var(--ui-surface));color:var(--ui-success)}.type-partner{background:color-mix(in srgb,var(--ui-info) 16%,var(--ui-surface));color:var(--ui-info)}.type-retail{background:color-mix(in srgb,var(--ui-warning) 16%,var(--ui-surface));color:var(--ui-warning)}.resolve-card{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:14px;border:1px solid var(--ui-border);border-radius:12px;background:var(--ui-surface-2)}.resolve-card>span{color:var(--ui-muted)}.resolve-card small{width:100%;color:var(--ui-muted)}
@media(max-width:1000px){.commercial-quote-grid{grid-template-columns:1fr 1fr}.commercial-quote-grid .btn{grid-column:span 2}.quote-result{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.commercial-toolbar{align-items:stretch;flex-direction:column}.commercial-toolbar>*{width:100%!important;max-width:none!important}.commercial-quote-grid{grid-template-columns:1fr}.commercial-quote-grid .btn{grid-column:auto}.quote-result{grid-template-columns:1fr}}

/* V4.4 investor metadata */
.station-franchise-row .col-investorName{color:var(--ui-info);font-weight:700}.station-franchise-row:hover .col-investorName{color:var(--ui-info)}.col-investorName{min-width:165px;max-width:240px}

/* V4.7 real map */
#stationMap .leaflet-container{width:100%;height:100%;background:var(--ui-surface-2);font-family:Inter,Nunito,system-ui,-apple-system,"Segoe UI",sans-serif}.leaflet-control-zoom a{background:var(--ui-surface)!important;color:var(--ui-text)!important;border-color:var(--ui-border)!important}.leaflet-control-attribution{background:color-mix(in srgb,var(--ui-surface) 88%,transparent)!important;color:var(--ui-muted)!important}.leaflet-control-attribution a{color:var(--ui-primary)!important}.station-leaflet-popup .leaflet-popup-content-wrapper,.station-leaflet-popup .leaflet-popup-tip{background:var(--ui-surface);color:var(--ui-text);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow-lg)}.station-leaflet-popup .leaflet-popup-content{margin:14px}.leaflet-popup-title{font-size:.92rem;font-weight:800;margin-bottom:5px}.leaflet-popup-status{display:flex;align-items:center;font-size:.74rem;font-weight:700;margin-bottom:8px}.leaflet-popup-line{display:flex;align-items:flex-start;gap:7px;color:var(--ui-muted);font-size:.75rem;margin:6px 0}.leaflet-popup-line i{color:var(--ui-primary);margin-top:1px}.leaflet-popup-metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-top:10px}.leaflet-popup-metrics>div{padding:6px 4px;text-align:center;border:1px solid var(--ui-border);border-radius:8px;background:var(--ui-surface-2)}.leaflet-popup-metrics span,.leaflet-popup-metrics b{display:block}.leaflet-popup-metrics span{font-size:.55rem;color:var(--ui-muted)}.leaflet-popup-metrics b{font-size:.8rem;margin-top:2px}.leaflet-popup-actions{display:flex;gap:7px;margin-top:10px}.leaflet-popup-actions .btn{flex:1;font-size:.7rem!important;min-height:32px}.map-provider-notice{position:absolute;left:14px;top:14px;z-index:30;padding:8px 10px;border-radius:10px;background:color-mix(in srgb,var(--ui-warning) 14%,var(--ui-surface));border:1px solid color-mix(in srgb,var(--ui-warning) 28%,var(--ui-border));color:var(--ui-warning);font-size:.72rem;font-weight:700;box-shadow:var(--ui-shadow)}[data-theme="dark"] #stationMap:not(.map-fallback-active) .leaflet-tile-pane{filter:brightness(.66) contrast(1.18) saturate(.72)}[data-theme="dark"] #stationMap:not(.map-fallback-active) .leaflet-overlay-pane,[data-theme="dark"] #stationMap:not(.map-fallback-active) .leaflet-marker-pane,[data-theme="dark"] #stationMap:not(.map-fallback-active) .leaflet-tooltip-pane,[data-theme="dark"] #stationMap:not(.map-fallback-active) .leaflet-popup-pane{filter:none}.leaflet-tooltip{background:var(--ui-surface);color:var(--ui-text);border:1px solid var(--ui-border);box-shadow:var(--ui-shadow);font-size:.7rem;font-weight:700}.leaflet-tooltip-top:before{border-top-color:var(--ui-border)}

/* V4.8 fast progressive map */
.map-progressive-loading{position:absolute;left:50%;top:16px;transform:translateX(-50%);z-index:35;display:flex;align-items:center;padding:8px 12px;border-radius:999px;background:color-mix(in srgb,var(--ui-surface) 94%,transparent);border:1px solid var(--ui-border);color:var(--ui-text);font-size:.74rem;font-weight:700;box-shadow:var(--ui-shadow);backdrop-filter:blur(8px);pointer-events:none}.map-provider-notice{max-width:360px}.map-provider-warning{color:var(--ui-warning)}

/* V4.10 immutable price profiles */
#profilesPanel .table td:first-child,#assignmentsPanel .table td:nth-child(4){font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.74rem}.immutable-profile-note{border-left:3px solid var(--ui-primary);padding-left:12px}.price-profile-lock{display:inline-flex;align-items:center;gap:5px;color:var(--ui-muted);font-size:.72rem}.tabs-modern button i{font-size:.9rem}.form-text{color:var(--ui-muted)!important;font-size:.72rem}

/* V4.11 ultra-compact data viewport */
.page-title,#main>h3,.page-heading>h3{display:none!important}.page-heading{margin:0!important}.page-heading .page-title{margin:0!important;padding:0!important}.page-content{margin-top:0!important}
#main{padding-top:calc(var(--ui-header-height) + 10px);padding-right:20px;padding-left:20px;padding-bottom:8px}
#toolbar{gap:7px!important;margin:0 0 7px!important;min-height:32px}#toolbar .left-buttons,#filter-section{gap:6px!important}#toolbar .btn,#toolbar .form-select,#toolbar .form-control,#toolbar #orderStatusSelector,#toolbar #selector-result-wrapper{height:32px!important;min-height:32px!important;font-size:.76rem!important;border-radius:8px!important}#toolbar .btn{padding:.3rem .65rem!important}#toolbar #selector-result-wrapper{padding:0 9px!important}#toolbar #filterTableInput{min-width:190px}
.filter-bar{gap:7px!important;margin-bottom:8px!important;align-items:end}.filter-bar .form-label{font-size:.72rem!important;margin-bottom:3px!important}.filter-bar .btn,.filter-bar .form-select,.filter-bar .form-control,.filter-bar .form-group .form-control,.filter-bar .form-group .form-select{height:32px!important;min-height:32px!important;font-size:.76rem!important;border-radius:8px!important}.filter-bar .btn{padding:.3rem .65rem!important}.filter-bar .form-group{min-width:130px}
.card .card-body{padding:12px!important}.module-card{padding:12px!important}.module-card-title{margin-bottom:8px!important}.card .card-header{padding:10px 12px!important}
.table thead th{padding:5px 8px!important;font-size:.68rem!important;line-height:1.1!important}.table tbody td{padding:3px 8px!important;font-size:.74rem!important;line-height:1.16!important}.table tbody tr{height:26px!important}.table-sm>:not(caption)>*>*{padding-top:3px!important;padding-bottom:3px!important}.table-action-btn,.table td .btn.btn-sm,.action-link{min-height:23px!important;height:23px!important;min-width:78px!important;padding:.18rem .55rem!important;font-size:.68rem!important;border-radius:7px!important}
#pagination-wrapper{min-height:32px!important;margin-top:6px!important;padding-top:6px!important;gap:8px!important;font-size:.72rem!important;border-top:1px solid var(--ui-border)}#pagination-wrapper p{font-size:.72rem!important}.pagination{gap:3px!important}.pagination .page-item,#pagination .page-item{min-width:28px!important;width:auto!important;height:28px!important;min-height:28px!important;padding:.15rem .45rem!important;font-size:.7rem!important;border-radius:7px!important}.pagination-info{font-size:.72rem!important}#rowsPerPageSelector{height:28px!important;min-height:28px!important;padding-top:2px!important;padding-bottom:2px!important;font-size:.72rem!important}
.table-wrapper,.module-table-wrap{border-radius:9px!important}.table-wrapper::-webkit-scrollbar,.module-table-wrap::-webkit-scrollbar{height:6px;width:6px}.table-fit-layout>.table-wrapper,.table-fit-layout>.module-table-wrap{min-height:180px}
body:has(.table-wrapper) #main>footer,body:has(.module-table-wrap) #main>footer{display:none!important}body:has(.table-wrapper) .page-heading .section .card .card-body{min-height:calc(100vh - var(--ui-header-height) - 20px)!important}body:has(.module-table-wrap) .page-content .module-card{min-height:calc(100vh - var(--ui-header-height) - 20px)}
@media(max-width:859px){#main{padding-top:calc(var(--ui-header-height) + 8px);padding-left:10px;padding-right:10px}.card .card-body,.module-card{padding:10px!important}#toolbar .btn,#toolbar .form-select,#toolbar .form-control,#toolbar #orderStatusSelector,#toolbar #selector-result-wrapper,.filter-bar .btn,.filter-bar .form-select,.filter-bar .form-control{height:34px!important;min-height:34px!important}.table tbody td{padding:4px 7px!important}}

/* V4.12 sidebar permission visibility */
.sidebar-wrapper .menu .sidebar-item-locked .sidebar-link{opacity:.62;cursor:not-allowed}.sidebar-wrapper .menu .sidebar-item-locked .sidebar-link:hover{transform:none;background:rgba(255,255,255,.035);color:var(--ui-sidebar-text)}.sidebar-wrapper .menu .sidebar-lock{margin-left:auto;width:auto!important;font-size:.72rem!important;color:#64748b!important}.sidebar-wrapper .menu .sidebar-item-locked .sidebar-link>span{flex:1}

/* V4.13 pricing page visibility fix */
body.pricing-page .page-content>.module-card{min-height:0!important;height:auto!important}
body.pricing-page .page-content>.module-card:first-child{padding:10px 12px!important;margin-bottom:8px!important}
body.pricing-page .page-content>.module-card:first-child .text-muted{margin-top:2px!important;font-size:.74rem!important;line-height:1.35}
body.pricing-page .page-content>.module-card:first-child i{font-size:1.1rem!important}
body.pricing-page #pricingTabs{margin-bottom:8px!important}
body.pricing-page #pricingTabs button{padding:7px 10px!important;font-size:.76rem!important}
body.pricing-page .commercial-toolbar{gap:6px!important;margin-bottom:8px!important;align-items:center}
body.pricing-page .commercial-toolbar .form-control,body.pricing-page .commercial-toolbar .form-select,body.pricing-page .commercial-toolbar .btn{height:32px!important;min-height:32px!important;font-size:.75rem!important}
body.pricing-page #profilesPanel .module-table-wrap,body.pricing-page #assignmentsPanel .module-table-wrap{max-height:calc(100vh - 245px)!important;min-height:220px!important;overflow:auto!important}
body.pricing-page #profilesPanel .module-table-wrap thead,body.pricing-page #assignmentsPanel .module-table-wrap thead{position:sticky;top:0;z-index:3}
body.pricing-page #profileTable:empty::before,body.pricing-page #assignmentTable:empty::before{content:"Đang tải dữ liệu bảng giá...";display:block;padding:18px;color:var(--ui-muted);border:1px dashed var(--ui-border);border-radius:10px;text-align:center}
body.pricing-page .page-content>.module-card.mt-3{margin-top:8px!important}
body.pricing-page .commercial-quote-grid{gap:6px!important}
body.pricing-page .commercial-quote-grid .form-control,body.pricing-page .commercial-quote-grid .form-select,body.pricing-page .commercial-quote-grid .btn{height:32px!important;min-height:32px!important;font-size:.75rem!important}
body.pricing-page #main>footer{display:none!important}

/* Scope viewport stretching only to the card that actually owns a table. */
body:not(.pricing-page):has(.module-table-wrap) .page-content>.module-card:has(.module-table-wrap){min-height:calc(100vh - var(--ui-header-height) - 20px)}

/* V4.14 layout regression fix */
body:has(.table-wrapper) .page-heading .section .card .card-body{min-height:0!important}
body:has(.table-wrapper) .page-heading .section .card:has(.table-wrapper) .card-body{display:flex;flex-direction:column;min-height:calc(100vh - var(--ui-header-height) - 150px)!important}
body:has(.module-table-wrap) .page-content>.module-card{min-height:0!important;height:auto!important}
body:has(.module-table-wrap) .page-content>.module-card:has(.module-table-wrap){min-height:calc(100vh - var(--ui-header-height) - 110px)!important}
body.pricing-page .page-content>.module-card{min-height:0!important;height:auto!important}
.station-overview-row{align-items:flex-start!important}.station-overview-row>.col-lg-3 .card{height:auto!important;min-height:0!important}.station-overview-row>.col-lg-3 .card-body{min-height:0!important;height:auto!important}.station-overview-row>.col-lg-9{min-height:0!important}.station-overview-row #station-simulator:empty{display:none!important}.station-overview-row #station-simulator:empty+#simulator-legends{justify-content:flex-start!important;margin:8px 0 10px!important}.station-port-table-col{margin-top:8px!important}.station-port-table-col .card-body{min-height:calc(100vh - var(--ui-header-height) - 285px)!important}.station-port-table-col .table-wrapper{max-height:calc(100vh - var(--ui-header-height) - 350px)!important;min-height:220px!important}
body.pricing-page .commercial-toolbar{position:relative;z-index:2}body.pricing-page #profileAdd,body.pricing-page #assignmentAdd{pointer-events:auto!important;opacity:1!important}body.pricing-page #profilesPanel,body.pricing-page #assignmentsPanel{min-height:0!important}

/* V4.15 viewport-density pass: maximize rows in data-table pages */
body.has-data-table #main{padding-bottom:2px!important}body.has-data-table #main>footer,body.has-data-table footer{display:none!important}
body.has-data-table .page-content>h3{font-size:1rem!important;line-height:1.1!important;margin:2px 0 6px!important}
body.has-data-table #statistics{--bs-gutter-x:10px;--bs-gutter-y:6px;margin-top:0!important;margin-bottom:5px!important}
body.has-data-table #statistics.row.g-3>*{margin-top:0!important}
body.has-data-table #statistics .card,body.has-data-table #statistics .stat-card{min-height:68px!important;height:68px!important;padding:8px 12px!important;border-radius:11px!important}
body.has-data-table #statistics .card.p-3{padding:8px 12px!important}
body.has-data-table #statistics .card>span{font-size:25px!important;line-height:1!important}
body.has-data-table #statistics .card .ms-4{margin-left:.7rem!important}
body.has-data-table #statistics .card h5,body.has-data-table #statistics .stat-label{font-size:.82rem!important;line-height:1.05!important;margin:0 0 3px!important}
body.has-data-table #statistics .card p,body.has-data-table #statistics .stat-value p{font-size:.78rem!important;line-height:1.05!important;margin:0!important}
body.has-data-table #statistics .stat-icon{width:34px!important;height:34px!important;flex-basis:34px!important;border-radius:9px!important;font-size:.95rem!important}
body.has-data-table #statistics .stat-content{line-height:1!important}
body.has-data-table .metric-grid{gap:7px!important;margin-bottom:6px!important}
body.has-data-table .metric-box{padding:7px 9px!important;border-radius:9px!important}
body.has-data-table .metric-label{font-size:.67rem!important}.has-data-table .metric-value{font-size:1rem!important;margin-top:2px!important}.has-data-table .metric-delta{font-size:.65rem!important;margin-top:2px!important}
body.has-data-table .card-body.table-fit-layout,body.has-data-table .module-card.table-fit-layout{min-height:0!important;padding:9px 11px!important;display:flex!important;flex-direction:column!important}
body.has-data-table .page-heading .section .card .card-body,body.has-data-table .page-content .module-card{min-height:0!important}
body.has-data-table #toolbar,body.has-data-table .commercial-toolbar,body.has-data-table .filter-bar{margin-top:0!important;margin-bottom:6px!important;gap:6px!important}
body.has-data-table #toolbar .btn,body.has-data-table #toolbar .form-select,body.has-data-table #toolbar .form-control,body.has-data-table .commercial-toolbar .btn,body.has-data-table .commercial-toolbar .form-select,body.has-data-table .commercial-toolbar .form-control,body.has-data-table .filter-bar .btn,body.has-data-table .filter-bar .form-select,body.has-data-table .filter-bar .form-control{height:30px!important;min-height:30px!important;padding-top:3px!important;padding-bottom:3px!important;font-size:.74rem!important;border-radius:7px!important}
body.has-data-table .table-wrapper,body.has-data-table .module-table-wrap{flex:1 1 auto;min-height:150px!important;border-radius:8px!important}
body.has-data-table .table thead th{padding:5px 7px!important;font-size:.66rem!important;line-height:1.05!important}
body.has-data-table .table tbody td{padding:4px 7px!important;font-size:.72rem!important;line-height:1.05!important;height:25px!important}
body.has-data-table .table-action-btn,body.has-data-table .table td .btn.btn-sm,body.has-data-table .action-link{min-height:24px!important;height:24px!important;padding:2px 8px!important;font-size:.68rem!important;border-radius:7px!important}
body.has-data-table #pagination-wrapper{margin-top:4px!important;padding-top:4px!important;min-height:30px!important;gap:6px!important;font-size:.68rem!important;border-top:1px solid var(--ui-border)!important}
body.has-data-table #pagination-wrapper p{font-size:.68rem!important}body.has-data-table #rowsPerPageSelector{height:27px!important;min-height:27px!important;padding-top:2px!important;padding-bottom:2px!important;font-size:.68rem!important}
body.has-data-table #pagination{gap:3px!important}.has-data-table .pagination .page-item{min-width:27px!important;width:auto!important;height:27px!important;min-height:27px!important;padding:2px 7px!important;font-size:.68rem!important;border-radius:7px!important}
body.has-data-table .page-dots{min-width:14px!important}.has-data-table #no-record{font-size:.8rem!important;margin:4px 0!important}
@media(max-width:859px){body.has-data-table #statistics .card,body.has-data-table #statistics .stat-card{height:auto!important;min-height:58px!important}body.has-data-table #statistics{--bs-gutter-y:5px}.has-data-table #pagination-wrapper{align-items:stretch!important}}

/* V4.16 mobile compact tables */
#toolbar #orderStatusSelector{border:0!important;background:transparent!important}
#toolbar #selector-result-wrapper{border:1px solid var(--ui-border)!important;background:var(--ui-surface)!important}
@media(max-width:859px){
  body.has-data-table #main{padding-left:6px!important;padding-right:6px!important;padding-top:calc(var(--ui-header-height) + 5px)!important}
  body.has-data-table .card,body.has-data-table .module-card{border-radius:9px!important}
  body.has-data-table .card .card-body,body.has-data-table .module-card{padding:7px!important}
  body.has-data-table #toolbar{display:grid!important;grid-template-columns:1fr!important;gap:5px!important;margin-bottom:5px!important;width:100%!important}
  body.has-data-table #toolbar .left-buttons{width:100%!important;display:flex!important;gap:5px!important}
  body.has-data-table #toolbar .left-buttons .btn{width:100%!important;height:29px!important;min-height:29px!important;padding:2px 8px!important}
  body.has-data-table #toolbar #filter-section{display:grid!important;grid-template-columns:82px 105px minmax(110px,1fr)!important;align-items:center!important;gap:5px!important;width:100%!important;margin:0!important;overflow:visible!important}
  body.has-data-table #toolbar #filter-section>*{width:100%!important;min-width:0!important;max-width:none!important;margin:0!important;height:30px!important;min-height:30px!important}
  body.has-data-table #toolbar #queryRangeSelector{width:82px!important;min-width:82px!important;padding-left:7px!important;padding-right:22px!important}
  body.has-data-table #toolbar #orderStatusSelector{width:105px!important;min-width:105px!important;border:0!important;background:transparent!important}
  body.has-data-table #toolbar #selector-result-wrapper{height:30px!important;min-height:30px!important;padding:0 7px!important;border:1px solid var(--ui-border)!important;border-radius:7px!important}
  body.has-data-table #toolbar #selector-result-wrapper p{font-size:.69rem!important;line-height:1!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  body.has-data-table #toolbar #filterTableInput{min-width:0!important;width:100%!important;padding-left:8px!important;padding-right:8px!important}
  body.has-data-table #toolbar #selector-dropdown{min-width:150px!important;width:170px!important;left:0!important;top:33px!important}
  body.has-data-table .table-wrapper,body.has-data-table .module-table-wrap{border-radius:6px!important}
  body.has-data-table #pagination-wrapper{display:grid!important;grid-template-columns:minmax(0,1fr) auto auto!important;align-items:center!important;gap:5px!important;margin-top:3px!important;padding-top:3px!important;min-height:28px!important}
  body.has-data-table #pagination-wrapper .pagination-info{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;text-align:left!important;font-size:.62rem!important}
  body.has-data-table #pagination-wrapper>div.d-flex{gap:3px!important;white-space:nowrap!important}
  body.has-data-table #pagination-wrapper>div.d-flex p{display:none!important}
  body.has-data-table #rowsPerPageSelector{width:48px!important;height:25px!important;min-height:25px!important;padding:1px 18px 1px 5px!important}
  body.has-data-table #pagination{display:flex!important;flex-wrap:nowrap!important;justify-content:flex-end!important;gap:2px!important;overflow:visible!important}
  body.has-data-table #pagination .page-item{min-width:25px!important;height:25px!important;min-height:25px!important;padding:1px 5px!important;font-size:.64rem!important}
  body.has-data-table .page-dots{min-width:10px!important;font-size:.62rem!important}
}
@media(max-width:430px){
  body.has-data-table #toolbar #filter-section{grid-template-columns:76px 96px minmax(96px,1fr)!important;gap:4px!important}
  body.has-data-table #toolbar #queryRangeSelector{width:76px!important;min-width:76px!important;font-size:.68rem!important}
  body.has-data-table #toolbar #orderStatusSelector{width:96px!important;min-width:96px!important}
  body.has-data-table #toolbar #filterTableInput{font-size:.68rem!important}
  body.has-data-table #pagination-wrapper{grid-template-columns:minmax(0,1fr) 46px auto!important;gap:3px!important}
}

/* V4.17 - global compact mobile filters for every data-table page */
@media(max-width:859px){
  body.has-data-table .card,body.has-data-table .module-card{border-radius:10px!important}
  body.has-data-table .card .card-body,body.has-data-table .module-card{padding:7px 8px!important}
  body.has-data-table #toolbar{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:4px!important;width:100%!important;margin:0 0 4px!important}
  body.has-data-table #toolbar .left-buttons{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;gap:4px!important;width:100%!important;margin:0!important}
  body.has-data-table #toolbar .left-buttons .btn{flex:1 1 0!important;width:auto!important;min-width:0!important;height:28px!important;min-height:28px!important;padding:2px 7px!important}
  body.has-data-table #toolbar #filter-section{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;gap:4px!important;width:100%!important;margin:0!important;overflow-x:auto!important;overflow-y:visible!important;padding:0 0 2px!important;scrollbar-width:none}
  body.has-data-table #toolbar #filter-section::-webkit-scrollbar{display:none}
  body.has-data-table #toolbar #filter-section>*{flex:0 0 auto!important;width:auto!important;min-width:96px!important;max-width:150px!important;margin:0!important;padding-left:6px!important;padding-right:6px!important;height:29px!important;min-height:29px!important}
  body.has-data-table #toolbar #filter-section #filterTableInput{flex:1 1 125px!important;min-width:110px!important;max-width:none!important}
  body.has-data-table #toolbar #filter-section #queryRangeSelector{min-width:82px!important;max-width:105px!important}
  body.has-data-table #toolbar #filter-section #orderStatusSelector{min-width:100px!important;max-width:125px!important;padding:0!important;border:0!important;overflow:visible!important}
  body.has-data-table #toolbar #filter-section #selector-result-wrapper{height:29px!important;min-height:29px!important;padding:0 7px!important;border:1px solid var(--ui-border)!important;border-radius:7px!important;background:var(--ui-surface)!important}
  body.has-data-table #toolbar #filter-section #selector-dropdown{min-width:160px!important;max-width:220px!important}

  body.has-data-table .filter-bar,body.has-data-table .commercial-toolbar{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:flex-end!important;gap:4px!important;width:100%!important;margin:0 0 5px!important;overflow-x:auto!important;overflow-y:visible!important;padding:0 0 2px!important;scrollbar-width:none}
  body.has-data-table .filter-bar::-webkit-scrollbar,body.has-data-table .commercial-toolbar::-webkit-scrollbar{display:none}
  body.has-data-table .filter-bar .form-group{flex:0 0 118px!important;min-width:118px!important;width:118px!important;margin:0!important}
  body.has-data-table .filter-bar .form-label{display:none!important}
  body.has-data-table .filter-bar>.form-control,body.has-data-table .filter-bar>.form-select,body.has-data-table .commercial-toolbar>.form-control,body.has-data-table .commercial-toolbar>.form-select{flex:0 0 118px!important;width:118px!important;min-width:118px!important;max-width:145px!important;margin:0!important}
  body.has-data-table .filter-bar .form-control,body.has-data-table .filter-bar .form-select,body.has-data-table .commercial-toolbar .form-control,body.has-data-table .commercial-toolbar .form-select{height:29px!important;min-height:29px!important;padding:2px 7px!important;font-size:.7rem!important}
  body.has-data-table .filter-bar>.btn,body.has-data-table .commercial-toolbar>.btn{flex:0 0 auto!important;width:auto!important;min-width:64px!important;height:29px!important;min-height:29px!important;padding:2px 8px!important;white-space:nowrap!important}

  body.has-data-table #pagination-wrapper{display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;align-items:center!important;justify-content:space-between!important;gap:4px!important;width:100%!important;min-height:27px!important;margin:2px 0 0!important;padding:2px 0 0!important;overflow-x:auto!important;overflow-y:hidden!important;scrollbar-width:none}
  body.has-data-table #pagination-wrapper::-webkit-scrollbar{display:none}
  body.has-data-table #pagination-wrapper .pagination-info{flex:1 1 auto!important;min-width:90px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;font-size:.6rem!important}
  body.has-data-table #pagination-wrapper>div.d-flex{flex:0 0 auto!important;margin:0!important}
  body.has-data-table #rowsPerPageSelector{width:46px!important;min-width:46px!important;height:25px!important;min-height:25px!important;padding:1px 18px 1px 5px!important}
  body.has-data-table #pagination{flex:0 0 auto!important;display:flex!important;flex-wrap:nowrap!important;gap:3px!important;overflow:visible!important}
  body.has-data-table #pagination .page-item{height:25px!important;min-height:25px!important;min-width:25px!important;padding:1px 6px!important}

  body.has-data-table .table-wrapper,body.has-data-table .module-table-wrap{margin-top:0!important;border-radius:6px!important}
  body.has-data-table .table thead th{padding:4px 6px!important;font-size:.63rem!important}
  body.has-data-table .table tbody td{padding:3px 6px!important;font-size:.68rem!important;height:24px!important;line-height:1.15!important}
}

/* Search page has Bootstrap row wrappers; flatten them on mobile instead of stacking labels/fields. */
@media(max-width:859px){
  body.has-data-table #filter-section.row{display:flex!important;flex-wrap:nowrap!important;margin:0!important}
  body.has-data-table #filter-section.row>[class*="col-"]{flex:0 0 110px!important;width:110px!important;max-width:110px!important;padding:0!important;margin:0!important}
  body.has-data-table #filter-section.row>[class*="col-"] label{display:none!important}
  body.has-data-table #filter-section.row>[class*="col-"] .form-control,body.has-data-table #filter-section.row>[class*="col-"] .form-select{width:100%!important;height:29px!important;min-height:29px!important;margin:0!important}
  body.has-data-table #filter-section.row>[class*="col-"] .btn{width:100%!important;height:29px!important;min-height:29px!important;margin:0!important;padding:2px 6px!important}
}
