:root{font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;color:#14213d;background:radial-gradient(circle at top left,rgba(16,185,129,.18),transparent 32%),radial-gradient(circle at top right,rgba(59,130,246,.16),transparent 28%),linear-gradient(180deg,#f8fafc,#eef6f5);line-height:1.5;font-weight:400}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input{font:inherit}#root{min-height:100vh}.app-shell{max-width:1240px;margin:0 auto;padding:32px 20px 48px}.hero{display:grid;grid-template-columns:1.3fr .9fr;gap:24px;align-items:stretch;margin-bottom:28px}.eyebrow{margin:0 0 10px;color:#0f766e;font-size:.8rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.hero h1{margin:0;font-size:clamp(2.2rem,4vw,3.8rem);line-height:1.05}.hero-copy{max-width:680px;margin:16px 0 0;color:#475569;font-size:1.02rem}.upload-panel,.panel,.summary-card,.total-card,.empty-state,.message,.loading-state{border:1px solid rgba(148,163,184,.18);border-radius:24px;background:#ffffffd6;box-shadow:0 18px 50px #0f172a14;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.upload-panel{padding:24px;display:flex;flex-direction:column;justify-content:center;gap:14px}.file-picker{display:flex;align-items:center;justify-content:center;min-height:94px;padding:18px;border:2px dashed #94a3b8;border-radius:20px;color:#334155;background:#f8fafc;text-align:center;cursor:pointer}.file-picker input{display:none}.auth-box{display:grid;gap:10px}.auth-box input{width:100%;border:1px solid #cbd5e1;border-radius:12px;padding:10px 12px;background:#fff;color:#0f172a}.auth-mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mode-active{color:#fff!important;background:linear-gradient(135deg,#0f766e,#2563eb)!important}.auth-state{display:grid;gap:10px}.auth-error{margin:0;color:#b91c1c;font-size:.9rem}.upload-panel button{border:none;border-radius:16px;padding:14px 18px;font-weight:700;color:#fff;background:linear-gradient(135deg,#0f766e,#2563eb);cursor:pointer;transition:transform .2s ease,box-shadow .2s ease}.upload-panel button:hover:enabled{transform:translateY(-1px);box-shadow:0 14px 24px #2563eb38}.upload-panel button:disabled{opacity:.7;cursor:progress}.action-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.secondary-button{color:#0f172a!important;background:#e2e8f0!important}.secondary-button:hover:enabled{box-shadow:0 12px 24px #94a3b847!important}.helper-text{margin:0;color:#64748b;font-size:.92rem}.message,.loading-state,.empty-state{padding:22px;margin-bottom:24px}.error-message{color:#b91c1c;background:#fef2f2f2}.success-message{color:#166534;background:#f0fdf4f2}.loading-state,.empty-state{text-align:center}.spinner{width:44px;height:44px;margin:0 auto 14px;border:4px solid rgba(37,99,235,.18);border-top-color:#2563eb;border-radius:50%;animation:spin .8s linear infinite}.overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px;margin-bottom:24px}.total-card,.summary-card{padding:20px}.total-card{background:linear-gradient(135deg,#14213d,#1d4ed8);color:#fff}.total-card p,.summary-card p,.panel-header p{margin:0}.total-card h2,.summary-card h3,.panel-header h2{margin:10px 0 8px}.total-card span{color:#ffffffc2;font-size:.92rem}.summary-card{border-top:5px solid var(--accent)}.content-grid{display:grid;grid-template-columns:minmax(280px,.9fr) minmax(0,1.3fr);gap:24px}.panel{padding:22px}.panel-header{margin-bottom:18px}.panel-header p{color:#64748b}.chart-wrap{position:relative;min-height:320px}.chart-empty{display:grid;place-items:center;min-height:320px;border:1px dashed #cbd5e1;border-radius:18px;color:#64748b;background:#f8fafc;text-align:center;padding:20px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:14px 12px;border-bottom:1px solid #e2e8f0;text-align:left;white-space:nowrap}thead th{color:#475569;font-size:.92rem;text-transform:uppercase;letter-spacing:.04em}tbody tr:hover{background:#f8fafc}.category-pill{display:inline-flex;align-items:center;padding:6px 12px;border-radius:999px;font-size:.88rem;font-weight:700;color:var(--pill-color);background:color-mix(in srgb,var(--pill-color) 14%,white)}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 920px){.hero,.content-grid{grid-template-columns:1fr}}@media (max-width: 640px){.app-shell{padding:20px 14px 36px}.hero h1{font-size:2rem}.upload-panel,.panel,.summary-card,.total-card{border-radius:20px}.action-row{grid-template-columns:1fr}th,td{padding:12px 10px}}
