:root{--bg: #ffffff;--fg: #111827;--muted: #6b7280;--border: #e5e7eb;--accent: #2563eb;--warn: #f59e0b;--soft: #f9fafb}*{box-sizing:border-box}body{margin:0;background:#f0f0f0;color:#011340}.app{font-family:Inter,system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif;padding:20px;max-width:1200px;margin:0 auto}h1{margin:0 0 16px;font-size:22px;color:#023071}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}button,select{border:1px solid #590d84;background:#f6f0fb;border-radius:10px;padding:8px 12px;cursor:pointer;color:#26003e}button:hover{box-shadow:0 1px 5px #0000000f}button:disabled{opacity:.5;cursor:not-allowed}.stats{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:8px 0 12px}.chip{background:#f6f0fb;border:1px solid #590d84;padding:6px 10px;border-radius:999px;font-size:13px;color:#26003e}.filters{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:12px 0}.filters input{width:100%;padding:8px;border:1px solid #022fa1;border-radius:10px;background-color:#fff}.table{border:1px solid #022fa1;border-radius:16px;overflow:hidden}.thead,.rowgrid{display:grid;grid-template-columns:var(--cols)}.thead{background:#b1c2f1;border-bottom:1px solid #022fa1;font-weight:600}.th,.td{padding:10px 8px;border-right:1px solid #022fa1}.th:last-child,.td:last-child{border-right:none}.tbody{max-height:65vh;overflow:auto;scrollbar-gutter:stable}.rowgrid{border-bottom:1px solid #022fa1}.rowgrid:nth-child(2n){background:#fcfcfc}.rowgrid.dirty{background:#fff8e6}.cell-dirty{background:#fff1c2}.editable{width:100%;padding:6px 8px;border:1px solid transparent;border-radius:8px;background:transparent;color:#011340}.editable:focus{outline:none;border-color:1px solid #022fa1;box-shadow:0 0 0 3px #2563eb26;background:#f6f6fb}.sortable{-webkit-user-select:none;user-select:none;cursor:pointer}.sort-icon{color:#011340;margin-left:6px}.empty{margin-top:16px;border:1px solid #590d84;border-radius:16px;padding:16px;background:#f6f0fb}.note{color:#26003e;font-size:13px}.spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 900px){.filters{grid-template-columns:repeat(2,1fr)}.app{--cols: 1.2fr 1.1fr 1fr .8fr 1.2fr .9fr}.thead,.rowgrid{grid-template-columns:var(--cols)}}.cell-wrap{display:flex;align-items:center;gap:6px}.undo-btn{font-size:12px;border:1px solid var(--border);background:#fff;border-radius:8px;padding:2px 6px;cursor:pointer}.undo-btn:hover{box-shadow:0 1px 5px #0000000f}.action-btn{font-size:12px;border:1px solid var(--border);background:#fff;border-radius:8px;padding:4px 8px;cursor:pointer}.action-btn:hover{box-shadow:0 1px 5px #0000000f}.action-btn.danger{border-color:#f87171;color:#b91c1c}.action-btn.danger:hover{background:#fee2e2}.action-btn.success{border-color:#078456;color:#065f46}.action-btn.success:hover{background:#d1fae5}.thead{position:sticky;top:0;z-index:2}.table{overflow-x:auto}.thead,.rowgrid{min-width:720px}.td,.editable{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.td:nth-child(5) .editable{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}button:focus-visible,.editable:focus-visible,.undo-btn:focus-visible,.action-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion: reduce){.spinner{animation:none}}.action-btn.neutral{border-color:#7c818a;color:#000}.action-btn.neutral:hover{background:#f3f4f6}.action-btn.primary{border-color:var(--accent);color:var(--accent)}.action-btn.primary:hover{background:#2563eb14}.btn-icon{display:inline-flex;align-items:center;gap:6px}.compact .th,.compact .td{padding:4px 6px}.compact .editable{padding:3px 6px;font-size:13px}.dark{--bg: #1f2937;--fg: #f9fafb;--muted: #9ca3af;--border: #374151;--accent: #3b82f6;--warn: #fbbf24;--soft: #111827}body.dark{background:var(--bg);color:var(--fg)}h3{color:#26003e}.app{--cols: 1.4fr 1.2fr 1fr .8fr 1.2fr .9fr}.thead,.rowgrid,.filters-row,.toggle-row{display:grid;grid-template-columns:var(--cols);align-items:center;gap:8px}.filters-row input{width:100%;border:1px solid;padding:8px;margin-top:8px;border-radius:8px;border-color:#023071;color:#022fa1}.toggle-row label{display:inline-flex;align-items:center;gap:6px;margin-top:10px}.grid-spacer{height:1px}.filters-row,.toggle-row{padding-right:var(--sbw, 16px)}
