:root{--brand-navy:#24283b;--brand-blue:#157efb;--brand-blue-dark:#4054b2;--text:#4a4a4a;--text-muted:#6b7280;--bg:#f6f8fb;--card-bg:#fff;--border:#e6e9ef;--shadow:0 1px 3px rgba(16,24,40,.06),0 1px 2px rgba(16,24,40,.04);--radius:12px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:Roboto,Arial,Helvetica,sans-serif;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:Roboto,Arial,sans-serif;color:var(--brand-navy);margin:0}a{color:var(--brand-blue);text-decoration:none}.app-header{background:var(--card-bg);border-bottom:1px solid var(--border);padding:16px 24px;justify-content:space-between}.app-header,.app-header .brand{display:flex;align-items:center}.app-header .brand{gap:24px}.app-header .brand .logo{height:34px;width:auto;display:block;transition:opacity .15s ease}.app-header .brand a:hover .logo{opacity:.8}.app-header h1{font-size:18px;font-weight:700}.app-header .sub{font-size:12px;color:var(--text-muted)}.container{max-width:1140px;margin:0 auto;padding:24px}.logout-btn{background:transparent;border:1px solid var(--border);color:var(--text);padding:8px 14px;border-radius:8px;font-size:13px;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;text-decoration:none}.logout-btn:hover{border-color:var(--brand-blue);color:var(--brand-blue)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));grid-gap:16px;gap:16px;margin-bottom:24px}.stat-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}a.stat-card{display:block;text-decoration:none;color:inherit;cursor:pointer;transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease}a.stat-card:hover{border-color:var(--brand-blue);box-shadow:0 4px 16px rgba(21,126,251,.16);transform:translateY(-1px)}.stat-card-cta{margin-top:10px;font-size:12px;color:var(--brand-blue);font-weight:600}.stat-card .label{font-size:13px;color:var(--text-muted);display:flex;align-items:center;gap:8px;margin-bottom:10px}.stat-card .value{font-size:30px;font-weight:700;color:var(--brand-navy);line-height:1}.stat-card .hint{font-size:12px;color:var(--text-muted);margin-top:8px}.stat-card .dot{width:8px;height:8px;border-radius:50%;background:var(--brand-blue)}.panel{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);margin-bottom:24px}.panel h2{font-size:16px;font-weight:600;margin-bottom:4px}.panel .panel-sub{font-size:12px;color:var(--text-muted);margin-bottom:16px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:4px}.panel-head h2{margin-bottom:0}.granularity-toggle{display:inline-flex;flex-shrink:0;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:2px;gap:2px}.granularity-toggle button{border:none;background:transparent;padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;color:var(--text-muted);cursor:pointer;font-family:inherit}.granularity-toggle button.active{background:var(--card-bg);color:var(--brand-navy);box-shadow:0 1px 2px rgba(16,24,40,.08)}.granularity-toggle button:hover:not(.active){color:var(--text)}.grid-2{display:grid;grid-template-columns:1fr 1fr;grid-gap:24px;gap:24px}@media (max-width:860px){.grid-2{grid-template-columns:1fr}}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th{text-align:left;color:var(--text-muted);font-weight:600;white-space:nowrap}table.data td,table.data th{padding:10px 12px;border-bottom:1px solid var(--border)}table.data td{color:var(--text)}table.data td a{font-weight:600}table.data td a:hover{text-decoration:underline}table.data tr:last-child td{border-bottom:none}.table-scroll{overflow-x:auto}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow);padding:32px;width:100%;max-width:380px}.login-card .logo{height:40px;width:auto;display:block;margin-bottom:36px;transition:opacity .15s ease}.login-card a:hover .logo{opacity:.8}.login-card h1{font-size:20px;margin-bottom:6px}.login-card p{font-size:13px;color:var(--text-muted);margin:0 0 22px}.login-card label{font-size:13px;font-weight:500;color:var(--brand-navy);display:block;margin-bottom:6px}.login-card input{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;margin-bottom:16px}.login-card input:focus{outline:none;border-color:var(--brand-blue);box-shadow:0 0 0 3px rgba(21,126,251,.15)}.password-field{position:relative;margin-bottom:16px}.password-field input{padding-right:40px;margin-bottom:0}.password-toggle{position:absolute;top:0;right:0;bottom:0;width:40px;display:flex;align-items:center;justify-content:center;background:none;border:none;padding:0;color:var(--text-muted);cursor:pointer}.password-toggle:hover{color:var(--brand-navy)}.login-card .remember-me{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:400;color:var(--text-muted);margin:-6px 0 20px;cursor:pointer}.login-card .remember-me input[type=checkbox]{width:auto;margin:0;cursor:pointer}.btn-primary{width:100%;background:var(--brand-blue);color:#fff;border:none;padding:11px 12px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;font-family:inherit}.btn-primary:hover{background:#0f6fe0}.btn-primary:disabled{opacity:.6;cursor:default}.btn-secondary{background:#fff;color:var(--brand-blue);border:1px solid var(--border);padding:6px 14px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit}.btn-secondary:hover:not(:disabled){background:#f5f8ff}.btn-secondary:disabled{opacity:.45;cursor:default}.error{background:#fef2f2;color:#b42318;border:1px solid #fecaca;padding:10px 12px;border-radius:8px;margin-bottom:16px}.error,.muted{font-size:13px}.muted,.state-msg{color:var(--text-muted)}.state-msg{padding:40px;text-align:center}.app-footer{display:flex;flex-direction:column;align-items:center;gap:10px;padding:32px 24px 40px;text-align:center}.footer-logo{height:24px;width:auto;display:block;opacity:.85;transition:opacity .15s ease}.app-footer a:hover .footer-logo{opacity:1}.app-footer span{font-size:12px;color:var(--text-muted)}