*{box-sizing:border-box}:root{--bg:#f3f4f6;--text:#111827;--muted:#6b7280;--card:#fff;--border:#e5e7eb;--soft:#f9fafb;--primary:#2563eb;--upload-bg:#f8faff;--upload-border:#c7d2fe;--upload-active:#eff6ff}html[data-theme=dark]{--bg:#0b1220;--text:#e5e7eb;--muted:#9ca3af;--card:#111827;--border:#253041;--soft:#0f172a;--primary:#3b82f6;--upload-bg:#0f172a;--upload-border:#334155;--upload-active:#172554}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);transition:background-color .22s ease,color .22s ease}.container{max-width:1200px;margin:0 auto;padding:24px 16px 40px}.header{display:flex;justify-content:space-between;align-items:center;gap:16px}.card,.header{margin-bottom:10px}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px;transition:background-color .22s ease,border-color .22s ease,color .22s ease}.compact{padding:10px 14px}.upload-card{padding-bottom:12px}.upload-dropzone{display:block;border:1.5px dashed var(--upload-border);background:var(--upload-bg);border-radius:10px;padding:26px 14px;text-align:center;cursor:pointer;transition:all .15s ease}.upload-dropzone input[type=file]{display:none}.upload-dropzone.active{border-color:var(--primary);background:var(--upload-active)}.upload-drop-title{font-size:15px;font-weight:600;margin-bottom:6px}.upload-drop-sub{font-size:12px;color:var(--muted)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:10px;gap:10px}.metric{background:var(--soft);border:1px solid var(--border);border-radius:8px;padding:8px 10px}.metric .label{font-size:12px;color:#6b7280}.metric .value{font-size:24px;font-weight:700;margin-top:4px}.metric .label{color:var(--muted)}button,input,select,textarea{width:100%;border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:14px;background:var(--card);color:var(--text);transition:background-color .22s ease,border-color .22s ease,color .22s ease,transform .12s ease}textarea{min-height:72px;resize:vertical}button.primary{background:var(--primary);border-color:var(--primary);color:#fff;cursor:pointer;font-weight:600}.ghost{background:var(--card);border-color:var(--border);color:var(--text);cursor:pointer}button:disabled{opacity:.6;cursor:not-allowed}.actions{display:flex;gap:10px;margin-top:8px}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:8px;transition:border-color .22s ease}.table-wrap table{width:100%;border-collapse:collapse;font-size:13px}.table-wrap td,.table-wrap th{border-bottom:1px solid var(--border);padding:7px 9px;text-align:left;white-space:nowrap}.sub{margin:14px 0 8px}.switch-panel{min-width:210px;display:grid;grid-gap:8px;gap:8px}.switch-row{display:grid;grid-gap:4px;gap:4px}.switch-label{font-size:12px;color:var(--muted)}.toggle-group{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px;gap:4px;background:var(--soft);border:1px solid var(--border);border-radius:8px;padding:3px}.toggle-btn{padding:6px 8px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--muted);font-size:12px;font-weight:600;cursor:pointer}.toggle-btn:hover{color:var(--text)}.toggle-btn.active{background:var(--card);color:var(--text);border-color:var(--border);box-shadow:0 1px 0 rgba(0,0,0,.06)}.badge{display:inline-block;padding:4px 8px;border-radius:999px;font-size:12px;background:var(--soft);color:var(--text)}.error{color:#b91c1c;margin-top:8px}.success{color:#047857;margin-top:8px}.muted{color:var(--muted);font-size:13px;margin-top:6px}@media (max-width:900px){.grid-2,.grid-4{grid-template-columns:1fr}.header{flex-direction:column}}