/* =====================================================================
   GreenOLT 2.7.0 — "Nova" theme layer
   Loaded after greenolt-core so it restyles the existing markup without
   changing any screen script. Palette is taken from fiber hardware:
     APC connector green  #18905A  primary actions, healthy signal
     OS2 jacket yellow    #E8B92F  the "light path": active nav, focus, live
     conduit              #0F2B27  navigation rail
     paper                #F2F5F4  canvas
     LOS red #C8423B · warning amber #B7791F · UPC blue #2F6FB2
   Theme switch: <html data-golt-theme="light|dark"> (set by greenolt-nova.js).
   Density switch: <html data-golt-density="compact">.
   ===================================================================== */

:root{
  --nv-apc:#18905A;--nv-apc-strong:#117346;--nv-apc-tint:#E5F3EC;
  --nv-os2:#E8B92F;--nv-os2-tint:#FBF2D3;
  --nv-conduit:#0F2B27;--nv-conduit-2:#163A35;--nv-conduit-ink:#C9DAD5;--nv-conduit-muted:#7FA39A;
  --nv-paper:#F2F5F4;--nv-surface:#FFFFFF;--nv-surface-2:#F7FAF9;--nv-sunken:#EAF0EE;
  --nv-ink:#13201D;--nv-ink-2:#3B4D48;--nv-muted:#66807A;--nv-line:#DCE5E2;--nv-line-strong:#C3D2CD;
  --nv-los:#C8423B;--nv-los-tint:#FBEAE8;--nv-warn:#B7791F;--nv-warn-tint:#FBF1DF;--nv-upc:#2F6FB2;--nv-upc-tint:#E7F0FA;
  --nv-radius:8px;--nv-radius-sm:6px;--nv-radius-lg:12px;
  --nv-shadow:0 1px 2px rgba(15,43,39,.06),0 1px 1px rgba(15,43,39,.04);
  --nv-shadow-pop:0 12px 32px rgba(15,43,39,.18),0 2px 6px rgba(15,43,39,.08);
  --nv-font:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,BlinkMacSystemFont,"Noto Sans","Helvetica Neue",Arial,sans-serif;
  --nv-base:13.5px;--nv-small:12px;--nv-tiny:11px;--nv-pad:18px;
  /* Feed the existing design-system tokens so legacy rules follow Nova. */
  --g-green:var(--nv-apc);--g-green-dark:var(--nv-apc-strong);--g-green-soft:var(--nv-apc-tint);--g-ink:var(--nv-ink);--g-muted:var(--nv-muted);
  --g-line:var(--nv-line);--g-bg:var(--nv-paper);--g-white:var(--nv-surface);--g-red:var(--nv-los);--g-amber:var(--nv-warn);--g-blue:var(--nv-upc);--g-nav:248px;--g-top:62px;
  --bs-body-font-family:var(--nv-font);--bs-body-color:var(--nv-ink);--bs-body-bg:var(--nv-paper);--bs-primary:#18905A;--bs-primary-rgb:24,144,90;
  --bs-success:#18905A;--bs-success-rgb:24,144,90;--bs-link-color:#117346;--bs-border-color:var(--nv-line);
  --smolt-text:var(--nv-ink);--smolt-muted:var(--nv-muted);--smolt-primary:var(--nv-apc);--smolt-border:var(--nv-line);--smolt-panel:var(--nv-surface);--smolt-bg:var(--nv-paper);
  --noc-text:var(--nv-ink);--noc-muted:var(--nv-muted);--noc-panel:var(--nv-surface);--noc-panel-strong:var(--nv-surface);--noc-soft:var(--nv-surface-2);--noc-line:var(--nv-line);--noc-line-strong:var(--nv-line-strong)
}
html[data-golt-density="compact"]{--nv-base:12.5px;--nv-small:11.5px;--nv-tiny:10.5px;--nv-pad:12px}

/* Dark: an unlit patch panel. */
html[data-golt-theme="dark"]{
  color-scheme:dark;
  --nv-apc:#3CC285;--nv-apc-strong:#5BD69B;--nv-apc-tint:#14372A;
  --nv-os2:#F0C845;--nv-os2-tint:#3A3218;
  --nv-conduit:#0A1714;--nv-conduit-2:#11231F;--nv-conduit-ink:#C2D5CF;--nv-conduit-muted:#6E918A;
  --nv-paper:#0E1614;--nv-surface:#15211E;--nv-surface-2:#1A2925;--nv-sunken:#0B1210;
  --nv-ink:#E3ECE9;--nv-ink-2:#BCCBC6;--nv-muted:#8DA49E;--nv-line:#263934;--nv-line-strong:#35504A;
  --nv-los:#F07068;--nv-los-tint:#3A1C1A;--nv-warn:#E2A94A;--nv-warn-tint:#372A14;--nv-upc:#6CA6E6;--nv-upc-tint:#16273A;
  --nv-shadow:0 1px 2px rgba(0,0,0,.35);--nv-shadow-pop:0 16px 40px rgba(0,0,0,.55);
  --bs-body-color:var(--nv-ink);--bs-body-bg:var(--nv-paper);--bs-border-color:var(--nv-line);--bs-link-color:#5BD69B;
  --bs-secondary-color:var(--nv-muted);--bs-tertiary-bg:var(--nv-surface-2);--bs-emphasis-color:var(--nv-ink)
}

/* ---------------------------------------------------------------- base */
html body.greenolt-app{background:var(--nv-paper);color:var(--nv-ink);font-family:var(--nv-font);font-size:var(--nv-base);line-height:1.5;font-feature-settings:"tnum" 1}
body.greenolt-app :focus-visible{outline:2px solid var(--nv-os2);outline-offset:2px;border-radius:4px}
body.greenolt-app a{color:var(--nv-apc-strong)}
body.greenolt-app ::selection{background:var(--nv-os2-tint);color:var(--nv-ink)}
html[data-golt-theme="dark"] body.greenolt-app ::-webkit-scrollbar-thumb{background:#2E4741;border-color:var(--nv-paper)}
html[data-golt-theme="dark"] body.greenolt-app ::-webkit-scrollbar-track{background:var(--nv-paper)}

/* ------------------------------------------------------- navigation rail */
body.greenolt-app .golt-sidebar{background:var(--nv-conduit);border-right:0;color:var(--nv-conduit-ink)}
body.greenolt-app .golt-brand,body.greenolt-app .golt-brand-copy{color:#fff}
body.greenolt-app .golt-brand-mark{color:var(--nv-os2)}
body.greenolt-app .golt-brand-copy{font-size:19px;font-weight:700;letter-spacing:-.3px}
body.greenolt-app .golt-brand-copy small{color:var(--nv-conduit-muted);letter-spacing:.4px;font-size:10px;font-weight:500}
body.greenolt-app .golt-network-label{color:var(--nv-conduit-muted)}
body.greenolt-app .golt-nav-label{color:var(--nv-conduit-muted);font-size:11px;letter-spacing:.3px;text-transform:none;font-weight:600}
body.greenolt-app .golt-nav-link{position:relative;padding-left:16px!important;color:var(--nv-conduit-ink)!important;font-size:13px;font-weight:500;border-left:0!important;border-radius:var(--nv-radius-sm);padding:9px 12px;margin:2px 0}
body.greenolt-app .golt-nav-link:hover{background:var(--nv-conduit-2)!important;color:#fff!important}
body.greenolt-app .golt-nav-link.is-active{background:var(--nv-conduit-2)!important;color:#fff!important;font-weight:600}
/* The light path: a lit fiber along the active item. */
body.greenolt-app .golt-nav-link.is-active::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--nv-os2);box-shadow:0 0 10px rgba(232,185,47,.65)}
body.greenolt-app .golt-nav-tag{background:transparent;color:var(--nv-conduit-muted);border:1px solid var(--nv-conduit-2)}
body.greenolt-app .golt-settings summary{color:var(--nv-conduit-ink)!important}
body.greenolt-app .golt-settings-links .golt-nav-link{font-size:12.5px;color:var(--nv-conduit-muted)!important}
body.greenolt-app .golt-settings-links .golt-nav-link:hover{color:#fff!important}
body.greenolt-app .golt-sidebar-bottom,body.greenolt-app .golt-sidebar-note,body.greenolt-app .golt-sidebar-note :is(strong,span){color:var(--nv-conduit-muted)!important}
body.greenolt-app .golt-fiber-art{color:#2A524B}
body.greenolt-app .golt-portal-link{color:var(--nv-conduit-ink)!important}
body.greenolt-app .golt-status-dot{background:var(--nv-os2);box-shadow:0 0 0 3px rgba(232,185,47,.18)}

/* ---------------------------------------------------------------- top bar */
body.greenolt-app .golt-navbar{background:var(--nv-surface);border-bottom:1px solid var(--nv-line);box-shadow:none}
body.greenolt-app .golt-navbar::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,var(--nv-os2) 0,var(--nv-apc) 38%,transparent 100%);opacity:.75;pointer-events:none}
body.greenolt-app .golt-breadcrumb{font-size:13px;color:var(--nv-muted)!important}
body.greenolt-app .golt-breadcrumb strong{color:var(--nv-ink)!important;font-size:15px;font-weight:650}
body.greenolt-app .golt-icon-button{background:var(--nv-surface);border-color:var(--nv-line);color:var(--nv-ink-2);border-radius:var(--nv-radius-sm);width:34px;height:34px}
body.greenolt-app .golt-icon-button:hover{border-color:var(--nv-line-strong);color:var(--nv-ink)}
body.greenolt-app .golt-global-search{background:var(--nv-surface-2);border-color:var(--nv-line);border-radius:var(--nv-radius-sm);width:260px;padding:7px 10px}
body.greenolt-app .golt-global-search input{font-size:13px;color:var(--nv-ink)}
body.greenolt-app .golt-global-search kbd{background:var(--nv-surface);border-color:var(--nv-line);color:var(--nv-muted);font-size:11px}
body.greenolt-app .golt-top-add{font-size:13px;color:var(--nv-apc-strong)}
body.greenolt-app .golt-user{border-left-color:var(--nv-line)}
body.greenolt-app .golt-user-name{font-size:13px;color:var(--nv-ink)!important}
body.greenolt-app .golt-user-name small{font-size:11px;color:var(--nv-muted)!important}
body.greenolt-app .golt-user-icon{background:var(--nv-apc-tint);border-color:transparent;color:var(--nv-apc-strong)}
body.greenolt-app .golt-main{padding:24px 28px 32px}
body.greenolt-app .golt-footer{background:var(--nv-paper)!important;border-top-color:var(--nv-line);font-size:12px;color:var(--nv-muted)!important}
body.greenolt-app .golt-footer strong{color:var(--nv-ink-2)!important}

/* Nova controls added to the top bar */
.nv-topctl{display:inline-flex;align-items:center;gap:6px}
.nv-topctl button{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:var(--nv-radius-sm);border:1px solid var(--nv-line);background:var(--nv-surface);color:var(--nv-ink-2);cursor:pointer;padding:0}
.nv-topctl button:hover{color:var(--nv-ink);border-color:var(--nv-line-strong)}
.nv-topctl svg{width:17px;height:17px}

/* ---------------------------------------------------------- page heading */
body.greenolt-app :is(.smolt-hero,.smset-hero,.smmanage-hero){border-bottom:1px solid var(--nv-line);padding-bottom:16px!important}
body.greenolt-app :is(.smolt-hero h1,.smset-hero h1,.smmanage-hero h1){font-size:24px;font-weight:700;letter-spacing:-.4px;color:var(--nv-ink)}
body.greenolt-app :is(.smolt-hero-copy p,.smset-hero-copy p,.smmanage-hero-copy p){font-size:13px;color:var(--nv-muted)}
body.greenolt-app .gs-page-heading h1{font-size:26px;letter-spacing:-.4px;color:var(--nv-ink)}
body.greenolt-app .gs-page-heading p{color:var(--nv-muted);max-width:72ch}
body.greenolt-app .gs-eyebrow{text-transform:none;letter-spacing:.2px;font-size:12.5px;font-weight:650;color:var(--nv-apc-strong)}

/* -------------------------------------------------------------- surfaces */
body.greenolt-app :is(.smolt-panel,.smmanage-card,.smset-panel,.smolt-section-card,.smolt-olt-workspace,.noc-card,.smolt-cap,.smolt-device-card,.basic-onu-view,.gs-card){background:var(--nv-surface);color:var(--nv-ink);border:1px solid var(--nv-line);border-radius:var(--nv-radius);box-shadow:var(--nv-shadow)}
body.greenolt-app :is(.smolt-panel-head,.smset-panel-head,.smmanage-card-head,.smolt-section-head,.card-head,.noc-card-head){background:transparent;border-bottom:1px solid var(--nv-line);border-radius:var(--nv-radius) var(--nv-radius) 0 0}
body.greenolt-app :is(.smolt-panel-head,.smset-panel-head,.smmanage-card-head,.smolt-section-head) :is(h2,h3,h4,h5,strong){font-size:15px;font-weight:650;color:var(--nv-ink)}
body.greenolt-app .gs-card :is(h1,h2,h3){color:var(--nv-ink)}
body.greenolt-app .gs-card p{color:var(--nv-ink-2)}

/* Stat tiles: tone, not decoration. */
body.greenolt-app :is(.smolt-stat,.smset-stat,.smmanage-stat,.smolt-mini-stat,.smolt-olt-summary-item){background:var(--nv-surface);border:1px solid var(--nv-line);border-radius:var(--nv-radius);box-shadow:var(--nv-shadow)}
body.greenolt-app :is(.smolt-stat,.smset-stat,.smmanage-stat) :is(.smolt-stat-value,.smset-stat-value,.smmanage-stat-value,strong){color:var(--nv-ink);letter-spacing:-.5px;font-variant-numeric:tabular-nums}
body.greenolt-app :is(.smolt-stat-label,.smset-stat-label,.smmanage-stat-label,.smolt-stat span){color:var(--nv-muted);font-size:var(--nv-small);text-transform:none;letter-spacing:0}
body.greenolt-app :is(.smolt-stat-icon,.smset-stat-icon,.smmanage-stat-icon){background:var(--nv-apc-tint);color:var(--nv-apc-strong);border-radius:var(--nv-radius-sm)}

/* ------------------------------------------------------------------ tables */
body.greenolt-app :is(.smolt-table,.smolt-manage-table,.prov-table,.smmanage-table,.smset-table,table.dataTable,.table){background:var(--nv-surface);color:var(--nv-ink);font-size:var(--nv-small);--bs-table-bg:var(--nv-surface);--bs-table-color:var(--nv-ink);--bs-table-striped-bg:var(--nv-surface-2);--bs-table-hover-bg:var(--nv-surface-2);--bs-table-border-color:var(--nv-line)}
body.greenolt-app :is(.smolt-table,.smolt-manage-table,.prov-table,.smmanage-table,.smset-table,table.dataTable,.table) thead th{position:sticky;top:0;z-index:2;background:var(--nv-surface-2)!important;color:var(--nv-ink-2);font-size:var(--nv-tiny);font-weight:650;letter-spacing:.1px;text-transform:none;border-bottom:1px solid var(--nv-line-strong)!important;padding:10px 12px!important;white-space:nowrap}
body.greenolt-app :is(.smolt-table,.smolt-manage-table,.prov-table,.smmanage-table,.smset-table,table.dataTable,.table) tbody td{border-bottom:1px solid var(--nv-line)!important;padding:9px 12px!important;color:var(--nv-ink);background:transparent;vertical-align:middle}
body.greenolt-app :is(.smolt-table,.smolt-manage-table,.prov-table,.smmanage-table,.smset-table,table.dataTable,.table) tbody tr:hover td{background:var(--nv-surface-2)!important}
html[data-golt-density="compact"] body.greenolt-app :is(.smolt-table,.smmanage-table,table.dataTable,.table) tbody td{padding:6px 10px!important}
body.greenolt-app .dataTables_wrapper :is(.dataTables_info,.dataTables_length,.dataTables_filter){color:var(--nv-muted);font-size:var(--nv-small)}
body.greenolt-app .dataTables_wrapper .dataTables_paginate .paginate_button{border-radius:var(--nv-radius-sm)!important;color:var(--nv-ink-2)!important}
body.greenolt-app .dataTables_wrapper .dataTables_paginate .paginate_button.current{background:var(--nv-apc)!important;border-color:var(--nv-apc)!important;color:#fff!important}

/* ------------------------------------------------------------------ badges */
body.greenolt-app :is(.smolt-badge,.smolt-count-pill,.smolt-filter-badge,.prov-count,.noc-pill,.basic-badge,.smmanage-badge){border-radius:999px;font-size:var(--nv-tiny);font-weight:600;padding:2px 9px;background:var(--nv-sunken);color:var(--nv-ink-2);border:1px solid var(--nv-line)}
body.greenolt-app :is(.smolt-badge-success,.smolt-badge-green,.smmanage-badge-success,.noc-pill.online,.basic-badge.online){background:var(--nv-apc-tint);color:var(--nv-apc-strong);border-color:transparent}
body.greenolt-app :is(.smolt-badge-danger,.smolt-badge-red,.smmanage-badge-danger,.noc-pill.offline,.basic-badge.offline){background:var(--nv-los-tint);color:var(--nv-los);border-color:transparent}
body.greenolt-app .badge.bg-success{background:var(--nv-apc-tint)!important;color:var(--nv-apc-strong)!important}
body.greenolt-app .badge.bg-danger{background:var(--nv-los-tint)!important;color:var(--nv-los)!important}
body.greenolt-app .badge.bg-warning{background:var(--nv-warn-tint)!important;color:var(--nv-warn)!important}
body.greenolt-app .badge.bg-info{background:var(--nv-upc-tint)!important;color:var(--nv-upc)!important}
body.greenolt-app .badge.bg-secondary{background:var(--nv-sunken)!important;color:var(--nv-ink-2)!important}
body.greenolt-app .badge{font-weight:600;border-radius:999px;padding:.32em .7em}

/* ----------------------------------------------------------------- buttons */
body.greenolt-app :is(.smolt-btn,.smset-btn,.smmanage-btn,.smolt-manage-btn,.noc-btn,.basic-action-btn,.manage-action-btn,.btn,.gs-button){font-family:var(--nv-font);font-size:var(--nv-small);font-weight:600;min-height:34px;border-radius:var(--nv-radius-sm);background:var(--nv-surface)!important;color:var(--nv-ink-2)!important;border:1px solid var(--nv-line-strong)!important;box-shadow:none!important}
body.greenolt-app :is(.smolt-btn,.smset-btn,.smmanage-btn,.noc-btn,.btn,.gs-button):hover{background:var(--nv-surface-2)!important;color:var(--nv-ink)!important;border-color:var(--nv-muted)!important}
body.greenolt-app :is(.noc-btn.primary,.btn-primary,.btn-success,.smolt-btn-primary,.smmanage-btn-primary,.smset-btn-primary,.gs-button:not(.gs-secondary):not(.gs-danger)){background:var(--nv-apc)!important;border-color:var(--nv-apc)!important;color:#fff!important}
body.greenolt-app :is(.noc-btn.primary,.btn-primary,.btn-success,.smolt-btn-primary,.smmanage-btn-primary,.smset-btn-primary,.gs-button:not(.gs-secondary):not(.gs-danger)):hover{background:var(--nv-apc-strong)!important;border-color:var(--nv-apc-strong)!important;color:#fff!important}
html[data-golt-theme="dark"] body.greenolt-app :is(.noc-btn.primary,.btn-primary,.btn-success,.gs-button:not(.gs-secondary):not(.gs-danger)){color:#06140E!important}
body.greenolt-app :is(.noc-btn.warning,.btn-warning){background:var(--nv-warn-tint)!important;border-color:transparent!important;color:var(--nv-warn)!important}
body.greenolt-app :is(.noc-btn.danger,.btn-danger,.gs-danger){background:var(--nv-los-tint)!important;border-color:transparent!important;color:var(--nv-los)!important}
body.greenolt-app :is(.noc-btn.success){background:var(--nv-apc-tint)!important;border-color:transparent!important;color:var(--nv-apc-strong)!important}
body.greenolt-app .gs-secondary{background:var(--nv-surface)!important;color:var(--nv-ink)!important;border-color:var(--nv-line-strong)!important}

/* ------------------------------------------------------------------ forms */
body.greenolt-app :is(.form-control,.form-select,.smolt-input,.smolt-select,.smset-input,.smset-select,.smmanage-input,.smmanage-select,.smolt-filter-input,.smolt-filter-select,.noc-input,.cfg-input,.gs-form input,.gs-form select,.gs-form textarea,.gs-search input,.gs-company-select select,.field input,.field select){background:var(--nv-surface);color:var(--nv-ink);border:1px solid var(--nv-line-strong);border-radius:var(--nv-radius-sm);font-size:13px;min-height:36px}
body.greenolt-app :is(.form-control,.form-select,.smolt-input,.smolt-select,.smmanage-input,.smmanage-select,.gs-form input,.gs-form select,.field input,.field select):focus{border-color:var(--nv-apc);box-shadow:0 0 0 3px var(--nv-apc-tint);outline:none}
body.greenolt-app :is(label,.form-label,.smolt-field-label,.smset-label,.smmanage-label){font-size:var(--nv-small);color:var(--nv-ink-2);text-transform:none;letter-spacing:0}
body.greenolt-app input::placeholder{color:var(--nv-muted);opacity:.85}

/* ------------------------------------------------------------ notices */
body.greenolt-app :is(.gs-warning,.gs-error,.gs-alert.gs-error){background:var(--nv-warn-tint);border:1px solid transparent;border-left:3px solid var(--nv-warn);color:var(--nv-ink);border-radius:var(--nv-radius-sm)}
body.greenolt-app :is(.gs-error,.gs-alert.gs-error){background:var(--nv-los-tint);border-left-color:var(--nv-los)}
body.greenolt-app :is(.gs-success,.gs-alert,.alert-success){background:var(--nv-apc-tint);border:1px solid transparent;border-left:3px solid var(--nv-apc);color:var(--nv-ink);border-radius:var(--nv-radius-sm)}
body.greenolt-app .golt-host-notice{background:var(--nv-los-tint);border-left:3px solid var(--nv-los);color:var(--nv-ink);border-radius:var(--nv-radius-sm);padding:12px 14px;margin-bottom:16px}

/* ----------------------------------------------------------- dialogs */
body.greenolt-app :is(.modal-content,.path-config-dialog){background:var(--nv-surface);color:var(--nv-ink);border:1px solid var(--nv-line);border-radius:var(--nv-radius-lg);box-shadow:var(--nv-shadow-pop)}
body.greenolt-app :is(.modal-header,.modal-footer,.path-config-head){background:var(--nv-surface-2);border-color:var(--nv-line)}
body.greenolt-app .modal-body{background:var(--nv-surface)}

/* ---------------------------------------------------- dark-mode sweep
   Older screen styles hard-code white panels; repaint the common ones. */
html[data-golt-theme="dark"] body.greenolt-app :is(.smolt-panel,.smmanage-card,.noc-card,.gs-card,.smolt-filter-bar,.smolt-toolbar,.smolt-filters,.metric-strip,.dropdown-menu,.list-group-item,.card,.card-body,.card-header,.offcanvas,.popover,.toast,.swal2-popup,.select2-dropdown,.select2-selection,.path-config-body,.cfg,.manage-panel,.onu-name-dialog,dialog){background:var(--nv-surface)!important;color:var(--nv-ink)!important;border-color:var(--nv-line)!important}
html[data-golt-theme="dark"] body.greenolt-app :is(.select2-results__option,.dropdown-item){color:var(--nv-ink)}
html[data-golt-theme="dark"] body.greenolt-app :is(h1,h2,h3,h4,h5,h6,strong,b,th,td,.head-title){color:var(--nv-ink)}
html[data-golt-theme="dark"] body.greenolt-app :is(small,.text-muted,.smolt-muted,.gs-help){color:var(--nv-muted)!important}
html[data-golt-theme="dark"] body.greenolt-app code,html[data-golt-theme="dark"] body.greenolt-app pre{background:var(--nv-sunken)!important;color:var(--nv-ink)!important}
html[data-golt-theme="dark"] body.greenolt-app :is(.gs-setting-card,.basic-onu-view,.basic-info-list dd,.basic-section-label,.basic-graph-title){color:var(--nv-ink)!important}
html[data-golt-theme="dark"] body.greenolt-app .basic-info-list dt{color:var(--nv-muted)!important}
html[data-golt-theme="dark"] body.greenolt-app [class*='tone-'] .metric-icon{background:var(--nv-apc-tint)!important;border-color:transparent!important;color:var(--nv-apc)!important}
html[data-golt-theme="dark"] #greenoltOperationProgress section{background:var(--nv-surface)!important;color:var(--nv-ink)!important;border-color:var(--nv-line-strong)!important}

/* Dark sweep targets (tagged by greenolt-nova.js in dark mode only). */
html[data-golt-theme="dark"] body#greenoltRoot#greenoltRoot#greenoltRoot .nv-dk-surface.nv-dk-surface{background-color:var(--nv-surface-2)!important;border-color:var(--nv-line)!important}
html[data-golt-theme="dark"] body#greenoltRoot#greenoltRoot#greenoltRoot .nv-dk-ok.nv-dk-ok{background-color:var(--nv-apc-tint)!important;border-color:transparent!important}
html[data-golt-theme="dark"] body#greenoltRoot#greenoltRoot#greenoltRoot .nv-dk-bad.nv-dk-bad{background-color:var(--nv-los-tint)!important;border-color:transparent!important}
html[data-golt-theme="dark"] body#greenoltRoot#greenoltRoot#greenoltRoot .nv-dk-warn.nv-dk-warn{background-color:var(--nv-warn-tint)!important;border-color:transparent!important}
html[data-golt-theme="dark"] body#greenoltRoot#greenoltRoot#greenoltRoot .nv-dk-text.nv-dk-text{color:var(--nv-ink)!important}

html[data-golt-theme="dark"] body#greenoltRoot#greenoltRoot#greenoltRoot .nv-dk-grad.nv-dk-grad{background-image:none!important;background-color:var(--nv-surface-2)!important}

/* High-contrast text (opt-in, from the command palette). Dark mode uses white. */
html[data-golt-theme="dark"][data-golt-contrast="high"] #greenoltRoot,html[data-golt-theme="dark"][data-golt-contrast="high"] #greenoltRoot *{color:#fff!important}
html[data-golt-contrast="high"] body.greenolt-app .golt-sidebar,html[data-golt-contrast="high"] body.greenolt-app .golt-sidebar *{color:#fff!important}

/* ======================================================================
   Command palette (Ctrl/⌘ K)
   ====================================================================== */
.nv-palette{position:fixed;inset:0;z-index:400000;display:none;align-items:flex-start;justify-content:center;padding:10vh 16px 16px;background:rgba(10,23,20,.45)}
.nv-palette.is-open{display:flex}
.nv-palette-box{width:min(640px,100%);background:var(--nv-surface);color:var(--nv-ink);border:1px solid var(--nv-line);border-radius:var(--nv-radius-lg);box-shadow:var(--nv-shadow-pop);overflow:hidden;font-family:var(--nv-font)}
.nv-palette-input{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--nv-line)}
.nv-palette-input svg{width:18px;height:18px;color:var(--nv-muted);flex:none}
.nv-palette-input input{flex:1;border:0;outline:0;background:transparent;color:var(--nv-ink);font-size:16px;min-width:0}
.nv-palette-input kbd{font:11px var(--nv-font);color:var(--nv-muted);border:1px solid var(--nv-line);border-radius:4px;padding:1px 6px}
.nv-palette-list{max-height:min(60vh,460px);overflow:auto;padding:6px}
.nv-palette-group{padding:10px 10px 4px;font-size:11.5px;color:var(--nv-muted);font-weight:600}
.nv-palette-item{display:flex;align-items:center;gap:12px;padding:9px 10px;border-radius:var(--nv-radius-sm);color:var(--nv-ink);text-decoration:none;cursor:pointer}
.nv-palette-item[aria-selected="true"]{background:var(--nv-apc-tint)}
.nv-palette-item .nv-pi-main{flex:1;min-width:0}
.nv-palette-item .nv-pi-title{font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nv-palette-item .nv-pi-sub{font-size:12px;color:var(--nv-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nv-palette-item .nv-pi-meta{font-size:12px;color:var(--nv-muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.nv-dot{width:8px;height:8px;border-radius:50%;background:var(--nv-muted);flex:none}
.nv-dot.on{background:var(--nv-apc);box-shadow:0 0 0 3px var(--nv-apc-tint)}
.nv-dot.off{background:var(--nv-los);box-shadow:0 0 0 3px var(--nv-los-tint)}
.nv-palette-empty{padding:22px 16px;color:var(--nv-muted);font-size:13px}
.nv-palette-foot{display:flex;gap:14px;padding:9px 14px;border-top:1px solid var(--nv-line);font-size:11.5px;color:var(--nv-muted);background:var(--nv-surface-2)}

/* ======================================================================
   ONU Action Center (ONU workspace)
   ====================================================================== */
.nv-drawer-scrim{position:fixed;inset:0;z-index:250000;background:rgba(10,23,20,.38);opacity:0;pointer-events:none;transition:opacity .18s}
.nv-drawer{position:fixed;top:0;right:0;bottom:0;z-index:250001;width:min(520px,100vw);display:flex;flex-direction:column;background:var(--nv-surface);color:var(--nv-ink);border-left:1px solid var(--nv-line);box-shadow:var(--nv-shadow-pop);transform:translateX(102%);transition:transform .22s cubic-bezier(.2,.8,.2,1);font-family:var(--nv-font)}
.nv-drawer.is-open{transform:none}.nv-drawer-scrim.is-open{opacity:1;pointer-events:auto}
.nv-drawer-head{padding:18px 20px 14px;border-bottom:1px solid var(--nv-line)}
.nv-drawer-head h2{margin:0;font-size:18px;font-weight:700;letter-spacing:-.2px;color:var(--nv-ink)}
.nv-drawer-head p{margin:4px 0 0;font-size:12.5px;color:var(--nv-muted)}
.nv-drawer-close{position:absolute;top:14px;right:14px;width:34px;height:34px;border-radius:var(--nv-radius-sm);border:1px solid var(--nv-line);background:var(--nv-surface);color:var(--nv-ink-2);cursor:pointer;display:grid;place-items:center}
.nv-drawer-close svg{width:16px;height:16px}
.nv-tabs{display:flex;gap:2px;padding:0 12px;border-bottom:1px solid var(--nv-line);overflow-x:auto}
.nv-tab{appearance:none;border:0;background:none;padding:11px 10px;font:600 13px var(--nv-font);color:var(--nv-muted);border-bottom:2px solid transparent;cursor:pointer;white-space:nowrap}
.nv-tab[aria-selected="true"]{color:var(--nv-ink);border-bottom-color:var(--nv-os2)}
.nv-panel{flex:1;overflow:auto;padding:18px 20px 24px}
.nv-panel[hidden]{display:none}
.nv-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.nv-field label{font-size:12.5px;font-weight:600;color:var(--nv-ink-2)}
.nv-field small{font-size:11.5px;color:var(--nv-muted)}
.nv-field :is(input,select){font:14px var(--nv-font);color:var(--nv-ink);background:var(--nv-surface);border:1px solid var(--nv-line-strong);border-radius:var(--nv-radius-sm);padding:8px 10px;min-height:38px;width:100%}
.nv-field :is(input,select):focus{outline:none;border-color:var(--nv-apc);box-shadow:0 0 0 3px var(--nv-apc-tint)}
.nv-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.nv-seg{display:flex;border:1px solid var(--nv-line-strong);border-radius:var(--nv-radius-sm);overflow:hidden;margin-bottom:14px}
.nv-seg button{flex:1;appearance:none;border:0;background:var(--nv-surface);color:var(--nv-ink-2);font:600 13px var(--nv-font);padding:9px 6px;cursor:pointer}
.nv-seg button+button{border-left:1px solid var(--nv-line-strong)}
.nv-seg button[aria-pressed="true"]{background:var(--nv-apc);color:#fff}
html[data-golt-theme="dark"] .nv-seg button[aria-pressed="true"]{color:#06140E}
.nv-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.nv-btn{appearance:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:8px 16px;border-radius:var(--nv-radius-sm);border:1px solid var(--nv-line-strong);background:var(--nv-surface);color:var(--nv-ink);font:600 13px var(--nv-font);cursor:pointer}
.nv-btn:hover{border-color:var(--nv-muted)}
.nv-btn.primary{background:var(--nv-apc);border-color:var(--nv-apc);color:#fff}.nv-btn.primary:hover{background:var(--nv-apc-strong)}
html[data-golt-theme="dark"] .nv-btn.primary{color:#06140E}
.nv-btn.warn{background:var(--nv-warn-tint);border-color:transparent;color:var(--nv-warn)}
.nv-btn.danger{background:var(--nv-los-tint);border-color:transparent;color:var(--nv-los)}
.nv-btn[disabled]{opacity:.55;cursor:progress}
.nv-note{font-size:12.5px;color:var(--nv-muted);background:var(--nv-surface-2);border:1px solid var(--nv-line);border-radius:var(--nv-radius-sm);padding:10px 12px;margin:0 0 14px;line-height:1.55}
.nv-status{min-height:22px;font-size:13px;margin-top:12px;display:flex;align-items:center;gap:8px}
.nv-status.ok{color:var(--nv-apc-strong)}.nv-status.err{color:var(--nv-los)}.nv-status.run{color:var(--nv-ink-2)}
.nv-spin{width:14px;height:14px;border-radius:50%;border:2px solid var(--nv-line-strong);border-top-color:var(--nv-apc);animation:nvspin .8s linear infinite;flex:none}
@keyframes nvspin{to{transform:rotate(360deg)}}
.nv-danger-zone{margin-top:22px;padding-top:16px;border-top:1px dashed var(--nv-line-strong)}
.nv-danger-zone h3{font-size:13.5px;margin:0 0 8px;color:var(--nv-ink)}
.nv-kv{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:13px;margin:0 0 16px}
.nv-kv dt{color:var(--nv-muted)}.nv-kv dd{margin:0;font-variant-numeric:tabular-nums;color:var(--nv-ink)}
.nv-launch{border-color:var(--nv-os2)!important;box-shadow:inset 0 -2px 0 var(--nv-os2)}
body.greenolt-app .basic-switch-btn.nv-launch{background:var(--nv-os2-tint)!important;color:var(--nv-ink)!important}
html[data-golt-theme="dark"] body.greenolt-app :is(.basic-switch-btn,.basic-btn){color:#10201b!important}

/* ======================================================================
   System check page
   ====================================================================== */
.nv-checks{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.nv-check{display:grid;grid-template-columns:22px 1fr auto;gap:12px;align-items:start;padding:12px 14px;background:var(--nv-surface);border:1px solid var(--nv-line);border-radius:var(--nv-radius)}
.nv-check svg{width:20px;height:20px;margin-top:1px}
.nv-check.ok svg{color:var(--nv-apc)}.nv-check.warn svg{color:var(--nv-warn)}.nv-check.fail svg{color:var(--nv-los)}
.nv-check strong{display:block;font-size:13.5px;color:var(--nv-ink)}
.nv-check span{display:block;font-size:12.5px;color:var(--nv-muted);margin-top:2px}
.nv-check code{font-size:12px;color:var(--nv-ink-2);white-space:nowrap}
.nv-check-summary{display:flex;gap:18px;flex-wrap:wrap;margin:0 0 18px;font-size:14px;color:var(--nv-ink-2)}
.nv-check-summary b{font-size:22px;font-variant-numeric:tabular-nums;color:var(--nv-ink);margin-right:4px}

@media(max-width:760px){
  .nv-row{grid-template-columns:1fr}
  body.greenolt-app .golt-global-search{width:140px}
  body.greenolt-app .golt-main{padding:18px 14px 26px}
  .nv-palette{padding-top:6vh}
}
@media(prefers-reduced-motion:reduce){.nv-drawer,.nv-drawer-scrim{transition:none}.nv-spin{animation-duration:2.4s}}
@media print{.nv-topctl,.nv-palette,.nv-drawer,.nv-drawer-scrim{display:none!important}}

/* 2.7.0 polish: palette input and drawer heading beat legacy element rules. */
.nv-palette .nv-palette-input input,.nv-palette .nv-palette-input input:focus,.nv-palette .nv-palette-input input:focus-visible{outline:none!important;box-shadow:none!important;border:0!important;background:transparent!important;padding:0!important;min-height:0!important;font-size:16px!important;color:var(--nv-ink)!important}
.nv-palette .nv-palette-input input::-webkit-search-cancel-button{display:none}
.nv-palette .nv-palette-input kbd{background:var(--nv-surface-2)!important;color:var(--nv-muted)!important;border:1px solid var(--nv-line)!important;box-shadow:none!important}
.nv-drawer .nv-drawer-head h2{font-size:19px!important;font-weight:700!important;color:var(--nv-ink)!important;margin:0!important}
.nv-drawer .nv-drawer-head p{color:var(--nv-muted)!important;font-weight:500!important}
.nv-drawer .nv-field label{color:var(--nv-ink-2)!important}
/* 2.7.0 phones: keep the top bar inside the screen. Theme and density stay in Ctrl/⌘ K. */
@media(max-width:640px){
  .nv-topctl button:not(:first-child){display:none}
  body.greenolt-app .golt-global-search{width:auto;flex:1 1 90px;min-width:0}
  body.greenolt-app .golt-navbar{gap:6px!important}
  body.greenolt-app .golt-navbar-right{gap:6px!important;min-width:0;flex:1 1 auto;justify-content:flex-end}
  body.greenolt-app .golt-top-add{display:none}
  body.greenolt-app .golt-breadcrumb{display:none}
  body.greenolt-app .golt-icon-button,.nv-topctl button{width:32px;height:32px}
}
/* 2.7.0 sign-in: primary action uses the Nova primary instead of the legacy pastel. */
body.greenolt-app.golt-auth .golt-auth-card button[type=submit]{background:var(--nv-apc)!important;border-color:var(--nv-apc)!important;color:#fff!important;font-weight:650}
body.greenolt-app.golt-auth .golt-auth-card button[type=submit] *{color:#fff!important}
body.greenolt-app.golt-auth .golt-auth-card button[type=submit]:hover{background:var(--nv-apc-strong)!important}

/* 2.7.1 VLAN services list (Action Center). */
.nv-svc-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 8px}.nv-svc-head strong{font-size:13px;color:var(--nv-ink)!important}
.nv-svc-list{display:grid;gap:6px;margin:0 0 16px}
.nv-svc{display:grid!important;grid-template-columns:18px auto 1fr auto;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--nv-line);border-radius:var(--nv-radius-sm);background:var(--nv-surface-2);cursor:pointer;font-size:13px!important;color:var(--nv-ink)!important}
.nv-svc input{width:16px;height:16px;margin:0;accent-color:var(--nv-apc)}.nv-svc-vlan{font-weight:700;font-variant-numeric:tabular-nums}.nv-svc-meta{color:var(--nv-muted);font-size:12px}
.nv-svc-empty{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px dashed var(--nv-line-strong);border-radius:var(--nv-radius-sm);color:var(--nv-muted);font-size:12.5px}
.nv-linkbtn{appearance:none;border:0;background:none;padding:2px 4px;font:600 12.5px var(--nv-font);color:var(--nv-apc-strong);cursor:pointer}.nv-linkbtn.danger{color:var(--nv-los)}.nv-linkbtn:hover{text-decoration:underline}

/* 2.7.1 — OLT reply diagnostics in the Action Center */
.nv-diag{margin-top:8px;font-size:12px;width:100%}
.nv-diag summary{cursor:pointer;color:var(--nv-apc-strong,var(--g-green));font-weight:600}
.nv-diag pre{margin:6px 0 0;max-height:260px;overflow:auto;white-space:pre-wrap;word-break:break-word;background:var(--nv-sunken,rgba(127,127,127,.08));border:1px solid var(--nv-line,rgba(127,127,127,.25));border-radius:8px;padding:8px;font:12px/1.45 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:inherit}
.nv-status:has(.nv-diag){flex-wrap:wrap}.nv-status .nv-diag{flex-basis:100%;color:var(--nv-ink-2,inherit)}
.nv-svc-empty:has(.nv-diag){display:block;text-align:left}.nv-diag{display:block}.nv-diag-copy{margin-left:10px;font-size:12px;border:0;background:none;color:var(--nv-apc-strong,var(--g-green));cursor:pointer;text-decoration:underline;padding:0}
