@import url(https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap);:root{--primary:#2563eb;--primary-dark:#1d4ed8;--primary-light:#eff6ff;--primary-ring:#2563eb26;--accent:#3b82f6;--header-bg:#fff;--header-border:#e2e8f0;--header-logo-bg:#2563eb;--sidebar-label:#2563eb;--body-bg:#f8fafc;--surface:#fff;--surface-alt:#f8fafc;--border:#e2e8f0;--border-light:#f1f5f9;--text:#0f172a;--text-muted:#64748b;--text-subtle:#94a3b8;--link:#2563eb;--row-stripe:#f8fafc;--row-hover:#eff6ff;--row-selected-bg:#dbeafe;--row-selected-border:#2563eb;--cell-hover:#eff6ff;--th-border-bottom:#2563eb;--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-mono:"JetBrains Mono","SF Mono",Menlo,Consolas,monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--radius-sm:6px;--radius:8px;--radius-md:10px;--radius-lg:12px;--motion-fast:120ms cubic-bezier(.4,0,.2,1);--motion:180ms cubic-bezier(.4,0,.2,1);--motion-slow:240ms cubic-bezier(.4,0,.2,1);--shadow-sm:0 1px 2px #0f172a0d;--shadow:0 4px 12px #0f172a14;--shadow-lg:0 20px 50px #0f172a2e;--sidebar-bg:#0f172a;--sidebar-text:#e2e8f0;--sidebar-muted:#94a3b8;--sidebar-active:#1e293b;--sidebar-accent:#60a5fa;--sidebar-width:220px;--sidebar-width-collapsed:60px}@font-face{font-display:swap;font-family:Inter;font-style:normal;font-weight:400 700;src:local("Inter"),local("Inter-Regular")}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv02","cv03","cv04","cv11";background:var(--body-bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-family:var(--font-sans);font-size:13.5px;line-height:1.5}.app{background:#f8fafc;background:var(--surface-alt);display:flex;flex-direction:column;height:100vh;overflow:hidden}.header{background:#fff;background:var(--header-bg);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--header-border);box-shadow:0 1px 3px #00000014;flex-shrink:0;height:56px;justify-content:space-between;padding:0 24px}.header,.header-title{align-items:center;display:flex}.header-title{font-size:15px;font-weight:700;gap:10px}.header-logo{background:#2563eb;background:var(--header-logo-bg);border-radius:6px;color:#fff;font-size:12px;font-weight:800;letter-spacing:.8px;padding:4px 10px}.header-right{align-items:center;display:flex;gap:8px}.header-divider{background:#fff3;flex-shrink:0;height:20px;margin:0 4px;width:1px}.header-meta{font-size:12px;opacity:.7}.header-user{align-items:center;border-radius:6px;cursor:pointer;display:flex;gap:6px;opacity:.9;padding:4px 8px;transition:opacity .15s}.header-user:hover{opacity:1}.header-name{color:var(--header-text);font-size:13px;font-weight:600}.header{color:#0f172a;color:var(--header-text,var(--text))}.sysname{font-size:15px;font-weight:700}.sysname--editable{border-bottom:1px dashed #fff6;cursor:pointer}.sysname--editable:hover{opacity:.8}.sysname-input{background:#0000;border:none;border-bottom:2px solid #fff9;color:inherit;font-size:15px;font-weight:700;min-width:160px;outline:none}.btn-logout{background:#2563eb;background:var(--header-logo-bg);border:none;border-radius:6px;color:var(--header-text);cursor:pointer;font-size:12px;font-weight:500;opacity:.85;padding:5px 12px;transition:opacity .15s}.btn-logout:hover{opacity:1}.btn-nav{align-items:center;background:#2563eb;background:var(--header-logo-bg);border:none;border-radius:6px;color:var(--header-text);cursor:pointer;display:inline-flex;font-size:12px;font-weight:500;gap:5px;opacity:.85;padding:5px 12px;text-decoration:none;transition:opacity .15s}.btn-nav:hover{opacity:1}.role-badge{background:#2563eb;background:var(--header-logo-bg);border:none;border-radius:20px;color:#fff;font-size:10px;font-weight:700;letter-spacing:.2px;padding:2px 9px;white-space:nowrap}.toolbar{align-items:center;background:#fff;background:var(--surface);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;flex-wrap:wrap;gap:8px;padding:10px 20px}.toolbar-input{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);font-size:13px;outline:none;padding:6px 12px;transition:border-color .15s,box-shadow .15s;width:240px}.toolbar-input:focus{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.toolbar-input::placeholder{color:#94a3b8;color:var(--text-subtle)}.toolbar-select{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);cursor:pointer;font-size:13px;outline:none;padding:6px 10px;transition:border-color .15s}.toolbar-select:focus{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary)}.btn-clear{background:none;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;cursor:pointer;font-size:12px;font-weight:500;padding:5px 12px;transition:all .15s}.btn-clear:hover{background:#fee2e2}.btn-primary{align-items:center;background:#2563eb;background:var(--primary);border:none;border-radius:6px;color:#fff;cursor:pointer;display:inline-flex;font-size:13px;font-weight:600;gap:5px;padding:6px 14px;transition:background .15s}.btn-primary:hover{background:#1d4ed8;background:var(--primary-dark)}.btn-primary:disabled{cursor:default;opacity:.5}.btn-secondary{align-items:center;background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);cursor:pointer;display:inline-flex;font-size:13px;gap:5px;padding:6px 14px;transition:all .15s}.btn-secondary:hover{background:#f8fafc;background:var(--surface-alt);border-color:#94a3b8;border-color:var(--text-subtle)}.btn-new{white-space:nowrap}.main{display:flex;flex:1 1;min-height:0;overflow:hidden}.main--padded{background:#f8fafc;background:var(--surface-alt);display:block;overflow-y:auto;padding:28px}.grid-wrap{flex:1 1;min-width:0;overflow:auto}.loading{padding:48px;text-align:center}.loading,.loading-full{color:#94a3b8;color:var(--text-subtle);font-size:14px}.loading-full{align-items:center;background:#f8fafc;background:var(--surface-alt);display:flex;height:100vh;justify-content:center}.grid{background:#fff;background:var(--surface);border-collapse:collapse;font-size:13px;width:100%}.grid thead th{background:#f8fafc;background:var(--surface-alt);border-bottom:2px solid #2563eb;border-bottom:2px solid var(--th-border-bottom);border-right:1px solid #f1f5f9;border-right:1px solid var(--border-light);color:#64748b;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.6px;padding:10px 12px;position:sticky;text-align:left;text-transform:uppercase;top:0;white-space:nowrap;z-index:2}.grid thead th:last-child{border-right:none}.grid tbody tr{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);cursor:pointer;transition:background .12s,box-shadow .12s}.grid tbody tr:nth-child(2n){background:#f8fafc;background:var(--row-stripe)}.grid tbody tr:nth-child(odd){background:#fff;background:var(--surface)}.grid tbody tr:hover{background:#eff6ff!important;background:var(--row-hover)!important}.grid tbody tr.row--selected{background:#dbeafe!important;background:var(--row-selected-bg)!important;box-shadow:inset 3px 0 0 #2563eb;box-shadow:inset 3px 0 0 var(--row-selected-border)}.grid tbody td{border-right:1px solid #f1f5f9;border-right:1px solid var(--border-light);max-width:400px;padding:0;vertical-align:middle}.grid tbody td:last-child{border-right:none}.cell-view{-webkit-line-clamp:3;-webkit-box-orient:vertical;color:#0f172a;color:var(--text);display:-webkit-box;line-height:1.45;min-height:36px;overflow:hidden;padding:8px 12px}.grid tbody td:nth-child(3){vertical-align:top}.cell-view:hover{background:#eff6ff;background:var(--cell-hover);cursor:text}.cell-empty{color:#94a3b8;color:var(--text-subtle);font-style:italic}.cell-editor{background:#fff;background:var(--surface);border:2px solid #2563eb;border:2px solid var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring);color:#0f172a;color:var(--text);font-family:inherit;font-size:13px;outline:none;padding:5px 11px;width:100%}.cell-editor--multi{min-height:80px;resize:vertical}.cell-ac-wrap{padding:4px 6px}.cell-ac-wrap .ac-wrap{width:100%}.cell-ac-wrap .ac-input{font-size:12px}.cell-ac-actions{display:flex;gap:4px;justify-content:flex-end;margin-top:4px}.cell-ac-ok{align-items:center;background:#2563eb;background:var(--primary);border:none;border-radius:4px;color:#fff;cursor:pointer;display:inline-flex;font-size:11px;font-weight:600;gap:3px;padding:2px 8px}.cell-ac-ok:hover{background:#1d4ed8;background:var(--primary-dark)}.cell-ac-esc{align-items:center;background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:4px;color:#64748b;color:var(--text-muted);cursor:pointer;display:inline-flex;font-size:11px;gap:3px;padding:2px 8px}.cell-ac-esc:hover{background:#f1f5f9}.btn-delete-row{align-items:center;background:none;border:none;color:#cbd5e1;cursor:pointer;display:flex;font-size:13px;justify-content:center;padding:5px 10px;transition:color .15s}.btn-delete-row:hover{color:#dc2626}.pagination{align-items:center;border-top:1px solid #e2e8f0;border-top:1px solid var(--border);bottom:0;color:#64748b;color:var(--text-muted);display:flex;font-size:12px;gap:6px;padding:10px 16px;position:sticky}.pagination,.pagination button{background:#fff;background:var(--surface)}.pagination button{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#0f172a;color:var(--text);cursor:pointer;font-size:13px;padding:4px 10px;transition:all .15s}.pagination button:disabled{cursor:default;opacity:.35}.pagination button:not(:disabled):hover{background:#eff6ff;background:var(--primary-light);border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.sidebar{background:#fff;background:var(--surface);border-left:1px solid #e2e8f0;border-left:1px solid var(--border);box-shadow:-2px 0 8px #0000000a;display:flex;flex-direction:column;flex-shrink:0;overflow:hidden;width:320px}.sidebar-empty{color:#64748b;color:var(--text-muted);flex:1 1;font-size:13px;font-style:italic;justify-content:center;padding:24px;text-align:center}.sidebar-empty,.sidebar-header{align-items:center;display:flex}.sidebar-header{background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;padding:12px 16px}.sidebar-id{font-family:monospace;font-size:11px}.sidebar-close,.sidebar-id{color:#94a3b8;color:var(--text-subtle)}.sidebar-close{align-items:center;background:none;border:none;border-radius:4px;cursor:pointer;display:flex;justify-content:center;padding:4px 6px;transition:all .15s}.sidebar-close:hover{background:#fee2e2;color:#dc2626}.sidebar-actions{background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;flex-wrap:wrap;gap:6px;padding:10px 14px}.btn-status{border:none;border-radius:20px;cursor:pointer;font-size:12px;font-weight:600;padding:6px 14px;transition:all .15s}.btn-status--checked{background:#dbeafe;color:#1d4ed8;color:var(--primary-dark)}.btn-status--checked:hover{background:#bfdbfe}.btn-status--verified{background:#dcfce7;color:#166534}.btn-status--verified:hover{background:#bbf7d0}.btn-status--under-review{background:#ede9fe;color:#5b21b6}.btn-status--under-review:hover{background:#ddd6fe}.btn-audit-toggle{background:none;border:none;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);color:#2563eb;color:var(--primary);cursor:pointer;flex-shrink:0;font-size:12px;font-weight:500;padding:8px 16px;text-align:left;transition:background .15s;width:100%}.btn-audit-toggle:hover,.btn-show-map{background:#eff6ff;background:var(--primary-light)}.btn-show-map{align-items:center;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#2563eb;color:var(--link);cursor:pointer;display:inline-flex;font-size:11px;font-weight:500;gap:4px;padding:3px 8px;transition:background .15s;white-space:nowrap}.btn-show-map:hover{background:#eff6ff;background:var(--row-hover)}.audit-log{max-height:220px;overflow-y:auto}.audit-empty,.audit-log{background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);padding:10px 14px}.audit-empty{color:#9ca3af;font-size:12px}.audit-entry{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);margin-bottom:10px;padding-bottom:10px}.audit-entry:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.audit-meta{align-items:center;display:flex;gap:6px;margin-bottom:3px}.audit-user{color:#0f172a;color:var(--text);font-size:12px;font-weight:600}.audit-time{color:#94a3b8;color:var(--text-subtle);font-size:11px;margin-left:auto}.audit-action{color:#64748b;color:var(--text-muted);font-size:12px}.audit-created{color:#166534;font-weight:600}.audit-deleted{color:#991b1b;font-weight:600}.audit-diff{display:inline;margin-left:4px}.audit-old{background:#fee2e2;color:#dc2626}.audit-new,.audit-old{border-radius:2px;font-size:11px;padding:0 3px}.audit-new{background:#dcfce7;color:#166534}.sidebar-tabs{flex:1 1;overflow-y:auto}.sidebar-body{padding:12px 0}.detail-section,.sidebar-section{padding:0 16px 14px}.detail-section-head{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;margin-bottom:8px;padding-bottom:5px}.detail-section-title{align-items:center;color:#2563eb;color:var(--primary);display:inline-flex;font-size:10px;font-weight:700;gap:5px;letter-spacing:.8px;text-transform:uppercase}.detail-count-badge{background:#2563eb;background:var(--primary);border-radius:9px;color:#fff;font-size:9px;font-weight:700;margin-left:4px;padding:1px 7px}.btn-sm{background:#fff;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#0f172a;color:var(--text);cursor:pointer;font-size:11px;font-weight:600;padding:4px 9px}.btn-sm:hover:not(:disabled){background:#f8fafc;background:var(--surface-alt);border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.btn-sm:disabled{cursor:not-allowed;opacity:.5}td.col-pinned,th.col-pinned{background:#fff;background:var(--surface,#fff)}tr:nth-child(2n) td.col-pinned{background:#f8fafc;background:var(--surface-alt,#f8fafc)}tr.row--selected td.col-pinned{background:#dbeafe;background:var(--row-selected-bg,#eff6ff)}tr.row--bulk td.col-pinned{background:#fef3c7}.cell-wrap{line-height:1.4;max-height:4.5em;overflow:hidden;white-space:normal!important;word-break:break-word}.col-settings-panel{background:#fff;border-radius:12px;box-shadow:0 20px 60px #00000040;display:flex;flex-direction:column;max-height:90vh;max-width:92vw;overflow:hidden;width:540px}.col-settings-head{align-items:center;background:#f8fafc;border-bottom:1px solid #e2e8f0;color:#1a2332;display:flex;flex-shrink:0;font-size:15px;font-weight:700;justify-content:space-between;padding:14px 20px}.col-settings-x{align-items:center;background:none;border:none;border-radius:6px;color:#64748b;cursor:pointer;display:flex;height:30px;justify-content:center;width:30px}.col-settings-x:hover{background:#fee2e2;color:#dc2626}.col-settings-section{border-bottom:1px solid #f1f5f9;flex-shrink:0;padding:12px 20px 8px}.col-settings-section-title{color:#94a3b8;font-size:10.5px;font-weight:700;letter-spacing:.07em;margin-bottom:8px;text-transform:uppercase}.col-settings-templates{grid-gap:6px;display:grid;gap:6px;grid-template-columns:1fr 1fr}.col-template{background:#fff;border:1px solid #e2e8f0;border-radius:7px;cursor:pointer;padding:8px 10px;text-align:left;transition:all .12s}.col-template:hover{border-color:#2563eb;border-color:var(--primary);box-shadow:0 2px 6px #1a56db1a}.col-template-label{color:#1a2332;font-size:12.5px;font-weight:700;margin-bottom:2px}.col-template-desc{color:#94a3b8;font-size:11px;line-height:1.3}.col-settings-toolbar{align-items:center;display:flex;flex-shrink:0;gap:10px;padding:10px 20px 6px}.col-settings-search-wrap{align-items:center;background:#f8fafc;border:1px solid #e2e8f0;border-radius:7px;color:#94a3b8;display:flex;flex:1 1;gap:6px;padding:5px 9px}.col-settings-search-wrap:focus-within{background:#fff;border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.col-settings-search{background:#0000;border:none;color:#1a2332;flex:1 1;font-size:13px;outline:none}.col-settings-counter{background:#f1f5f9;border-radius:12px;color:#64748b;font-size:11px;font-weight:700;padding:3px 10px;white-space:nowrap}.col-settings-bulk{align-items:center;color:#94a3b8;display:flex;flex-shrink:0;font-size:11.5px;gap:6px;padding:0 20px 10px}.col-settings-bulk button{background:none;border:none;color:#2563eb;color:var(--primary);cursor:pointer;font-size:11.5px;font-weight:600;padding:2px 4px}.col-settings-bulk button:hover{text-decoration:underline}.col-settings-body{flex:1 1;overflow-y:auto;padding:4px 0 12px}.col-settings-group{padding:4px 16px}.col-settings-group-head{color:#cbd5e1;font-size:10px;font-weight:700;letter-spacing:.07em;margin:10px 4px 6px;text-transform:uppercase}.col-row{grid-gap:9px;align-items:center;border:1px solid #0000;border-radius:6px;cursor:grab;display:grid;gap:9px;grid-template-columns:14px 16px 1fr auto auto;padding:7px 8px;transition:background .1s,border .1s;-webkit-user-select:none;user-select:none}.col-row:hover{background:#f8fafc}.col-row-over{background:#eff6ff!important;border-color:#2563eb!important;border-color:var(--primary)!important}.col-row-hidden{opacity:.55}.col-row-grip{color:#cbd5e1;display:inline-flex}.col-row input[type=checkbox]{accent-color:#2563eb;accent-color:var(--primary);cursor:pointer;height:14px;width:14px}.col-row-label{color:#1a2332;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.col-row-pin,.col-row-wrap{align-items:center;background:none;border:1px solid #e2e8f0;border-radius:5px;color:#94a3b8;cursor:pointer;display:inline-flex;font-size:11px;height:22px;justify-content:center;width:24px}.col-row-pin:hover,.col-row-wrap:hover{background:#f1f5f9;border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.col-row-pin.on,.col-row-wrap.on{background:#fef3c7;border-color:#fde68a;color:#b45309}.col-hier-row{padding:8px 0}.col-hier-label{color:#374151;font-size:12.5px;font-weight:600;margin-bottom:4px}.col-hier-buttons{display:flex;flex-wrap:wrap;gap:4px}.col-hier-btn{background:#f8fafc;border:1px solid #e2e8f0;border-radius:5px;color:#64748b;cursor:pointer;font-size:12px;font-weight:600;min-width:32px;padding:3px 10px}.col-hier-btn:hover{border-color:#2563eb;border-color:var(--primary)}.col-hier-btn.active{background:#eff6ff;border:2px solid #2563eb;border:2px solid var(--primary);color:#2563eb;color:var(--primary);padding:2px 9px}.col-hier-hint{color:#94a3b8;font-size:11px;margin-top:4px}.col-settings-foot{align-items:center;border-top:1px solid #e2e8f0;display:flex;flex-shrink:0;flex-wrap:wrap;gap:10px;justify-content:space-between;padding:12px 20px}.col-settings-reset{align-items:center;color:#94a3b8;display:flex;font-size:11.5px;gap:6px}.col-settings-reset button{background:none;border:none;color:#2563eb;color:var(--primary);cursor:pointer;font-size:11.5px;font-weight:600;padding:2px 4px}.col-settings-reset button:hover{text-decoration:underline}.col-settings-done{background:#2563eb;background:var(--primary);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:7px 22px}.col-settings-done:hover{filter:brightness(1.08)}.col-preset-trigger{align-items:center;background:none;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;cursor:pointer;display:flex;height:30px;justify-content:center;width:30px}.col-preset-trigger:hover{background:#f1f5f9;border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.col-preset-menu{background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 8px 24px #0000001f;max-height:360px;min-width:260px;overflow-y:auto;padding:6px 0;position:absolute;right:0;top:calc(100% + 6px);z-index:100}.col-preset-empty{color:#94a3b8;font-size:12px;padding:10px 14px}.col-preset-row{align-items:center;display:flex;font-size:12.5px;gap:6px;padding:6px 12px}.col-preset-row:hover{background:#f8fafc}.col-preset-del,.col-preset-pin{align-items:center;background:none;border:none;color:#cbd5e1;cursor:pointer;display:inline-flex;padding:3px}.col-preset-del:hover{color:#ef4444}.col-preset-name{background:none;border:none;color:#1a2332;cursor:pointer;flex:1 1;font-size:12.5px;overflow:hidden;padding:0;text-align:left;text-overflow:ellipsis;white-space:nowrap}.col-preset-foot{border-top:1px solid #f1f5f9}.col-preset-foot button{background:none;border:none;color:#2563eb;color:var(--primary);cursor:pointer;font-size:12px;font-weight:600;padding:8px 14px;text-align:left;width:100%}.col-preset-foot button:hover{background:#f8fafc}.row--bulk{background:#fef3c7!important}.row--bulk.row--selected{background:linear-gradient(90deg,#fef3c7,#dbeafe)!important;background:linear-gradient(90deg,#fef3c7 0,var(--row-selected-bg,#eff6ff) 100%)!important}.btn-sm.btn-primary{background:#2563eb;background:var(--primary);border-color:#2563eb;border-color:var(--primary);color:#fff}.btn-sm.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.sidebar-section-label{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);color:#2563eb;color:var(--primary);font-size:10px;font-weight:700;letter-spacing:.8px;margin-bottom:8px;padding-bottom:5px;text-transform:uppercase}.sidebar-narrative{color:#0f172a;color:var(--text);font-size:13px;line-height:1.65}.sidebar-row{display:flex;font-size:12px;gap:8px;margin-bottom:5px}.sidebar-row-label{color:#94a3b8;color:var(--text-subtle);flex-shrink:0;font-weight:500;min-width:110px}.sidebar-row-value{color:#0f172a;color:var(--text)}.tag-list{display:flex;flex-wrap:wrap;gap:5px}.tag{background:#eff6ff;background:var(--primary-light);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:20px;color:#2563eb;color:var(--link);font-size:11px;font-weight:500;padding:2px 9px}.impact-block{background:#f8fafc;background:var(--surface-alt);border-radius:6px;margin-bottom:8px;padding:8px}.impact-actor{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:600;margin-bottom:4px}.impact-item{color:#0f172a;color:var(--text);font-size:12px;margin-bottom:2px}.impact-type{font-weight:700}.impact-type--killed{color:#dc2626}.impact-type--injured{color:#d97706}.login-page{align-items:center;background:#f8fafc;background:var(--surface-alt);display:flex;justify-content:center;min-height:100vh}.login-box{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:12px;box-shadow:0 4px 24px #00000012;padding:40px 36px;width:380px}.login-logo{background:#2563eb;background:var(--primary);border-radius:6px;color:#fff;display:inline-block;font-size:14px;font-weight:800;letter-spacing:.8px;margin-bottom:10px;padding:5px 12px}.login-title{color:#0f172a;color:var(--text);font-size:20px;font-weight:700;margin-bottom:28px}.login-form{display:flex;flex-direction:column;gap:6px}.login-label{color:#64748b;color:var(--text-muted);font-size:12px;font-weight:600;margin-top:10px}.login-input{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:7px;color:#0f172a;color:var(--text);font-size:14px;outline:none;padding:9px 13px;transition:all .15s}.login-input:focus{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.login-error{background:#fef2f2;border:1px solid #fca5a5;border-radius:7px;color:#dc2626;font-size:13px;margin-top:6px;padding:9px 13px}.login-btn{background:#2563eb;background:var(--primary);border:none;border-radius:7px;color:#fff;cursor:pointer;font-size:14px;font-weight:600;margin-top:14px;padding:11px;transition:background .15s}.login-btn:hover{background:#1d4ed8;background:var(--primary-dark)}.login-btn:disabled{cursor:default;opacity:.6}.modal-overlay{align-items:center;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a80;display:flex;inset:0;justify-content:center;position:fixed;z-index:20000}.modal{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;box-shadow:0 20px 60px #00000026;display:flex;flex-direction:column;max-height:90vh;width:620px}.modal-header{align-items:center;background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);border-radius:10px 10px 0 0;color:#0f172a;color:var(--text);display:flex;font-size:15px;font-weight:700;justify-content:space-between;padding:16px 20px}.modal-body{display:flex;flex-direction:column;gap:12px;overflow-y:auto;padding:18px 20px}.modal-footer{background:#f8fafc;background:var(--surface-alt);border-radius:0 0 10px 10px;border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;gap:8px;justify-content:flex-end;padding:14px 20px}.modal-field{display:flex;flex:1 1;flex-direction:column;gap:5px}.modal-field label{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.modal-field input,.modal-field select,.modal-field textarea{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);font-family:inherit;font-size:13px;outline:none;padding:7px 11px;transition:all .15s}.modal-field input:focus,.modal-field select:focus,.modal-field textarea:focus{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.modal-row{display:flex;gap:12px}.form-error{background:#fef2f2;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;font-size:12px;padding:8px 12px}.users-page{max-width:960px}.users-title{color:#0f172a;color:var(--text);font-size:20px;font-weight:700;margin-bottom:22px}.user-form{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;box-shadow:0 1px 4px #0000000a;margin-bottom:28px;padding:20px}.user-form-grid{display:flex;flex-wrap:wrap;gap:14px}.user-form-field{display:flex;flex:1 1;flex-direction:column;gap:5px;min-width:180px}.user-form-field label{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.5px;text-transform:uppercase}.user-form-field input,.user-form-field select{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);font-size:13px;outline:none;padding:7px 11px;transition:all .15s}.user-form-field input:focus,.user-form-field select:focus{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.user-form-actions{display:flex;gap:8px;margin-top:14px}.users-table{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-collapse:collapse;border-radius:10px;box-shadow:0 1px 4px #0000000a;font-size:13px;overflow:hidden;width:100%}.users-table th{background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);color:#64748b;color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.5px;padding:10px 14px;text-align:left;text-transform:uppercase}.users-table td{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);color:#0f172a;color:var(--text);padding:11px 14px}.users-table tr:last-child td{border-bottom:none}.users-table tr:hover td{background:#f8fafc;background:var(--surface-alt)}.user-row--inactive td{opacity:.45}.user-actions{display:flex;gap:6px}.users-toolbar{align-items:center;background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px;padding:10px 14px}.users-search-wrap{align-items:center;display:flex;flex:1 1;min-width:200px;position:relative}.users-search-icon{align-items:center;color:#94a3b8;color:var(--text-subtle);display:flex;left:9px;pointer-events:none;position:absolute}.users-search{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;font-size:13px;outline:none;padding:7px 30px;transition:border-color .15s,box-shadow .15s;width:100%}.users-search:focus{border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.users-search-clear{align-items:center;background:none;border:none;color:#94a3b8;color:var(--text-subtle);cursor:pointer;display:flex;font-size:12px;line-height:1;padding:0;position:absolute;right:8px}.users-filter-select,.users-search-clear:hover{color:#0f172a;color:var(--text)}.users-filter-select{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:13px;outline:none;padding:7px 10px}.users-filter-select:focus{border-color:#2563eb;border-color:var(--primary)}.users-filter-clear{background:#fef2f2;border:1px solid #fca5a5;border-radius:6px;color:#dc2626;cursor:pointer;font-size:12px;font-weight:500;padding:7px 12px;transition:background .15s}.users-filter-clear:hover{background:#fee2e2}.users-count{color:#64748b;color:var(--text-muted);font-size:12px;margin-left:auto;white-space:nowrap}.users-empty{color:#94a3b8;color:var(--text-subtle);font-size:14px;padding:40px 0;text-align:center}.users-pagination{align-items:center;display:flex;flex-wrap:wrap;gap:4px;margin-top:14px}.users-page-btn{align-items:center;background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);cursor:pointer;display:inline-flex;font-size:13px;height:32px;justify-content:center;min-width:32px;padding:0 8px;transition:background .15s,border-color .15s}.users-page-btn:hover:not(:disabled){background:#eff6ff;background:var(--primary-light);border-color:#e2e8f0;border-color:var(--border);color:#2563eb;color:var(--link)}.users-page-btn.active{background:#2563eb;background:var(--primary);border-color:#2563eb;border-color:var(--primary);color:#fff;font-weight:600}.users-page-btn:disabled{cursor:default;opacity:.35}.users-page-ellipsis{color:#94a3b8;color:var(--text-subtle);font-size:13px;padding:0 4px}.users-page-info{color:#64748b;color:var(--text-muted);font-size:12px;margin-left:8px;white-space:nowrap}.btn-edit{background:#eff6ff;background:var(--primary-light);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#2563eb;color:var(--link);cursor:pointer;font-size:11px;font-weight:600;padding:4px 11px;transition:all .15s}.btn-edit:hover{background:#eff6ff;background:var(--row-hover)}.btn-delete{background:#fef2f2;border:1px solid #fca5a5;border-radius:5px;color:#dc2626;cursor:pointer;font-size:11px;font-weight:600;padding:4px 11px;transition:all .15s}.btn-delete:hover{background:#fee2e2}.status-active{color:#166534;font-size:12px;font-weight:600}.status-inactive{color:#9ca3af;font-size:12px;font-weight:600}.scroll-sentinel{padding:12px;text-align:center}.scroll-end{color:#94a3b8;color:var(--text-subtle);font-size:12px;padding:8px}.th-inner{align-items:center;display:flex;gap:4px}.cf-wrap{position:relative}.cf-btn,.cf-wrap{align-items:center;display:inline-flex}.cf-btn{background:none;border:none;border-radius:3px;color:#94a3b8;color:var(--text-subtle);cursor:pointer;gap:2px;line-height:1;padding:2px 4px}.cf-btn:hover{background:#e2e8f0;background:var(--border);color:#64748b;color:var(--text-muted)}.cf-btn--active{color:#2563eb;color:var(--primary)}.cf-badge{background:#2563eb;background:var(--primary);border-radius:8px;color:#fff;font-size:9px;font-weight:700;line-height:1.4;padding:1px 4px}.cf-dropdown{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;box-shadow:0 4px 16px #0000001a;display:flex;flex-direction:column;max-width:260px;min-width:200px}.cf-search-wrap{padding:8px 8px 4px}.cf-search{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;font-size:12px;outline:none;padding:5px 8px;width:100%}.cf-search:focus{border-color:#2563eb;border-color:var(--primary)}.cf-list{max-height:220px;overflow-y:auto;padding:4px 0}.cf-empty{color:#94a3b8;color:var(--text-subtle);font-size:12px;padding:8px 12px}.cf-item{align-items:center;cursor:pointer;display:flex;font-size:12px;gap:8px;padding:5px 12px}.cf-item:hover{background:#f0f4ff}.cf-item input[type=checkbox]{accent-color:#2563eb;accent-color:var(--primary);cursor:pointer;flex-shrink:0}.cf-item-label{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cf-footer{border-top:1px solid #f1f5f9;border-top:1px solid var(--border-light);display:flex;gap:6px;justify-content:flex-end;padding:8px}.cf-clear{background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:4px;color:#ef4444;cursor:pointer;font-size:11px;padding:4px 10px}.cf-clear:hover{background:#fee2e2}.cf-cancel{background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:4px;color:#64748b;color:var(--text-muted);cursor:pointer;font-size:11px;padding:4px 10px}.cf-cancel:hover{background:#f1f5f9}.cf-apply{background:#2563eb;background:var(--primary);border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:11px;font-weight:600;padding:4px 12px}.cf-apply:hover{background:#1d4ed8;background:var(--primary-dark)}.nf-modal{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 32px #0000001f;display:flex;flex-direction:column;position:absolute;width:540px;z-index:9999}.nf-header{align-items:center;border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);display:flex;justify-content:space-between;padding:14px 18px 10px}.nf-title{color:#2563eb;color:var(--primary);font-size:14px;font-weight:700}.nf-close{align-items:center;background:none;border:none;border-radius:4px;color:#94a3b8;color:var(--text-subtle);cursor:pointer;display:flex;justify-content:center;padding:3px}.nf-close:hover{background:#f1f5f9;color:#374151}.nf-body{display:flex;flex-direction:column;gap:10px;padding:14px 18px}.nf-row{align-items:center;display:flex;gap:8px}.nf-logic-label{color:#64748b;color:var(--text-muted);flex-shrink:0;font-size:11px;font-weight:600;text-transform:uppercase;width:34px}.nf-logic-word{color:#2563eb;color:var(--primary);font-size:11px;font-weight:700}.nf-op-select{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#374151;cursor:pointer;flex-shrink:0;font-size:12px;outline:none;padding:6px 8px;width:160px}.nf-op-select:focus{border-color:#2563eb;border-color:var(--primary)}.nf-value-input{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#374151;flex:1 1;font-size:13px;outline:none;padding:6px 10px}.nf-value-input:focus{border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.nf-del-btn{align-items:center;background:none;border:none;color:#94a3b8;color:var(--text-subtle);cursor:pointer;display:flex;flex-shrink:0;padding:4px}.nf-del-btn:hover{color:#dc2626}.nf-add-row{display:flex;gap:8px;padding-top:2px}.nf-logic-btn{background:none;border:1px solid #2563eb;border:1px solid var(--primary);border-radius:4px;color:#2563eb;color:var(--primary);cursor:pointer;font-size:12px;font-weight:700;padding:4px 14px}.nf-logic-btn:hover{background:#eff6ff;background:var(--primary-light)}.nf-footer{align-items:center;border-top:1px solid #f1f5f9;border-top:1px solid var(--border-light);display:flex;justify-content:space-between;padding:12px 18px}.nf-clear-btn{background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#64748b;color:var(--text-muted);cursor:pointer;font-size:12px;padding:6px 14px}.nf-clear-btn:hover{background:#fee2e2;border-color:#fca5a5;color:#dc2626}.nf-cancel-btn{background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#64748b;color:var(--text-muted);cursor:pointer;font-size:12px;padding:6px 14px}.nf-cancel-btn:hover{background:#f1f5f9}.nf-apply-btn{background:#2563eb;background:var(--primary);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:12px;font-weight:700;padding:6px 18px}.nf-apply-btn:hover{background:#1d4ed8;background:var(--primary-dark)}.nf-apply-btn:disabled{background:#93c5fd;cursor:not-allowed}.mp-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;position:fixed;z-index:10000}.mp-modal{background:#fff;background:var(--surface);border-radius:10px;box-shadow:0 16px 48px #0000002e;display:flex;flex-direction:column;height:580px;max-height:90vh;max-width:95vw;width:800px}.mp-header{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;padding:14px 18px}.mp-title{color:#0f172a;color:var(--text);font-size:15px;font-weight:700}.mp-search-wrap{flex-shrink:0;padding:8px 14px 0;position:relative}.mp-search-row{align-items:center;display:flex;gap:6px}.mp-search-input{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;flex:1 1;font-size:13px;outline:none;padding:7px 11px;transition:border-color .15s,box-shadow .15s}.mp-search-input:focus{border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 2px #dbeafe}.mp-search-spinner{font-size:13px}.mp-search-results{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:0 0 6px 6px;box-shadow:0 4px 12px #0000001a;left:14px;max-height:220px;overflow-y:auto;position:absolute;right:14px;top:calc(100% - 2px);z-index:1000}.mp-search-item{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);color:#374151;cursor:pointer;font-size:12px;padding:8px 12px}.mp-search-item:last-child{border-bottom:none}.mp-search-item:hover{background:#eff6ff;background:var(--primary-light);color:#2563eb;color:var(--link)}.mp-coords-bar{background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);color:#374151;flex-shrink:0;flex-wrap:wrap;font-size:12px;gap:16px;padding:8px 18px}.mp-coord-val,.mp-coords-bar{align-items:center;display:flex}.mp-coord-val{gap:4px}.mp-hint{color:#94a3b8;color:var(--text-subtle);font-style:italic}.mp-addr{color:#64748b;color:var(--text-muted);flex:1 1;font-size:11px}.mp-map-wrap{flex:1 1;min-height:0}.mp-footer{border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;flex-shrink:0;gap:8px;justify-content:flex-end;padding:12px 18px}.cell-view--map{justify-content:space-between}.cell-map-icon,.cell-view--map{align-items:center;display:flex}.cell-map-icon{flex-shrink:0;font-size:11px;opacity:.4}.cell-view--map:hover .cell-map-icon{opacity:1}.cell-view--loc{cursor:pointer}.cell-view--loc:hover{background:#eff6ff;background:var(--primary-light)}.dtf-modal{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 32px #0000001f;display:flex;flex-direction:column;max-height:80vh;position:absolute;width:640px;z-index:9999}.dtf-header{align-items:center;border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);display:flex;justify-content:space-between;padding:14px 18px 10px}.dtf-title{color:#2563eb;color:var(--primary);font-size:14px;font-weight:700}.dtf-body{display:flex;flex-direction:column;gap:14px;overflow-y:auto;padding:14px 18px}.dtf-range-row{display:flex;gap:16px}.dtf-range-field{display:flex;flex:1 1;flex-direction:column;gap:4px}.dtf-range-label{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.4px;text-transform:uppercase}.dtf-datetime-input{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#374151;font-size:12px;outline:none;padding:7px 10px;width:100%}.dtf-datetime-input:focus{border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.dtf-adv-toggle{background:none;border:none;color:#2563eb;color:var(--primary);cursor:pointer;font-size:12px;font-weight:600;padding:0;text-align:left}.dtf-adv-toggle:hover{text-decoration:underline}.dtf-advanced{display:flex;flex-direction:column;gap:10px}.dtf-row{align-items:flex-start;display:flex;gap:12px}.dtf-row-label{color:#64748b;color:var(--text-muted);flex-shrink:0;font-size:11px;font-weight:600;padding-top:5px;width:80px}.dtf-chips{display:flex;flex-wrap:wrap;gap:5px}.dtf-chip{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#374151;cursor:pointer;font-size:12px;line-height:1.4;padding:3px 9px;transition:all .12s}.dtf-chip:hover{background:#eff6ff;background:var(--primary-light);color:#2563eb;color:var(--primary)}.dtf-chip--on,.dtf-chip:hover{border-color:#2563eb;border-color:var(--primary)}.dtf-chip--on{background:#2563eb;background:var(--primary);color:#fff;font-weight:600}.panel-overlay{display:flex;inset:0;pointer-events:none;position:fixed;z-index:200}.panel{animation:slideInLeft .2s ease;background:#fff;background:var(--surface);border-right:1px solid #e2e8f0;border-right:1px solid var(--border);box-shadow:4px 0 24px #00000014;display:flex;flex-direction:column;height:100vh;pointer-events:all;width:400px}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-100%)}to{opacity:1;transform:translateX(0)}}.panel-header{align-items:center;background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;padding:14px 18px}.panel-title{color:#0f172a;color:var(--text);font-size:15px;font-weight:700}.panel-body{display:flex;flex:1 1;flex-direction:column;gap:0;overflow-y:auto;padding:14px 18px}.panel-footer{background:#f8fafc;background:var(--surface-alt);border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;flex-shrink:0;gap:8px;justify-content:flex-end;padding:12px 18px}.pf-section{margin-bottom:10px}.pf-section--half{flex:1 1}.pf-row{display:flex;gap:10px}.pf-section-header{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);color:#2563eb;color:var(--primary);font-size:10px;font-weight:700;letter-spacing:.8px;margin:14px 0 8px;padding-bottom:4px;text-transform:uppercase}.pf-label{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:600;letter-spacing:.4px;margin-bottom:4px;text-transform:uppercase}.pf-label-row{align-items:center;display:flex;justify-content:space-between;margin-bottom:4px}.pf-label-row .pf-label{margin-bottom:0}.pf-add-btn{align-items:center;background:none;border:none;color:#2563eb;color:var(--primary);cursor:pointer;display:inline-flex;font-size:11px;font-weight:600;gap:4px;padding:0}.pf-add-btn:hover{text-decoration:underline}.pf-req{color:#dc2626}.pf-input{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);font-family:inherit;font-size:13px;outline:none;padding:6px 10px;transition:all .15s;width:100%}.pf-input:focus{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.pf-textarea{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);font-family:inherit;font-size:13px;outline:none;padding:7px 10px;resize:vertical;transition:all .15s;width:100%}.pf-textarea:focus{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.pf-loc-btn{align-items:center;background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#374151;cursor:pointer;display:flex;font-size:13px;justify-content:space-between;padding:7px 10px;text-align:left;transition:all .15s;width:100%}.pf-loc-btn:hover{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary)}.pf-loc-clear,.pf-loc-icon{align-items:center;color:#94a3b8;color:var(--text-subtle);display:flex}.pf-loc-clear{background:none;border:none;cursor:pointer;margin-top:2px;padding:0}.pf-loc-clear:hover{color:#dc2626}.ac-wrap{position:relative;width:100%}.ac-input-row{align-items:center;display:flex;position:relative}.ac-input{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);font-family:inherit;font-size:13px;outline:none;padding:6px 28px 6px 10px;transition:all .15s;width:100%}.ac-input:focus{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.ac-input:disabled{cursor:not-allowed;opacity:.5}.ac-clear{align-items:center;background:none;border:none;color:#94a3b8;color:var(--text-subtle);cursor:pointer;display:flex;line-height:1;padding:2px;position:absolute;right:8px}.ac-clear:hover{color:#dc2626}.ac-dropdown{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 16px #0000001a;left:0;max-height:200px;overflow-y:auto;position:absolute;right:0;top:calc(100% + 2px);z-index:300}.ac-option{color:#374151;cursor:pointer;font-size:13px;padding:7px 12px;transition:background .1s}.ac-option:hover{background:#f0f7ff}.ac-option--selected{background:#eff6ff;background:var(--primary-light);color:#2563eb;color:var(--link);font-weight:600}.loc-picker{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;box-shadow:0 20px 60px #0000001f;display:flex;flex-direction:column;max-height:85vh;max-width:1100px;pointer-events:all;width:90vw}.loc-picker-header{align-items:center;background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);border-radius:10px 10px 0 0;color:#0f172a;color:var(--text);display:flex;flex-shrink:0;font-size:15px;font-weight:700;justify-content:space-between;padding:14px 20px}.loc-picker-body{display:flex;flex:1 1;gap:0;overflow:hidden;padding:12px}.loc-picker-footer{align-items:center;background:#f8fafc;background:var(--surface-alt);border-radius:0 0 10px 10px;border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;flex-shrink:0;gap:8px;padding:12px 20px}.loc-col{border-right:1px solid #e2e8f0;border-right:1px solid var(--border);display:flex;flex:1 1;flex-direction:column;min-width:140px;overflow:hidden}.loc-col:last-child{border-right:none}.loc-col-label{background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);color:#2563eb;color:var(--primary);flex-shrink:0;font-size:10px;font-weight:700;letter-spacing:.6px;padding:6px 12px;text-transform:uppercase}.loc-col-list{flex:1 1;overflow-y:auto}.loc-item{align-items:center;border-bottom:1px solid #f8fafc;color:#374151;cursor:pointer;display:flex;font-size:13px;gap:6px;padding:7px 12px;transition:background .1s}.loc-item:hover{background:#f0f7ff}.loc-item--selected{background:#eff6ff;background:var(--primary-light);color:#2563eb;color:var(--link);font-weight:600}.loc-item--filter{-webkit-user-select:none;user-select:none}.loc-item--filter input[type=checkbox]{accent-color:#2563eb;accent-color:var(--primary)}.loc-arrow{color:#2563eb;color:var(--primary);font-size:10px}.loc-arrow,.loc-dot{flex-shrink:0;width:12px}.loc-dot{font-size:8px}.loc-dot,.loc-empty{color:#94a3b8;color:var(--text-subtle)}.loc-empty{font-size:12px;font-style:italic;padding:10px 12px}.loc-coords-dot{font-size:10px;margin-left:4px;opacity:.6}.ref-page{max-width:1100px}.ref-tabs{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;gap:0;margin-bottom:20px}.ref-tab-btn{background:none;border:none;border-bottom:2px solid #0000;color:#64748b;color:var(--text-muted);cursor:pointer;font-size:13px;font-weight:500;margin-bottom:-1px;padding:9px 18px;transition:all .15s}.ref-tab-btn:hover{color:#0f172a;color:var(--text)}.ref-tab-btn--active{border-bottom-color:#2563eb;border-bottom-color:var(--primary);color:#2563eb;color:var(--primary);font-weight:600}.ref-tab-content{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;box-shadow:0 1px 4px #0000000a;padding:20px}.ref-tab{display:flex;flex-direction:column;gap:0}.ref-add-row{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.ref-add-hint{color:#64748b;color:var(--text-muted);font-size:12px}.ref-add-input{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#0f172a;color:var(--text);flex:1 1;font-size:13px;min-width:200px;outline:none;padding:7px 11px;transition:all .15s}.ref-add-input:focus{background:#fff;background:var(--surface);border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26;box-shadow:0 0 0 3px var(--primary-ring)}.ref-list{display:flex;flex-direction:column;gap:0;max-height:500px;overflow-y:auto}.ref-item{align-items:center;border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);display:flex;gap:8px;padding:8px 10px;transition:background .1s}.ref-item:hover{background:#f8fafc;background:var(--surface-alt)}.ref-item-name{color:#374151;flex:1 1;font-size:13px}.ref-edit-input{background:#fff;background:var(--surface);border:1px solid #2563eb;border:1px solid var(--primary);border-radius:5px;color:#0f172a;color:var(--text);flex:1 1;font-size:13px;outline:none;padding:4px 8px}.ref-empty{color:#94a3b8;color:var(--text-subtle);font-size:13px;font-style:italic;padding:12px}.btn-sm{font-size:11px!important;padding:3px 10px!important}.loc-mgr-cols{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;gap:0;max-height:500px}.loc-mgr-col,.loc-mgr-cols{display:flex;overflow:hidden}.loc-mgr-col{border-right:1px solid #e2e8f0;border-right:1px solid var(--border);flex:1 1;flex-direction:column;min-width:140px}.loc-mgr-col:last-child{border-right:none}.loc-mgr-item{align-items:center;border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);color:#374151;cursor:pointer;display:flex;font-size:13px;padding:7px 10px;transition:background .1s}.loc-mgr-item:hover{background:#f0f7ff}.loc-mgr-name{flex:1 1}.loc-mgr-del{align-items:center;background:none;border:none;border-radius:3px;color:#d1d5db;cursor:pointer;display:flex;opacity:0;padding:2px 5px;transition:all .15s}.loc-mgr-item:hover .loc-mgr-del{opacity:1}.loc-mgr-del:hover{background:#fee2e2;color:#dc2626}.loc-mgr-item--wrap{flex-wrap:wrap;gap:4px}.loc-coord-badge{background:#f1f5f9;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:4px;color:#6b7280;cursor:pointer;flex-shrink:0;font-size:10px;padding:1px 5px;white-space:nowrap}.loc-coord-badge:hover{background:#dbeafe;border-color:#93c5fd;color:#2563eb;color:var(--link)}.loc-coord-edit{flex-wrap:wrap;gap:4px}.loc-coord-edit,.loc-map-btn{align-items:center;display:flex}.loc-map-btn{background:#f1f5f9;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:4px;cursor:pointer;flex-shrink:0;gap:3px;line-height:1;padding:3px 7px;transition:all .15s}.loc-map-btn:hover{background:#dbeafe;border-color:#93c5fd}.hier-picker{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;box-shadow:0 20px 60px #0000001f;display:flex;flex-direction:column;max-height:80vh;pointer-events:all;width:640px}.hier-picker-body{padding:0}.hier-col,.hier-picker-body{display:flex;flex:1 1;overflow:hidden}.hier-col{border-right:1px solid #e2e8f0;border-right:1px solid var(--border);flex-direction:column}.hier-col:last-child{border-right:none}.hier-search-wrap{background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);padding:8px}.hier-search{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#0f172a;color:var(--text);font-size:12px;outline:none;padding:5px 9px;width:100%}.hier-search:focus{border-color:#2563eb;border-color:var(--primary)}.hier-search:disabled{background:#f3f4f6;cursor:not-allowed}.hier-mgr{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;display:flex;gap:0;overflow:hidden}.hier-mgr-col{border-right:1px solid #e2e8f0;border-right:1px solid var(--border);display:flex;flex:1 1;flex-direction:column}.hier-mgr-col:last-child{border-right:none}.hf-wrap{margin-bottom:6px}.hf-wrap:last-child{margin-bottom:0}.hf-row{align-items:center;display:flex;gap:6px}.hf-ac{flex:1 1;min-width:0}.hf-sub-row{margin-top:4px;padding-left:4px}.hf-browse-btn{align-items:center;background:#f1f5f9;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;color:#64748b;color:var(--text-muted);cursor:pointer;display:flex;flex-shrink:0;height:30px;justify-content:center;transition:all .15s;width:30px}.hf-browse-btn:hover{background:#e0e7ff;border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.imp-section-header{align-items:center;color:#64748b;color:var(--text-muted);display:flex;font-size:11px;font-weight:700;justify-content:space-between;letter-spacing:.05em;margin-bottom:6px;text-transform:uppercase}.imp-edit-btn{background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:4px;color:#374151;cursor:pointer;font-size:11px;padding:1px 8px;transition:all .15s}.imp-edit-btn:hover{background:#eff6ff;background:var(--primary-light);border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.imp-empty{color:#94a3b8;color:var(--text-subtle);font-size:12px;font-style:italic;margin-bottom:6px}.imp-view-group{margin-bottom:10px}.imp-view-actor{color:#0f172a;color:var(--text);font-size:12px;font-weight:600;margin-bottom:3px}.imp-view-item{align-items:center;color:#374151;display:flex;font-size:12px;gap:6px;margin-bottom:2px;margin-left:8px}.imp-type-badge{background:#f1f5f9;border-radius:4px;color:#374151;font-size:10px;font-weight:600;padding:1px 6px}.imp-type-badge--killed{background:#fee2e2;color:#b91c1c}.imp-type-badge--injured{background:#ffedd5;color:#c2410c}.imp-type-badge--arrested{background:#dbeafe;color:#2563eb;color:var(--link)}.imp-type-badge--abducted{background:#fef9c3;color:#92400e}.imp-nap-badge{background:#f0fdf4;border-radius:3px;color:#166534;font-size:10px;padding:1px 5px}.imp-modal-overlay{align-items:center;background:#0006;display:flex;inset:0;justify-content:center;position:fixed;z-index:9999}.imp-modal{background:#fff;background:var(--surface);border-radius:10px;box-shadow:0 20px 60px #00000026;display:flex;flex-direction:column;max-height:85vh;max-width:95vw;width:760px}.imp-modal-header{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;padding:16px 20px}.imp-modal-title{font-size:15px;font-weight:700}.imp-modal-body{flex:1 1;overflow-y:auto;padding:20px}.imp-modal-footer{align-items:center;border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;flex-shrink:0;gap:8px;padding:12px 20px}.imp-li-group{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;margin-bottom:14px;padding:14px 16px}.imp-li-group-title{align-items:center;color:#374151;display:flex;font-size:12px;font-weight:700;justify-content:space-between;margin-bottom:12px}.imp-btn-remove-group{background:none;border:none;color:#ef4444;cursor:pointer;font-size:11px}.imp-btn-remove-group:hover{text-decoration:underline}.imp-field-row{align-items:center;display:flex;gap:8px;margin-bottom:10px}.imp-field-label{color:#64748b;color:var(--text-muted);flex-shrink:0;font-size:11px;font-weight:600;width:40px}.imp-item-block{margin-bottom:8px}.imp-item-label{color:#94a3b8;color:var(--text-subtle);font-size:11px;margin-bottom:4px}.imp-item-row{align-items:center;display:flex;gap:6px}.imp-input{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;font-size:12px;outline:none;padding:5px 8px;transition:border-color .15s}.imp-input:focus{border-color:#2563eb;border-color:var(--primary)}.imp-num{width:80px}.imp-btn-remove-item{align-items:center;background:none;border:none;color:#94a3b8;color:var(--text-subtle);cursor:pointer;display:flex;flex-shrink:0;padding:2px 4px;transition:color .15s}.imp-btn-remove-item:hover{color:#ef4444}.imp-btn-add-item{background:none;border:1px dashed #e2e8f0;border-radius:5px;color:#64748b;color:var(--text-muted);cursor:pointer;font-size:11px;font-weight:600;letter-spacing:.05em;margin-top:6px;padding:4px 12px;transition:all .15s}.imp-btn-add-item:hover{background:#eff6ff;background:var(--primary-light);border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.imp-btn-add-group{background:none;border:none;color:#2563eb;color:var(--primary);cursor:pointer;display:block;font-size:13px;font-weight:600;padding:4px 0}.imp-btn-add-group:hover{text-decoration:underline}.imp-actor-trigger{align-items:center;background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;cursor:pointer;display:flex;flex:1 1;font-size:12px;justify-content:space-between;min-width:0;padding:5px 8px;text-align:left;transition:border-color .15s;-webkit-user-select:none;user-select:none}.imp-actor-trigger:hover{border-color:#2563eb;border-color:var(--primary)}.imp-actor-val{color:#0f172a;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.imp-actor-ph{color:#94a3b8;color:var(--text-subtle)}.imp-ss-wrap{flex:1 1;min-width:120px;position:relative}.imp-ss-trigger{align-items:center;background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;cursor:pointer;display:flex;font-size:12px;justify-content:space-between;padding:5px 8px;transition:border-color .15s;-webkit-user-select:none;user-select:none}.imp-ss-trigger:hover{border-color:#2563eb;border-color:var(--primary)}.imp-ss-val{color:#0f172a;color:var(--text)}.imp-ss-arrow,.imp-ss-ph{color:#94a3b8;color:var(--text-subtle)}.imp-ss-arrow{flex-shrink:0;font-size:10px;margin-left:4px}.imp-ss-dropdown{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;box-shadow:0 4px 12px #0000001a;left:0;max-height:180px;overflow-y:auto;position:absolute;right:0;top:calc(100% + 2px);z-index:10000}.imp-ss-search{border:none;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);font-size:12px;outline:none;padding:6px 8px;width:100%}.imp-ss-option{color:#374151;cursor:pointer;font-size:12px;padding:6px 10px}.imp-ss-option:hover{background:#eff6ff;background:var(--primary-light);color:#2563eb;color:var(--link)}.imp-ss-option--active{background:#dbeafe;color:#2563eb;color:var(--link);font-weight:600}.imp-ss-empty{color:#94a3b8;color:var(--text-subtle);font-size:12px;font-style:italic;padding:8px 10px}.sf-row{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);display:flex;flex-direction:column;padding:8px 0}.sf-row:last-child{border-bottom:none}.sf-label{color:#94a3b8;color:var(--text-subtle);font-size:10px;font-weight:600;letter-spacing:.06em;margin-bottom:3px;text-transform:uppercase}.sf-value{color:#0f172a;color:var(--text);font-size:13px;line-height:1.5}.sf-val-editable{border-radius:4px;cursor:pointer;margin:-2px -4px;padding:2px 4px;transition:background .15s}.sf-val-editable:hover{background:#eff6ff;background:var(--primary-light);color:#2563eb;color:var(--link)}.sf-empty{color:#cbd5e1;font-style:italic}.sf-edit-wrap{display:flex;flex-direction:column;gap:4px}.sf-input{background:#fff;background:var(--surface);border:1px solid #93c5fd;border-radius:5px;box-sizing:border-box;font-size:13px;outline:none;padding:5px 8px;transition:border-color .15s;width:100%}.sf-input:focus{border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 2px #2563eb26;box-shadow:0 0 0 2px var(--primary-ring)}.sf-textarea{background:#fff;background:var(--surface);border:1px solid #93c5fd;border-radius:5px;box-sizing:border-box;font-family:inherit;font-size:13px;line-height:1.5;min-height:72px;outline:none;padding:5px 8px;resize:vertical;transition:border-color .15s;width:100%}.sf-textarea:focus{border-color:#2563eb;border-color:var(--primary);box-shadow:0 0 0 2px #2563eb26;box-shadow:0 0 0 2px var(--primary-ring)}.sf-edit-btns{display:flex;gap:6px;justify-content:flex-end}.sf-edit-btns button{align-items:center;border:none;border-radius:4px;cursor:pointer;display:inline-flex;font-size:12px;font-weight:600;gap:3px;padding:3px 10px}.sf-edit-btns .sf-btn-save{background:#2563eb;background:var(--primary);color:#fff}.sf-edit-btns .sf-btn-save:hover{background:#1e40af}.sf-edit-btns .sf-btn-cancel{background:#f1f5f9;color:#475569}.sf-edit-btns .sf-btn-cancel:hover{background:#e2e8f0}.sf-hier-row{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);display:flex;flex-direction:column;padding:8px 0}.sf-hier-row:last-child{border-bottom:none}.sf-hier-val{border-radius:4px;color:#0f172a;color:var(--text);cursor:pointer;font-size:13px;margin:-2px -4px;padding:2px 4px;transition:background .15s}.sf-hier-val:hover{background:#eff6ff;background:var(--primary-light);color:#2563eb;color:var(--link)}.sf-hier-edit{display:flex;flex-direction:column;gap:4px}.sf-hier-inputs{display:flex;gap:6px}.sf-hier-inputs .sf-input{flex:1 1}.sf-hier-picker-btn{background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:4px;color:#475569;cursor:pointer;font-size:11px;padding:4px 8px;transition:all .15s;white-space:nowrap}.sf-hier-picker-btn:hover{background:#eff6ff;background:var(--primary-light);border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.flat-picker-item{border-radius:5px;color:#374151;cursor:pointer;font-size:13px;margin-bottom:2px;padding:8px 10px;transition:background .1s}.flat-picker-item:hover{background:#eff6ff;background:var(--primary-light);color:#2563eb;color:var(--link)}.flat-picker-item--active{background:#dbeafe;color:#2563eb;color:var(--link);font-weight:600}.flat-picker-item--clear{color:#94a3b8;color:var(--text-subtle);font-style:italic}.flat-picker-item--clear:hover{background:#fef2f2;color:#ef4444}.code-cell{align-items:center;background:#eff6ff;background:var(--primary-light);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;cursor:pointer;display:inline-flex;gap:5px;margin:4px 6px;padding:5px 10px;transition:background .12s,border-color .12s;white-space:nowrap}.code-cell:hover{background:#eff6ff;background:var(--row-hover);border-color:#2563eb;border-color:var(--row-selected-border)}.code-cell-text{color:#2563eb;color:var(--link);font-family:ui-monospace,SF Mono,Fira Code,monospace;font-size:11px;font-weight:600;letter-spacing:.3px;max-width:90px;overflow:hidden;text-overflow:ellipsis}.code-cell-icon{align-items:center;color:#94a3b8;color:var(--text-subtle);display:flex;flex-shrink:0;transition:color .12s}.code-cell:hover .code-cell-icon{color:#2563eb;color:var(--row-selected-border)}.ov-overlay{align-items:center;background:#0f172a80;display:flex;inset:0;justify-content:center;padding:24px;position:fixed;z-index:9998}.ov-panel{background:#fff;background:var(--surface);border-radius:14px;box-shadow:0 20px 60px #00000040;display:flex;flex-direction:column;max-height:calc(100vh - 48px);max-width:1180px;outline:none;overflow:hidden;width:100%}.ov-header{align-items:center;background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;justify-content:space-between;padding:16px 24px}.ov-header-text{display:flex;flex-direction:column;gap:2px}.ov-title{color:#0f172a;color:var(--text);font-size:18px;font-weight:700;line-height:1.2}.ov-subtitle{color:#64748b;color:var(--text-muted);font-size:12px}.ov-updated{color:#94a3b8}.ov-header-actions{align-items:center;display:flex;gap:6px}.ov-icon-btn{align-items:center;background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#475569;cursor:pointer;display:flex;height:30px;justify-content:center;transition:all .15s;width:30px}.ov-icon-btn:hover:not(:disabled){background:#fff;background:var(--surface);border-color:#cbd5e1;color:#0f172a;color:var(--text)}.ov-icon-btn:disabled{cursor:not-allowed;opacity:.45}.ov-close{align-items:center;background:none;border:none;border-radius:6px;color:#64748b;color:var(--text-muted);cursor:pointer;display:flex;height:30px;justify-content:center;transition:all .15s;width:30px}.ov-close:hover{background:#fee2e2;color:#dc2626}.ov-body{flex:1 1;overflow-y:auto;padding:24px}@media (max-width:700px){.ov-overlay{align-items:stretch;padding:0}.ov-panel{border-radius:14px 14px 0 0;max-height:100vh;max-width:100%;padding-bottom:env(safe-area-inset-bottom,0)}.ov-header{align-items:stretch;flex-direction:column;gap:10px;padding:calc(14px + env(safe-area-inset-top, 0px)) 16px 12px;position:relative}.ov-header-text{padding-right:44px}.ov-title{font-size:16px}.ov-header-actions{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:none;width:100%}.ov-header-actions::-webkit-scrollbar{display:none}.ov-close{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);height:36px;position:absolute;right:12px;top:calc(10px + env(safe-area-inset-top, 0px));width:36px;z-index:5}.ov-period-tabs button{font-size:11.5px;padding:5px 10px}.ov-body{padding:16px}.ov-summary-row{gap:10px}.ov-grid,.ov-summary-row{grid-template-columns:1fr}}.ov-summary-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:minmax(220px,1.1fr) 3fr;margin-bottom:24px}@media (max-width:760px){.ov-summary-row{grid-template-columns:1fr}}.ov-summary-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.ov-summary-card{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border-top:3px solid #2563eb;border:1px solid var(--border);border-radius:10px;border-top:3px solid var(--primary);display:flex;flex-direction:column;justify-content:space-between;min-height:86px;padding:14px 16px}.ov-summary-hero{background:linear-gradient(135deg,#f8fafc,#fff);background:linear-gradient(135deg,var(--surface-alt) 0,var(--surface) 100%);border-top-width:4px;justify-content:center;min-height:100%;padding:20px 22px}.ov-summary-hero .ov-summary-value{font-size:44px}.ov-summary-hero .ov-summary-label{font-size:12px}.ov-summary-value{font-feature-settings:"tnum";color:#0f172a;color:var(--text);font-size:24px;font-variant-numeric:tabular-nums;font-weight:800;line-height:1;margin-bottom:6px}.ov-summary-label{color:#64748b;color:var(--text-muted);font-size:10.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.ov-status-card{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;margin-bottom:20px;padding:18px 20px}.ov-donut-wrap{grid-gap:24px;align-items:center;display:grid;gap:24px;grid-template-columns:180px 1fr}@media (max-width:560px){.ov-donut-wrap{grid-template-columns:1fr}}.ov-donut-chart{height:180px;justify-self:center;position:relative;width:180px}.ov-donut-center{align-items:center;display:flex;flex-direction:column;inset:0;justify-content:center;pointer-events:none;position:absolute}.ov-donut-num{font-feature-settings:"tnum";color:#0f172a;color:var(--text);font-size:22px;font-variant-numeric:tabular-nums;font-weight:800;letter-spacing:-.01em;line-height:1;white-space:nowrap}.ov-donut-num[data-len="6"]{font-size:19px}.ov-donut-num[data-len="7"]{font-size:16px}.ov-donut-num[data-len="8"]{font-size:14px}.ov-donut-num[data-len="9"]{font-size:13px}.ov-donut-num[data-len="10"]{font-size:11.5px}.ov-donut-num[data-len="11"]{font-size:10.5px}.ov-donut-num[data-len="12"]{font-size:9.5px}.ov-donut-sub{color:#64748b;color:var(--text-muted);font-size:10px;font-weight:700;letter-spacing:.08em;margin-top:4px;text-transform:uppercase}.ov-donut-legend{display:flex;flex-direction:column;gap:8px;list-style:none;margin:0;padding:0}.ov-donut-legend li{grid-gap:10px;align-items:center;display:grid;font-size:13px;gap:10px;grid-template-columns:12px 1fr auto auto}.ov-legend-swatch{border-radius:3px;height:12px;width:12px}.ov-legend-label{color:#0f172a;color:var(--text);font-weight:500}.ov-legend-count{font-feature-settings:"tnum";color:#0f172a;color:var(--text);font-variant-numeric:tabular-nums;font-weight:700}.ov-legend-pct{font-feature-settings:"tnum";color:#64748b;color:var(--text-muted);font-size:12px;font-variant-numeric:tabular-nums;font-weight:600;min-width:42px;text-align:right}.ov-grid{grid-gap:18px;display:grid;gap:18px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.ov-table-wrap{background:#f8fafc;background:var(--surface-alt);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;padding:16px 18px}.ov-table-title{color:#64748b;color:var(--text-muted);font-size:11px;font-weight:700;letter-spacing:.07em;margin-bottom:12px;text-transform:uppercase}.ov-table{border-collapse:collapse;width:100%}.ov-td-label{color:#374151;font-size:12.5px;max-width:160px;overflow:hidden;padding:5px 8px 5px 0;text-overflow:ellipsis;white-space:nowrap;width:38%}.ov-td-bar{padding:5px 8px}.ov-bar-track{background:#e2e8f0;border-radius:3px;height:6px;overflow:hidden}.ov-bar-fill{background:#2563eb;background:var(--primary);border-radius:3px;height:100%;transition:width .4s ease}.ov-td-count{font-feature-settings:"tnum";color:#0f172a;color:var(--text);font-size:12.5px;font-variant-numeric:tabular-nums;font-weight:700;padding:5px 0 5px 8px}.ov-td-count,.ov-td-pct{text-align:right;white-space:nowrap;width:1%}.ov-td-pct{font-feature-settings:"tnum";color:#64748b;color:var(--text-muted);font-size:11.5px;font-variant-numeric:tabular-nums;font-weight:600;min-width:38px;padding:5px 0 5px 10px}.ov-total-row td{border-top:1px solid #e2e8f0;border-top:1px solid var(--border);font-weight:700;padding-top:9px}.ov-total-row .ov-td-label,.ov-total-row td{color:#0f172a;color:var(--text)}.ov-empty,.ov-total-row .ov-td-pct{color:#64748b;color:var(--text-muted)}.ov-empty{font-size:12px;padding:20px 4px;text-align:center}.ov-expand-btn{align-items:center;align-self:flex-start;background:none;border:none;color:#2563eb;color:var(--primary);cursor:pointer;display:inline-flex;font-size:12px;font-weight:600;gap:4px;margin-top:6px;padding:6px 0 0}.ov-expand-btn:hover{text-decoration:underline}.ov-skeleton{animation:ov-skel-shimmer 1.4s ease-in-out infinite;background:linear-gradient(90deg,#eef2f7,#f8fafc 50%,#eef2f7);background-size:200% 100%;border-radius:8px}@keyframes ov-skel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.ov-settings-overlay{align-items:center;background:#0f172a73;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:10000}.ov-settings-panel{background:#fff;background:var(--surface);border-radius:10px;box-shadow:0 12px 36px #00000040;display:flex;flex-direction:column;max-height:calc(100vh - 40px);max-width:100%;overflow:hidden;width:460px}.ov-settings-header{align-items:center;background:#f8fafc;background:var(--surface-alt);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);color:#0f172a;color:var(--text);display:flex;font-size:14px;font-weight:700;justify-content:space-between;padding:14px 20px}.ov-settings-section{padding:14px 20px 4px}.ov-settings-section-title{color:#94a3b8;font-size:11px;font-weight:700;letter-spacing:.07em;margin-bottom:8px;text-transform:uppercase}.ov-settings-grid{grid-gap:2px;display:grid;gap:2px;grid-template-columns:1fr 1fr}.ov-settings-check{align-items:center;border-radius:6px;color:#374151;cursor:pointer;display:flex;font-size:13px;gap:10px;padding:8px 10px;transition:background .12s}.ov-settings-check:hover{background:#f8fafc;background:var(--surface-alt)}.ov-settings-check input{accent-color:#2563eb;accent-color:var(--primary);cursor:pointer;height:15px;width:15px}.ov-settings-footer{align-items:center;border-top:1px solid #e2e8f0;border-top:1px solid var(--border);display:flex;justify-content:space-between;margin-top:8px;padding:14px 20px}.ov-link-btn{background:none;border:none;color:#2563eb;color:var(--primary);cursor:pointer;font-size:13px;font-weight:600}.ov-link-btn:hover{text-decoration:underline}.ov-primary-btn{background:#2563eb;background:var(--primary);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:13px;font-weight:600;padding:7px 20px;transition:filter .15s}.ov-primary-btn:hover{filter:brightness(1.08)}.ov-period-tabs{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:7px;display:inline-flex;gap:0;margin-right:4px;padding:2px}.ov-period-tabs button{background:none;border:none;border-radius:5px;color:#64748b;color:var(--text-muted);cursor:pointer;font-size:11px;font-weight:600;padding:4px 9px;transition:all .12s;white-space:nowrap}.ov-period-tabs button:hover{color:#0f172a;color:var(--text)}.ov-period-tabs button.active{background:#fff;box-shadow:0 1px 2px #00000014;color:#2563eb;color:var(--primary)}.ov-crossfilter-banner{align-items:center;background:#eff6ff;border-bottom:1px solid #bfdbfe;color:#1d4ed8;display:flex;flex-shrink:0;font-size:12.5px;justify-content:space-between;padding:8px 20px}.ov-crossfilter-clear{background:#fff;border:1px solid #bfdbfe;border-radius:5px;color:#1d4ed8;cursor:pointer;font-size:11px;font-weight:600;padding:3px 10px}.ov-crossfilter-clear:hover{background:#dbeafe}.ov-table-head{align-items:center;display:flex;gap:6px;margin-bottom:10px}.ov-table-head .ov-table-title{flex:1 1;margin-bottom:0}.ov-drag-handle{align-items:center;border-radius:3px;color:#cbd5e1;cursor:grab;display:inline-flex;padding:2px}.ov-drag-handle:hover{color:#0f172a;color:var(--text)}.ov-drag-handle:active{cursor:grabbing}.ov-viz-toggle{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:5px;display:inline-flex;padding:1px}.ov-viz-toggle button{align-items:center;background:none;border:none;border-radius:3px;color:#64748b;color:var(--text-muted);cursor:pointer;display:inline-flex;padding:3px 6px}.ov-viz-toggle button:hover{color:#0f172a;color:var(--text)}.ov-viz-toggle button.active{background:#fff;box-shadow:0 1px 2px #0000000f;color:#2563eb;color:var(--primary)}.ov-list-rows{display:flex;flex-direction:column;gap:4px;list-style:none;margin:0;padding:0}.ov-list-rows li{grid-gap:10px;align-items:center;border-radius:6px;cursor:pointer;display:grid;font-size:12.5px;gap:10px;grid-template-columns:10px 1fr auto auto;padding:6px 8px;transition:background .12s}.ov-list-rows li:hover{background:#fff;background:var(--surface)}.ov-list-rows li.active{background:#dbeafe}.ov-list-dot{border-radius:3px;height:10px;width:10px}.ov-list-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ov-list-count,.ov-list-label{color:#0f172a;color:var(--text)}.ov-list-count{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700}.ov-list-pct{font-feature-settings:"tnum";color:#64748b;color:var(--text-muted);font-size:11px;font-variant-numeric:tabular-nums;font-weight:600;min-width:38px;text-align:right}.ov-row-clickable{cursor:pointer;transition:background .12s}.ov-row-clickable:hover td{background:#fff;background:var(--surface)}.ov-row-active td{background:#dbeafe!important}.ov-donut-legend li{border-radius:5px;cursor:pointer;padding:3px 4px;transition:background .1s}.ov-donut-legend li:hover{background:#fff;background:var(--surface)}.ov-donut-legend li.active{background:#dbeafe}.ov-density-compact .ov-summary-card{min-height:64px;padding:10px 12px}.ov-density-compact .ov-summary-value{font-size:20px;margin-bottom:4px}.ov-density-compact .ov-summary-hero .ov-summary-value{font-size:32px}.ov-density-compact .ov-table-wrap{padding:12px 14px}.ov-density-compact .ov-td-bar,.ov-density-compact .ov-td-count,.ov-density-compact .ov-td-label{font-size:11.5px;padding-bottom:3px;padding-top:3px}.ov-density-compact .ov-table-title{font-size:10px}.ov-density-compact .ov-grid{gap:12px}.ov-settings-table-row{align-items:center;display:flex;gap:8px;padding:2px 10px}.ov-top-n-select{border:1px solid #e2e8f0;border-radius:5px;font-size:11px;padding:3px 6px}.ov-density-btn,.ov-top-n-select{background:#f8fafc;color:#64748b;color:var(--text-muted);cursor:pointer}.ov-density-btn{border:1px solid #e2e8f0;border-radius:6px;flex:1 1;font-size:12px;font-weight:600;padding:6px 12px}.ov-density-btn.active{background:#2563eb;background:var(--primary);border-color:#2563eb;border-color:var(--primary);color:#fff}.ov-layouts-menu{background:#fff;border:1px solid #e2e8f0;border-radius:8px;box-shadow:0 8px 24px #0000001f;max-height:360px;min-width:260px;overflow-y:auto;padding:6px 0;position:absolute;right:0;top:calc(100% + 6px);z-index:100}.ov-layouts-empty{color:#64748b;color:var(--text-muted);font-size:12px;padding:10px 14px}.ov-layouts-row{align-items:center;display:flex;font-size:12.5px;gap:6px;padding:6px 12px}.ov-layouts-row:hover{background:#f8fafc;background:var(--surface-alt)}.ov-layouts-del,.ov-layouts-pin{background:none;border:none;color:#cbd5e1;cursor:pointer;display:inline-flex;padding:3px}.ov-layouts-del:hover{color:#ef4444}.ov-layouts-name{background:none;border:none;color:#0f172a;color:var(--text);cursor:pointer;flex:1 1;font-size:12.5px;overflow:hidden;padding:0;text-align:left;text-overflow:ellipsis;white-space:nowrap}.ov-layouts-footer{border-top:1px solid #f1f5f9}.ov-layouts-footer button{background:none;border:none;color:#2563eb;color:var(--primary);cursor:pointer;font-size:12px;font-weight:600;padding:8px 14px;text-align:left;width:100%}.ov-layouts-footer button:hover{background:#f8fafc;background:var(--surface-alt)}.btn-overview{align-items:center;background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#374151;cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:6px;padding:5px 14px;transition:all .15s}.btn-overview--active,.btn-overview:hover{background:#eff6ff;background:var(--primary-light);border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.btn-export{align-items:center;background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#374151;cursor:pointer;display:flex;font-size:12px;font-weight:500;gap:5px;padding:5px 12px;transition:all .15s}.btn-export:hover:not(:disabled){background:#f0fdf4;border-color:#16a34a;color:#16a34a}.btn-export:disabled{cursor:not-allowed;opacity:.6}.btn-col-settings{align-items:center;background:none;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;color:#64748b;color:var(--text-muted);cursor:pointer;display:flex;height:32px;justify-content:center;padding:0;transition:all .15s;width:32px}.btn-col-settings:hover{background:#eff6ff;background:var(--primary-light);border-color:#2563eb;border-color:var(--primary);color:#2563eb;color:var(--primary)}.lf-dropdown{background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 24px #0000001a;display:flex;flex-direction:column;overflow:hidden;width:300px}.lf-search-wrap{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);padding:8px 10px}.lf-search{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:5px;font-size:12px;outline:none;padding:5px 9px;width:100%}.lf-search:focus{border-color:#2563eb;border-color:var(--primary)}.lf-tree{max-height:320px;overflow-y:auto;padding:4px 0}.lf-node{align-items:center;display:flex;gap:2px;min-height:28px}.lf-node--flat{cursor:pointer;gap:8px;padding:5px 12px}.lf-node--flat:hover{background:#f0f7ff}.lf-expand{align-items:center;background:none;border:none;color:#94a3b8;color:var(--text-subtle);cursor:pointer;display:flex;flex-shrink:0;height:18px;justify-content:center;padding:0;width:18px}.lf-expand--leaf{cursor:default}.lf-expand:hover{color:#2563eb;color:var(--primary)}.lf-label{align-items:center;border-radius:4px;cursor:pointer;display:flex;flex:1 1;gap:7px;padding:3px 6px 3px 0}.lf-label:hover{background:#f0f7ff}.lf-label input[type=checkbox]{accent-color:#2563eb;accent-color:var(--primary);cursor:pointer;flex-shrink:0;height:13px;width:13px}.lf-name{color:#374151;font-size:12px}.lf-name--selected{color:#2563eb;color:var(--link);font-weight:600}.lf-count{font-size:10px;margin-left:auto;padding-right:4px}.lf-count,.lf-empty{color:#94a3b8;color:var(--text-subtle)}.lf-empty{font-size:12px;padding:12px;text-align:center}.lf-selected-preview{background:#eff6ff;background:var(--primary-light);border-top:1px solid #dbeafe;color:#2563eb;color:var(--link);font-size:11px;overflow:hidden;padding:6px 12px;text-overflow:ellipsis;white-space:nowrap}.comments-section{border-top:1px solid #f1f5f9;border-top:1px solid var(--border-light);margin-top:12px;padding:14px 16px 16px}.comments-header{color:#94a3b8;color:var(--text-subtle);font-size:11px;font-weight:700;letter-spacing:.07em;margin-bottom:12px;text-transform:uppercase}.comments-empty,.comments-loading{color:#94a3b8;color:var(--text-subtle);font-size:12px;padding:6px 0 10px}.comments-list{display:flex;flex-direction:column;gap:12px;margin-bottom:14px}.comment-item{align-items:flex-start;display:flex;gap:9px}.comment-avatar{flex-shrink:0}.comment-initials{align-items:center;background:#2563eb;background:var(--primary);border-radius:50%;color:#fff;display:flex;font-size:10px;font-weight:700;height:28px;justify-content:center;width:28px}.comment-body-wrap{flex:1 1;min-width:0}.comment-meta{align-items:center;display:flex;gap:6px;margin-bottom:3px}.comment-author{color:#0f172a;color:var(--text);font-size:12px;font-weight:700}.comment-time{color:#94a3b8;color:var(--text-subtle);font-size:11px}.comment-delete{align-items:center;background:none;border:none;color:#cbd5e1;cursor:pointer;display:flex;line-height:1;margin-left:auto;padding:0 2px;transition:color .15s}.comment-delete:hover{color:#ef4444}.comment-text{color:#374151;font-size:13px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.comment-form{display:flex;flex-direction:column;gap:6px}.comment-input{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;box-sizing:border-box;color:#0f172a;color:var(--text);font-family:inherit;font-size:13px;outline:none;padding:8px 10px;resize:vertical;transition:border-color .15s;width:100%}.comment-input:focus{border-color:#93c5fd}.comment-submit{align-self:flex-end;background:#2563eb;background:var(--primary);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:12px;font-weight:600;padding:6px 18px;transition:background .15s}.comment-submit:hover:not(:disabled){background:#1d4ed8;background:var(--primary-dark)}.comment-submit:disabled{cursor:not-allowed;opacity:.5}@media (max-width:768px){.header{flex-wrap:wrap;gap:4px;height:auto;min-height:50px;padding:6px 10px}.header-meta{display:none}.header-right{flex-wrap:wrap;gap:6px}.role-badge{display:none}.btn-nav{font-size:11px;padding:5px 8px}.toolbar{flex-wrap:wrap;gap:6px;padding:8px 10px}.toolbar-input{width:140px}.grid{font-size:12px}.grid thead th{font-size:10px;padding:7px 8px}.grid tbody td{padding:6px 8px}.sidebar{min-width:0;width:260px}.sidebar-row-label{font-size:11px;min-width:80px}.modal-overlay{align-items:flex-end;padding:0}.modal{border-radius:14px 14px 0 0;margin:0;max-height:90vh;max-width:100%!important;width:100%!important}.login-page{padding:16px}.login-box{max-width:420px!important;width:100%!important}.modal-row{flex-wrap:wrap}.modal-field{min-width:calc(50% - 6px)}.main--padded{padding:12px}.ref-page,.users-page{max-width:100%!important}}@media (max-width:480px){.sidebar{bottom:0;left:0;position:absolute;right:0;top:0;width:100%;z-index:200}.sidebar-empty{display:none}.modal-field{min-width:100%}.toolbar{align-items:stretch;flex-direction:column}.toolbar-input,.toolbar-select{width:100%!important}.btn-nav{padding:4px 7px}.btn-nav,.grid{font-size:11px}.grid thead th{font-size:10px}.grid tbody td,.grid thead th{padding:5px 6px}}.shell{background:#f8fafc;background:var(--body-bg);height:100vh;overflow:hidden}.nav,.shell{display:flex}.nav{background:#0f172a;background:var(--sidebar-bg);border-right:1px solid #ffffff0a;color:#e2e8f0;color:var(--sidebar-text);flex-direction:column;flex-shrink:0;transition:width .18s cubic-bezier(.16,1,.3,1);width:220px;width:var(--sidebar-width)}.nav--collapsed{width:60px;width:var(--sidebar-width-collapsed)}.nav-fade{max-height:80px;max-width:200px;opacity:1;overflow:hidden;transition:opacity .14s ease-out}.nav--collapsed .nav-fade{margin:0;max-height:0;max-width:0;opacity:0}.nav-item svg{transition:transform .14s ease-out}.nav-item:hover svg{transform:scale(1.06)}.nav-brand{align-items:center;display:flex;font-size:14.5px;font-weight:700;gap:10px;letter-spacing:-.01em;padding:16px 18px;position:relative}.nav-brand img,.nav-brand-icon{border-radius:7px;flex-shrink:0;height:28px;width:28px}.nav-brand-icon{align-items:center;background:#60a5fa;background:var(--sidebar-accent);color:#0f172a;display:flex;font-size:13px;font-weight:800;justify-content:center}.nav-brand-text{flex:1 1;font-size:13.5px;line-height:1.25;min-width:0;overflow-wrap:anywhere;white-space:normal}.nav-brand-sub{font-size:10.5px;font-weight:500;letter-spacing:.04em}.nav-brand-sub,.nav-collapse-btn{color:#94a3b8;color:var(--sidebar-muted)}.nav-collapse-btn{align-items:center;background:none;border:none;border-radius:5px;cursor:pointer;display:inline-flex;flex-shrink:0;height:24px;justify-content:center;margin-left:auto;transition:background .12s cubic-bezier(.4,0,.2,1),color .12s cubic-bezier(.4,0,.2,1);transition:background var(--motion-fast),color var(--motion-fast);width:24px}.nav-collapse-btn:hover{background:#ffffff0f;color:#fff}.nav--collapsed .nav-brand{align-items:center;flex-direction:column;gap:6px;padding:12px 6px 6px}.nav--collapsed .nav-collapse-btn{background:#ffffff0a;border:1px solid #ffffff14;height:28px;margin-left:0;width:32px}.nav--collapsed .nav-collapse-btn:hover{background:#ffffff1a}.nav--collapsed .nav-item{justify-content:center;padding:9px 0}.nav--collapsed .nav-foot,.nav--collapsed .nav-section{padding:8px 6px}.nav-section{display:flex;flex:1 1;flex-direction:column;gap:1px;overflow-y:auto;padding:8px 10px}.nav-section-title{color:#94a3b8;color:var(--sidebar-muted);font-size:10px;font-weight:700;letter-spacing:.08em;padding:14px 12px 6px;text-transform:uppercase}.nav-item{align-items:center;background:none;border:none;border-radius:7px;color:#e2e8f0;color:var(--sidebar-text);cursor:pointer;display:flex;font-size:13px;font-weight:500;gap:10px;padding:8px 12px;text-align:left;text-decoration:none;transition:background .12s cubic-bezier(.4,0,.2,1),color .12s cubic-bezier(.4,0,.2,1);transition:background var(--motion-fast),color var(--motion-fast);width:100%}.nav-item:hover{background:#ffffff0d}.nav-item.active{background:#1e293b;background:var(--sidebar-active);box-shadow:inset 2px 0 0 #60a5fa;box-shadow:inset 2px 0 0 var(--sidebar-accent);color:#fff}.nav-item svg{flex-shrink:0;opacity:.85}.nav-item.active svg{color:#60a5fa;color:var(--sidebar-accent);opacity:1}.nav-divider{background:#ffffff0f;height:1px;margin:8px 12px}.nav-foot{align-items:center;border-top:1px solid #ffffff0f;display:flex;gap:10px;padding:10px}.shell-main{display:flex;flex:1 1;flex-direction:column;min-width:0;overflow:hidden}.topbar{align-items:center;background:#fff;background:var(--surface);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;gap:16px;gap:var(--space-4);height:52px;justify-content:space-between;padding:0 24px;padding:0 var(--space-6)}.topbar-title{align-items:baseline;display:flex;gap:10px;min-width:0}.topbar-title h1{color:#0f172a;color:var(--text);font-size:17px;font-weight:700;letter-spacing:-.01em;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-meta{color:#64748b;color:var(--text-muted);font-size:12px;white-space:nowrap}.topbar-actions{align-items:center;display:flex;flex-shrink:0;gap:6px}.user-menu{position:relative}.user-menu-trigger{align-items:center;background:none;border:none;border-radius:999px;cursor:pointer;display:inline-flex;gap:8px;padding:4px 10px 4px 4px;transition:background .12s cubic-bezier(.4,0,.2,1);transition:background var(--motion-fast)}.user-menu-trigger:hover{background:#f8fafc;background:var(--surface-alt)}.user-menu-trigger .user-meta{display:flex;flex-direction:column;line-height:1.15}.user-menu-trigger .user-name{color:#0f172a;color:var(--text);font-size:12.5px;font-weight:600}.user-menu-trigger .user-role{color:#64748b;color:var(--text-muted);font-size:10.5px}.user-menu-pop{animation:pop-in ease-out .12s cubic-bezier(.4,0,.2,1);animation:pop-in var(--motion-fast) ease-out;background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;border-radius:var(--radius-md);box-shadow:0 4px 12px #0f172a14;box-shadow:var(--shadow);min-width:220px;padding:6px;position:absolute;right:0;top:calc(100% + 4px);z-index:200}@keyframes pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.user-menu-head{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);margin-bottom:4px;padding:8px 10px}.user-menu-head .name{color:#0f172a;color:var(--text);font-size:13px;font-weight:600}.user-menu-head .email{color:#64748b;color:var(--text-muted);font-size:11.5px}.user-menu-item{align-items:center;background:none;border:none;border-radius:5px;color:#0f172a;color:var(--text);cursor:pointer;display:flex;font-size:13px;gap:9px;padding:7px 10px;text-align:left;text-decoration:none;width:100%}.user-menu-item:hover{background:#f8fafc;background:var(--surface-alt)}.user-menu-item.danger{color:#dc2626}.user-menu-item.danger:hover{background:#fee2e2}.user-menu-divider{background:#f1f5f9;background:var(--border-light);height:1px;margin:4px 0}.filter-chips{align-items:center;background:#fff;background:var(--surface);border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;flex-shrink:0;flex-wrap:wrap;gap:6px;padding:10px 24px;padding:10px var(--space-6)}.filter-chips-label{color:#94a3b8;color:var(--text-subtle);font-size:11px;font-weight:700;letter-spacing:.06em;margin-right:4px;text-transform:uppercase}.fchip{align-items:center;animation:chip-in .16s ease-out;background:#eff6ff;background:var(--primary-light);border:1px solid #bfdbfe;border-radius:999px;color:#1d4ed8;color:var(--primary-dark);display:inline-flex;font-size:12px;font-weight:500;gap:6px;padding:4px 9px 4px 11px}@keyframes chip-in{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:none}}.fchip strong{font-weight:700}.fchip-x{align-items:center;background:none;border:none;color:#1d4ed8;color:var(--primary-dark);cursor:pointer;display:inline-flex;opacity:.6;padding:0}.fchip-x:hover{opacity:1}.fchip-clear-all{background:none;border:none;border-radius:4px;color:#64748b;color:var(--text-muted);cursor:pointer;font-size:11.5px;font-weight:600;margin-left:auto;padding:4px 6px}.fchip-clear-all:hover{color:#dc2626}.drawer-backdrop{animation:drawer-fade-in .18s cubic-bezier(.4,0,.2,1) forwards;animation:drawer-fade-in var(--motion) forwards;background:#0f172a52;inset:0;opacity:0;position:fixed;z-index:49}@keyframes drawer-fade-in{to{opacity:1}}.drawer-slide{animation:drawer-slide-in cubic-bezier(.16,1,.3,1) .24s cubic-bezier(.4,0,.2,1);animation:drawer-slide-in var(--motion-slow) cubic-bezier(.16,1,.3,1)}@keyframes drawer-slide-in{0%{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}.page-pagecount{align-items:center;background:#f8fafc;background:var(--surface-alt);border-radius:999px;color:#64748b;color:var(--text-muted);display:inline-flex;font-size:11.5px;font-weight:600;gap:6px;padding:2px 10px}.page-pagecount--filtered{background:color-mix(in srgb,#2563eb 12%,#0000);background:color-mix(in srgb,var(--primary) 12%,#0000);color:#2563eb;color:var(--primary)}.page-pagecount--filtered strong{font-weight:800}.toolbar-group{align-items:center;display:inline-flex;gap:4px;padding:0 2px}.toolbar-divider{background:#e2e8f0;background:var(--border);height:22px;margin:0 4px;width:1px}.btn-icon{align-items:center;background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#64748b;color:var(--text-muted);cursor:pointer;display:inline-flex;height:32px;justify-content:center;transition:all .12s cubic-bezier(.4,0,.2,1);transition:all var(--motion-fast);width:32px}.btn-icon:hover{background:#f8fafc;background:var(--surface-alt);border-color:#cbd5e1;color:#0f172a;color:var(--text)}.btn-icon:disabled{cursor:not-allowed;opacity:.45}.btn-icon.active{background:#eff6ff;background:var(--primary-light);border-color:#bfdbfe;color:#2563eb;color:var(--primary)}.btn-tool{align-items:center;background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:6px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text);cursor:pointer;display:inline-flex;font-size:12.5px;font-weight:500;gap:6px;padding:6px 12px;transition:all .12s cubic-bezier(.4,0,.2,1);transition:all var(--motion-fast)}.btn-tool:hover{background:#f8fafc;background:var(--surface-alt);border-color:#cbd5e1}.btn-tool.active{background:#eff6ff;background:var(--primary-light);border-color:#bfdbfe;color:#2563eb;color:var(--primary)}.grid tbody tr{transition:background .12s cubic-bezier(.4,0,.2,1);transition:background var(--motion-fast)}.grid tbody tr:hover:not(.row--selected){background:#eff6ff;background:var(--row-hover)}.row-skel{animation:row-skel-shimmer 1.4s ease-in-out infinite;background:linear-gradient(90deg,#f1f5f9,#fff 50%,#f1f5f9);background-size:200% 100%;border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);height:38px}@keyframes row-skel-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}*,:after,:before{box-sizing:border-box;margin:0;padding:0}body{background:#f8fafc;color:#0f172a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,sans-serif;font-size:13px;height:100vh;overflow:hidden}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:#f1f5f9}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}
/*# sourceMappingURL=main.c9493141.css.map*/