: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)}.breadcrumbs-bar{background:var(--bg);border-bottom:1px solid var(--border);padding:12px 24px}.breadcrumbs{max-width:1140px;margin:0 auto;padding:0;list-style:none;flex-wrap:wrap;font-size:14px}.breadcrumbs,.breadcrumbs li{display:flex;align-items:center}.breadcrumbs li+li:before{content:"\203A";margin:0 8px;color:var(--text-muted);font-size:16px;line-height:1}.breadcrumbs a{color:var(--brand-blue);font-weight:600;text-decoration:none}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs-current{color:var(--brand-navy);font-weight:700}.app-shell{align-items:flex-start}.app-shell,.side-nav{display:flex;min-height:100vh}.side-nav{width:220px;flex:0 0 220px;background:var(--card-bg);border-right:1px solid var(--border);padding:20px 16px;flex-direction:column;gap:28px;position:-webkit-sticky;position:sticky;top:0;transition:width .15s ease,flex-basis .15s ease}.side-nav-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 12px}.side-nav-brand{display:block;min-width:0;overflow:hidden}.side-nav-brand .logo{height:30px;width:auto;transition:opacity .15s ease}.side-nav-brand:hover .logo{opacity:.8}.side-nav-collapse-btn{flex:0 0 auto;width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:6px;background:none;color:var(--text-muted);cursor:pointer;padding:0}.side-nav-collapse-btn:hover{border-color:var(--brand-blue);color:var(--brand-blue)}.side-nav-items{display:flex;flex-direction:column;gap:4px}.side-nav-item{display:flex;align-items:center;gap:12px;width:100%;padding:10px 12px;border-radius:8px;font-size:14px;font-weight:500;color:var(--text);text-decoration:none;border:none;background:none;text-align:left;cursor:pointer;font-family:inherit;white-space:nowrap}.side-nav-item svg{flex:0 0 auto}.side-nav-item:hover{background:var(--bg);color:var(--brand-navy)}.side-nav-item.active{background:rgba(21,126,251,.1);color:var(--brand-blue);font-weight:700}.side-nav.collapsed{width:68px;flex-basis:68px}.side-nav.collapsed .side-nav-top{justify-content:center}.side-nav.collapsed .side-nav-brand{display:none}.side-nav.collapsed .side-nav-item{justify-content:center;padding:10px}.side-nav.collapsed .side-nav-item-label{display:none}.app-main{flex:1 1;min-width:0}.page-title{padding:20px 24px 0}.page-title h1{font-size:20px;font-weight:700}.page-title .sub{font-size:12px;color:var(--text-muted);margin-top:2px}.cost-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:24px}.cost-tab{padding:10px 4px;margin-right:20px;font-size:14px;font-weight:600;color:var(--text-muted);text-decoration:none;border-bottom:2px solid transparent}.cost-tab:hover{color:var(--brand-navy)}.cost-tab.active{color:var(--brand-blue);border-bottom-color:var(--brand-blue)}button.cost-tab{border:none;border-bottom:2px solid transparent;background:none;cursor:pointer;font-family:inherit}button.cost-tab.active{border-bottom-color:var(--brand-blue)}@media (max-width:720px){.app-shell{flex-direction:column}.side-nav{width:100%;flex:0 0 auto;min-height:0;border-right:none;border-bottom:1px solid var(--border);gap:16px;position:static}.side-nav,.side-nav-items{flex-direction:row;align-items:center}.side-nav-items{overflow-x:auto}.side-nav-item{width:auto}.side-nav-collapse-btn{display:none}.side-nav.collapsed{width:100%;flex-basis:auto}.side-nav.collapsed .side-nav-brand{display:block}.side-nav.collapsed .side-nav-item-label{display:inline}}.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,button.stat-card{display:block;width:100%;text-align:left;text-decoration:none;color:inherit;cursor:pointer;font-family:inherit;transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease}a.stat-card:hover,button.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)}.status-badge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600}.status-dot{width:8px;height:8px;border-radius:50%;background:var(--text-muted);flex-shrink:0}.status-dot--up{background:#12b76a}.status-dot--down,.status-dot--seems_down{background:#d92d20}.status-dot--paused{background:#f79009}.status-badge--up{color:#12b76a}.status-badge--down,.status-badge--seems_down{color:#d92d20}.status-badge--paused{color:#f79009}.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}.splash-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px;min-height:50vh;padding:40px}.splash-logo{height:64px;width:auto;animation:splash-pulse 1.6s ease-in-out infinite}.splash-label{font-size:13px;color:var(--text-muted)}@keyframes splash-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.94)}}.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)}