:root{--brand: #1e3c72;--brand-2: #2a5298;--brand-grad: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);--bg: #eef2f9;--surface: #ffffff;--surface-2: #f5f7fb;--border: #e4e9f2;--text: #1f2733;--muted: #6b7480;--accent: #4ecdc4;--radius: 14px;--shadow: 0 8px 32px rgba(30, 60, 114, .1);--shadow-sm: 0 4px 16px rgba(30, 60, 114, .08);--sidebar-w: 248px;--ok-fg: #157347;--ok-bg: #d4edda;--warn-fg: #856404;--warn-bg: #fff3cd;--danger-fg: #a12b3a;--danger-bg: #f8d7da;--info-fg: #0c5460;--info-bg: #d1ecf1}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Tahoma,system-ui,-apple-system,Roboto,sans-serif;background:var(--bg);color:var(--text);font-size:14px}a{color:var(--brand-2);text-decoration:none}a:hover{text-decoration:underline}.muted{color:var(--muted)}.centered{min-height:100vh;display:grid;place-items:center;background:var(--brand-grad);padding:20px}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.app.collapsed{--sidebar-w: 72px}.sidebar{background:var(--brand-grad);color:#fff;padding:18px 12px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh;overflow:hidden}.sidebar-head{display:flex;align-items:center;gap:10px;padding:4px 8px 14px}.sidebar-logo{width:40px;height:40px;flex-shrink:0;border-radius:10px;background:#ffffff26;display:grid;place-items:center;font-size:20px}.sidebar-brand{line-height:1.15;white-space:nowrap;overflow:hidden}.sidebar-brand b{font-size:16px}.sidebar-brand small{display:block;color:#ffffffb3;font-size:11px;font-style:italic}.collapse-btn{background:#ffffff1f;color:#fff;border:none;border-radius:8px;padding:8px;cursor:pointer;margin-bottom:8px;align-self:flex-end}.collapse-btn:hover{background:#ffffff38}.app.collapsed .collapse-btn{align-self:center}.nav{display:flex;flex-direction:column;gap:4px}.nav a{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;color:#ffffffe0;white-space:nowrap;overflow:hidden}.nav a:hover{background:#ffffff1f;text-decoration:none}.nav a.active{background:#fff3;color:#fff;font-weight:600}.nav a .nav-icon{font-size:18px;width:22px;text-align:center;flex-shrink:0}.app.collapsed .nav a{justify-content:center;padding:11px 0}.app.collapsed .nav a .nav-label,.app.collapsed .sidebar-brand,.app.collapsed .sidebar-foot small{display:none}.sidebar .spacer{flex:1}.sidebar-foot{border-top:1px solid rgba(255,255,255,.15);padding-top:12px}.sidebar-foot button{width:100%;background:#ffffff1f;color:#fff;border:none;border-radius:10px;padding:10px;cursor:pointer;display:flex;align-items:center;gap:10px;justify-content:center}.sidebar-foot button:hover{background:#ffffff38}.main{min-width:0;display:flex;flex-direction:column}.topbar{background:#ffffffe6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);padding:16px 28px;display:flex;justify-content:space-between;align-items:center;gap:16px;position:sticky;top:0;z-index:10}.topbar h1{font-size:20px;margin:0;color:var(--brand)}.topbar .client-info{text-align:right;color:var(--brand)}.topbar .client-name{font-weight:600}.topbar .client-sub{font-size:12px;color:var(--muted)}.content{padding:24px 28px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;margin-bottom:20px;box-shadow:var(--shadow-sm)}.card h2{font-size:15px;margin:0 0 14px;color:var(--brand)}.section-title{font-size:18px;font-weight:600;color:var(--brand);margin:4px 0 16px;display:flex;align-items:center;gap:10px}.grid{display:grid;gap:18px}.grid.cols-3{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}.grid.cols-2{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px}.stat{font-size:30px;font-weight:700;color:var(--brand)}.stat-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.services-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}.service-badge{background:var(--brand-grad);color:#fff;padding:14px 18px;border-radius:12px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:0 4px 15px #1e3c7240}.service-badge .svc{display:flex;align-items:center;gap:12px}.service-badge .svc-icon{width:34px;height:34px;border-radius:8px;background:#fff3;display:grid;place-items:center;font-size:17px}.service-badge .svc-status{padding:3px 9px;border-radius:12px;font-size:11px;font-weight:600;background:#fff3}.widget{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow-sm);transition:transform .2s ease,box-shadow .2s ease}.widget:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.widget-header{display:flex;align-items:center;gap:10px;padding-bottom:12px;margin-bottom:14px;border-bottom:2px solid var(--surface-2)}.widget-icon{width:32px;height:32px;border-radius:8px;display:grid;place-items:center;color:#fff;font-size:16px;flex-shrink:0}.widget-title{font-size:15px;font-weight:600;color:var(--brand)}.metric-value{font-size:34px;font-weight:700;color:var(--brand);text-align:center;padding:12px 0 4px}.metric-label{color:var(--muted);font-size:13px;text-align:center}.kpi-mini{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.kpi-mini .cell{text-align:center;padding:14px;background:var(--surface-2);border-radius:10px}.kpi-mini .cell b{display:block;font-size:20px;color:var(--brand)}.kpi-mini .cell span{font-size:12px;color:var(--muted)}.progress-bar{width:100%;height:9px;background:#e9ecef;border-radius:5px;overflow:hidden}.progress-fill{height:100%;background:var(--brand-grad);border-radius:5px;transition:width .5s ease}.progress-fill.over{background:linear-gradient(90deg,#e07a5f,#d6455f)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase}tr:last-child td{border-bottom:none}.table-wrap{overflow-x:auto}label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px}input,select,textarea{width:100%;padding:10px 12px;background:var(--surface);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand-2)}.field{margin-bottom:14px}button{cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--brand);padding:9px 16px;border-radius:8px;font-size:14px;font-weight:500;transition:all .2s ease}button:hover{border-color:var(--brand-2)}button.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.primary:hover{background:var(--brand-2)}button:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:6px 10px;font-size:12px}.actions{display:flex;gap:10px;flex-wrap:wrap}.badge{padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}.badge.ok{color:var(--ok-fg);background:var(--ok-bg)}.badge.warn{color:var(--warn-fg);background:var(--warn-bg)}.badge.danger{color:var(--danger-fg);background:var(--danger-bg)}.badge.info{color:var(--info-fg);background:var(--info-bg)}.badge.muted{color:var(--muted);background:var(--surface-2)}.alert{padding:11px 15px;border-radius:8px;margin-bottom:14px;font-size:14px}.alert.error{background:var(--danger-bg);color:var(--danger-fg);border-left:4px solid #d6455f}.alert.ok{background:var(--ok-bg);color:var(--ok-fg);border-left:4px solid #2f9e5f}.empty{text-align:center;color:var(--muted);padding:40px 20px}.login-box{width:min(380px,100%)}.login-brand{text-align:center;margin-bottom:18px}.login-brand b{font-size:22px;color:var(--brand)}.login-brand small{display:block;color:var(--muted);font-style:italic}.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:12px;word-break:break-all}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e3c728c;display:grid;place-items:center;z-index:50;padding:20px}.modal{background:var(--surface);border-radius:var(--radius);padding:26px;width:min(620px,100%);max-height:85vh;overflow-y:auto;box-shadow:var(--shadow)}.modal h3{margin-top:0;color:var(--brand)}.widget-option{display:flex;align-items:center;gap:14px;padding:12px;border:2px solid var(--border);border-radius:10px;cursor:pointer}.widget-option:hover{border-color:var(--brand-2);background:var(--surface-2)}.widget-option.selected{border-color:var(--brand);background:#eaf0fb}@media (max-width: 860px){.app{--sidebar-w: 72px}.app .nav a{justify-content:center;padding:11px 0}.app .nav a .nav-label,.app .sidebar-brand,.app .sidebar-foot small{display:none}.topbar{padding:14px 18px}.content{padding:18px}}
