:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f5f4f0;--surface:#fff;--surface-2:#f0eee8;--line:#dedbd2;--line-strong:#c5c1b5;--ink:#1b1f24;--ink-2:#4a5159;--ink-3:#6e757d;--brand:#0f2742;--brand-2:#1d3d63;--brand-ink:#fff;--accent:#b08a3e;--ok:#1e7a4c;--ok-bg:#e5f3ea;--warn:#8a5a00;--warn-bg:#fdf1d8;--bad:#a3261f;--bad-bg:#fbe7e5;--info:#1f5d99;--info-bg:#e6eff9;--demo:#b4540a;--radius:12px;--radius-sm:8px;--shadow:0 1px 2px #0f27420f, 0 2px 8px #0f27420d;--tap:44px;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font:16px/1.45 var(--font);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}h1,h2,h3,h4{margin:0 0 .5rem;line-height:1.2}h1{font-size:1.45rem}h2{font-size:1.15rem}h3{font-size:1rem}p{margin:0 0 .6rem}a{color:var(--info)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline-offset:2px;outline:3px solid #5b9bd5}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--ink-3)}.small{font-size:.85rem}.tiny{font-size:.78rem}.nowrap{white-space:nowrap}.num{font-variant-numeric:tabular-nums}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.row.between{justify-content:space-between}.stack{flex-direction:column;gap:.75rem;display:flex}.grid{gap:.75rem;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr));gap:.75rem;display:grid}.grid-kpi{grid-template-columns:repeat(auto-fill,minmax(min(160px,46%),1fr));gap:.6rem;display:grid}.spacer{flex:1}.app{min-height:100vh;display:flex}.sidebar{background:var(--brand);color:#dfe6ef;flex:0 0 232px;width:232px;height:100vh;padding:1rem .75rem;display:none;position:sticky;top:0;overflow-y:auto}.sidebar .brand{color:#fff;padding:.25rem .5rem 1rem;font-size:1.05rem;font-weight:700}.sidebar .brand small{color:#9fb0c4;font-size:.78rem;font-weight:400;display:block}.sidebar nav a{color:#dfe6ef;min-height:var(--tap);border-radius:8px;align-items:center;gap:.6rem;padding:.6rem .7rem;text-decoration:none;display:flex}.sidebar nav a:hover{background:#ffffff12}.sidebar nav a.active{color:#fff;background:#ffffff24;font-weight:600}.sidebar .sep{background:#ffffff1f;height:1px;margin:.6rem .4rem}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{z-index:20;background:var(--surface);border-bottom:1px solid var(--line);min-height:56px;padding:.5rem .9rem;padding-top:max(.5rem, env(safe-area-inset-top));align-items:center;gap:.5rem;display:flex;position:sticky;top:0}.topbar h1{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:1.1rem;overflow:hidden}.content{padding:1rem .9rem calc(88px + var(--safe-bottom));width:100%;max-width:1280px;margin:0 auto}.bottomnav{z-index:30;background:var(--surface);border-top:1px solid var(--line);padding-bottom:var(--safe-bottom);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.bottomnav a,.bottomnav button{min-height:58px;color:var(--ink-3);cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:.72rem;text-decoration:none;display:flex}.bottomnav a.active,.bottomnav button.active{color:var(--brand);font-weight:600}.bottomnav .plus span.ic{background:var(--brand);color:#fff;border-radius:50%;place-items:center;width:38px;height:38px;display:grid}.ic{place-items:center;width:22px;height:22px;display:inline-grid}.ic svg{width:22px;height:22px}@media (min-width:960px){.sidebar{display:block}.bottomnav{display:none}.content{padding:1.25rem 1.5rem 2rem}.topbar{padding:.6rem 1.5rem}.only-mobile{display:none!important}}@media (max-width:959px){.only-desktop{display:none!important}}.banner{flex-wrap:wrap;align-items:center;gap:.5rem;padding:.55rem .9rem;font-size:.88rem;display:flex}.banner.demo{background:var(--demo);color:#fff;font-weight:600}.banner.offline{background:var(--bad);color:#fff}.banner.info{background:var(--info-bg);color:var(--info)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;padding:1rem}.card.flat{box-shadow:none}.card h2{align-items:center;gap:.4rem;display:flex}.card+.card{margin-top:.75rem}.section{margin-bottom:1.1rem}.section-title{justify-content:space-between;align-items:baseline;gap:.5rem;margin:.25rem 0 .6rem;display:flex}.section-title h2{margin:0}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-width:0;padding:.75rem .85rem}.kpi .label{color:var(--ink-2);justify-content:space-between;align-items:flex-start;gap:.25rem;font-size:.8rem;display:flex}.kpi .value{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin-top:.15rem;font-size:1.45rem;font-weight:700}.kpi .sub{color:var(--ink-3);margin-top:.1rem;font-size:.78rem}.kpi.missing .value{color:var(--ink-3);font-size:1.1rem}.btn{min-height:var(--tap);border:1px solid var(--line-strong);background:var(--surface);color:var(--ink);cursor:pointer;text-align:center;touch-action:manipulation;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;padding:.5rem .95rem;font-weight:600;line-height:1.15;text-decoration:none;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.btn.primary:hover{background:var(--brand-2)}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.btn.danger{background:var(--surface);border-color:var(--bad);color:var(--bad)}.btn.danger.solid{background:var(--bad);color:#fff}.btn.ghost{background:0 0;border-color:#0000}.btn.small{min-height:36px;padding:.3rem .65rem;font-size:.88rem}.btn.wa{color:#fff;background:#1f7a45;border-color:#1f7a45}.btn.block{width:100%}.btn[disabled]{opacity:.55;cursor:not-allowed}.btn .spin{border:2px solid;border-right-color:#0000;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.field{flex-direction:column;gap:.3rem;min-width:0;display:flex}.field>label,.field>.label{color:var(--ink-2);font-size:.88rem;font-weight:600}.field .hint{color:var(--ink-3);font-size:.8rem}.field .err{color:var(--bad);font-size:.82rem}.input,select.input,textarea.input{width:100%;min-height:var(--tap);border:1px solid var(--line-strong);background:#fff;border-radius:10px;padding:.55rem .7rem;font-size:16px}textarea.input{resize:vertical;min-height:88px}.input:focus{border-color:var(--info);outline:none;box-shadow:0 0 0 3px #1f5d992e}.checkbox{min-height:var(--tap);cursor:pointer;align-items:flex-start;gap:.55rem;padding:.4rem 0;display:flex}.checkbox input{flex:none;width:22px;height:22px;margin:.1rem 0 0}.seg{flex-wrap:wrap;gap:.35rem;display:flex}.seg button{border:1px solid var(--line-strong);cursor:pointer;touch-action:manipulation;background:#fff;border-radius:999px;min-height:40px;padding:.35rem .75rem;font-size:.9rem}.seg button[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}.seg button.pos[aria-pressed=true]{background:var(--ok);border-color:var(--ok)}.seg button.neg[aria-pressed=true]{background:var(--bad);border-color:var(--bad)}.chips{scrollbar-width:thin;-webkit-overflow-scrolling:touch;gap:.4rem;padding-bottom:.25rem;display:flex;overflow-x:auto}.chip{border:1px solid var(--line-strong);cursor:pointer;white-space:nowrap;background:#fff;border-radius:999px;flex:none;min-height:38px;padding:.3rem .75rem;font-size:.88rem}.chip[aria-pressed=true]{background:var(--brand);color:#fff;border-color:var(--brand)}.chip .count{margin-left:.25rem;font-weight:700}.badge{background:var(--surface-2);color:var(--ink-2);white-space:nowrap;border-radius:999px;align-items:center;gap:.25rem;padding:.12rem .5rem;font-size:.76rem;font-weight:600;display:inline-flex}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.brand{background:var(--brand);color:#fff}.alert{border-radius:var(--radius-sm);border:1px solid;padding:.7rem .85rem;font-size:.9rem}.alert.warn{background:var(--warn-bg);color:#5c3d00;border-color:#f1d9a4}.alert.bad{background:var(--bad-bg);color:#7a1b15;border-color:#f0c4bf}.alert.info{background:var(--info-bg);color:#173f68;border-color:#c5d8ee}.alert.ok{background:var(--ok-bg);color:#14512f;border-color:#bfe0cb}.alert ul{margin:.3rem 0 0;padding-left:1.1rem}.list{flex-direction:column;gap:.5rem;display:flex}.item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);color:inherit;align-items:center;gap:.7rem;min-height:60px;padding:.75rem .85rem;text-decoration:none;display:flex}a.item:hover{border-color:var(--line-strong);background:#fcfbf8}.item .grow{flex:1;min-width:0}.item .title{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.item .meta{color:var(--ink-3);flex-wrap:wrap;gap:.4rem;font-size:.82rem;display:flex}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);overflow-x:auto}table.t{border-collapse:collapse;width:100%;font-size:.9rem}table.t th,table.t td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.55rem .65rem}table.t th{text-transform:uppercase;letter-spacing:.02em;color:var(--ink-3);white-space:nowrap;background:#faf9f6;font-size:.78rem;position:sticky;top:0}table.t td.r,table.t th.r{text-align:right}table.t tr:last-child td{border-bottom:0}table.t tr.clickable{cursor:pointer}table.t tr.clickable:hover td{background:#fbfaf6}.empty{text-align:center;color:var(--ink-2);border:1px dashed var(--line-strong);border-radius:var(--radius);background:#fbfaf7;padding:1.5rem 1rem}.empty h3{color:var(--ink)}.board{grid-auto-columns:minmax(230px,1fr);grid-auto-flow:column;gap:.6rem;padding-bottom:.5rem;display:grid;overflow-x:auto}.board .col{background:var(--surface-2);border-radius:var(--radius);min-height:120px;padding:.5rem}.board .col h3{justify-content:space-between;margin:0;padding:.2rem .3rem .5rem;font-size:.85rem;display:flex}.board .mini{border:1px solid var(--line);color:inherit;background:#fff;border-radius:10px;margin-bottom:.45rem;padding:.5rem .6rem;text-decoration:none;display:block}.board .mini:hover{border-color:var(--line-strong)}.bars{flex-direction:column;gap:.45rem;display:flex}.bar-row{grid-template-columns:minmax(90px,34%) 1fr auto;align-items:center;gap:.5rem;font-size:.88rem;display:grid}.bar-row .track{background:var(--surface-2);border-radius:6px;height:14px;overflow:hidden}.bar-row .fill{background:var(--brand-2);border-radius:6px;height:100%}.bar-row .fill.alt{background:var(--accent)}.overlay{z-index:60;background:#0c141e73;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);width:100%;max-width:620px;max-height:92vh;padding:1rem 1rem calc(1rem + var(--safe-bottom));border-radius:16px 16px 0 0;overflow-y:auto;box-shadow:0 -4px 30px #0000002e}.sheet header{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.sheet header h2{flex:1;margin:0}.sheet footer{bottom:calc(-1rem - var(--safe-bottom));background:var(--surface);flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:1rem;padding:.6rem 0 0;display:flex;position:sticky}@media (min-width:700px){.overlay{align-items:center;padding:1rem}.sheet{border-radius:16px}}.toast-area{left:50%;bottom:calc(76px + var(--safe-bottom));z-index:80;flex-direction:column;gap:.4rem;width:min(520px,100% - 1.5rem);display:flex;position:fixed;transform:translate(-50%)}@media (min-width:960px){.toast-area{bottom:1.2rem}}.toast{color:#fff;background:#1b1f24;border-radius:10px;align-items:flex-start;gap:.6rem;padding:.7rem .9rem;font-size:.92rem;display:flex;box-shadow:0 6px 20px #0003}.toast.bad{background:var(--bad)}.toast.ok{background:#14512f}.toast button{color:#fff;cursor:pointer;background:0 0;border:0;min-height:28px;font-weight:700}details.info{color:var(--ink-2);font-size:.85rem}details.info summary{cursor:pointer;color:var(--info);align-items:center;gap:.2rem;min-height:32px;list-style:none;display:inline-flex}details.info summary::-webkit-details-marker{display:none}details.info[open]{background:var(--info-bg);border-radius:8px;padding:.4rem .6rem}.help-btn{color:var(--info);cursor:pointer;background:0 0;border:0;min-height:24px;padding:0 .2rem;font-size:.8rem}.tabs{border-bottom:1px solid var(--line);gap:.3rem;margin-bottom:1rem;display:flex;overflow-x:auto}.tabs button{cursor:pointer;white-space:nowrap;min-height:var(--tap);color:var(--ink-2);background:0 0;border:0;border-bottom:3px solid #0000;padding:.55rem .8rem;font-weight:600}.tabs button[aria-selected=true]{color:var(--brand);border-bottom-color:var(--brand)}.status-dot{border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.status-dot.ok{background:var(--ok)}.status-dot.warn{background:#d19a1a}.status-dot.bad{background:var(--bad)}.status-dot.off{background:#9aa1a8}.timeline{margin:0;padding:0;list-style:none}.timeline li{border-left:2px solid var(--line);padding:.5rem 0 .5rem .9rem;font-size:.88rem;position:relative}.timeline li:before{content:"";background:var(--line-strong);border-radius:50%;width:10px;height:10px;position:absolute;top:.8rem;left:-6px}.login-wrap{background:linear-gradient(180deg, #0f2742 0 38%, var(--bg) 38%);place-items:center;min-height:100vh;padding:1rem;display:grid}.login-card{width:100%;max-width:420px}.code{background:var(--surface-2);overflow-wrap:anywhere;border-radius:8px;padding:.5rem .6rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem}.pre-wrap{white-space:pre-wrap}hr.sep{border:0;border-top:1px solid var(--line);margin:1rem 0}.banner.demo .btn[aria-pressed=false]{color:#fff;background:0 0;border-color:#fff9}.banner.demo .btn[aria-pressed=true]{color:var(--demo);background:#fff;border-color:#fff}@media (max-width:959px){.banner.demo{padding:.35rem .75rem;font-size:.78rem}.banner.demo .btn{padding:.15rem .6rem;font-size:.8rem;min-height:30px!important}}.grid-2>*,.stack>*{min-width:0}select.input{text-overflow:ellipsis;max-width:100%}
