:root{--ink: #241537;--purple-deep: #3b1f63;--purple: #5b3a8e;--purple-light: #8c6bc0;--lav-tint: #f1ecf9;--lav-line: #e1d6f5;--panel: #4b2c79;--yellow: #f5e98a;--white: #ffffff;--soft: #ede7f6;--text-soft: #6b6180;--ok: #2e9e6b;--warn: #e8a13c;--bad: #d5544e;--shadow: 0 1px 3px rgba(36, 21, 55, .08), 0 8px 24px rgba(36, 21, 55, .06)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Public Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink);background:#f7f5fb;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--purple)}.display{font-family:Anton,Public Sans,sans-serif;text-transform:uppercase;letter-spacing:.01em}.boot{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,var(--purple-deep),var(--purple))}.boot-spinner,.spinner{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.25);border-top-color:var(--yellow);animation:spin .8s linear infinite}.spinner.dark{border-color:var(--lav-line);border-top-color:var(--purple)}@keyframes spin{to{transform:rotate(360deg)}}.auth-shell{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}.auth-brand{background:linear-gradient(135deg,var(--purple-deep) 0%,var(--purple) 60%,#6b4a9e 100%);color:var(--white);padding:64px 56px;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.auth-brand:after{content:"";position:absolute;right:-140px;top:-100px;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(245,233,138,.18),transparent 70%)}.auth-brand .tag{font-size:12px;letter-spacing:.16em;color:var(--yellow);font-weight:600;margin-bottom:22px}.auth-brand h1{font-family:Anton,sans-serif;font-size:46px;line-height:1;margin:0 0 18px}.auth-brand p{color:#dcd0f0;max-width:42ch;font-size:15px}.auth-form-wrap{display:grid;place-items:center;padding:40px}.auth-card{width:100%;max-width:380px}.auth-card h2{font-size:22px;margin:0 0 6px;color:var(--purple-deep)}.auth-card .sub{color:var(--text-soft);font-size:14px;margin-bottom:26px}label.field{display:block;margin-bottom:16px;font-size:13px;font-weight:600;color:var(--ink)}label.field input{margin-top:6px;width:100%;padding:11px 13px;border:1px solid var(--lav-line);border-radius:10px;font-size:14px;font-family:inherit;background:var(--white)}label.field input:focus{outline:none;border-color:var(--purple-light);box-shadow:0 0 0 3px #8c6bc02e}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:10px;padding:11px 18px;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;background:var(--purple-deep);color:var(--white);transition:filter .15s ease}.btn:hover{filter:brightness(1.1)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.full{width:100%}.btn.ghost{background:transparent;color:var(--purple);border:1px solid var(--lav-line)}.btn.small{padding:7px 12px;font-size:13px}.form-error{background:#fdecec;color:#a3312b;border:1px solid #f5c9c6;border-radius:9px;padding:9px 12px;font-size:13px;margin-bottom:16px}.form-note{font-size:12px;color:var(--text-soft);margin-top:4px}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{background:var(--white);border-bottom:1px solid var(--lav-line);padding:12px 28px;display:flex;align-items:center;gap:16px;position:sticky;top:0;z-index:10}.topbar .brand{display:flex;align-items:center;gap:10px;font-weight:700;color:var(--purple-deep)}.topbar .brand .dot{width:10px;height:10px;border-radius:3px;background:var(--yellow);border:1px solid var(--purple-light)}.topbar .spacer{flex:1}.topbar .who{font-size:13px;color:var(--text-soft);text-align:right}.topbar .who strong{color:var(--ink);display:block}.page{flex:1;padding:24px 28px 48px;max-width:1180px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px}.page-head h1{font-size:24px;margin:0;color:var(--purple-deep)}.page-head .kicker{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--purple-light);font-weight:700;margin-bottom:2px}.page-head .spacer{flex:1}.refresh-status{font-size:12px;color:var(--text-soft);display:flex;align-items:center;gap:8px}.live-dot{width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px #2e9e6b2e}.live-dot.paused{background:var(--text-soft);box-shadow:none}.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:22px}.filters select{padding:8px 12px;border:1px solid var(--lav-line);border-radius:9px;background:var(--white);font-size:13px;font-family:inherit;color:var(--ink)}.filters .seg{display:inline-flex;border:1px solid var(--lav-line);border-radius:9px;overflow:hidden;background:var(--white)}.filters .seg button{border:none;background:transparent;padding:8px 12px;font-size:13px;font-family:inherit;cursor:pointer;color:var(--text-soft)}.filters .seg button.on{background:var(--purple-deep);color:var(--white);font-weight:600}.grid{display:grid;gap:16px}.kpi-row{grid-template-columns:repeat(4,1fr)}.two-col{grid-template-columns:1.4fr 1fr}.param-grid{grid-template-columns:repeat(2,1fr)}.card{background:var(--white);border:1px solid var(--lav-line);border-radius:14px;padding:18px;box-shadow:var(--shadow)}.card h3{margin:0 0 2px;font-size:15px;color:var(--purple-deep)}.card .card-sub{font-size:12px;color:var(--text-soft);margin-bottom:14px}.kpi .kpi-val{font-family:Anton,sans-serif;font-size:34px;color:var(--purple-deep);line-height:1}.kpi .kpi-label{font-size:12px;color:var(--text-soft);margin-top:6px}.kpi .kpi-foot{font-size:12px;margin-top:8px;color:var(--ink)}.param-card .pc-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}.param-card .pc-head .pc-name{font-size:16px;font-weight:700;color:var(--purple-deep)}.param-card .pc-head .pc-unit{font-size:12px;color:var(--text-soft)}.pc-means{display:flex;align-items:center;gap:12px;margin-bottom:14px}.pc-means .m{text-align:center}.pc-means .m .v{font-family:Anton,sans-serif;font-size:24px;color:var(--ink)}.pc-means .m .l{font-size:11px;color:var(--text-soft);text-transform:uppercase;letter-spacing:.06em}.pc-means .arrow{color:var(--purple-light);font-size:18px}.pc-delta{font-size:12px;font-weight:700;padding:3px 8px;border-radius:20px}.pc-delta.good{background:#e7f5ee;color:var(--ok)}.pc-delta.bad{background:#fdecec;color:var(--bad)}.pc-delta.flat{background:var(--soft);color:var(--text-soft)}.band-bar{display:flex;height:22px;border-radius:6px;overflow:hidden;margin:6px 0 4px;background:var(--soft)}.band-bar span{display:block}.band-legend{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--text-soft);margin-top:6px}.band-legend .sw{width:9px;height:9px;border-radius:2px;display:inline-block;margin-right:5px;vertical-align:middle}.pc-row-label{font-size:11px;color:var(--text-soft);text-transform:uppercase;letter-spacing:.06em;margin-top:10px}.pc-movement{margin-top:12px;padding-top:12px;border-top:1px dashed var(--lav-line);font-size:12px;color:var(--ink);display:flex;gap:16px;flex-wrap:wrap}.pc-movement b{font-family:Anton,sans-serif;font-weight:400;font-size:16px;color:var(--purple-deep);margin-right:4px}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th,table.data td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--lav-line);white-space:nowrap}table.data th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-soft);background:var(--lav-tint);position:sticky;top:0}table.data td.num{text-align:right;font-variant-numeric:tabular-nums}.pill{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px}.pill.safe{background:#e7f5ee;color:var(--ok)}.pill.borderline{background:#fbf0dc;color:#b9791f}.pill.high_risk{background:#fdecec;color:var(--bad)}.pill.unknown{background:var(--soft);color:var(--text-soft)}.delta.good{color:var(--ok);font-weight:700}.delta.bad{color:var(--bad);font-weight:700}.pager{display:flex;align-items:center;gap:12px;justify-content:flex-end;margin-top:12px;font-size:13px;color:var(--text-soft)}.empty{text-align:center;padding:40px 20px;color:var(--text-soft);font-size:14px}.section-title{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--purple-light);font-weight:700;margin:26px 0 12px}@media (max-width: 900px){.auth-shell{grid-template-columns:1fr}.auth-brand{padding:40px 32px}.kpi-row{grid-template-columns:repeat(2,1fr)}.two-col,.param-grid{grid-template-columns:1fr}}
