/* Tema și componentele comune tuturor paginilor (IBM Plex, suprafețe
   calme, accent albastru, carduri rotunjite). Light + dark:
     - implicit urmează sistemul (prefers-color-scheme);
     - comutatorul din antet setează <html data-theme="light|dark"> și câștigă în ambele sensuri.
   Paginile folosesc DOAR token-urile de mai jos, nu culori directe. */

@font-face{font-family:'IBM Plex Sans';font-weight:400;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-sans-latin-ext-400.woff2') format('woff2');unicode-range:U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-weight:400;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-sans-latin-400.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Sans';font-weight:500;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-sans-latin-ext-500.woff2') format('woff2');unicode-range:U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-weight:500;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-sans-latin-500.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Sans';font-weight:600;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-sans-latin-ext-600.woff2') format('woff2');unicode-range:U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-weight:600;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-sans-latin-600.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Sans';font-weight:700;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-sans-latin-ext-700.woff2') format('woff2');unicode-range:U+0100-02AF,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Sans';font-weight:700;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-sans-latin-700.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-weight:400;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-mono-latin-ext-400.woff2') format('woff2');unicode-range:U+0100-02AF,U+1E00-1EFF,U+2020,U+20A0-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Mono';font-weight:400;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-mono-latin-400.woff2') format('woff2');}
@font-face{font-family:'IBM Plex Mono';font-weight:500;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-mono-latin-ext-500.woff2') format('woff2');unicode-range:U+0100-02AF,U+1E00-1EFF,U+2020,U+20A0-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;}
@font-face{font-family:'IBM Plex Mono';font-weight:500;font-display:swap;src:url('/static/vendor/fonts/ibm-plex-mono-latin-500.woff2') format('woff2');}

:root{
  color-scheme:light;
  --bg:#E7ECEF; --surface:#FFFFFF; --surface-2:#F4F7F9; --ink:#16232E; --ink-soft:#4E5E68; --ink-muted:#7A8A94;
  --line:#C3CDD3; --line-soft:#DDE4E8; --accent:#2B6CB0; --accent-ink:#FFFFFF; --accent-2:#B5651D;
  --accent-wash:color-mix(in srgb, var(--accent) 10%, var(--surface));
  --shadow:0 1px 2px rgba(22,35,46,.06), 0 4px 16px rgba(22,35,46,.06);
  /* stări (rezervate: nu se folosesc pentru serii) */
  --good:#0ca30c; --warning:#fab219; --serious:#ec835a; --critical:#d03b3b;
  --good-text:#0b6b0b; --warning-text:#8a5a00; --critical-text:#b02a2a;
  /* serii de grafic, în ordine fixă (validate pe --surface, light) */
  --series-1:#2a78d6; --series-2:#eb6834; --series-3:#1baf7a; --series-4:#eda100;
  --series-5:#e87ba4; --series-6:#008300; --series-7:#4a3aa7; --series-8:#e34948;
  --chart-grid:#E3E8EC; --chart-axis:#C3CDD3; --chart-text:#6B7B85;
  --font:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,Menlo,monospace;
  --sidebar-w:216px; --sidebar-w-collapsed:56px; --topbar-h:56px; --radius:12px;
}
@media (prefers-color-scheme:dark){
  :root:where(:not([data-theme="light"])){
    color-scheme:dark;
    --bg:#0F151B; --surface:#18212A; --surface-2:#1F2A35; --ink:#E6EDF2; --ink-soft:#A9B8C3; --ink-muted:#7F909C;
    --line:#2F3D4A; --line-soft:#263340; --accent:#5B9FE0; --accent-ink:#0F151B; --accent-2:#D98C4A;
    --shadow:0 1px 2px rgba(0,0,0,.3), 0 4px 16px rgba(0,0,0,.25);
    --good-text:#4cc24c; --warning-text:#fab219; --critical-text:#f08080;
    --series-1:#3987e5; --series-2:#d95926; --series-3:#199e70; --series-4:#c98500;
    --series-5:#d55181; --series-6:#008300; --series-7:#9085e9; --series-8:#e66767;
    --chart-grid:#24303B; --chart-axis:#35434F; --chart-text:#8A9AA6;
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0F151B; --surface:#18212A; --surface-2:#1F2A35; --ink:#E6EDF2; --ink-soft:#A9B8C3; --ink-muted:#7F909C;
  --line:#2F3D4A; --line-soft:#263340; --accent:#5B9FE0; --accent-ink:#0F151B; --accent-2:#D98C4A;
  --shadow:0 1px 2px rgba(0,0,0,.3), 0 4px 16px rgba(0,0,0,.25);
  --good-text:#4cc24c; --warning-text:#fab219; --critical-text:#f08080;
  --series-1:#3987e5; --series-2:#d95926; --series-3:#199e70; --series-4:#c98500;
  --series-5:#d55181; --series-6:#008300; --series-7:#9085e9; --series-8:#e66767;
  --chart-grid:#24303B; --chart-axis:#35434F; --chart-text:#8A9AA6;
}

*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{margin:0; min-height:100vh; background:var(--bg); color:var(--ink); font-family:var(--font); font-size:14px; line-height:1.45;}
a{color:var(--accent);}
h1{font-size:22px; font-weight:700; margin:0; letter-spacing:-.01em;}
h2{font-size:15px; font-weight:600; margin:0;}
.eyebrow{font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--accent); font-weight:500;}
.sub{color:var(--ink-soft); font-size:14px; margin:4px 0 0;}
.muted{color:var(--ink-muted);}
.mono{font-family:var(--mono); font-size:12.5px;}
.hidden{display:none !important;}
.sr-only{position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap;}
:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}

/* ---------- carduri ---------- */
.card{background:var(--surface); border:1px solid var(--line-soft); border-radius:var(--radius); box-shadow:var(--shadow);}
.card.accent{border-top:4px solid var(--accent);}
.card-head{display:flex; align-items:center; gap:10px; padding:14px 16px 0;}
.card-body{padding:14px 16px 16px;}
.card-head .spacer, .row .spacer{flex:1;}
body.centered{display:flex; align-items:center; justify-content:center; padding:16px;}
.message-card{width:100%; max-width:420px; padding:28px; border-top:4px solid var(--accent);}
.message-card h1{margin:6px 0 4px;}
.message-card .btn{margin-top:18px;}

/* ---------- butoane & câmpuri ---------- */
.btn{display:inline-flex; align-items:center; justify-content:center; gap:8px; font-family:var(--font); font-weight:600; font-size:14px;
  padding:9px 14px; border-radius:8px; border:1px solid transparent; background:var(--accent); color:var(--accent-ink);
  cursor:pointer; text-decoration:none; white-space:nowrap;}
.btn:hover{filter:brightness(1.08);}
.btn:disabled{opacity:.55; cursor:not-allowed; filter:none;}
.btn.secondary{background:var(--surface); color:var(--ink); border-color:var(--line);}
.btn.secondary:hover{background:var(--surface-2); filter:none;}
.btn.ghost{background:transparent; color:var(--ink-soft); padding:8px;}
.btn.ghost:hover{background:var(--surface-2); color:var(--ink); filter:none;}
.btn.danger{background:var(--critical); color:#fff;}
.btn.small{padding:6px 10px; font-size:13px;}
.btn svg{flex-shrink:0;}
.field{display:flex; flex-direction:column; gap:5px; font-size:12.5px; font-weight:500; color:var(--ink-soft); min-width:0;}
input, select, textarea{width:100%; font-family:var(--font); font-size:14px; padding:9px 11px; border:1px solid var(--line);
  border-radius:8px; background:var(--surface); color:var(--ink);}
input:focus, select:focus, textarea:focus{outline:2px solid var(--accent); outline-offset:0; border-color:var(--accent);}
select{appearance:none; padding-right:32px; background-repeat:no-repeat; background-position:right 10px center; background-size:12px;
  background-image:url('/static/shared/chevron-down.svg');}
.field .hint{font-weight:400; color:var(--ink-muted);}
.form-grid{display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px;}
.form-error{color:var(--critical-text); font-size:13px; min-height:18px;}
.row{display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
.row.end{justify-content:flex-end;}

/* segmente (alegere unică) și chip-uri (alegere multiplă) */
.segmented{display:inline-flex; border:1px solid var(--line); border-radius:8px; overflow:hidden; background:var(--surface);}
.segmented button{font-family:var(--font); font-size:13px; font-weight:500; padding:8px 12px; border:none; background:transparent;
  color:var(--ink-soft); cursor:pointer; border-left:1px solid var(--line);}
.segmented button:first-child{border-left:none;}
.segmented button[aria-pressed="true"]{background:var(--accent-wash); color:var(--accent); font-weight:600;}
.chips{display:flex; flex-wrap:wrap; gap:6px;}
.chip{display:inline-flex; align-items:center; gap:7px; font-family:var(--font); font-size:13px; padding:5px 10px; border-radius:100px;
  border:1px solid var(--line); background:var(--surface); color:var(--ink-soft); cursor:pointer;}
.chip[aria-pressed="true"]{color:var(--ink); border-color:var(--ink-muted); background:var(--surface-2); font-weight:500;}
.chip .key{width:14px; height:3px; border-radius:2px; background:var(--line);}

/* ---------- insigne & stări (mereu pictogramă + text, niciodată doar culoare) ---------- */
.badge{display:inline-flex; align-items:center; gap:6px; font-size:12px; font-weight:500; padding:3px 9px; border-radius:100px;
  background:var(--surface-2); color:var(--ink-soft); border:1px solid var(--line-soft); white-space:nowrap;}
.badge .dot{width:8px; height:8px; border-radius:50%; background:var(--ink-muted);}
.badge.good{color:var(--good-text);} .badge.good .dot{background:var(--good);}
.badge.warning{color:var(--warning-text);} .badge.warning .dot{background:var(--warning);}
.badge.critical{color:var(--critical-text);} .badge.critical .dot{background:var(--critical);}

/* ---------- tabele ---------- */
.table-wrap{overflow-x:auto;}
table.data{width:100%; border-collapse:collapse; font-size:13.5px;}
table.data th{text-align:left; font-weight:500; font-size:12px; color:var(--ink-muted); padding:8px 12px; border-bottom:1px solid var(--line); white-space:nowrap;}
table.data td{padding:9px 12px; border-bottom:1px solid var(--line-soft); vertical-align:middle;}
table.data tr:last-child td{border-bottom:none;}
table.data td.num, table.data th.num{text-align:right; font-variant-numeric:tabular-nums;}
table.data .empty{text-align:center; color:var(--ink-muted); padding:22px;}
@media(max-width:640px){
  table.data.stack thead{display:none;}
  table.data.stack tr{display:block; padding:8px 0; border-bottom:1px solid var(--line-soft);}
  table.data.stack td{display:flex; justify-content:space-between; gap:12px; border:none; padding:4px 12px; text-align:right;}
  table.data.stack td::before{content:attr(data-label); color:var(--ink-muted); font-size:12px; text-align:left;}
}

/* ---------- tab-uri ---------- */
.tabs{display:flex; gap:2px; border-bottom:1px solid var(--line); overflow-x:auto;}
.tabs button{font-family:var(--font); font-size:14px; font-weight:500; padding:10px 14px; border:none; background:none; color:var(--ink-soft);
  cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px; white-space:nowrap; display:inline-flex; gap:8px; align-items:center;}
.tabs button[aria-selected="true"]{color:var(--accent); border-bottom-color:var(--accent); font-weight:600;}

/* ---------- toast, dialog ---------- */
.toasts{position:fixed; right:16px; bottom:16px; z-index:300; display:flex; flex-direction:column; gap:8px; max-width:min(380px, calc(100vw - 32px));}
.toast{display:flex; gap:10px; align-items:flex-start; padding:11px 14px; border-radius:10px; background:var(--surface); color:var(--ink);
  border:1px solid var(--line); border-left:4px solid var(--accent); box-shadow:var(--shadow); font-size:13.5px;}
.toast.success{border-left-color:var(--good);} .toast.error{border-left-color:var(--critical);}
dialog.modal{border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); padding:0;
  width:min(480px, calc(100vw - 32px)); box-shadow:0 12px 48px rgba(0,0,0,.3);}
dialog.modal::backdrop{background:rgba(10,16,22,.5);}
dialog.modal .modal-head{padding:16px 18px 0;} dialog.modal .modal-body{padding:10px 18px 4px; color:var(--ink-soft);}
dialog.modal .modal-foot{padding:14px 18px 16px; display:flex; justify-content:flex-end; gap:8px;}

/* ---------- shell: sidebar + antet ---------- */
.app-shell{display:flex; min-height:100vh;}
.sidebar{width:var(--sidebar-w); flex-shrink:0; background:var(--surface); border-right:1px solid var(--line-soft); display:flex; flex-direction:column;
  position:fixed; top:0; left:0; height:100vh; z-index:100; overflow-y:auto; overflow-x:hidden; transition:transform .2s ease, width .2s ease;}
.sidebar .brand{display:flex; align-items:center; justify-content:center; height:var(--topbar-h); margin:12px 12px 8px; border-radius:10px;
  background:var(--accent); flex-shrink:0; overflow:hidden; text-decoration:none;}
.sidebar .brand img{max-height:34px; max-width:160px;}
.sidebar .brand .brand-mark{display:none; color:var(--accent-ink); font-weight:700; font-size:18px;}
.sidebar nav{flex:1; padding-bottom:8px;}
.sidebar .navgroup{font-family:var(--mono); font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-muted); padding:14px 20px 6px;}
.sidebar a.navitem{display:flex; align-items:center; gap:10px; padding:8px 20px; font-size:13.5px; color:var(--ink); text-decoration:none; border-left:3px solid transparent;}
.sidebar a.navitem:hover{background:var(--surface-2);}
.sidebar a.navitem[aria-current="page"]{background:var(--accent-wash); border-left-color:var(--accent); color:var(--accent); font-weight:600;}
.sidebar a.navitem svg{flex-shrink:0; opacity:.85;}
.sidebar .collapse-btn{display:flex; align-items:center; gap:8px; margin:0 8px 10px; padding:8px 12px; background:none; border:none; cursor:pointer;
  color:var(--ink-muted); font-family:var(--font); font-size:12px; border-radius:8px;}
.sidebar .collapse-btn:hover{background:var(--surface-2); color:var(--ink);}
.sidebar .collapse-btn svg{transition:transform .2s ease;}
.main{flex:1; min-width:0; margin-left:var(--sidebar-w); transition:margin-left .2s ease; display:flex; flex-direction:column;}
.topbar{height:var(--topbar-h); display:flex; align-items:center; gap:12px; padding:0 20px; background:var(--surface); border-bottom:1px solid var(--line-soft);
  position:sticky; top:0; z-index:50;}
.topbar .page-title{font-size:16px; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.topbar .spacer{flex:1;}
.topbar .user{display:flex; flex-direction:column; align-items:flex-end; line-height:1.2; min-width:0;}
.topbar .user .name{font-weight:600; font-size:13px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:220px;}
.topbar .user .meta{font-size:11.5px; color:var(--ink-muted); white-space:nowrap;}
.hamburger{display:none;}
.sidebar-overlay{display:none; position:fixed; inset:0; background:rgba(10,16,22,.45); z-index:99;}
.content{padding:20px; display:flex; flex-direction:column; gap:16px; width:100%; max-width:1280px; margin:0 auto;}
.banner{display:flex; align-items:center; gap:10px; padding:9px 20px; background:color-mix(in srgb, var(--warning) 22%, var(--surface)); color:var(--ink); font-size:13px; border-bottom:1px solid var(--line-soft);}
@media(min-width:761px){
  html.sidebar-collapsed{--sidebar-w:var(--sidebar-w-collapsed);}
  html.sidebar-collapsed .sidebar .navgroup, html.sidebar-collapsed .sidebar .nlabel{display:none;}
  html.sidebar-collapsed .sidebar a.navitem{justify-content:center; padding:10px 0;}
  html.sidebar-collapsed .sidebar .brand{margin:12px 8px 8px;}
  html.sidebar-collapsed .sidebar .brand img{display:none;}
  html.sidebar-collapsed .sidebar .brand .brand-mark{display:block;}
  html.sidebar-collapsed .sidebar .collapse-btn{justify-content:center; padding:8px 0;}
  html.sidebar-collapsed .sidebar .collapse-btn svg{transform:rotate(180deg);}
}
@media(max-width:760px){
  .sidebar{transform:translateX(-100%); box-shadow:0 0 28px rgba(0,0,0,.3); width:min(280px, 84vw);}
  .sidebar.open{transform:translateX(0);}
  .main{margin-left:0;}
  .hamburger{display:inline-flex;}
  .sidebar-overlay.show{display:block;}
  .sidebar .collapse-btn{display:none;}
  .topbar{padding:0 12px;}
  .topbar .user{display:none;}
  .content{padding:12px; gap:12px;}
}

/* ---------- valori & grafice ---------- */
.stat-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px;}
.stat{padding:12px 14px; border-radius:10px; background:var(--surface); border:1px solid var(--line-soft); min-width:0;}
.stat .label{font-size:12px; color:var(--ink-soft); white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.stat .value{font-size:22px; font-weight:600; margin-top:2px; white-space:nowrap;}
.stat .value .unit{font-size:13px; font-weight:400; color:var(--ink-soft); margin-left:3px;}
.stat .foot{font-size:11.5px; color:var(--ink-muted); margin-top:2px;}
.legend{display:flex; flex-wrap:wrap; gap:4px 14px; font-size:12.5px; color:var(--ink-soft);}
.legend .item{display:inline-flex; align-items:center; gap:6px;}
.legend .key{width:16px; height:3px; border-radius:2px;}
.legend .key.dot{width:9px; height:9px; border-radius:50%;}
.legend .key.band{height:9px; opacity:.35;}
.chart{position:relative; width:100%;}
.chart.loading{opacity:.5; transition:opacity .15s;}
.chart-tip{position:absolute; z-index:20; pointer-events:none; background:var(--surface); border:1px solid var(--line); border-radius:8px;
  box-shadow:var(--shadow); padding:8px 10px; font-size:12.5px; min-width:120px; white-space:nowrap;}
.chart-tip .when{color:var(--ink-muted); font-size:11.5px; margin-bottom:4px;}
.chart-tip .line{display:flex; align-items:center; gap:7px;}
.chart-tip .line .key{width:12px; height:3px; border-radius:2px; flex-shrink:0;}
.chart-tip .line .val{font-weight:600; color:var(--ink);}
.chart-tip .line .name{color:var(--ink-soft);}
.empty-state{padding:36px 16px; text-align:center; color:var(--ink-muted);}
.uplot{font-family:var(--font);}

/* ---------- pagini: bară de acțiuni, formulare în dialog, tabele cu filtre ---------- */
.toolbar{display:flex; align-items:center; gap:10px 12px; flex-wrap:wrap;}
.toolbar .sub{margin:0; max-width:720px;}
.toolbar .spacer{flex:1;}
.icon-btn{padding:6px;}
.btn.ghost.icon-btn.danger{background:transparent; color:var(--critical-text);}
.btn.ghost.icon-btn.danger:hover{background:color-mix(in srgb, var(--critical) 12%, var(--surface));}
.cell-actions{display:flex; gap:2px; justify-content:flex-end; flex-wrap:wrap;}
textarea{resize:vertical; min-height:70px;}
dialog.modal.wide{width:min(760px, calc(100vw - 32px));}
dialog.modal .modal-body{max-height:calc(100vh - 190px); overflow-y:auto;}
.dialog-form .sub{margin:0 0 12px; font-size:13px;}
.dialog-form .form-grid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));}
.dialog-form .field.full{grid-column:1 / -1;}
.dialog-form .form-error{margin-top:8px;}
label.field.check, label.check{flex-direction:row; align-items:center; gap:8px; font-size:13.5px; color:var(--ink); font-weight:400; display:flex;}
input[type="checkbox"]{width:16px; height:16px; padding:0; flex-shrink:0; accent-color:var(--accent);}
fieldset.checks{border:1px solid var(--line-soft); border-radius:8px; padding:8px 12px 10px; margin:0; display:flex; flex-direction:column; gap:6px; min-width:0;}
fieldset.checks legend{font-size:12.5px; font-weight:500; color:var(--ink-soft); padding:0 4px;}
.table-controls{display:flex; align-items:center; gap:8px; flex-wrap:wrap; margin-bottom:10px;}
.table-controls input[type="search"]{width:auto; flex:1 1 200px; max-width:320px;}
.table-controls select{width:auto; max-width:240px;}
.table-controls .spacer{flex:1;}
.table-controls .count{font-size:12.5px;}
.pager{display:flex; align-items:center; justify-content:flex-end; gap:10px; padding-top:10px; font-size:12.5px;}
table.data a.rowlink{font-weight:600; text-decoration:none;}
table.data a.rowlink:hover{text-decoration:underline;}
.kv{display:grid; grid-template-columns:minmax(120px,max-content) 1fr; gap:6px 16px; margin:0; font-size:13.5px;}
.kv dt{color:var(--ink-muted);} .kv dd{margin:0; min-width:0; overflow-wrap:anywhere;}
.copyable{display:inline-flex; align-items:center; gap:4px; max-width:100%;}
.copyable code, code{font-family:var(--mono); font-size:12.5px; overflow-wrap:anywhere;}
.copyable code{background:var(--surface-2); border:1px solid var(--line-soft); border-radius:6px; padding:3px 7px;}
.note{padding:10px 12px; border-radius:8px; background:var(--accent-wash); font-size:13px; color:var(--ink);}
.note.warn{background:color-mix(in srgb, var(--warning) 18%, var(--surface));}
.banner .spacer{flex:1;}
.meter{min-width:120px;}
.meter-text{display:flex; align-items:center; gap:8px; font-size:13px; font-variant-numeric:tabular-nums;}
.meter-track{height:6px; border-radius:3px; background:var(--accent-wash); margin-top:5px; overflow:hidden;}
.meter-fill{height:100%; border-radius:3px; background:var(--accent);}
.cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px;}
.section-title{display:flex; align-items:center; gap:10px; flex-wrap:wrap;}
.section-title .spacer{flex:1;}
@media(max-width:640px){
  .kv{grid-template-columns:1fr; gap:2px 0;} .kv dd{margin-bottom:8px;}
  .table-controls input[type="search"], .table-controls select{flex:1 1 100%; max-width:none;}
  table.data.stack td .cell-actions{justify-content:flex-end;}
  .banner{padding:9px 12px;}
}

/* ---------- grila de widget-uri (12 coloane; lățimi în trepte fixe) ---------- */
.grid-12{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:14px; align-items:start;}
.grid-12 > .w-3{grid-column:span 3;} .grid-12 > .w-4{grid-column:span 4;} .grid-12 > .w-6{grid-column:span 6;}
.grid-12 > .w-8{grid-column:span 8;} .grid-12 > .w-12{grid-column:span 12;}
@media(max-width:1024px){ .grid-12 > .w-3, .grid-12 > .w-4{grid-column:span 6;} .grid-12 > .w-6, .grid-12 > .w-8{grid-column:span 12;} }
@media(max-width:640px){ .grid-12 > *{grid-column:1 / -1 !important;} }

/* ---------- hartă ---------- */
.map{height:min(68vh, 640px); min-height:320px; border-radius:var(--radius); border:1px solid var(--line-soft); z-index:0;}
.map.small{height:260px; min-height:0;}
.map-pin{border-radius:50%; border:3px solid #fff; box-shadow:0 1px 5px rgba(0,0,0,.5); background:var(--good);}
.map-pin.info{background:var(--accent);} .map-pin.warning{background:var(--warning);} .map-pin.critical{background:var(--critical);}
.map-pin.static{display:inline-block; width:12px; height:12px; border-width:2px;}
.leaflet-container{font-family:var(--font); font-size:13px;}
.leaflet-popup-content-wrapper, .leaflet-popup-tip{background:var(--surface); color:var(--ink);}
.leaflet-popup-content{margin:12px 14px; line-height:1.5;}
.leaflet-popup-content .title{font-weight:600; font-size:14px;}
.vstack{display:flex; flex-direction:column; gap:16px;}
input.inline, select.inline{width:auto; min-width:180px;}
.field-label{display:block;}
.dialog-form .map{margin-top:12px;}

/* ---------- embed Grafana ---------- */
iframe.grafana-embed{display:block; width:100%; height:calc(100vh - var(--topbar-h) - 150px); min-height:520px; border:0;
  border-radius:var(--radius); background:var(--surface);}
