:root{--bg:#f4f6f8;--panel:#fff;--nav:#172129;--nav2:#202c35;--accent:#1f8f62;--accent2:#29a976;--text:#172129;--muted:#6e7b85;--line:#dfe5e9;--danger:#c43a46;--warning:#b6770b;--shadow:0 10px 30px rgba(20,34,45,.08)}*{box-sizing:border-box}body{margin:0;font-family:Inter,"Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select{font:inherit}.app-shell{display:grid;grid-template-columns:244px 1fr;min-height:100vh}.sidebar{background:var(--nav);color:#dce6eb;padding:22px 14px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:0 9px 25px}.brand-mark{width:39px;height:39px;border-radius:10px;display:grid;place-items:center;font-weight:800;background:linear-gradient(135deg,var(--accent),#45c58f);color:white}.brand strong{display:block;font-size:18px}.brand small{display:block;color:#82949f;margin-top:2px}nav{display:grid;gap:5px}.nav-group{display:grid;gap:3px}.nav-group-toggle{display:grid!important;grid-template-columns:22px 1fr 18px;align-items:center}.nav-group-toggle span{margin-left:0!important}.nav-group-icon{text-align:center}.nav-chevron{text-align:right;transition:transform .18s ease}.nav-group.open .nav-chevron{transform:rotate(180deg)}.nav-submenu{display:none;padding-left:24px;gap:3px}.nav-group.open .nav-submenu{display:grid}.nav-submenu button{padding:8px 11px!important;font-size:13px;font-weight:600!important}.nav-submenu button span{margin-left:0!important}.nav-group:has(.nav-submenu button.active)>.nav-group-toggle{background:#1d302b;color:#7bdab0}.sidebar{overflow-y:auto}.sidebar-bottom{position:sticky;bottom:0;background:var(--nav);padding-top:8px}.sidebar button{width:100%;border:0;background:transparent;color:#aebdc5;text-align:left;border-radius:9px;padding:11px 13px;cursor:pointer;font-weight:600}.sidebar button:hover{background:var(--nav2);color:#fff}.sidebar button.active{background:#243d36;color:#75d9ad}.sidebar button span{margin-left:9px}.sidebar-bottom{margin-top:auto}.version{padding:14px;color:#6f828d;font-size:12px;text-align:center}main{min-width:0}header{height:91px;background:var(--panel);border-bottom:1px solid var(--line);padding:17px 30px;display:flex;justify-content:space-between;align-items:center}header h1{font-size:24px;margin:0 0 3px}header p{margin:0;color:var(--muted);font-size:13px}.header-actions{display:flex;align-items:center;gap:14px}.avatar{width:39px;height:39px;border-radius:50%;display:grid;place-items:center;background:#e7ecef;font-weight:700}.engine{font-size:12px;padding:7px 10px;border-radius:20px;background:#fff3dc;color:#8a5d09;border:1px solid #f0d39b}#content{padding:28px 30px 50px;max-width:1500px}.grid-stats{display:grid;grid-template-columns:repeat(4,minmax(160px,1fr));gap:16px}.stat,.panel{background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow)}.stat{padding:20px}.stat small{color:var(--muted);font-weight:600}.stat strong{display:block;font-size:29px;margin:8px 0 5px}.stat .hint{font-size:12px;color:var(--accent)}.panel{margin-top:18px;overflow:hidden}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:17px 20px;border-bottom:1px solid var(--line)}.panel-head h2{font-size:16px;margin:0}.panel-body{padding:20px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.btn{border:0;border-radius:8px;padding:9px 13px;cursor:pointer;font-weight:700}.btn-primary{background:var(--accent);color:white}.btn-primary:hover{background:var(--accent2)}.btn-secondary{background:#edf1f3;color:#33434d}.btn-danger{background:#fdebed;color:var(--danger)}.btn:disabled{opacity:.48;cursor:not-allowed}.search{border:1px solid var(--line);background:white;border-radius:8px;padding:9px 11px;min-width:230px}table{width:100%;border-collapse:collapse}th{text-align:left;font-size:12px;color:var(--muted);font-weight:700;background:#f8fafb}th,td{padding:12px 15px;border-bottom:1px solid #edf0f2}tr:last-child td{border-bottom:0}td{font-size:13px}.badge{display:inline-flex;align-items:center;gap:6px;padding:5px 8px;border-radius:20px;font-size:12px;font-weight:700}.badge.ok{background:#e6f6ef;color:#167a54}.badge.off{background:#eef1f3;color:#65737c}.badge.bad{background:#fdebed;color:#b33440}.dot{width:7px;height:7px;border-radius:50%;background:currentColor}.muted{color:var(--muted)}.mono{font-family:"Cascadia Code",Consolas,monospace}.empty{text-align:center;padding:52px 15px;color:var(--muted)}.empty strong{display:block;color:#40515b;margin-bottom:6px}.actions{display:flex;gap:6px}.icon-btn{border:1px solid var(--line);background:white;border-radius:7px;padding:5px 8px;cursor:pointer}.two-col{display:grid;grid-template-columns:1.35fr .65fr;gap:18px}.status-card{display:grid;gap:13px}.status-line{display:flex;justify-content:space-between;border-bottom:1px dashed var(--line);padding-bottom:9px}.status-line:last-child{border:0}.modal{position:fixed;inset:0;background:rgba(10,18,23,.5);display:grid;place-items:center;padding:20px;z-index:20}.hidden{display:none!important}.modal-card{background:white;width:min(620px,100%);border-radius:14px;box-shadow:0 25px 80px rgba(0,0,0,.25);max-height:90vh;overflow:auto}.modal-head{padding:18px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.modal-head h2{font-size:19px;margin:0}.modal-head button{border:0;background:transparent;font-size:26px;cursor:pointer}.form{padding:20px;display:grid;gap:15px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{display:grid;gap:6px}.field label{font-size:12px;font-weight:700;color:#4f606a}.field input,.field select{border:1px solid #ccd5da;border-radius:8px;padding:10px;background:white}.check{display:flex;align-items:center;gap:8px;font-size:13px}.form-actions{display:flex;justify-content:flex-end;gap:8px;padding-top:5px}.toast{position:fixed;right:25px;bottom:25px;background:#172129;color:white;border-radius:9px;padding:12px 16px;z-index:30;box-shadow:var(--shadow);max-width:360px}.tenant-card-grid{display:grid;grid-template-columns:repeat(3,minmax(230px,1fr));gap:15px}.tenant-card{background:white;border:1px solid var(--line);border-radius:12px;padding:17px;cursor:pointer}.tenant-card:hover{border-color:#9acdb9}.tenant-card h3{margin:0 0 5px}.tenant-card .net{margin:12px 0}.placeholder{padding:60px 20px;text-align:center}.placeholder .big{font-size:44px;opacity:.3}.site-access{display:grid;grid-template-columns:1fr 1fr;gap:8px;border:1px solid var(--line);border-radius:8px;padding:10px;max-height:160px;overflow:auto}.site-access label{font-size:13px}@media(max-width:1000px){.app-shell{grid-template-columns:75px 1fr}.brand div:not(.brand-mark),.sidebar button span,.version{display:none}.sidebar button{text-align:center}.grid-stats{grid-template-columns:repeat(2,1fr)}.two-col{grid-template-columns:1fr}.tenant-card-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){header{padding:15px;height:auto}.engine{display:none}#content{padding:18px}.grid-stats,.tenant-card-grid{grid-template-columns:1fr}.app-shell{grid-template-columns:58px 1fr}.sidebar{padding:14px 7px}.brand{padding:0 2px 18px}.brand-mark{width:38px}.form-row{grid-template-columns:1fr}.panel{overflow:auto}}
.auth-screen{min-height:100vh;display:grid;place-items:center;padding:25px;background:radial-gradient(circle at 50% 0,#244239 0,#172129 48%,#11191e 100%)}.auth-card{width:min(460px,100%);background:#fff;border-radius:18px;box-shadow:0 30px 100px rgba(0,0,0,.34);overflow:hidden}.auth-brand{background:#172129;color:white;padding:25px 28px;display:flex;align-items:center;gap:12px}.auth-brand strong{display:block;font-size:20px}.auth-brand small{color:#82949f}.auth-copy{padding:26px 28px 0}.auth-copy h1{font-size:22px;margin:0 0 7px}.auth-copy p{color:var(--muted);font-size:13px;line-height:1.5}.auth-form{padding:20px 28px 28px;display:grid;gap:14px}.auth-error{background:#fdebed;color:#a32c38;border:1px solid #f2cbd0;padding:10px;border-radius:8px;font-size:13px}.account-button{display:flex;align-items:center;gap:8px;border:0;background:transparent;cursor:pointer;text-align:left}.account-text{display:grid}.account-text b{font-size:13px}.account-text small{font-size:11px;color:var(--muted)}.header-actions{position:relative}.account-menu{position:absolute;right:0;top:50px;width:180px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);z-index:15;padding:6px}.account-menu button{display:block;width:100%;border:0;background:#fff;text-align:left;padding:9px 10px;border-radius:7px;cursor:pointer}.account-menu button:hover{background:#f1f5f4}.notice{border:1px solid #f0d39b;background:#fff7e8;color:#805508;padding:12px 14px;border-radius:9px}.notice.good{border-color:#b8dfcf;background:#edf9f4;color:#176c4d}.secret-box{background:#172129;color:#fff;border-radius:9px;padding:14px;font-family:"Cascadia Code",Consolas,monospace;font-size:16px;display:flex;justify-content:space-between;align-items:center;gap:10px}.role-super{background:#eee8ff;color:#6245a6}.role-admin{background:#e6f6ef;color:#167a54}.role-user{background:#eef1f3;color:#65737c}.tenant-access-off{border-left:4px solid var(--danger)}.danger-zone{border:1px solid #f3c9ce;background:#fff7f8;border-radius:10px;padding:14px}.small-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.mini-stat{background:#f7f9fa;border:1px solid var(--line);border-radius:9px;padding:12px}.mini-stat b{display:block;font-size:20px;margin-top:4px}@media(max-width:650px){.account-text{display:none}.small-grid{grid-template-columns:1fr}.auth-card{border-radius:12px}}

/* v0.3.0 - Control Center */
.quick-button{width:38px;height:38px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--accent);font-size:24px;line-height:1;cursor:pointer;font-weight:400}.quick-button:hover{background:#eef8f4}.engine.engine-on{background:#e6f6ef;color:#167a54;border-color:#b8dfcf}.hero-control{display:flex;justify-content:space-between;align-items:center;gap:25px;background:linear-gradient(120deg,#172129,#203a32);color:#fff;padding:25px 28px;border-radius:16px;margin-bottom:18px;overflow:hidden}.hero-control h2{margin:5px 0 7px;font-size:23px}.hero-control p{margin:0;color:#adc0b9;font-size:13px}.eyebrow{font-size:11px;letter-spacing:1.6px;color:#75d9ad;font-weight:800}.health-orb{flex:0 0 88px;height:88px;border-radius:50%;display:grid;place-items:center;align-content:center;border:6px solid rgba(255,255,255,.13)}.health-orb.good{background:#1c805b}.health-orb.warn{background:#9a6720}.health-orb b{font-size:27px;line-height:1}.health-orb span{font-size:10px;opacity:.8}.clickable-stats .stat-button{display:block;text-align:left;width:100%;cursor:pointer;color:inherit}.stat-button:hover{border-color:#9acdb9;transform:translateY(-1px)}.control-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.issue-row{width:100%;display:grid;grid-template-columns:42px 1fr auto;gap:11px;align-items:center;border:0;border-bottom:1px solid var(--line);background:transparent;padding:11px 0;text-align:left;cursor:pointer;color:var(--text)}.issue-row:last-child{border-bottom:0}.issue-row:hover{color:var(--accent)}.issue-count{width:34px;height:34px;border-radius:9px;background:#fdebed;color:var(--danger);display:grid;place-items:center;font-weight:800}.all-good{display:grid;gap:4px;padding:14px;border-radius:10px;background:#edf9f4;color:#176c4d}.all-good span{font-size:12px}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.quick-grid button{border:1px solid var(--line);background:#f8fafb;border-radius:10px;padding:13px;text-align:left;cursor:pointer;color:var(--text)}.quick-grid button:hover{border-color:#9acdb9;background:#f1faf6}.quick-grid button b,.quick-grid button span{display:block}.quick-grid button span{font-size:11px;color:var(--muted);margin-top:3px}.activity-list{display:grid;gap:3px}.activity-item{display:grid;grid-template-columns:14px 1fr;gap:8px;padding:9px 0;border-bottom:1px solid #edf0f2}.activity-item:last-child{border-bottom:0}.activity-item b,.activity-item small{display:block}.activity-item b{font-size:12px;font-weight:600}.activity-item small{color:var(--muted);font-size:11px;margin-top:3px}.activity-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);margin-top:4px}.health-list{display:grid;gap:12px}.health-list>div{display:flex;justify-content:space-between;align-items:center;padding-bottom:10px;border-bottom:1px dashed var(--line);font-size:13px}.health-list>div:last-child{border:0}.search-hero{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:26px;box-shadow:var(--shadow)}.search-hero label{display:block;font-size:18px;font-weight:700;margin-bottom:12px}.search-hero p{margin:10px 0 0;color:var(--muted);font-size:12px}.global-search-wrap{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;border:2px solid #b8c5cc;border-radius:12px;padding:10px 13px;background:#fff}.global-search-wrap:focus-within{border-color:var(--accent)}.global-search-wrap input{border:0;outline:0;font-size:17px;min-width:0}.global-search-wrap kbd{background:#edf1f3;border:1px solid #d9e0e4;border-radius:5px;padding:3px 6px;color:var(--muted);font-size:10px}.search-results{margin-top:15px;background:#fff;border:1px solid var(--line);border-radius:13px;overflow:hidden}.search-result{width:100%;display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:10px;border:0;border-bottom:1px solid var(--line);background:#fff;text-align:left;padding:13px 15px;cursor:pointer;color:var(--text)}.search-result:last-child{border-bottom:0}.search-result:hover{background:#f5faf8}.search-result b,.search-result small{display:block}.search-result small{font-size:11px;color:var(--muted);margin-top:3px}.result-icon{width:34px;height:34px;border-radius:9px;background:#eaf5f0;color:var(--accent);display:grid;place-items:center}.compact{padding:22px}.modal-quick{padding:0}.attention-banner{margin-bottom:18px}.field textarea{font:inherit;border:1px solid #ccd5da;border-radius:8px;padding:10px;background:white;resize:vertical}.field textarea:focus{outline:2px solid rgba(31,143,98,.18);border-color:var(--accent)}
@media(max-width:900px){.control-grid{grid-template-columns:1fr}.hero-control{align-items:flex-start}.health-orb{flex-basis:74px;height:74px}.quick-grid{grid-template-columns:1fr 1fr}}
@media(max-width:650px){.hero-control{padding:20px}.hero-control h2{font-size:19px}.health-orb{display:none}.quick-grid{grid-template-columns:1fr}.quick-button{display:none}.global-search-wrap kbd{display:none}.global-search-wrap{grid-template-columns:auto 1fr}}
.table-sub{display:block;color:var(--muted);margin-top:3px}.table-wrap{overflow-x:auto}.qr-wrap{text-align:center;padding:8px}.qr-wrap img{width:min(320px,90%);background:#fff;border-radius:14px;padding:14px}.topology{display:grid;gap:18px}.topo-server,.topo-tenant{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:18px}.topo-server{display:flex;align-items:center;gap:14px}.topo-server>div{display:grid;gap:4px;flex:1}.topo-icon{font-size:28px}.topo-tenant{position:relative;margin-left:28px}.topo-line{position:absolute;left:-29px;top:-19px;width:28px;height:48px;border-left:2px solid var(--line);border-bottom:2px solid var(--line);border-bottom-left-radius:12px}.topo-tenant-head{display:flex;align-items:center;justify-content:space-between;gap:15px}.topo-tenant-head>div{display:grid;gap:4px}.topo-children{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}.topo-children h3{margin:0 0 8px}.topo-node{display:flex;align-items:center;gap:10px;padding:9px 10px;margin:6px 0;border-radius:10px;background:var(--bg);border:1px solid var(--line);width:100%;text-align:left}.topo-node>div{display:grid;gap:2px}.topo-button{cursor:pointer;color:inherit}.live-dot{width:10px;height:10px;border-radius:50%;background:#777;flex:0 0 auto}.live-dot.online{background:#35b56f;box-shadow:0 0 0 4px rgba(53,181,111,.12)}@media(max-width:780px){.topo-children{grid-template-columns:1fr}.topo-tenant-head{align-items:flex-start;flex-direction:column}}
.checklist-pro{display:grid;gap:10px}.check-row{display:flex;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:12px}.check-row>span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--bg);font-weight:700}.check-row>div{display:grid;gap:3px}.check-row small{color:var(--muted)}.check-row.done>span{background:rgba(53,181,111,.14);color:#35b56f}
.enroll-code{font:800 48px/1 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.18em;text-align:center;padding:28px;border:1px dashed var(--accent);border-radius:16px;background:var(--accent-soft)}
.code-example{padding:14px;border-radius:12px;background:var(--panel-2);overflow:auto}.code-example code{white-space:nowrap}.error-line{display:block;color:#d45b5b;margin-top:4px}.badge.warn{background:#fff1c7;color:#765600}

/* v0.6.0 - Parc & diagnostics */
.diag-output{white-space:pre-wrap;max-height:220px;overflow:auto;margin:8px 0 0;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);font:12px/1.45 ui-monospace,SFMono-Regular,Consolas,monospace}

.health-chart{width:100%;height:auto;max-height:150px;color:var(--accent,#3aa675);background:rgba(127,127,127,.05);border:1px solid var(--border);border-radius:12px;padding:8px}
.chart-scale{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;margin-top:4px}

html.light-theme body{background:#f3f5f6;color:#18211d}
html.light-theme .sidebar,html.light-theme header,html.light-theme .panel,html.light-theme .stat,html.light-theme .item-card,html.light-theme .modal-card{background:#fff;color:#18211d}
html.light-theme .sidebar button{color:#314039}
html.light-theme input,html.light-theme select,html.light-theme textarea{background:#fff;color:#18211d}


/* v0.10.1 - composants UI génériques */
.primary,.secondary,.danger{
  appearance:none;
  border:0;
  border-radius:9px;
  padding:10px 14px;
  font:inherit;
  font-size:13px;
  font-weight:700;
  cursor:pointer;
  transition:background .15s ease,border-color .15s ease,transform .05s ease;
}
.primary{background:var(--accent);color:#fff}
.primary:hover{background:var(--accent2)}
.secondary{background:#edf1f3;color:#33434d;border:1px solid var(--line)}
.secondary:hover{background:#e4eaed;border-color:#c7d1d7}
.danger{background:#fdebed;color:var(--danger)}
.primary:active,.secondary:active,.danger:active{transform:translateY(1px)}
.primary:disabled,.secondary:disabled,.danger:disabled{opacity:.5;cursor:not-allowed}

.cards{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:12px;
}
.item-card{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:12px;
  padding:14px 15px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
}
.item-card>div{display:grid;gap:4px;min-width:0}
.item-card b{font-size:13px}
.item-card small{color:var(--muted);font-size:11px;overflow-wrap:anywhere}

.form-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px 18px;
}
.form-grid>label{
  display:grid;
  gap:7px;
  align-content:start;
  font-size:12px;
  font-weight:700;
  color:#4f606a;
  min-width:0;
}
.form-grid .span2{grid-column:1/-1}
.form-grid input:not([type="checkbox"]):not([type="radio"]),
.form-grid select,
.form-grid textarea{
  width:100%;
  min-width:0;
  box-sizing:border-box;
  border:1px solid #ccd5da;
  border-radius:9px;
  padding:10px 11px;
  background:#fff;
  color:var(--text);
  font:inherit;
  font-size:13px;
}
.form-grid textarea{min-height:92px;resize:vertical}
.form-grid input:focus,
.form-grid select:focus,
.form-grid textarea:focus{
  outline:2px solid rgba(31,143,98,.18);
  border-color:var(--accent);
}
.form-grid label>small{font-weight:400;color:var(--muted);margin-top:-2px}
.form-grid .check{
  display:flex;
  align-items:center;
  gap:9px;
  min-height:38px;
  padding:8px 0;
  color:var(--text);
  font-weight:600;
}
.form-grid .check input{margin:0}

.modal-actions{
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:9px;
  margin-top:20px;
  padding-top:16px;
  border-top:1px solid var(--line);
}
.modal-actions .primary,
.modal-actions .secondary{min-width:100px}

.toolbar>.primary,.toolbar>.secondary,
.toolbar>div>.primary,.toolbar>div>.secondary{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:6px;
}

@media(max-width:700px){
  .form-grid{grid-template-columns:1fr}
  .form-grid .span2{grid-column:auto}
  .cards{grid-template-columns:1fr}
  .modal-actions{flex-direction:column-reverse;align-items:stretch}
  .modal-actions .primary,.modal-actions .secondary{width:100%}
}

html.light-theme .primary{color:#fff}
html.light-theme .secondary{background:#edf1f3;color:#33434d}
html.light-theme .item-card{background:#fff;color:#18211d}


/* v0.11.0 - espacement global des modales */
.modal-card{overflow:hidden}
.modal-head{padding:16px 20px}
#modalBody{padding:20px}
#modalBody>.form,
#modalBody>.form-grid,
#modalBody>.notice,
#modalBody>.panel,
#modalBody>.status-card,
#modalBody>.secret-box,
#modalBody>.quick-grid{margin:0}
#modalBody>*+*{margin-top:16px}
#modalBody .form{display:grid;gap:16px}
#modalBody .form-actions{margin-top:4px;padding-top:16px;border-top:1px solid var(--line)}
#modalBody .field{gap:7px}
#modalBody .status-card{padding:14px;border:1px solid var(--line);border-radius:11px;background:var(--panel-2)}
#modalBody .notice{padding:13px 14px;border-radius:10px}
#modalBody .secret-box{margin-top:12px}
@media(max-width:650px){
  .modal-head{padding:14px 16px}
  #modalBody{padding:16px}
}

.check-row.na{opacity:.72}
.check-row.na>span:first-child{background:#eef1f3;color:var(--muted)}
.check-row.warning>span:first-child{background:#fff4d8;color:#9a6a00}

@media(max-width:1000px){.nav-group-toggle{grid-template-columns:1fr!important}.nav-group-toggle .nav-chevron,.nav-group-toggle span:not(.nav-group-icon){display:none!important}.nav-submenu{padding-left:0}.nav-submenu button{font-size:0}.nav-submenu button:before{content:"•";font-size:18px}.nav-group.open .nav-submenu{display:grid}}


/* ==========================================================
   v0.18.0 — interface sombre / menu hiérarchique / dashboard
   ========================================================== */
:root{
  --bg:#0d151c;
  --panel:#111c25;
  --panel-2:#15222c;
  --nav:#0c141b;
  --nav2:#15232d;
  --accent:#55c86f;
  --accent2:#6cda84;
  --accent-soft:rgba(85,200,111,.13);
  --text:#e8eef2;
  --muted:#8797a3;
  --line:#263541;
  --border:#263541;
  --danger:#ef5b61;
  --warning:#e7a72f;
  --blue:#45a0ff;
  --purple:#a86df5;
  --orange:#f09a32;
  --lime:#91cf3a;
  --shadow:0 12px 30px rgba(0,0,0,.20);
}
html{background:var(--bg)}
body{background:var(--bg);color:var(--text)}
.app-shell{grid-template-columns:236px minmax(0,1fr);min-height:100vh;background:var(--bg)}
.sidebar{
  position:sticky;top:0;height:100vh;
  padding:0 0 10px;
  background:linear-gradient(180deg,#0b131a 0%,#0d171f 100%);
  border-right:1px solid var(--line);
  overflow-y:auto;overflow-x:hidden;
}
.brand{min-height:64px;padding:12px 18px;border-bottom:1px solid var(--line);gap:10px}
.brand-mark{width:42px;height:35px;border-radius:4px;background:transparent;font-size:0;position:relative}
.brand-mark:after{content:"NDX";font-size:23px;letter-spacing:-2px;font-weight:900;color:#fff}
.brand strong{font-size:14px}.brand small{font-size:9px;letter-spacing:.12em;text-transform:uppercase}
.nav-tree{padding:8px 0 12px;gap:0}
.nav-section-label{padding:10px 20px 6px;color:#6e7e89;font-size:10px;letter-spacing:.08em;font-weight:800}
.sidebar button{border-radius:0;padding:8px 20px;color:#c1ccd3;font-size:12px;font-weight:600;transition:.12s}
.sidebar button:hover{background:#14222c;color:#fff}
.sidebar button.active{background:linear-gradient(90deg,rgba(85,200,111,.18),rgba(85,200,111,.04));color:#77e18d;border-left:3px solid #5ed978;padding-left:17px}
.nav-icon{width:17px;display:inline-grid;place-items:center;color:#8ba0ad}
.sidebar button.active .nav-icon{color:#65da7d}
.nav-group{margin-top:4px}
.nav-group-toggle{
  grid-template-columns:16px 1fr!important;
  padding:9px 16px 5px!important;
  color:#78d98a!important;background:transparent!important;
  font-size:10px!important;letter-spacing:.065em;text-transform:uppercase;
}
.nav-group-toggle .nav-chevron{grid-column:1;font-size:12px;transform:rotate(-90deg);text-align:center}
.nav-group.open>.nav-group-toggle .nav-chevron{transform:rotate(0)}
.nav-group-toggle>span:last-child{margin-left:1px!important}
.nav-submenu{padding-left:0;gap:0}
.nav-group.open .nav-submenu{display:grid}
.nav-submenu>button{padding:7px 20px!important;font-size:12px!important}
.nav-subgroup-title{font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#657580;padding:8px 20px 3px 39px;font-weight:800}
.nav-subtree{display:grid;margin:0 0 4px 31px;border-left:1px solid #30404b}
.nav-subtree button{padding:5px 10px!important;color:#8999a4!important;font-size:11px!important;border-left:0!important}
.nav-subtree button:hover{color:#dfe8ed!important;background:#111d25}
.sidebar-bottom{position:static;margin-top:0;background:transparent;border-top:1px solid #1d2a33;padding-top:6px}
.sidebar-bottom .version{display:block;padding:12px 16px;color:#60727d;font-size:10px;text-align:left}

main{min-width:0;background:var(--bg)}
.topbar{
  height:64px;padding:0 18px 0 14px;
  background:#0b141c;border-bottom:1px solid var(--line);
  display:grid;grid-template-columns:minmax(250px,1fr) minmax(280px,430px) minmax(330px,1fr);
  align-items:center;gap:18px;
}
.topbar-product{display:flex;align-items:center;gap:12px;min-width:0}
.topbar-product strong{font-size:16px;white-space:nowrap}
.sidebar-toggle,.quick-button{
  width:34px;height:34px;display:grid;place-items:center;border:1px solid transparent;border-radius:8px;
  background:transparent;color:#aebdc5;cursor:pointer
}
.sidebar-toggle:hover,.quick-button:hover{background:#16232c;color:#fff;border-color:#263541}
.version-pill{background:rgba(85,200,111,.18);color:#68d880;border:1px solid rgba(85,200,111,.14);padding:4px 7px;border-radius:5px;font-size:10px}
.header-search{
  height:36px;border:1px solid var(--line);border-radius:7px;background:#0f1921;color:#8d9ba5;
  display:flex;align-items:center;gap:10px;padding:0 10px;cursor:pointer;text-align:left
}
.header-search span:nth-child(2){flex:1}.header-search kbd{font-size:10px;background:#111d25;border:1px solid #1d2b35;color:#73848f;padding:3px 6px;border-radius:4px}
.header-actions{justify-content:flex-end;gap:7px}
.engine{background:#12241b;border:1px solid #214c33;color:#6ed584;padding:6px 9px;font-size:10px}
.engine.engine-on{background:#10261a!important;color:#71df89!important;border-color:#245e38!important}
.account-button{color:var(--text);padding:5px 6px;border-radius:8px}
.account-button:hover{background:#14212a}
.avatar{width:34px;height:34px;background:#1f5633;color:#8eeba1;font-size:11px}
.account-text b{font-size:12px}.account-text small{color:#7e909b;font-size:10px}
.account-menu{top:47px;background:#111c25;border-color:var(--line)}
.account-menu button{background:transparent;color:var(--text)}.account-menu button:hover{background:#172630}
.page-heading{display:flex;align-items:center;justify-content:space-between;padding:18px 24px 0}
.page-heading h1{font-size:21px;margin:0 0 3px}.page-heading p{font-size:11px;margin:0;color:var(--muted)}
#content{max-width:none;padding:18px 24px 42px}

.panel,.stat,.item-card,.tenant-card,.modal-card{background:var(--panel);border-color:var(--line);color:var(--text);box-shadow:none}
.panel-head{border-color:var(--line)}
th{background:#0f1921;color:#7f909a}th,td{border-color:#20303a}
tr:hover td{background:rgba(255,255,255,.012)}
input,select,textarea,.search,.field input,.field select,.form-grid input:not([type="checkbox"]):not([type="radio"]),.form-grid select,.form-grid textarea{
  background:#0e1820!important;color:var(--text)!important;border-color:#2b3b47!important
}
input::placeholder,textarea::placeholder{color:#63747f}
.btn-secondary,.secondary{background:#17242d;color:#cbd6dc;border-color:#2a3a45}
.btn-secondary:hover,.secondary:hover{background:#1b2b35;border-color:#344754}
.icon-btn{background:#121e27;color:#c9d4da;border-color:#293945}
.icon-btn:hover{background:#1a2a34}
.modal{background:rgba(3,8,12,.72)}.modal-head{border-color:var(--line)}.modal-head button{color:#cbd7dd}
#modalBody .status-card{background:#0f1a22}
.notice{background:#2a2111;border-color:#5d4720;color:#e1c47f}
.notice.good{background:#11261b;border-color:#245838;color:#79d894}
.secret-box{background:#081017;border:1px solid var(--line)}
.badge.ok{background:#173723;color:#69d481}.badge.warn{background:#3a2c11;color:#e9b84c}.badge.bad{background:#3a171b;color:#f07075}.badge.off{background:#1d2931;color:#8797a2}

/* dashboard */
.dash-kpis{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:14px}
.dash-kpi{
  min-height:118px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(145deg,#121e27,#101922);
  color:var(--text);display:flex;align-items:center;gap:14px;padding:17px;text-align:left;cursor:pointer
}
.dash-kpi:hover{transform:translateY(-1px);border-color:#38505f}
.dash-kpi>div{display:grid;gap:3px}.dash-kpi span:not(.kpi-icon){font-size:11px;color:#dbe4e9}.dash-kpi b{font-size:27px;line-height:1.1}.dash-kpi small{font-size:10px;color:#7f909a}
.kpi-icon{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;font-size:21px;border:1px solid currentColor;flex:none}
.dash-kpi.green .kpi-icon{color:#5bca6d;background:rgba(91,202,109,.08)}.dash-kpi.green small{color:#67d879}
.dash-kpi.blue .kpi-icon{color:#49a0f8;background:rgba(73,160,248,.08)}.dash-kpi.blue small{color:#6cb4f9}
.dash-kpi.purple .kpi-icon{color:#a26ee9;background:rgba(162,110,233,.08)}.dash-kpi.purple small{color:#b98df2}
.dash-kpi.orange .kpi-icon{color:#ed9a31;background:rgba(237,154,49,.08)}.dash-kpi.orange small{color:#efac59}
.dash-kpi.lime .kpi-icon{color:#8ccf3f;background:rgba(140,207,63,.08)}.dash-kpi.lime small{color:#a4db67}
.dash-main-grid{display:grid;grid-template-columns:minmax(0,2.1fr) minmax(285px,.85fr);gap:14px;margin-top:16px}
.dash-bottom-grid{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:14px;margin-top:14px}
.dash-card{background:linear-gradient(145deg,#111c25,#101922);border:1px solid var(--line);border-radius:8px;overflow:hidden;min-width:0}
.dash-card-head{min-height:50px;padding:13px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}
.dash-card-head>div{display:flex;align-items:center;gap:9px}.dash-card-head h2{font-size:13px;margin:0}.panel-icon{color:#c2d0d8}
.text-button,.dash-footer-link,.row-arrow{border:0;background:transparent;color:#61a7de;cursor:pointer;font-size:10px}
.text-button:hover,.dash-footer-link:hover{color:#87c6f6}
.dash-table th{font-size:9px;padding:10px 13px}.dash-table td{font-size:10px;padding:11px 13px}.dash-table td b{font-size:11px}.dash-table td small{display:block;color:#72838e;margin-top:2px}
.conn-type{display:inline-grid;place-items:center;width:24px;height:22px;border-radius:5px;font-size:8px;font-weight:800;margin-right:6px}.conn-type.wg{background:#113824;color:#63d478}
.row-arrow{font-size:17px}
.dash-alert-list{min-height:235px}.dash-alert{width:100%;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--text);display:grid;grid-template-columns:38px 1fr;gap:10px;padding:15px;text-align:left;cursor:pointer}
.dash-alert:hover{background:#14212a}.alert-dot{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;font-weight:900}.alert-dot.critical{background:#35171b;color:#f45d64;border:1px solid #612329}.alert-dot.warning{background:#342812;color:#e7a72f;border:1px solid #5b451e}
.dash-alert span:last-child{display:grid;gap:2px}.dash-alert b{font-size:10px;color:#e7a72f}.dash-alert .critical+span b{color:#f45d64}.dash-alert strong{font-size:11px}.dash-alert small{font-size:9px;color:#7d8d98}
.dash-footer-link{display:block;width:100%;text-align:left;padding:12px 16px;border-top:1px solid var(--line)}
.dash-empty-good{display:grid;place-items:center;gap:6px;padding:55px 15px;color:#6fd586}.dash-empty-good span{font-size:28px}.dash-empty-good small{color:var(--muted)}
.donut-wrap{display:grid;grid-template-columns:150px 1fr;align-items:center;gap:12px;padding:20px}
.donut{--wg:60%;--ipEnd:80%;width:135px;height:135px;border-radius:50%;background:conic-gradient(#59c868 0 var(--wg),#438fe9 var(--wg) var(--ipEnd),#e98b2d var(--ipEnd) 100%);display:grid;place-items:center;position:relative}
.donut:after{content:"";position:absolute;inset:25px;border-radius:50%;background:#111c25}
.donut>div{z-index:1;text-align:center}.donut b{display:block;font-size:25px}.donut span{font-size:10px;color:#8c9aa4}
.donut-legend{display:grid;gap:12px}.donut-legend>div{display:grid;grid-template-columns:10px 1fr auto;gap:8px;align-items:center;font-size:10px}.legend-dot{width:9px;height:9px;border-radius:2px}.legend-dot.wg{background:#59c868}.legend-dot.ip{background:#438fe9}.legend-dot.agent{background:#e98b2d}
.traffic-list{display:grid;padding:8px 14px 14px}.traffic-list button{display:grid;grid-template-columns:24px minmax(90px,1fr) minmax(70px,1.2fr) auto;align-items:center;gap:9px;padding:10px 0;border:0;border-bottom:1px solid #1d2b35;background:transparent;color:var(--text);text-align:left;cursor:pointer}.traffic-list button:last-child{border-bottom:0}.traffic-rank{width:20px;height:20px;border-radius:5px;background:#1b2b35;display:grid;place-items:center;font-size:9px}.traffic-name{font-size:10px}.traffic-name small{display:block;color:#6f818d}.traffic-bar{height:5px;background:#182730;border-radius:20px;overflow:hidden}.traffic-bar i{display:block;height:100%;background:#5cca72;border-radius:20px}.traffic-list b{font-size:10px;white-space:nowrap}
.service-list{display:grid;padding:8px 15px 14px}.svc-row{display:grid;grid-template-columns:20px 1fr auto;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid #1d2b35}.svc-row:last-child{border-bottom:0}.svc-icon{width:17px;height:17px;border-radius:5px;display:grid;place-items:center;font-size:8px}.svc-icon.up{background:#163421;color:#5fd476}.svc-icon.down{background:#35171b;color:#ef5b61}.svc-row b{font-size:10px}.svc-row small{display:block;color:#71838e;font-size:9px;margin-top:2px}
.dashboard-statusbar{display:flex;justify-content:space-between;gap:12px;color:#71838e;border-top:1px solid var(--line);margin-top:18px;padding:12px 4px 0;font-size:9px}.dashboard-statusbar .healthy{color:#65d77b}.dashboard-statusbar .attention{color:#e7a72f}

/* collapsed navigation */
.app-shell.sidebar-collapsed{grid-template-columns:64px minmax(0,1fr)}
.app-shell.sidebar-collapsed .sidebar .brand>div:not(.brand-mark),
.app-shell.sidebar-collapsed .nav-section-label,
.app-shell.sidebar-collapsed .sidebar button span:not(.nav-icon):not(.nav-chevron),
.app-shell.sidebar-collapsed .nav-subtree,
.app-shell.sidebar-collapsed .nav-subgroup-title,
.app-shell.sidebar-collapsed .version{display:none!important}
.app-shell.sidebar-collapsed .sidebar button{text-align:center;padding-left:8px!important;padding-right:8px!important}
.app-shell.sidebar-collapsed .nav-group-toggle{grid-template-columns:1fr!important}
.app-shell.sidebar-collapsed .nav-chevron{display:block!important}
.app-shell.sidebar-collapsed .brand{justify-content:center;padding-left:5px;padding-right:5px}

html.light-theme{
  --bg:#f2f5f7;--panel:#fff;--panel-2:#f7f9fa;--nav:#172129;--nav2:#202c35;
  --text:#182129;--muted:#677782;--line:#dce3e7;--border:#dce3e7;--shadow:0 8px 24px rgba(20,34,45,.08)
}
html.light-theme body,html.light-theme main{background:var(--bg);color:var(--text)}
html.light-theme .topbar,html.light-theme .dash-card,html.light-theme .dash-kpi{background:#fff;color:var(--text)}
html.light-theme .page-heading{color:var(--text)}
html.light-theme .donut:after{background:#fff}
html.light-theme .dash-table th{background:#f7f9fa}
html.light-theme .header-search{background:#fff;color:#657681}
html.light-theme .traffic-bar{background:#edf1f3}

@media(max-width:1250px){
  .dash-kpis{grid-template-columns:repeat(3,1fr)}
  .dash-bottom-grid{grid-template-columns:1fr 1fr}.dash-bottom-grid>.dash-card:last-child{grid-column:1/-1}
  .topbar{grid-template-columns:minmax(210px,1fr) minmax(220px,360px) auto}
}
@media(max-width:980px){
  .app-shell{grid-template-columns:64px 1fr}.sidebar .brand>div:not(.brand-mark),.nav-section-label,.sidebar button span:not(.nav-icon):not(.nav-chevron),.nav-subtree,.nav-subgroup-title,.version{display:none!important}
  .sidebar button{text-align:center;padding-left:8px!important;padding-right:8px!important}.nav-group-toggle{grid-template-columns:1fr!important}
  .header-search{display:none}.topbar{grid-template-columns:1fr auto}.dash-kpis{grid-template-columns:repeat(2,1fr)}.dash-main-grid,.dash-bottom-grid{grid-template-columns:1fr}
  .dash-bottom-grid>.dash-card:last-child{grid-column:auto}
}
@media(max-width:650px){
  #content{padding:14px}.page-heading{padding:14px 14px 0}.dash-kpis{grid-template-columns:1fr}.dash-kpi{min-height:90px}
  .topbar-product strong,.version-pill,.engine,.account-text{display:none}.dash-table{min-width:720px}.donut-wrap{grid-template-columns:1fr;justify-items:center}.donut-legend{width:100%}
  .dashboard-statusbar{flex-direction:column}
}

.form-grid>label,.field label{color:#aebdc6}.check{color:var(--text)}


/* ==========================================================
   v0.18.1 — Soft Modern
   Plus clair, moins "cockpit", plus chaleureux et lisible
   ========================================================== */
:root{
  --bg:#f4f6f5;
  --panel:#ffffff;
  --panel-2:#f8faf9;
  --nav:#27332f;
  --nav2:#31423c;
  --accent:#2f9a68;
  --accent2:#3bb17a;
  --accent-soft:#e9f6ef;
  --text:#22312b;
  --muted:#718078;
  --line:#dde5e1;
  --border:#dde5e1;
  --danger:#c9545c;
  --warning:#b98225;
  --blue:#4a86c5;
  --purple:#8467b5;
  --orange:#d88c3f;
  --lime:#82a94b;
  --shadow:0 10px 28px rgba(29,49,41,.07);
}
html,body{background:var(--bg);color:var(--text)}
body{font-size:14px}
.app-shell{background:var(--bg);grid-template-columns:252px minmax(0,1fr)}
.sidebar{
  background:linear-gradient(180deg,#2b3733 0%,#25312d 100%);
  border-right:0;
  box-shadow:6px 0 24px rgba(27,42,36,.05);
}
.brand{min-height:72px;padding:16px 20px;border-bottom:1px solid rgba(255,255,255,.07)}
.brand-mark{width:44px;height:38px}
.brand-mark:after{font-size:24px}
.brand strong{font-size:15px}.brand small{color:#95a79f}
.nav-tree{padding-top:10px}
.nav-section-label{color:#82948c;padding:12px 20px 6px;font-size:10px}
.sidebar button{color:#c8d3ce;padding:9px 20px;font-size:12.5px;border-radius:8px;margin:1px 9px;width:calc(100% - 18px)}
.sidebar button:hover{background:rgba(255,255,255,.06);color:#fff}
.sidebar button.active{
  background:#365247;
  color:#dff7e8;
  border-left:0;
  padding-left:20px;
  box-shadow:inset 0 0 0 1px rgba(107,208,151,.13)
}
.sidebar button.active .nav-icon{color:#81d6a3}
.nav-group-toggle{
  margin:6px 8px 2px!important;
  width:calc(100% - 16px)!important;
  padding:7px 10px!important;
  color:#8fb49f!important;
  border-radius:6px!important;
  font-size:10px!important
}
.nav-submenu>button{padding:8px 16px!important}
.nav-subtree{margin-left:37px;border-left-color:rgba(255,255,255,.09)}
.nav-subtree button{margin:0!important;width:100%!important;border-radius:0!important;color:#93a59d!important}
.nav-subgroup-title{color:#7f9189}
.sidebar-bottom{border-top:1px solid rgba(255,255,255,.07)}
.sidebar-bottom .version{color:#778a82}

.topbar{
  height:72px;
  background:rgba(255,255,255,.96);
  border-bottom:1px solid var(--line);
  box-shadow:0 3px 18px rgba(29,49,41,.035);
  grid-template-columns:minmax(260px,1fr) minmax(260px,460px) minmax(340px,1fr);
  padding:0 24px;
}
.topbar-product strong{font-size:17px;color:#24332d}
.sidebar-toggle,.quick-button{color:#66766e;border-color:#e3e9e6;background:#fff}
.sidebar-toggle:hover,.quick-button:hover{background:#f4f7f5;color:#2d4037}
.version-pill{background:#e9f6ef;color:#2c8d61;border-color:#d8eee2}
.header-search{background:#f8faf9;color:#7e8d85;border-color:#dfe7e2;height:39px}
.header-search:hover{border-color:#bed6c9;background:#fff}
.header-search kbd{background:#eef3f0;border-color:#dde5e1;color:#718078}
.header-actions{gap:9px}
.engine{background:#edf7f1;color:#337f5c;border-color:#d6eadf}
.engine.engine-on{background:#e7f6ed!important;color:#2c8f61!important;border-color:#cfe9da!important}
.account-button{color:#27352f}.account-button:hover{background:#f1f5f3}
.avatar{background:#e4f2ea;color:#2f8d61}
.account-text small{color:#7d8b84}
.account-menu{background:#fff;border-color:var(--line);box-shadow:var(--shadow)}
.account-menu button{color:var(--text)}.account-menu button:hover{background:#f4f7f5}

.page-heading{padding:24px 30px 0}
.page-heading h1{font-size:25px;letter-spacing:-.02em;color:#23312b}
.page-heading p{font-size:12px;color:#7b8982;margin-top:4px}
#content{padding:20px 30px 48px}

.panel,.stat,.item-card,.tenant-card,.modal-card,.dash-card,.dash-kpi{
  background:var(--panel);
  border:1px solid var(--line);
  box-shadow:var(--shadow);
}
.panel,.dash-card,.dash-kpi,.tenant-card,.item-card{border-radius:14px}
.panel-head,.dash-card-head{border-bottom-color:#edf1ef}
th{background:#f7f9f8;color:#718078;font-weight:700}
th,td{border-color:#edf1ef}
tr:hover td{background:#fbfcfb}
input,select,textarea,.search,.field input,.field select,.form-grid input:not([type="checkbox"]):not([type="radio"]),.form-grid select,.form-grid textarea{
  background:#fff!important;
  color:var(--text)!important;
  border-color:#d5dfda!important
}
input:focus,select:focus,textarea:focus{outline:3px solid rgba(47,154,104,.09)!important;border-color:#7ac19f!important}
.btn{border-radius:9px}
.btn-primary,.primary{background:#318f64}.btn-primary:hover,.primary:hover{background:#3aa273}
.btn-secondary,.secondary{background:#f1f5f3;color:#385046;border-color:#dbe4df}
.btn-secondary:hover,.secondary:hover{background:#e8efeb;border-color:#cfdad4}
.icon-btn{background:#fff;color:#42564d;border-color:#dce5e0}.icon-btn:hover{background:#f3f7f5}
.modal{background:rgba(37,50,45,.34);backdrop-filter:blur(3px)}
.modal-card{background:#fff}.modal-head{border-color:#edf1ef}.modal-head button{color:#65766e}
#modalBody .status-card{background:#f8faf9}
.notice{background:#fff8ea;border-color:#ead9aa;color:#805d19}
.notice.good{background:#edf8f2;border-color:#cfe9da;color:#35785a}
.secret-box{background:#2b3833;color:#f4faf7;border:0}
.badge.ok{background:#e8f6ee;color:#2f885f}.badge.warn{background:#fff3d9;color:#956813}.badge.bad{background:#fdecee;color:#b44750}.badge.off{background:#eef2f0;color:#718078}

/* Dashboard plus doux et plus lisible */
.dash-kpis{gap:16px}
.dash-kpi{
  min-height:126px;
  background:#fff;
  border:1px solid #dfe7e2;
  padding:19px;
  transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease
}
.dash-kpi:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(29,49,41,.09);border-color:#c7d8cf}
.dash-kpi>div{gap:5px}
.dash-kpi span:not(.kpi-icon){color:#66766f;font-size:12px}
.dash-kpi b{font-size:30px;color:#23312b}
.dash-kpi small{font-size:11px;color:#7f8f87}
.kpi-icon{
  width:48px;height:48px;border-radius:14px;
  border:0;font-size:20px
}
.dash-kpi.green .kpi-icon{background:#e9f7ef;color:#2f9768}
.dash-kpi.blue .kpi-icon{background:#edf4fb;color:#4a86c5}
.dash-kpi.purple .kpi-icon{background:#f2eef9;color:#8467b5}
.dash-kpi.orange .kpi-icon{background:#fff2e5;color:#d88c3f}
.dash-kpi.lime .kpi-icon{background:#f2f7e9;color:#82a94b}
.dash-kpi.green small,.dash-kpi.blue small,.dash-kpi.purple small,.dash-kpi.orange small,.dash-kpi.lime small{color:#7f8f87}

.dash-main-grid{gap:16px;margin-top:18px}
.dash-bottom-grid{gap:16px;margin-top:16px}
.dash-card{background:#fff;border-color:#dfe7e2}
.dash-card-head{min-height:56px;padding:15px 18px}
.dash-card-head h2{font-size:14px;color:#26352f}
.panel-icon{color:#6d7d75}
.text-button,.dash-footer-link,.row-arrow{color:#397d63}
.text-button:hover,.dash-footer-link:hover{color:#2f9a68}
.dash-table th{font-size:10px;padding:11px 14px;background:#fafcfb}
.dash-table td{font-size:11px;padding:12px 14px;color:#394a43}
.dash-table td b{font-size:12px;color:#26352f}
.dash-table td small{color:#899790}
.conn-type.wg{background:#e9f6ef;color:#2f8e62}
.dash-alert{border-bottom-color:#edf1ef;color:#33453d;padding:17px}
.dash-alert:hover{background:#fafcfb}
.alert-dot.critical{background:#fdecee;color:#cc515b;border-color:#f0cbd0}
.alert-dot.warning{background:#fff3d9;color:#b17a1d;border-color:#f0ddb5}
.dash-alert b{color:#a66f15}.dash-alert .critical+span b{color:#c54b55}
.dash-alert strong{font-size:12px;color:#2d3d36}.dash-alert small{color:#84918b;font-size:10px}
.dash-footer-link{border-top-color:#edf1ef}
.dash-empty-good{color:#45936d}
.donut:after{background:#fff}
.donut-legend>div{font-size:11px;color:#42544c}
.traffic-list button{border-bottom-color:#edf1ef;color:#33453d}
.traffic-rank{background:#edf3f0;color:#60736a}
.traffic-name{font-size:11px}.traffic-name small{color:#8b9892}
.traffic-bar{background:#edf2ef}.traffic-bar i{background:#61b980}
.traffic-list b{color:#3a4a43}
.service-list{padding:10px 16px 16px}
.svc-row{border-bottom-color:#edf1ef}
.svc-icon.up{background:#e8f6ee;color:#39a16e}.svc-icon.down{background:#fdecee;color:#c9515a}
.svc-row b{font-size:11px;color:#2e3f37}.svc-row small{color:#87958e}
.dashboard-statusbar{border-top-color:#e4ebe7;color:#8a9791;font-size:10px}
.dashboard-statusbar .healthy{color:#3d9368}.dashboard-statusbar .attention{color:#a87720}

/* Dark option remains available, but as secondary mode */
html.dark-theme{
  --bg:#1c2421;
  --panel:#24302b;
  --panel-2:#293730;
  --text:#eef4f1;
  --muted:#a7b4ae;
  --line:#384841;
  --border:#384841
}
html.dark-theme body,html.dark-theme main{background:var(--bg);color:var(--text)}
html.dark-theme .topbar,html.dark-theme .dash-card,html.dark-theme .dash-kpi,html.dark-theme .panel,html.dark-theme .stat,html.dark-theme .item-card,html.dark-theme .tenant-card,html.dark-theme .modal-card{background:var(--panel);color:var(--text)}
html.dark-theme .page-heading h1,html.dark-theme .dash-kpi b,html.dark-theme .dash-card-head h2,html.dark-theme .dash-table td b,html.dark-theme .svc-row b{color:var(--text)}
html.dark-theme th{background:#202a26;color:#a5b2ac}
html.dark-theme tr:hover td{background:#27342e}
html.dark-theme .dash-table th{background:#202a26}
html.dark-theme .donut:after{background:var(--panel)}
html.dark-theme .traffic-bar{background:#34433c}
html.dark-theme .header-search,html.dark-theme input,html.dark-theme select,html.dark-theme textarea{background:#202a26!important;color:var(--text)!important;border-color:#3b4b44!important}
html.dark-theme .sidebar-toggle,html.dark-theme .quick-button{background:#27332e;color:#d1dbd6;border-color:#394943}
html.dark-theme .topbar{border-color:#394943}
html.dark-theme .account-button{color:var(--text)}
html.dark-theme .account-menu{background:var(--panel)}
html.dark-theme .btn-secondary,html.dark-theme .secondary{background:#2d3a34;color:#d8e1dc;border-color:#405149}
html.dark-theme .icon-btn{background:#2b3933;color:#d7e0dc;border-color:#405149}
html.dark-theme .dash-alert:hover{background:#293630}
html.dark-theme .dash-alert strong,html.dark-theme .traffic-list b,html.dark-theme .traffic-name,html.dark-theme .donut-legend>div{color:#dfe7e3}

/* keep legacy .light-theme harmless */
html.light-theme{color-scheme:light}
