.overview-layout{display:grid;grid-template-columns:minmax(280px,1fr) minmax(380px,1.2fr);gap:18px;align-items:stretch;margin-bottom:18px}.overview-statistics{min-width:0;background:#fff;border:1px solid #dce7ef;border-radius:12px;padding:16px;box-sizing:border-box}.overview-statistics>h3{margin:0 0 12px}.overview-statistics>.caster-summary{padding:0!important;border:0;background:transparent;margin:14px 0 0!important}.overview-statistics .caster-summary-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.overview-statistics .caster-summary-cards>div{min-width:0;padding:12px;border-radius:10px}.overview-statistics .caster-summary-cards strong{font-size:28px}.overview-statistics .caster-summary-cards span{font-size:14px}.overview-layout>.receiver-map-panel{min-width:0;width:auto;margin:0!important;padding:14px;box-sizing:border-box;border:1px solid #dce7ef;border-radius:12px;background:#fff}.overview-layout>.receiver-map-panel:not(.map-expanded) #mount-manage-map,.overview-layout>.receiver-map-panel:not(.map-expanded) #mqtt-overview-map{height:300px!important}.overview-layout .receiver-map-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:8px}.overview-layout .receiver-map-heading button{padding:6px 10px;margin:0 0 0 6px}.overview-layout #mount-map-summary,.overview-layout #mqtt-overview-map-summary{font-size:13px;margin:6px 0}.overview-map-legend{display:flex;gap:14px;margin-top:8px;font-size:12px}.mqtt-overview-map-panel.map-expanded #mqtt-overview-map{flex:1;min-height:0;height:100%!important}.caster-details{min-width:0}.mqtt-style-management{display:block!important}.mqtt-style-management>.receiver-list{width:100%;box-sizing:border-box;padding:14px}.mqtt-style-management .mqtt-toolbar{margin-bottom:12px}.mqtt-management-filters{display:flex;align-items:center;gap:10px;margin:0!important;flex-wrap:wrap}.mqtt-style-management .receiver-table-scroll{max-height:65vh}.mqtt-style-management th,.mqtt-style-management td{padding:8px 10px;font-size:14px}.mqtt-style-management .mqtt-toolbar button{padding:7px 12px}.mqtt-style-management .mqtt-toolbar h2{font-size:19px}.mqtt-style-management .receiver-table-scroll button{padding:5px 9px;margin:2px}@media(max-width:1000px){.overview-layout{grid-template-columns:1fr}.overview-statistics .caster-summary-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:600px){.overview-statistics .caster-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.overview-layout{gap:12px}.overview-statistics{padding:12px}}

.mqtt-overview-map-panel{position:relative}.mqtt-overview-map-panel .overview-map-legend{position:absolute;bottom:28px;left:24px;z-index:450;display:flex;flex-wrap:wrap;gap:10px;margin:0;padding:5px 8px;border-radius:6px;background:#fffffff0;box-shadow:0 1px 5px #18304720;pointer-events:none}
/* Match the shared map panel grid: summary and controls above, full-width map below. */
.receiver-map-panel:not(.map-expanded)>#mqtt-overview-map-summary{grid-column:1;grid-row:1;margin:0;font-size:15px;line-height:1.5;color:#35546b;align-self:center;min-width:0}
.receiver-map-panel:not(.map-expanded)>#mqtt-overview-map{grid-column:1 / -1;grid-row:2;width:100%;min-width:0;box-sizing:border-box}

/* Overview wrapper matches Caster: separate cards on the page background. */
#mqtt-panel.mqtt-overview{margin:0;padding:0;background:transparent;border:0;border-radius:0;box-shadow:none}
/* Make unavailable management actions visually distinct from active controls. */
#mount-list button:disabled,#mount-list button:disabled:hover,#mqtt-panel .mqtt-table button:disabled,#mqtt-panel .mqtt-table button:disabled:hover{background:#e5e9ed!important;border-color:#d2d9df!important;color:#8a969f!important;box-shadow:none!important;opacity:1!important;cursor:not-allowed!important;transform:none!important;filter:none!important}

/* Keep both management button columns visible while the remaining fields scroll. */
#mount-list th:nth-last-child(2),#mount-list td:nth-last-child(2){position:sticky;right:var(--mount-actions-width,210px);background:#fff;z-index:2;box-shadow:-5px 0 8px -6px #18304766}
#mount-list th:last-child,#mount-list td:last-child{position:sticky;right:0;background:#fff;z-index:3}
#mount-list thead th:nth-last-child(2),#mount-list thead th:last-child{top:0;background:#f3f7fa;z-index:5}
#mount-list tr.receiver-selected td:nth-last-child(2),#mount-list tr.receiver-selected td:last-child{background:#e3f1f7}

/* MQTT management uses the same scroll, resize and fixed action-column behavior. */
#mqtt-panel .mqtt-table{overflow:auto;max-height:65vh;scrollbar-gutter:stable}
#mqtt-panel .mqtt-table table{table-layout:fixed}
#mqtt-panel .mqtt-table th{position:sticky;top:0;z-index:1;background:#f3f7fa}
#mqtt-panel .mqtt-table th,#mqtt-panel .mqtt-table td{box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}
#mqtt-panel .mqtt-admin-table th:nth-last-child(2),#mqtt-panel .mqtt-admin-table td:nth-last-child(2){position:sticky;right:var(--mount-actions-width,310px);background:#fff;z-index:2;box-shadow:-5px 0 8px -6px #18304766}
#mqtt-panel .mqtt-admin-table th:last-child,#mqtt-panel .mqtt-admin-table td:last-child,#mqtt-panel .mqtt-user-table th:last-child,#mqtt-panel .mqtt-user-table td:last-child{position:sticky;right:0;background:#fff;z-index:3}
#mqtt-panel .mqtt-admin-table thead th:nth-last-child(2),#mqtt-panel .mqtt-table thead th:last-child{top:0;background:#f3f7fa;z-index:5}

/* Fixed compact MQTT view/action columns; only data columns resize. */
#mqtt-panel .mqtt-admin-table th:nth-last-child(2),#mqtt-panel .mqtt-admin-table td:nth-last-child(2){width:var(--mqtt-view-width,246px);min-width:0;max-width:none;right:var(--mount-actions-width,212px)}
#mqtt-panel .mqtt-admin-table th:last-child,#mqtt-panel .mqtt-admin-table td:last-child{width:var(--mqtt-operation-width,212px);min-width:0;max-width:none}
#mqtt-panel .mqtt-user-table th:last-child,#mqtt-panel .mqtt-user-table td:last-child{width:var(--mqtt-view-width,150px);min-width:0;max-width:none}
#mqtt-panel .mqtt-table th:nth-last-child(2),#mqtt-panel .mqtt-table td:nth-last-child(2),#mqtt-panel .mqtt-table th:last-child,#mqtt-panel .mqtt-table td:last-child{padding:6px}
#mqtt-panel .mqtt-table td:last-child button,#mqtt-panel .mqtt-admin-table td:nth-last-child(2) button{font-size:12px;padding:5px 7px;margin:1px;border-radius:5px}
/* Center the headings of the fixed view/action columns. */
#mount-list thead th:nth-last-child(2),#mount-list thead th:last-child,#mqtt-panel .mqtt-admin-table thead th:nth-last-child(2),#mqtt-panel .mqtt-admin-table thead th:last-child,#mqtt-panel .mqtt-user-table thead th:last-child{text-align:center}
/* Header separators also remain visible on fixed, non-resizable MQTT columns. */
#mqtt-panel .mqtt-table thead th::after{content:"";position:absolute;right:0;top:25%;bottom:25%;width:1px;background:#c4d4df;pointer-events:none;z-index:6}
#mqtt-panel .mqtt-table thead th>.column-resize-grip::after{background:transparent}
#mqtt-panel .mqtt-table thead th:has(>.column-resize-grip:hover)::after,#mqtt-panel .mqtt-table thead th:has(>.column-resize-grip:focus-visible)::after{width:3px;background:#126c82}
/* Continuous divider shadows distinguish pinned MQTT controls from scrolling data. */
#mqtt-panel .mqtt-admin-table th:nth-last-child(2),#mqtt-panel .mqtt-admin-table td:nth-last-child(2),#mqtt-panel .mqtt-admin-table th:last-child,#mqtt-panel .mqtt-admin-table td:last-child,#mqtt-panel .mqtt-user-table th:last-child,#mqtt-panel .mqtt-user-table td:last-child{overflow:visible;box-shadow:-5px 0 8px -6px #18304766;border-left:1px solid #dce5ec}
/* Draw the frozen boundary inside cells so collapsed table borders cannot clip it. */
#mqtt-panel .mqtt-admin-table th:nth-last-child(2)::before,#mqtt-panel .mqtt-admin-table td:nth-last-child(2)::before,#mqtt-panel .mqtt-user-table th:last-child::before,#mqtt-panel .mqtt-user-table td:last-child::before{content:"";position:absolute;left:0;top:0;bottom:0;width:9px;background:linear-gradient(to right,#b9cbd766,#dae4eb33 55%,transparent);border-left:1px solid #cddbe5;pointer-events:none;z-index:7}
#mqtt-panel .mqtt-admin-table th:last-child::before,#mqtt-panel .mqtt-admin-table td:last-child::before{content:"";position:absolute;left:0;top:0;bottom:0;width:9px;background:linear-gradient(to right,#b9cbd766,#dae4eb33 55%,transparent);border-left:1px solid #cddbe5;pointer-events:none;z-index:7}

.caster-groups-compact>.project-management-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.project-management-heading h3{margin:0!important;white-space:nowrap}.project-management-heading .group-map-filter{display:flex;align-items:center;gap:8px;white-space:nowrap;margin:0}.project-management-heading select{margin:0}.project-management-toolbar form{flex-wrap:wrap}.project-management-toolbar form label{white-space:nowrap}
/* Consistent navigation typography, including selected and expandable entries. */
#app-sidebar .service-tabs button,#app-sidebar .management-nav button,#app-sidebar #mqtt-menu,#app-sidebar #gnss-menu,#app-sidebar #user-menu,#app-sidebar #caster-nav button,#app-sidebar #gnss-nav button,#app-sidebar #mqtt-nav button{font-family:inherit!important;font-size:14px!important;font-weight:500!important;line-height:1.5!important;letter-spacing:0!important}
/* Uniform hierarchy spacing: 14px between primary groups, 4px to submenus. */
#app-sidebar .service-tabs{gap:14px!important;margin:0!important;padding:0}
#app-sidebar .service-tabs>button{margin:0!important}
#app-sidebar .management-nav{display:flex;flex-direction:column;gap:14px;margin:14px 0 0!important;padding:0}
#app-sidebar .management-nav>#gnss-menu,#app-sidebar .management-nav>#user-menu,#app-sidebar #mqtt-menu{margin:0!important}
#app-sidebar .mqtt-navigation{margin:0;padding:0}
#app-sidebar #caster-nav{margin:4px 0 0 10px!important;padding-left:8px;gap:4px!important}
#app-sidebar #gnss-nav{margin:-10px 0 0 10px!important;padding-left:8px;gap:4px!important}
#app-sidebar #mqtt-nav{display:flex;flex-direction:column;gap:4px;margin:4px 0 0 10px!important;padding-left:8px}
#app-sidebar #mqtt-nav[hidden]{display:none!important}
#app-sidebar #caster-nav>button,#app-sidebar #gnss-nav>button,#app-sidebar #mqtt-nav>button{margin:0!important}

#app-sidebar #weather-menu{display:block;width:100%;box-sizing:border-box;text-align:left;margin:0;padding:10px 12px;border:1px solid #dce7ef;border-radius:7px;background:#e8f0f6;color:#35546b}#app-sidebar #weather-menu[hidden]{display:none!important}#app-sidebar[data-service="weather"] #weather-menu{background:#126c82;color:#fff;border-color:#126c82;box-shadow:0 3px 8px #126c8220}.weather-monitor-placeholder{margin:0}.weather-monitor-placeholder p{color:#64798a}
