@font-face {
  font-family: Roboto;
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url('/static/fonts/Roboto-Variable.ttf') format('truetype');
}
/* All application styling is centralized here; theme variants change tokens only. */
:root {
  color-scheme: light;
  --ink:#34495e; --muted:#718096; --blue:#3f6f98; --border:#dce3ea;
  --bg:#f5f7fa; --card:#ffffff; --header-bg:#ffffff; --blue-bg:#f8fafc;
  --heading:#365f82; --number:#365f82; --notice-bg:#f2f7fb; --notice-ink:#34495e;
  --input-bg:#ffffff; --row-border:#edf1f4; --chart-text:#718096;
  --chart-grid:#dce3ea; --chart-cpu:#3f6f98; --chart-ram:#7a9a85;
  --link:#376f9e; --button-bg:#3f6f98; --button-hover:#345f83;
  --focus:#8fb3d0; --focus-ring:rgba(63,111,152,.16);
  --scroll-track:#eef1f4; --scroll-thumb:#9aafbd; --scroll-thumb-hover:#6e91ab;
  --control-height:30px; --control-radius:2px;
}
:root[data-theme='dark'] {
  color-scheme: dark;
  --ink:#d8e1e9; --muted:#95a4b2; --blue:#527fa5; --border:#2b3947;
  --bg:#111820; --card:#18212b; --header-bg:#18212b; --blue-bg:#1c2732;
  --heading:#96b9d7; --number:#96b9d7; --notice-bg:#192734; --notice-ink:#d8e1e9;
  --input-bg:#18212b; --row-border:#24313d; --chart-text:#95a4b2;
  --chart-grid:#394d5f; --chart-cpu:#81b4ed; --chart-ram:#89b9a4;
  --link:#91b8d9; --button-bg:#527fa5; --button-hover:#638fb2;
  --focus:#5f89aa; --focus-ring:rgba(95,137,170,.20);
  --scroll-track:#1c2732; --scroll-thumb:#4b6579; --scroll-thumb-hover:#688ba4;
}
:root[data-palette='festa'][data-theme='light'] {
  --ink:#355454; --muted:#708a88; --blue:#417964; --border:#d4e5e3;
  --bg:#f5f9f9; --card:#ffffff; --header-bg:#ffffff; --blue-bg:#f7fbfb;
  --heading:#426f60; --number:#426f60; --notice-bg:#eaf6f6; --notice-ink:#355454;
  --input-bg:#ffffff; --row-border:#e9f2f1; --chart-text:#708a88;
  --chart-grid:#d4e5e3; --chart-cpu:#417964; --chart-ram:#7ca69b;
  --link:#3b7762; --button-bg:#417964; --button-hover:#356b58;
  --focus:#417964; --focus-ring:rgba(47,138,146,.14);
  --scroll-track:#edf5f3; --scroll-thumb:#95b9ad; --scroll-thumb-hover:#659486;
}
:root[data-palette='festa'][data-theme='dark'] {
  --ink:#d7e6e4; --muted:#98adaa; --blue:#638d7b; --border:#2b4140;
  --bg:#101919; --card:#172323; --header-bg:#172323; --blue-bg:#1b2a2a;
  --heading:#9ab6a8; --number:#9ab6a8; --notice-bg:#192c2c; --notice-ink:#d7e6e4;
  --input-bg:#172323; --row-border:#233534; --chart-text:#98adaa;
  --chart-grid:#30514b; --chart-cpu:#8dbfac; --chart-ram:#71a6a0;
  --link:#8eac9f; --button-bg:#638d7b; --button-hover:#76a48f;
  --focus:#638d7b; --focus-ring:rgba(110,167,164,.19);
  --scroll-track:#1b2a2a; --scroll-thumb:#4c7166; --scroll-thumb-hover:#659685;
}
:root[data-palette='pizarra'][data-theme='light'] {
  --ink:#394650; --muted:#6b7b88; --blue:#627588; --border:#d5dce2;
  --bg:#f3f5f6; --card:#fff; --header-bg:#fff; --blue-bg:#f5f7f8;
  --heading:#536c80; --number:#536c80; --notice-bg:#edf1f4; --notice-ink:#394650;
  --input-bg:#fff; --row-border:#e5e9ed; --chart-text:#6b7b88;
  --chart-grid:#d5dce2; --chart-cpu:#627588; --chart-ram:#8a9f9a;
  --link:#587185; --button-bg:#627588; --button-hover:#4c6276;
  --focus:#627588; --focus-ring:rgba(98,117,136,.16);
  --scroll-track:#eceff2; --scroll-thumb:#a4afb9; --scroll-thumb-hover:#8797a4;
}
:root[data-palette='pizarra'][data-theme='dark'] {
  --ink:#d9e0e6; --muted:#a0aeb9; --blue:#7b91a3; --border:#37434f;
  --bg:#161b21; --card:#202831; --header-bg:#202831; --blue-bg:#29333d;
  --heading:#abbac6; --number:#abbac6; --notice-bg:#29333d; --notice-ink:#d9e0e6;
  --input-bg:#202831; --row-border:#313e4a; --chart-text:#a0aeb9;
  --chart-grid:#3f5061; --chart-cpu:#91a5b6; --chart-ram:#88aaa0;
  --link:#9eb0bf; --button-bg:#62798c; --button-hover:#7891a4;
  --focus:#7b91a3; --focus-ring:rgba(123,145,163,.20);
  --scroll-track:#29333d; --scroll-thumb:#526575; --scroll-thumb-hover:#718899;
}
:root[data-palette='verde'][data-theme='light'] {
  --ink:#173d22; --muted:#527e58; --blue:#267a39; --border:#a5cba6;
  --bg:#edf8ec; --card:#fff; --header-bg:#fff; --blue-bg:#f3fbf1;
  --heading:#17662d; --number:#17662d; --notice-bg:#e3f3e4; --notice-ink:#173d22;
  --input-bg:#fff; --row-border:#d4e8d3; --chart-text:#527e58;
  --chart-grid:#b7d7b8; --chart-cpu:#267a39; --chart-ram:#7fa77d;
  --link:#176d34; --button-bg:#267a39; --button-hover:#1e612f;
  --focus:#4b9b57; --focus-ring:rgba(38,122,57,.16);
  --scroll-track:#e7f3e7; --scroll-thumb:#84b58b; --scroll-thumb-hover:#548e60;
}
:root[data-palette='verde'][data-theme='dark'] {
  --ink:#b6ffbf; --muted:#6fd98c; --blue:#65b47c; --border:#1f5a2a;
  --bg:#071008; --card:#0c1710; --header-bg:#0c1710; --blue-bg:#112015;
  --heading:#7cff7d; --number:#7cff7d; --notice-bg:#102115; --notice-ink:#b6ffbf;
  --input-bg:#0c1710; --row-border:#174421; --chart-text:#6fd98c;
  --chart-grid:#1b4825; --chart-cpu:#65b47c; --chart-ram:#74a995;
  --link:#8cff98; --button-bg:#21673a; --button-hover:#2b7948;
  --focus:#65bd83; --focus-ring:rgba(101,189,131,.21);
  --scroll-track:#112015; --scroll-thumb:#295e38; --scroll-thumb-hover:#3c8451;
}
:root[data-palette='ambar'][data-theme='light'] {
  --ink:#54370f; --muted:#84652b; --blue:#a46a12; --border:#e2c78a;
  --bg:#fff8e9; --card:#fff; --header-bg:#fff; --blue-bg:#fffaf0;
  --heading:#87530b; --number:#87530b; --notice-bg:#fff0cd; --notice-ink:#54370f;
  --input-bg:#fff; --row-border:#f0e0bd; --chart-text:#84652b;
  --chart-grid:#e2c78a; --chart-cpu:#a46a12; --chart-ram:#baa176;
  --link:#905c0b; --button-bg:#a46a12; --button-hover:#87530b;
  --focus:#bd882d; --focus-ring:rgba(164,106,18,.17);
  --scroll-track:#fff4dc; --scroll-thumb:#d2b678; --scroll-thumb-hover:#b88d3e;
}
:root[data-palette='ambar'][data-theme='dark'] {
  --ink:#ffd59a; --muted:#d7ad62; --blue:#be9850; --border:#654714;
  --bg:#120d06; --card:#1a130b; --header-bg:#1a130b; --blue-bg:#231a0e;
  --heading:#ffc04d; --number:#ffc04d; --notice-bg:#261b0c; --notice-ink:#ffd59a;
  --input-bg:#1a130b; --row-border:#47320e; --chart-text:#d7ad62;
  --chart-grid:#6b4b1b; --chart-cpu:#c49f57; --chart-ram:#aa8756;
  --link:#ffc96a; --button-bg:#6a4b18; --button-hover:#876023;
  --focus:#bd9654; --focus-ring:rgba(189,150,84,.22);
  --scroll-track:#231a0e; --scroll-thumb:#705329; --scroll-thumb-hover:#94713e;
}
* { box-sizing:border-box; scrollbar-width:thin; scrollbar-color:var(--scroll-thumb) var(--scroll-track); }
html { scrollbar-gutter:stable; background:var(--bg); }
*::-webkit-scrollbar { width:11px; height:11px; background:var(--scroll-track); }
*::-webkit-scrollbar-track { background:var(--scroll-track); }
*::-webkit-scrollbar-thumb { background:var(--scroll-thumb); border:2px solid var(--scroll-track); border-radius:9px; }
*::-webkit-scrollbar-thumb:hover { background:var(--scroll-thumb-hover); }
*::-webkit-scrollbar-corner { background:var(--scroll-track); }
*::-webkit-scrollbar-button { display:none; }
body { margin:0; background:var(--bg); color:var(--ink); font-family:Roboto,'Segoe UI',Arial,sans-serif; font-size:13px; line-height:1.45; }
a { color:var(--link); }
button, input, select, textarea { font:inherit; color:var(--ink); }
button, input:not([type='hidden']), select, textarea { height:var(--control-height); min-height:var(--control-height); border:1px solid var(--border); border-radius:var(--control-radius); }
button { padding:4px 11px; background:var(--button-bg); border-color:var(--button-bg); color:#fff; font-weight:600; cursor:pointer; }
button:hover { background:var(--button-hover); border-color:var(--button-hover); filter:none; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, a:focus-visible { outline:2px solid var(--focus); outline-offset:1px; box-shadow:0 0 0 3px var(--focus-ring); }
input:not([type='hidden']), select, textarea { padding:4px 9px; width:100%; background:var(--input-bg); }
input:not([type='hidden']):hover, textarea:hover { background:var(--blue-bg); border-color:var(--focus); }
input:not([type='hidden']):focus, textarea:focus { background:var(--input-bg); border-color:var(--focus); outline:2px solid var(--focus); outline-offset:1px; box-shadow:0 0 0 3px var(--focus-ring); }
input { min-width:0; }
.ghost { background:var(--blue-bg); color:var(--ink); border-color:var(--border); }
.ghost:hover { color:var(--heading); background:var(--blue-bg); border-color:var(--focus); }
.visually-hidden { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); clip-path:inset(50%); white-space:nowrap; }
.top { position:sticky; top:0; z-index:250; display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:14px; padding:12px 30px; background:var(--header-bg); border-bottom:1px solid var(--border); box-shadow:0 2px 6px rgba(0,0,0,.035); }
.top h1 { font-size:22px; line-height:1.25; margin:3px 0; color:var(--heading); }
.top p { margin:0; color:var(--muted); }
.eyebrow { font-size:11px; letter-spacing:1.4px; color:var(--blue); font-weight:700; }
main { width:100%; max-width:none; padding:0 30px 24px; margin:18px auto; }
.account { display:flex; align-items:center; gap:9px; flex-wrap:wrap; font-size:12px; color:var(--muted); }
.account>span:not(.visually-hidden) { max-width:270px; overflow:hidden; text-overflow:ellipsis; }
.account form { margin:0; }
.login-tools { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.theme-toggle { width:var(--control-height); padding:0; font-size:20px; line-height:24px; }
.appearance-mode { width:var(--control-height); min-width:var(--control-height); }
.dash-top-icon { display:inline-grid; place-items:center; width:var(--control-height); min-width:var(--control-height); padding:0; }
.dash-top-icon svg, .theme-toggle svg { display:block; width:17px; height:17px; stroke:currentColor; stroke-width:1.8; fill:none; stroke-linecap:round; stroke-linejoin:round; }
.notice { margin-bottom:14px; border-left:3px solid var(--blue); background:var(--notice-bg); border-radius:var(--control-radius); padding:8px 12px; font-size:12px; color:var(--notice-ink); }
.kpis { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:14px; }
.kpi,.panel { background:var(--card); border:1px solid var(--border); border-radius:5px; padding:16px 18px; min-width:0; }
.label,.sub { color:var(--muted); }
.number { font-size:26px; font-weight:700; letter-spacing:-.4px; color:var(--number); margin:6px 0; font-variant-numeric:tabular-nums; }
.sub { font-size:12px; }
.kpi-uptime-heading { display:flex; justify-content:space-between; align-items:baseline; gap:9px; white-space:nowrap; }
.kpi-uptime-heading .sub { font-size:11px; text-align:right; }
.kpi-uptime-values { display:flex; justify-content:space-between; align-items:baseline; gap:8px; min-width:0; }
.kpi-uptime-values .number { flex:none; }
.kpi-uptime #uptimeParts { font-variant-numeric:tabular-nums; white-space:nowrap; text-align:right; min-width:0; }
.columns { display:grid; grid-template-columns:1.2fr 1fr; gap:14px; margin-bottom:14px; }
.panel { margin-bottom:14px; }
.columns .panel { margin-bottom:0; }
.panel h2 { margin:0 0 12px; font-size:16px; color:var(--heading); }
.panelhead { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.panelhead h2 { margin:0; }
.muted { font-size:12px; color:var(--muted); }
.small { font-size:12px; }
.chartbox { height:270px; position:relative; margin-top:12px; }
.chartbox canvas { display:block; width:100%; height:100%; cursor:crosshair; }
.legend { display:flex; align-items:center; flex-wrap:wrap; gap:12px; color:var(--muted); font-size:12px; }
.cpu-dot:before,.ram-dot:before { content:''; display:inline-block; width:8px; height:8px; border-radius:50%; background:var(--chart-cpu); margin-right:6px; }
.ram-dot:before { background:var(--chart-ram); }
table { border-collapse:separate; border-spacing:0; width:100%; font-size:12px; }
th { text-align:left; color:var(--muted); font-weight:600; border-bottom:1px solid var(--border); padding:7px 8px; }
td { border-bottom:1px solid var(--row-border); padding:8px; vertical-align:top; }
tbody tr:last-child td { border-bottom:0; }
.tablewrap { max-width:100%; max-height:none; overflow:visible; padding-right:0; }
.dash-grid-scroll { overflow:auto; max-width:100%; max-height:min(54vh,560px); scrollbar-gutter:stable; }
.dash-grid-tools { position:sticky; top:var(--dash-sticky-top,0px); z-index:30; display:flex; align-items:center; gap:9px; margin:0; padding:8px 0 9px; background:var(--card); }
.dash-grid-search-wrap { position:relative; flex:1 1 180px; max-width:440px; min-width:100px; }
.dash-grid-search-wrap .dash-grid-search { width:100%; padding-right:33px; transition:background-color .14s ease,border-color .14s ease,box-shadow .14s ease; }
.dash-grid-clear { position:absolute; right:4px; top:3px; height:24px; min-height:24px; width:24px; padding:0; background:transparent; border:0; color:var(--muted); font-size:19px; line-height:1; }
.dash-grid-clear:hover { background:var(--blue-bg); color:var(--heading); }
.dash-grid-clear[hidden] { display:none; }
.dash-grid-count { margin-left:auto; white-space:nowrap; font-variant-numeric:tabular-nums; }
.dash-grid { table-layout:fixed; }
.dash-grid[data-dash-grid='processes'] td:first-child { white-space:normal; overflow-wrap:break-word; }
.dash-grid th[data-align='right'], .dash-grid td[data-align='right'] { text-align:right; font-variant-numeric:tabular-nums; }
.dash-grid th[data-align='center'], .dash-grid td[data-align='center'] { text-align:center; }
.dash-grid th[data-align='right'] .dash-grid-sort { justify-content:flex-end; text-align:right; }
.dash-grid th[data-align='center'] .dash-grid-sort { justify-content:center; text-align:center; }
.dash-grid th { position:relative; user-select:none; background:var(--card); white-space:nowrap; vertical-align:middle; height:35px; padding:3px 7px; cursor:grab; touch-action:pan-y; }
.dash-grid td { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dash-grid thead th { position:sticky; top:0; z-index:2; border-bottom:1px solid var(--border); }
.dash-grid-sort { width:auto; max-width:calc(100% - 8px); min-width:0; height:27px; min-height:27px; padding:0 2px; color:var(--muted); background:transparent; border:0; font-size:12px; font-weight:600; text-align:left; display:inline-flex; align-items:center; gap:4px; vertical-align:middle; cursor:pointer; }
.dash-grid-sort:hover { color:var(--ink); background:var(--blue-bg); }
.dash-grid-sort-label { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dash-sort-state { font-size:10px; font-variant-numeric:tabular-nums; flex:none; color:var(--blue); }
.dash-grid th.dash-drop-target { box-shadow:inset 3px 0 var(--blue); background:var(--blue-bg); }
.dash-grid th.dash-dragging { z-index:5; background:var(--blue-bg); box-shadow:0 3px 9px rgba(0,0,0,.12); cursor:grabbing; }
.dash-qtip { position:fixed; z-index:3000; max-width:min(320px,calc(100vw - 20px)); padding:6px 8px; font-size:12px; line-height:1.3; background:var(--card); color:var(--ink); border:1px solid var(--border); border-radius:3px; box-shadow:0 6px 18px rgba(0,0,0,.14); white-space:pre-line; overflow-wrap:anywhere; pointer-events:none; }
.dash-qtip-chart { width:202px; font-variant-numeric:tabular-nums; }
.dash-qtip[hidden] { display:none; }
.dash-grid-resize { position:absolute; top:0; right:0; bottom:0; width:6px; z-index:4; cursor:col-resize; touch-action:none; }
.dash-grid-resize:hover,.dash-grid-resize.dash-resizing { background:color-mix(in srgb,var(--blue) 34%,transparent); }
.dash-grid tbody tr[data-row-key] { cursor:default; }
.dash-grid tbody#jobs tr[data-row-key] { cursor:pointer; }
.dash-grid tbody#jobs tr[data-row-key]:hover { background:var(--blue-bg); }
.dash-grid tbody tr[hidden] { display:none; }
.dash-grid-empty { color:var(--muted); text-align:center; }
.dash-job-dialog { border:1px solid var(--border); border-radius:4px; background:var(--card); color:var(--ink); width:min(630px,calc(100vw - 36px)); max-height:80vh; overflow:auto; padding:18px; }
.dash-job-dialog::backdrop { background:rgba(0,0,0,.45); }
.dash-dialog-head { display:flex; align-items:center; justify-content:space-between; gap:15px; }
.dash-dialog-head h2 { margin:0; color:var(--heading); }
.dash-job-detail { display:grid; grid-template-columns:minmax(130px,1fr) minmax(140px,2fr); gap:0 16px; margin:14px 0 0; }
.dash-job-detail dt { border-bottom:1px solid var(--row-border); padding:7px 0; margin:0; overflow-wrap:anywhere; color:var(--muted); }
.dash-job-detail dd { border-bottom:1px solid var(--row-border); padding:7px 0; margin:0; overflow-wrap:anywhere; font-variant-numeric:tabular-nums; }
.dash-select { position:relative; display:inline-block; width:100%; min-width:0; }
.account .dash-select { width:auto; min-width:145px; }
.account #language + .dash-select-trigger { min-width:65px; }
.account .dash-select:has(#language) { min-width:65px; width:65px; }
.panelhead .dash-select { width:120px; }
.dash-select select.dash-select-native { position:absolute; width:1px; height:1px; min-height:1px; padding:0; margin:0; opacity:0; pointer-events:none; clip-path:inset(50%); }
.dash-select-trigger { width:100%; display:flex; align-items:center; justify-content:space-between; gap:7px; color:var(--ink); background:var(--input-bg); border:1px solid var(--border); border-radius:var(--control-radius); padding:3px 8px; font-weight:400; text-align:left; }
.dash-select-trigger:hover,.dash-select.is-open .dash-select-trigger { color:var(--ink); background:var(--blue-bg); border-color:var(--focus); }
.dash-select-value { min-width:0; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.dash-select-chevron { flex:none; display:block; width:14px; height:14px; color:var(--muted); transition:transform .14s ease; }
.dash-select.is-open .dash-select-chevron { transform:rotate(180deg); }
.dash-select-chevron svg { display:block; width:100%; height:100%; stroke:currentColor; fill:none; stroke-width:2; stroke-linejoin:round; stroke-linecap:round; }
.dash-select-menu { position:absolute; top:calc(100% + 3px); left:0; right:auto; width:max(100%,max-content); min-width:100%; max-width:min(300px,calc(100vw - 36px)); max-height:255px; overflow:auto; padding:3px; z-index:310; background:var(--card); border:1px solid var(--border); border-radius:var(--control-radius); box-shadow:0 8px 16px rgba(0,0,0,.13); }
.dash-select-menu[hidden] { display:none; }
.dash-select-option { display:block; width:100%; height:29px; min-height:29px; color:var(--ink); background:transparent; border:0; border-radius:var(--control-radius); padding:3px 7px; text-align:left; font-weight:400; white-space:nowrap; }
.dash-select-option:hover,.dash-select-option:focus-visible { color:var(--heading); background:var(--blue-bg); outline:1px solid var(--focus); box-shadow:none; }
.dash-select-option[aria-selected='true'] { background:var(--button-bg); color:#ffffff; font-weight:600; }
.center-form { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:12px; }
.center-form input[name='display_name'] { grid-column:span 2; }
.center-form button { grid-column:span 2; }
footer { text-align:center; color:var(--muted); font-size:12px; padding:14px; }
.login { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px; }
.login-card { background:var(--card); max-width:470px; width:100%; border:1px solid var(--border); border-radius:5px; padding:28px; }
.login h1 { color:var(--heading); font-size:24px; }
.login p { color:var(--muted); }
.login form { display:grid; gap:10px; margin-top:24px; }
.login input { font-size:24px; letter-spacing:7px; text-align:center; }
.error { color:#cf5353; font-size:13px; margin-top:12px; min-height:16px; }
@media (max-width:950px) {
  .kpis { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .columns { grid-template-columns:1fr; }
  .top { align-items:flex-start; }
}
@media (max-width:600px) {
  .top { padding:14px 30px; }
  main { padding:0 30px 20px; }
  .kpi,.panel { padding:12px; }
  .number { font-size:23px; }
  .kpi-uptime-heading { flex-wrap:nowrap; }
  .account { gap:6px; }
  .account>span:not(.visually-hidden) { width:100%; max-width:100%; }
  .dash-select-menu { min-width:130px; }
}
