:root{--navy-950:#0b1c30;--navy-900:#102a43;--navy-700:#1d3f5f;--primary:#0f766e;--primary-dark:#0b5e58;--primary-soft:#e3f2ef;--amber:#9a6b13;--amber-soft:#faf3df;--red:#b3261e;--red-soft:#fbeae9;--ink:#1c2f42;--muted:#5b6f84;--faint:#8598ab;--line:#dde5ee;--bg:#edf1f6;--card:#fff;--radius:12px;--shadow:0 1px 2px rgba(16,42,67,.06),0 4px 14px rgba(16,42,67,.06);--shadow-lg:0 2px 4px rgba(16,42,67,.08),0 10px 28px rgba(16,42,67,.12)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}a{color:var(--primary-dark)}h2.page-title{margin:0;font-size:22px;letter-spacing:-.2px}p.page-sub{color:var(--muted);margin:4px 0 0;font-size:14px}.shell{display:flex;min-height:100vh}.sidebar{width:248px;flex-shrink:0;background:linear-gradient(180deg,var(--navy-950),var(--navy-900));color:#d9e2ec;display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh}.brand{padding:20px 18px 16px;border-bottom:1px solid hsla(0,0%,100%,.1);gap:10px}.brand,.brand-mark{display:flex;align-items:center}.brand-mark{width:36px;height:36px;border-radius:9px;flex-shrink:0;background:var(--primary);color:#fff;justify-content:center;font-weight:800;font-size:17px}.brand strong{display:block;font-size:15px;color:#fff;letter-spacing:.1px}.brand span{font-size:11.5px;color:#9fb3c8}.nav{display:flex;flex-direction:column;gap:2px;padding:12px 10px;overflow-y:auto}.nav-group{font-size:11px;text-transform:uppercase;letter-spacing:.8px;color:#7e96ad;padding:12px 12px 5px}.nav a{color:#c6d4e2;text-decoration:none;padding:8px 12px;border-radius:8px;font-size:14px;display:flex;align-items:center;gap:10px}.nav a svg{flex-shrink:0;opacity:.75}.nav a:hover{background:hsla(0,0%,100%,.07);color:#fff}.nav a.active{background:hsla(0,0%,100%,.12);color:#fff;font-weight:600}.nav a.active svg{opacity:1}.side-foot{margin-top:auto;padding:14px 18px;font-size:12px;color:#9fb3c8;border-top:1px solid hsla(0,0%,100%,.1)}.main{flex:1 1;min-width:0;display:flex;flex-direction:column}.topbar{background:var(--card);border-bottom:1px solid var(--line);padding:10px 28px;display:flex;align-items:center;gap:12px;position:-webkit-sticky;position:sticky;top:0;z-index:5}.topbar h1{font-size:16px;margin:0}.topbar .sub{color:var(--muted);font-size:13px}.topbar .spacer{flex:1 1}.api-dot{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--muted)}.api-dot i{width:9px;height:9px;border-radius:50%;background:#cbd5e1}.api-dot.on i{background:#16a34a;box-shadow:0 0 0 3px rgba(22,163,74,.15)}.api-dot.off i{background:var(--red)}.content{padding:26px 28px 56px;max-width:1200px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.page-head .actions{display:flex;gap:8px;flex-wrap:wrap}.grid-kpi{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:14px;gap:14px;margin:16px 0}.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--primary);opacity:.85}.kpi.danger:before{background:var(--red)}.kpi.warn:before{background:#d97706}.kpi .label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-weight:600}.kpi .value{font-size:32px;font-weight:750;margin:2px 0;letter-spacing:-.5px}.kpi .hint{font-size:12.5px;color:var(--muted)}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;margin:14px 0;box-shadow:var(--shadow)}.card.flush{padding:0;overflow:hidden}.card h2{margin:0 0 4px;font-size:16px;letter-spacing:-.1px}.card p.desc{margin:0 0 12px;color:var(--muted);font-size:13.5px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 22px;border-bottom:1px solid var(--line)}.card-head h2{margin:0}.card-body{padding:18px 22px}.cols-2{grid-template-columns:1fr 1fr;grid-gap:14px}.cols-2,.cols-3{display:grid;gap:14px}.cols-3{grid-template-columns:repeat(3,1fr);grid-gap:14px}@media (max-width:980px){.cols-2,.cols-3{grid-template-columns:1fr}}@media (max-width:900px){.sidebar{position:fixed;z-index:20;transform:translateX(-100%);transition:transform .2s ease}body.nav-open .sidebar{transform:none;box-shadow:var(--shadow-lg)}.menu-btn{display:inline-flex!important}.content{padding:18px 16px 56px}}.menu-btn{display:none;align-items:center;justify-content:center;width:36px;height:36px;border:1px solid var(--line);border-radius:8px;background:#fff;cursor:pointer}table.tbl{width:100%;border-collapse:collapse;font-size:14px}table.tbl th{text-align:left;font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);border-bottom:2px solid var(--line);padding:9px 10px;white-space:nowrap}table.tbl td{border-bottom:1px solid var(--line);padding:10px;vertical-align:top}table.tbl tbody tr:hover{background:#f6f9fc}table.tbl tbody tr:last-child td{border-bottom:0}.badge{display:inline-block;font-size:12px;font-weight:650;padding:2px 10px;border-radius:20px;white-space:nowrap}.badge.bad{background:var(--red-soft);color:var(--red)}.badge.warn{background:var(--amber-soft);color:var(--amber)}.badge.ok{background:var(--primary-soft);color:var(--primary-dark)}.badge.info{background:#e8eef5;color:var(--navy-700)}.chips{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.chip{border:1px solid var(--line);background:#fff;border-radius:20px;padding:5px 14px;font-size:13px;cursor:pointer;color:var(--muted);font-weight:600}.chip:hover{border-color:var(--primary);color:var(--primary-dark)}.chip.on{background:var(--navy-900);border-color:var(--navy-900);color:#fff}.btn,button.btn{background:var(--primary);color:#fff;border:0;border-radius:8px;padding:9px 18px;font-size:14px;font-weight:650;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:7px;transition:background .12s ease}.btn:hover,button.btn:hover{background:var(--primary-dark)}button.btn:disabled{background:#a8b8c7;cursor:default}button.btn.secondary{background:#fff;color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow)}button.btn.secondary:hover{background:#f2f6fa}button.btn.danger{background:var(--red)}button.btn.sm{padding:6px 12px;font-size:13px}.row-btns{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 2px}input[type=text],select,textarea{font:inherit;border:1px solid var(--line);border-radius:8px;padding:9px 12px;background:#fff;color:var(--ink)}input[type=text]:focus,select:focus,textarea:focus{outline:2px solid rgba(15,118,110,.35);border-color:var(--primary)}textarea{width:100%;resize:vertical}label.field{display:inline-flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted);font-weight:600;margin-right:10px;margin-bottom:8px}label.field input,label.field select{color:var(--ink);font-weight:400;min-width:180px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:4px 12px;gap:4px 12px;margin-bottom:10px}pre.out{background:var(--navy-950);color:#d9e2ec;border-radius:8px;padding:12px 14px;font-size:12.5px;overflow:auto;max-height:260px}.alert{border-left:4px solid #d97706;background:var(--amber-soft);padding:10px 14px;border-radius:0 8px 8px 0;font-size:14px;margin:10px 0}.alert strong{display:block}.alert.err{border-color:var(--red);background:var(--red-soft)}.alert.ok{border-color:var(--primary);background:var(--primary-soft)}.legend{display:flex;gap:16px;font-size:13px;color:var(--muted);margin-top:8px;flex-wrap:wrap}.legend i{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px}.steps{display:flex;gap:0;margin:18px 0;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.step{flex:1 1;padding:12px 14px;display:flex;gap:10px;align-items:center;border-right:1px solid var(--line);min-width:0}.step:last-child{border-right:0}.step .n{width:26px;height:26px;border-radius:50%;flex-shrink:0;background:#e3e9f0;color:var(--muted);font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}.step .t{font-size:13px;font-weight:650;line-height:1.25}.step .s{font-size:11.5px;color:var(--faint)}.step.done .n{background:var(--primary);color:#fff}.step.now{background:#f4faf9;box-shadow:inset 0 -3px 0 var(--primary)}.step.now .n{background:var(--navy-900);color:#fff}@media (max-width:900px){.steps{flex-direction:column}.step{border-right:0;border-bottom:1px solid var(--line)}}.pipe{display:flex;align-items:center;gap:0;margin:12px 0 4px;flex-wrap:wrap}.pipe .st{font-size:12px;font-weight:700;padding:5px 12px;border-radius:20px;background:#e8edf3;color:var(--faint);text-transform:uppercase;letter-spacing:.4px}.pipe .st.hit{background:var(--navy-900);color:#fff}.pipe .lnk{width:26px;height:2px;background:var(--line)}.pipe .lnk.hit{background:var(--primary)}.feed{list-style:none;margin:0;padding:0}.feed li{display:flex;gap:12px;padding:10px 2px;border-bottom:1px solid var(--line);font-size:13.5px}.feed li:last-child{border-bottom:0}.feed .dot{width:10px;height:10px;border-radius:50%;background:var(--primary);margin-top:6px;flex-shrink:0}.feed time{color:var(--faint);font-size:12px;margin-left:auto;white-space:nowrap}.empty{text-align:center;padding:28px 16px;color:var(--muted)}.empty .big{font-size:15px;font-weight:650;color:var(--ink);margin-bottom:4px}.skel{border-radius:8px;background:linear-gradient(90deg,#e6ecf2 25%,#f3f6fa 50%,#e6ecf2 75%);background-size:200% 100%;animation:sh 1.2s infinite}@keyframes sh{to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.skel{animation:none}}.score-wrap{display:flex;gap:22px;align-items:center;flex-wrap:wrap}.score-meta{display:flex;flex-direction:column;gap:6px}.progress{height:9px;border-radius:6px;background:#e3e9f0;overflow:hidden;min-width:160px}.progress i{display:block;height:100%;background:var(--primary);border-radius:6px}.kv{display:grid;grid-template-columns:auto 1fr;grid-gap:6px 16px;gap:6px 16px;font-size:14px}.kv dt{color:var(--muted)}.kv dd{margin:0;font-weight:600}.foot-note{color:var(--faint);font-size:12.5px;margin-top:22px;border-top:1px solid var(--line);padding-top:12px}@media print{.chips,.row-btns,.sidebar,.steps,.topbar,button{display:none!important}.main{margin:0}.print-area{border:0}.card{box-shadow:none}}