:root{--bg: #f8f9fa;--surface: #ffffff;--border: #dee2e6;--text: #212529;--text-muted: #6c757d;--primary: #0078d4;--primary-hover: #106ebe;--danger: #dc3545;--success: #198754;--warning: #ffc107;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);line-height:1.6}.app-header{background:var(--primary);color:#fff;padding:.75rem 1.5rem;display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow)}.app-header h1{font-size:1.1rem;font-weight:600}.app-header .user-info{font-size:.85rem;opacity:.9}.app-main{max-width:1200px;margin:1.5rem auto;padding:0 1.5rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.25rem;box-shadow:var(--shadow);margin-bottom:1rem}.card h2{font-size:1rem;margin-bottom:1rem;color:var(--text);border-bottom:1px solid var(--border);padding-bottom:.5rem}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-bottom:1.5rem}.metric-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem;text-align:center;box-shadow:var(--shadow)}.metric-card .metric-value{font-size:1.75rem;font-weight:700;color:var(--primary);margin:.25rem 0}.metric-card .metric-label{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.metric-card .metric-unit{font-size:.9rem;color:var(--text-muted)}.metric-card--clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s}.metric-card--clickable:hover{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 25%,transparent)}.metric-card--active{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 30%,transparent)}.metric-hint{font-size:.7rem;color:var(--text-muted);margin-top:.25rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.85rem;font-weight:600;margin-bottom:.35rem;color:var(--text)}select,input[type=text],input[type=date],input[type=file]{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:var(--radius);font-size:.9rem;background:var(--surface)}select:focus,input:focus{outline:2px solid var(--primary);outline-offset:-1px}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem 1.25rem;border:none;border-radius:var(--radius);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .15s}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.data-table-wrapper{overflow-x:auto;margin-top:1rem}.data-table{width:100%;border-collapse:collapse;font-size:.85rem}.data-table th,.data-table td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.data-table th{background:var(--bg);font-weight:600;position:sticky;top:0}.data-table tr:hover td{background:#f0f4ff}.validation-list{list-style:none;padding:0}.validation-list li{padding:.4rem .6rem;border-radius:4px;margin-bottom:.3rem;font-size:.85rem}.validation-error{background:#f8d7da;color:#842029}.validation-warning{background:#fff3cd;color:#664d03}.badge{display:inline-block;padding:.15rem .5rem;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:uppercase}.badge-pending{background:#e2e3e5;color:#41464b}.badge-processing{background:#cfe2ff;color:#084298}.badge-completed{background:#d1e7dd;color:#0f5132}.badge-failed{background:#f8d7da;color:#842029}.spinner{display:inline-block;width:1rem;height:1rem;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.filters-row{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end;margin-bottom:1rem}.filters-row .form-group{margin-bottom:0;min-width:160px}.upload-history-table{width:100%;border-collapse:collapse;font-size:.85rem}.upload-history-table th,.upload-history-table td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid var(--border)}.upload-history-table th{background:var(--bg);font-weight:600}.clickable-row{cursor:pointer}.clickable-row:hover td{background:#f0f4ff}.auth-gate{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center}.auth-gate h2{margin-bottom:1rem}
