@font-face{font-family:Space Grotesk;src:url(/fonts/space-grotesk-latin.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122}@font-face{font-family:Space Grotesk;src:url(/fonts/space-grotesk-latin-ext.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0100-024F,U+1E00-1EFF,U+2020}@font-face{font-family:Inter;src:url(/fonts/inter-latin.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122}@font-face{font-family:Inter;src:url(/fonts/inter-latin-ext.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap;unicode-range:U+0100-024F,U+1E00-1EFF,U+2020}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2");font-weight:400 600;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono-latin-ext.woff2) format("woff2");font-weight:400 600;font-style:normal;font-display:swap;unicode-range:U+0100-024F,U+1E00-1EFF,U+2020}:root{--bg: #0a0a0a;--bg-elev: #111111;--fg: #f5f1ea;--fg-dim: #a8a8a2;--muted: #6e6e68;--accent: #ff4a1c;--accent-dim: #c53b15;--line: rgba(245, 241, 234, .12);--line-hi: rgba(245, 241, 234, .28);--ff-display: "Space Grotesk", ui-sans-serif, system-ui, sans-serif;--ff-body: "Inter", ui-sans-serif, system-ui, sans-serif;--ff-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;--color-success: #4ade80;--color-danger: #ff6b52;--color-warning: #f5b942;--color-info: #6fb7ff;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 16px rgba(0, 0, 0, .45);--shadow-lg: 0 16px 40px rgba(0, 0, 0, .55);--shadow-accent: 0 10px 26px rgba(255, 74, 28, .28)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}dialog{margin:auto}body{background:var(--bg);color:var(--fg);font-family:var(--ff-body);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}table{border-collapse:collapse;width:100%}::selection{background:var(--accent);color:var(--bg)}.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--radius-pill);font-size:12px;font-weight:600;white-space:nowrap}.badge-g{background:#4ade8024;color:var(--color-success)}.badge-b{background:#6fb7ff24;color:var(--color-info)}.badge-r{background:#ff6b5224;color:var(--color-danger)}.badge-j{background:#f5b94229;color:var(--color-warning)}.badge-n{background:#f5f1ea14;color:var(--muted)}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:none;border-radius:var(--radius-sm);font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,opacity .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#0a0a0a}.btn-primary:hover:not(:disabled){background:var(--accent-dim)}.btn-ghost{background:transparent;color:var(--fg);border:1px solid var(--line)}.btn-ghost:hover:not(:disabled){background:#f5f1ea0f}.btn-danger{background:var(--color-danger);color:#0a0a0a}.btn-sm{padding:4px 10px;font-size:12px}.input{padding:7px 11px;border:1.5px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-elev);color:var(--fg);font-size:14px;outline:none;transition:border-color .15s}.input:focus{border-color:var(--accent)}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:16px 20px}.page-wrap{max-width:1200px;margin:0 auto;padding:24px 16px}@media (max-width: 600px){.page-wrap{padding:16px 12px}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:root{--gf-sidebar: 248px;--gf-panel-pad: 24px;--gf-gap: 20px}.gf-app{display:grid;grid-template-columns:var(--gf-sidebar) 1fr;min-height:100vh;background:var(--bg)}.gf-side{background:var(--bg-elev);color:var(--fg);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;border-right:1px solid var(--line)}.gf-brand{display:flex;align-items:center;gap:12px;padding:22px 22px 18px;border:0;background:transparent;width:100%;text-align:left;cursor:pointer}.gf-brand .gf-brand-mark{width:36px;height:36px;border-radius:var(--radius-sm);background:var(--accent);color:#0a0a0a;display:grid;place-items:center;font-family:var(--ff-display);font-weight:700;font-size:16px;flex:0 0 auto}.gf-brand .gf-brand-name{font-family:var(--ff-display);font-weight:700;font-size:17px;color:var(--fg);letter-spacing:-.01em;line-height:1}.gf-brand .gf-brand-sub{font-family:var(--ff-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-top:3px}.gf-nav{padding:8px 12px;flex:1;overflow-y:auto}.gf-nav-group{margin-top:18px}.gf-nav-group:first-child{margin-top:4px}.gf-nav-label{font-family:var(--ff-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);padding:0 12px 8px}.gf-nav-item{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;color:var(--fg-dim);text-align:left;font-size:14.5px;font-weight:500;font-family:var(--ff-body);padding:10px 12px;border-radius:var(--radius-sm);cursor:pointer;position:relative;transition:background .14s ease,color .14s ease}.gf-nav-item svg{width:19px;height:19px;flex:0 0 auto;stroke-width:1.9}.gf-nav-item:hover{background:#f5f1ea0f;color:var(--fg)}.gf-nav-item.is-active{background:#ff4a1c24;color:var(--fg)}.gf-nav-item.is-active:before{content:"";position:absolute;left:-12px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}.gf-nav-item.is-active svg{color:var(--accent)}.gf-side-foot{border-top:1px solid var(--line);padding:14px 18px;display:flex;align-items:center;gap:11px}.gf-side-foot .gf-ava{width:34px;height:34px;border-radius:var(--radius-pill);background:var(--accent);color:#0a0a0a;display:grid;place-items:center;font-family:var(--ff-display);font-weight:700;font-size:14px;flex:0 0 auto}.gf-side-foot .gf-foot-txt{min-width:0;flex:1}.gf-side-foot .nm{font-size:13.5px;color:var(--fg);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gf-side-foot .rl{font-size:11.5px;color:var(--muted)}.gf-side-foot .gf-logout{border:0;background:transparent;color:var(--muted);cursor:pointer;padding:6px;border-radius:var(--radius-sm);display:grid;place-items:center}.gf-side-foot .gf-logout:hover{color:var(--fg);background:#f5f1ea0f}.gf-side-foot .gf-logout svg{width:17px;height:17px;stroke-width:1.9}.gf-version{padding:9px 18px 13px;font-family:var(--ff-mono);font-size:11px;color:var(--muted);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gf-main{display:flex;flex-direction:column;min-width:0}.gf-top{display:flex;align-items:center;gap:16px;padding:16px 32px;background:#0a0a0ad1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.gf-top .gf-eyebrow{font-family:var(--ff-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);font-weight:600}.gf-top h1{font-family:var(--ff-display);font-weight:700;font-size:23px;color:var(--fg);margin:2px 0 0;letter-spacing:-.01em}.gf-top .gf-spacer{flex:1}.gf-content{padding:28px 32px 56px;max-width:1320px;width:100%}.gf-pill{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 14px;background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius-pill);font-size:13.5px;font-weight:600;color:var(--fg);font-family:var(--ff-body);cursor:pointer;transition:border-color .14s,box-shadow .14s}.gf-pill:hover:not(:disabled){border-color:var(--accent)}.gf-pill:disabled{opacity:.55;cursor:not-allowed}.gf-pill svg{width:16px;height:16px;stroke-width:2;color:var(--fg-dim)}.gf-input{height:38px;padding:0 14px 0 36px;border:1px solid var(--line);border-radius:var(--radius-pill);font-family:var(--ff-body);font-size:13.5px;color:var(--fg);background:var(--bg-elev)}.gf-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #ff4a1c2e}.gf-btn{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 16px;border:0;border-radius:var(--radius-pill);font-weight:700;font-size:13.5px;cursor:pointer;font-family:var(--ff-body);transition:background .14s,box-shadow .14s,transform .1s}.gf-btn svg{width:16px;height:16px;stroke-width:2.1}.gf-btn:active{transform:translateY(1px)}.gf-btn:disabled{opacity:.55;cursor:not-allowed}.gf-btn-accent{background:var(--accent);color:#0a0a0a;box-shadow:var(--shadow-accent)}.gf-btn-accent:hover:not(:disabled){background:var(--accent-dim);color:var(--fg)}.gf-btn-ghost{background:transparent;color:var(--fg);border:1.5px solid var(--line)}.gf-btn-ghost:hover:not(:disabled){border-color:var(--fg)}.gf-btn-success{background:var(--color-success);color:#0a0a0a}.gf-btn-info{background:var(--color-info);color:#0a0a0a}.gf-btn-danger{background:var(--color-danger);color:#0a0a0a}.gf-btn-sm{height:30px;padding:0 11px;font-size:12.5px}.gf-btn-icon{padding:0;width:30px;justify-content:center}.gf-grid{display:grid;gap:var(--gf-gap)}.gf-panel{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--gf-panel-pad)}.gf-panel-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px;flex-wrap:wrap}.gf-panel-head .gf-spacer{flex:1}.gf-panel-title{font-family:var(--ff-display);font-weight:600;font-size:17px;color:var(--fg);margin:0}.gf-panel-sub{font-size:13px;color:var(--muted);margin:3px 0 0}.gf-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gf-gap)}.gf-kpi{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:20px 22px;display:flex;flex-direction:column;gap:10px;text-align:left}button.gf-kpi{cursor:pointer;transition:border-color .14s,box-shadow .14s,transform .1s;font-family:var(--ff-body)}button.gf-kpi:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-2px)}.gf-kpi .lbl{font-family:var(--ff-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);font-weight:600}.gf-kpi .val{font-family:var(--ff-display);font-weight:700;font-size:28px;line-height:1;color:var(--fg);letter-spacing:-.015em;white-space:nowrap}.gf-kpi .sub{font-family:var(--ff-mono);font-size:12.5px;color:var(--muted)}.gf-kpi .row{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.gf-table-wrap{overflow-x:auto}table.gf-table{width:100%;border-collapse:collapse;font-size:13.5px}.gf-table th{text-align:left;font-weight:600;color:var(--muted);font-family:var(--ff-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;padding:0 16px 12px;border-bottom:1px solid var(--line);white-space:nowrap}.gf-table th.num,.gf-table td.num{text-align:right}.gf-table th.ctr,.gf-table td.ctr{text-align:center}.gf-table td{padding:13px 16px;border-bottom:1px solid var(--line);color:var(--fg-dim);vertical-align:middle}.gf-table td.tight{padding:7px 12px}.gf-table tbody tr:hover{background:#f5f1ea08}.gf-table tbody tr.is-selected{background:#ff4a1c14}.gf-table tbody tr.is-selected:hover{background:#ff4a1c1f}.gf-table tbody tr:last-child td{border-bottom:0}.gf-table .strong{font-weight:600;color:var(--fg)}.gf-table .mono{font-family:var(--ff-mono);font-variant-numeric:tabular-nums}.gf-th-sort{cursor:pointer;-webkit-user-select:none;user-select:none}.gf-th-sort:hover{color:var(--fg)}.gf-badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:3px 10px;border-radius:var(--radius-pill);white-space:nowrap}.gf-badge .dot{width:7px;height:7px;border-radius:50%;background:currentColor}.gf-badge.ok{color:var(--color-success);background:#4ade8024}.gf-badge.wait{color:var(--color-warning);background:#f5b94224}.gf-badge.info{color:var(--color-info);background:#6fb7ff24}.gf-badge.danger{color:var(--color-danger);background:#ff6b5224}.gf-badge.neutral{color:var(--muted);background:#f5f1ea0f}.gf-chip-tabs{display:inline-flex;background:#f5f1ea0f;border-radius:var(--radius-pill);padding:3px;gap:2px;flex-wrap:wrap}.gf-chip-tab{border:0;background:transparent;font-family:var(--ff-body);font-weight:600;font-size:13px;color:var(--muted);padding:6px 14px;border-radius:var(--radius-pill);cursor:pointer}.gf-chip-tab.is-active{background:var(--bg);color:var(--fg);box-shadow:var(--shadow-sm)}.gf-empty{color:var(--muted);font-size:14px;padding:40px;text-align:center}.gf-view{opacity:1}.gf-overview-chart{width:100%;height:auto;display:block}.gf-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:13px;color:var(--fg-dim);margin-bottom:8px}.gf-legend-item{display:inline-flex;align-items:center;gap:7px}.gf-legend-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}.gf-note{font-size:12.5px;color:var(--color-warning);background:#f5b9421a;border:1px solid rgba(245,185,66,.25);border-radius:var(--radius-sm);padding:8px 12px;margin-top:10px}@media (max-width: 1100px){.gf-kpis{grid-template-columns:repeat(2,1fr)}}@media (max-width: 820px){.gf-app{grid-template-columns:72px 1fr}.gf-side{--gf-sidebar: 72px}.gf-brand{padding:18px 0;justify-content:center}.gf-brand .gf-brand-text,.gf-nav-label,.gf-nav-item span.gf-nav-text,.gf-side-foot .gf-foot-txt{display:none}.gf-nav-item{justify-content:center}.gf-content{padding:20px 16px 48px}.gf-top{padding:14px 16px}}.gf-login{min-height:100vh;display:grid;place-items:center;background:var(--bg);padding:24px}.gf-login-card{width:100%;max-width:360px;background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:40px 32px;text-align:center}.gf-login-mark{width:56px;height:56px;margin:0 auto 20px;border-radius:var(--radius-md);background:var(--accent);color:#0a0a0a;display:grid;place-items:center;font-family:var(--ff-display);font-weight:700;font-size:24px}.gf-login-card h1{font-family:var(--ff-display);font-weight:700;font-size:22px;color:var(--fg);margin-bottom:6px}.gf-login-card p{font-size:13.5px;color:var(--muted);margin-bottom:28px}.gf-login-err{margin-top:16px;font-size:12.5px;color:var(--color-danger)}
