:root{--bg:#f6f7f9;--surface:#fff;--text:#1f2430;--muted:#6b7280;--border:#e2e5ea;--accent:#b45309;--accent-hover:#92400e;--error:#b91c1c;--chart-1:#2a78d6;--chart-2:#008300;--chart-3:#e87ba4;--chart-4:#eda100;--chart-5:#1baf7a;--chart-6:#eb6834;--chart-7:#4a3aa7;--chart-8:#e34948;--chart-other:#898781;--chart-grid:#e7e9ee;--chart-axis:#c9cdd6;--chart-cursor:#1f24300d;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font:15px/1.5 system-ui,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#14161b;--surface:#1d2027;--text:#e6e8ec;--muted:#9aa1ad;--border:#2e323b;--accent:#d97706;--accent-hover:#f59e0b;--error:#f87171;--chart-1:#3987e5;--chart-2:#008300;--chart-3:#d55181;--chart-4:#c98500;--chart-5:#199e70;--chart-6:#d95926;--chart-7:#9085e9;--chart-8:#e66767;--chart-other:#898781;--chart-grid:#2a2e37;--chart-axis:#3b4049;--chart-cursor:#e6e8ec0f}}*{box-sizing:border-box}body{margin:0}#root{min-height:100svh}.app{flex-direction:column;min-height:100svh;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 20px;display:flex}.brand-logo{height:22px;display:block}.login-brand{justify-content:center;margin:0;display:flex}.login-logo{max-width:100%;height:40px}.spacer{flex:1}.badge{border:1px solid var(--accent);color:var(--accent);border-radius:999px;margin-left:8px;padding:1px 8px;font-size:12px}.main-row{flex:1;align-items:stretch;min-height:0;display:flex}.content{flex:1;min-width:0;padding:20px}.muted{color:var(--muted)}.centered{justify-content:center;align-items:center;min-height:100svh;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:14px;width:min(360px,90vw);padding:32px;display:flex}.login-card h1{text-align:center;margin:0;font-size:26px}.login-card p{text-align:center;margin:0 0 8px}label{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}input{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:8px 10px}input:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}.btn{font:inherit;color:#fff;background:var(--accent);cursor:pointer;border:none;border-radius:6px;padding:8px 14px;font-weight:600}.btn:hover{background:var(--accent-hover)}.btn:disabled{opacity:.6;cursor:default}.btn-ghost{color:var(--muted);border:1px solid var(--border);background:0 0;font-weight:500}.btn-ghost:hover{background:var(--bg);color:var(--text)}.error{color:var(--error);font-size:13px}.dash-toolbar{align-items:center;gap:10px;margin-bottom:4px;display:flex}.dash-toolbar h1{margin:0;font-size:20px}.empty-dash{flex-direction:column;align-items:center;gap:12px;padding:64px 0;display:flex}.tile{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;height:100%;display:flex;overflow:hidden}.tile-head{border-bottom:1px solid var(--border);flex:none;align-items:center;gap:8px;padding:8px 10px;display:flex}.tile-drag{cursor:grab;color:var(--muted);-webkit-user-select:none;user-select:none}.tile-title{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:14px;font-weight:600;overflow:hidden}.tile-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 5px;font-size:13px}.tile-btn:hover{background:var(--bg);color:var(--text)}.tile-body{flex:1;min-height:0;padding:10px;overflow:auto}.tile-error{color:var(--error);font-size:13px}.react-grid-item.react-grid-placeholder{background:var(--accent);opacity:.15;border-radius:10px}.list-tile table{border-collapse:collapse;width:100%;font-size:13px}.list-tile th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:2px 8px 6px 0;font-weight:500}.list-tile td{border-bottom:1px solid var(--border);vertical-align:top;padding:5px 8px 5px 0}.list-tile tr:last-child td{border-bottom:none}.nowrap{white-space:nowrap}.desc{text-overflow:ellipsis;white-space:nowrap;min-width:120px;max-width:0;overflow:hidden}.list-more{padding-top:6px;font-size:12px}.sn-link{color:var(--accent);padding:0 4px;font-weight:700;text-decoration:none}.sn-link:hover{text-decoration:underline}.stat-value{justify-content:center;align-items:center;height:100%;font-size:clamp(28px,5vw,56px);font-weight:700;display:flex}.chart-wrap{height:100%;min-height:0}.donut-wrap{gap:8px;display:flex}.donut-wrap>:first-child{flex:1;min-width:0}.chart-legend{align-self:center;max-height:100%;margin:0;padding:0;font-size:12px;list-style:none;overflow:auto}.chart-legend li{white-space:nowrap;align-items:center;gap:6px;padding:2px 0;display:flex}.legend-label{text-overflow:ellipsis;max-width:130px;overflow:hidden}.legend-count{color:var(--muted);font-variant-numeric:tabular-nums}.swatch{border-radius:3px;flex:none;width:10px;height:10px;display:inline-block}.chart-tooltip{background:var(--surface);border:1px solid var(--border);border-radius:6px;align-items:center;gap:6px;padding:6px 10px;font-size:13px;display:flex;box-shadow:0 2px 8px #0000001f}.modal-backdrop{z-index:100;background:#00000073;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:12px;width:min(460px,92vw);max-height:88vh;padding:20px 24px;display:flex;overflow:auto}.modal h2{margin:0;font-size:18px}.modal fieldset{border:1px solid var(--border);border-radius:8px;grid-template-columns:1fr 1fr;gap:10px;padding:10px 12px 12px;display:grid}.modal legend{color:var(--muted);padding:0 4px;font-size:12px}.modal select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:7px 8px}.modal .check{color:var(--text);flex-direction:row;grid-column:span 2;align-items:center;gap:8px;font-size:13px}.modal .row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.modal-actions{justify-content:flex-end;gap:8px;display:flex}.clickable{cursor:pointer}.clickable:hover{text-decoration:underline}.stat-value.clickable:hover{color:var(--accent);text-decoration:none}.drill-modal{width:min(1100px,94vw)}.drill-head{align-items:baseline;gap:12px;display:flex}.drill-head h2{margin:0}.drill-body{min-height:0;overflow:auto}.drill-table{border-collapse:collapse;width:100%;font-size:13px}.drill-table th{background:var(--surface);text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:2px 10px 6px 0;font-weight:500;position:sticky;top:0}.drill-table td{border-bottom:1px solid var(--border);padding:5px 10px 5px 0}.drill-empty{text-align:center;padding:24px 0}.admin-tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.admin-tab{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px}.admin-tab:hover{color:var(--text)}.admin-tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.admin-error{margin-bottom:10px}.admin-table{border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:8px;width:100%;font-size:13px}.admin-table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px;font-weight:500}.admin-table td{border-bottom:1px solid var(--border);vertical-align:top;padding:6px 10px}.admin-table tr:last-child td{border-bottom:none}.row-inactive{opacity:.55}.tile-btn.danger,.btn.danger{color:var(--error)}.reveal-box{background:var(--surface);border:1px solid var(--accent);border-radius:8px;align-items:center;gap:8px;margin-bottom:12px;padding:10px 14px;font-size:14px;display:flex}.reveal-box code{-webkit-user-select:all;user-select:all;font-weight:700}.admin-create{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-top:20px;padding:14px}.admin-create h3{margin:0 0 10px;font-size:15px}.admin-create-row{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.admin-create-row label{min-width:160px}.db-toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.db-toolbar select,.db-search input{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:7px 8px}.db-search{gap:6px;display:flex}.db-grid-wrap{border:1px solid var(--border);border-radius:8px;overflow-x:auto}.db-grid{border:none}.db-cell{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.clickable-row{cursor:pointer}.clickable-row:hover td{background:var(--bg)}.row-edit-modal{width:min(640px,94vw)}.row-edit-fields{grid-template-columns:1fr 1fr;gap:10px;display:grid}.row-edit-fields textarea{color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font:12px/1.4 ui-monospace,monospace}.row-edit-fields input:disabled{opacity:.55}.col-type{font-size:11px}.query-tab p{margin-top:0}.query-input{width:100%;color:var(--text);background:var(--surface);border:1px solid var(--border);resize:vertical;border-radius:8px;padding:10px 12px;font:13px/1.5 ui-monospace,monospace}.query-actions{align-items:center;gap:12px;margin:10px 0 14px;display:flex}.write-toggle{color:var(--muted);flex-direction:row;align-items:center;gap:8px;font-size:13px}.write-toggle.armed{color:var(--error);font-weight:600}.query-meta{margin-bottom:8px;font-size:13px}.audit-diff summary{cursor:pointer;font-size:12px}.audit-diff pre{background:var(--bg);border:1px solid var(--border);border-radius:6px;max-width:480px;margin:6px 0;padding:8px 10px;font-size:11.5px;overflow-x:auto}.audit-pager{align-items:center;gap:8px;padding:10px 0;display:flex}.nav-link{text-decoration:none}.activity-panel{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;flex:0 0 320px;max-height:100svh;display:flex;position:sticky;top:0}.activity-head{border-bottom:1px solid var(--border);flex:none;align-items:center;gap:8px;padding:10px 14px;display:flex}.activity-title{font-size:14px;font-weight:600}.activity-status{flex:1;font-size:12px}.ws-dot{border-radius:50%;flex:none;width:8px;height:8px}.ws-live{background:#16a34a}.ws-connecting{background:#d97706}.ws-offline{background:var(--error)}.activity-filter{border-bottom:1px solid var(--border);flex:none;padding:8px 14px}.activity-filter select{width:100%;font-size:12px}.activity-list{flex-direction:column;gap:12px;padding:10px 14px;display:flex;overflow-y:auto}.activity-item{gap:10px;font-size:13px;animation:.5s activity-in;display:flex}@keyframes activity-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.ev-icon{background:var(--bg);border:1px solid var(--border);border-radius:50%;flex:none;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;display:flex}.ev-created{color:#16a34a}.ev-closed{color:var(--muted)}.activity-body{min-width:0}.activity-line{line-height:1.35}.activity-detail{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:3px 0;display:-webkit-box;overflow:hidden}.activity-time{font-size:11px}.kanban{align-items:stretch;gap:10px;height:100%;display:flex;overflow-x:auto}.kanban-col{background:var(--bg);border:1px solid var(--border);border-radius:8px;flex-direction:column;flex:0 0 220px;min-height:0;display:flex}.kanban-col-head{border-bottom:1px solid var(--border);flex:none;align-items:center;gap:8px;padding:8px 10px;display:flex}.kanban-col-title{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;overflow:hidden}.kanban-count{color:var(--muted);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px}.kanban-cards{flex-direction:column;gap:8px;padding:8px;display:flex;overflow-y:auto}.kanban-card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px 10px;font-size:12px}.kanban-card-top{justify-content:space-between;align-items:center;font-weight:600;display:flex}.kanban-desc{color:var(--text);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:4px 0;display:-webkit-box;overflow:hidden}.kanban-meta{color:var(--muted);flex-wrap:wrap;gap:10px;display:flex}.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width, height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;-webkit-user-select:none;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}
