:root{--teal:#13aeb4;--teal-dark:#087b82;--ink:#08233f;--muted:#61738b;--line:#d7e8ec;--bg:#f3fbfc;--danger:#c63d4b;--warn:#c47713;--ok:#19734a}*{box-sizing:border-box}body{margin:0;font:15px/1.4 Inter,Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}.hidden{display:none!important}.login-screen{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#e9fbfc,#fff)}.login-card{width:min(420px,92vw);padding:38px;background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:0 24px 70px #08334d1a}.brand-mark{width:58px;height:58px;display:grid;place-items:center;border-radius:16px;background:var(--teal);color:#fff;font-size:25px;font-weight:800}.login-card h1{margin:20px 0 4px}.login-card p{color:var(--muted);margin:0 0 24px}.login-card label{display:grid;gap:6px;margin:14px 0;font-weight:700}.login-card input,.filters input,.filters select{padding:12px;border:1px solid var(--line);border-radius:11px;background:#fff}.primary,button{border:0;border-radius:11px;padding:11px 16px;cursor:pointer;font-weight:700}.primary{background:var(--teal-dark);color:#fff}.login-card .primary{width:100%;margin-top:8px}.error{color:var(--danger);margin-top:12px}.app{min-height:100vh;display:grid;grid-template-columns:250px 1fr}aside{position:sticky;top:0;height:100vh;background:linear-gradient(180deg,#12b1b7,#087f87);color:#fff;padding:24px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;margin-bottom:38px}.brand>span{background:#fff;color:var(--teal-dark);width:45px;height:45px;border-radius:13px;display:grid;place-items:center;font-weight:900}.brand strong,.brand small{display:block}.brand small{opacity:.8}nav{display:grid;gap:8px}nav button{text-align:left;color:#fff;background:transparent}nav button.active{background:#ffffff26}.user-box{margin-top:auto;padding-top:20px;border-top:1px solid #ffffff40}.user-box strong,.user-box small{display:block}.user-box button{margin-top:12px;background:#fff;color:var(--teal-dark);padding:8px 12px}main{min-width:0}header{height:105px;padding:25px 38px;background:#fff;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}header h1{margin:0}header p{margin:2px 0;color:var(--muted)}.badge{background:#e6f8f9;color:var(--teal-dark);padding:9px 14px;border-radius:999px;font-weight:700}.view{display:none;padding:30px 38px}.view.active{display:block}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:20px}.metrics article,.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px}.metrics span{color:var(--muted)}.metrics strong{display:block;font-size:32px;margin-top:8px}.panel h2{margin-top:0}.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:22px 0}.upload{border:2px dashed #a9dfe2;border-radius:16px;padding:22px;display:grid;gap:7px;background:#f9ffff}.upload span{color:var(--muted)}.notice{padding:13px;background:#edf8f9;border-radius:10px;margin-bottom:15px}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:18px}.filters input,.filters select{min-width:160px;flex:1}.filters button{background:var(--teal-dark);color:#fff}.filters .ghost,.ghost{background:#edf3f5;color:var(--ink)}.table-wrap{overflow:auto;padding:0}table{width:100%;border-collapse:collapse;min-width:1050px}th,td{text-align:left;padding:13px;border-bottom:1px solid var(--line);vertical-align:top}th{position:sticky;top:0;background:#eaf8f9;font-size:12px;text-transform:uppercase}td small{color:var(--muted)}.status{display:inline-block;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:800}.s-ok{background:#e5f5ec;color:var(--ok)}.s-warn{background:#fff0d8;color:var(--warn)}.s-danger{background:#fde8ea;color:var(--danger)}.empty{text-align:center;color:var(--muted);padding:30px}.toast{position:fixed;right:24px;bottom:24px;background:var(--ink);color:#fff;padding:14px 18px;border-radius:12px;box-shadow:0 12px 30px #0003}@media(max-width:900px){.app{grid-template-columns:1fr}aside{height:auto;position:static}.metrics{grid-template-columns:1fr 1fr}.upload-grid{grid-template-columns:1fr}header,.view{padding-left:20px;padding-right:20px}}
