:root{--brand: #0196d2;--brand-600: #0179ab;--brand-700: #045f86;--brand-50: #e8f6fd;--brand-100: #cfecf9;--navy: #0b2233;--navy-2: #0f2c41;--navy-line: #1d3b52;--ink: #16212e;--sub: #647184;--line: #e7ebf0;--bg: #f3f6f9;--card: #ffffff;--vend: #1f7a52;--vend-50: #e7f3ec;--proc: #b06a12;--proc-50: #f6ecdb;--gold: #f3c04a;--ok: #1f9d6a;--bad: #c0392b;--shadow-sm: 0 1px 2px rgba(16, 33, 48, .06), 0 1px 3px rgba(16, 33, 48, .04);--shadow: 0 6px 22px -8px rgba(16, 33, 48, .18), 0 2px 6px rgba(16, 33, 48, .05);--r: 14px;--font: "Plus Jakarta Sans", system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, monospace}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}.shell{display:grid;grid-template-columns:256px 1fr;min-height:100vh}.sidebar{background:radial-gradient(120% 60% at 0% 0%,#14405e,#14405e00 55%),linear-gradient(180deg,var(--navy-2),var(--navy));color:#cfe0ee;padding:22px 16px;display:flex;flex-direction:column;gap:6px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:11px;padding:6px 8px 18px}.brand .logo{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,var(--brand),#2bb6e6);display:grid;place-items:center;color:#fff;font-weight:800;font-size:18px;box-shadow:0 6px 16px -4px #0196d299}.brand b{color:#fff;font-size:16px;font-weight:800;letter-spacing:-.2px;display:block}.brand span{color:#7f9bb3;font-size:11px;letter-spacing:.3px}.nav-label{color:#5f7d96;font-size:11px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;padding:16px 10px 6px}.nav a{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:#b6cadb;font-weight:500;font-size:14px;transition:all .16s ease}.nav a:hover{background:#ffffff0f;color:#fff}.nav a.active{background:linear-gradient(90deg,#0196d238,#0196d20d);color:#fff;box-shadow:inset 2px 0 0 var(--brand)}.nav a svg{width:18px;height:18px;opacity:.9}.side-foot{margin-top:auto;padding:12px 10px;color:#6f8aa1;font-size:11px;border-top:1px solid var(--navy-line)}.topbar{height:64px;background:#ffffffd9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:16px;padding:0 28px;position:sticky;top:0;z-index:20}.topbar .crumb{color:var(--sub);font-size:13px}.topbar .crumb b{color:var(--ink)}.topbar .spacer{flex:1}.pill{display:inline-flex;align-items:center;gap:7px;background:var(--brand-50);color:var(--brand-700);padding:6px 12px;border-radius:999px;font-size:12px;font-weight:600}.pill .dot{width:7px;height:7px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 3px #1f9d6a2e}.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#0b2233,#1d3b52);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px}.content{padding:28px;max-width:1180px}.page-head{margin-bottom:22px}.page-head h1{font-size:26px;font-weight:800;letter-spacing:-.5px;margin:0 0 4px}.page-head p{color:var(--sub);margin:0;font-size:14px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow-sm)}.card.pad{padding:20px}.card-title{font-size:13px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;color:var(--sub);margin-bottom:14px}.grid{display:grid;gap:18px}.grid.k4{grid-template-columns:repeat(4,1fr)}.grid.k3{grid-template-columns:repeat(3,1fr)}.grid.k2{grid-template-columns:1.4fr 1fr}@media(max-width:1000px){.grid.k4{grid-template-columns:repeat(2,1fr)}.grid.k2{grid-template-columns:1fr}}.kpi{padding:18px 20px}.kpi .icon{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;margin-bottom:14px}.kpi .val{font-size:28px;font-weight:800;letter-spacing:-.5px;line-height:1}.kpi .lab{color:var(--sub);font-size:13px;margin-top:6px}.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;line-height:1.6}.badge.proc{background:var(--proc-50);color:var(--proc)}.badge.vendor{background:var(--vend-50);color:var(--vend)}.badge.brand{background:var(--brand-50);color:var(--brand-700)}.badge.gold{background:#fcf3da;color:#9a7212}.badge.muted{background:#eef1f5;color:var(--sub)}.badge .d{width:6px;height:6px;border-radius:50%;background:currentColor}table.tbl{width:100%;border-collapse:collapse;font-size:13.5px}.tbl th{text-align:left;color:var(--sub);font-weight:600;font-size:12px;padding:10px 12px;border-bottom:1px solid var(--line)}.tbl td{padding:12px;border-bottom:1px solid #f1f4f7;vertical-align:middle}.tbl tr:last-child td{border-bottom:none}.tbl tr:hover td{background:#fafcfe}.doc-name{display:flex;align-items:center;gap:10px;font-weight:600}.doc-ico{width:30px;height:30px;border-radius:8px;background:var(--brand-50);color:var(--brand-700);display:grid;place-items:center;flex:none}.timeline{position:relative;padding-left:8px}.timeline .line{position:absolute;left:14px;top:8px;bottom:8px;width:2px;background:var(--line)}.tl-item{position:relative;display:flex;gap:16px;padding:8px 0}.tl-dot{width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid var(--brand);margin:4px 0 0 7px;flex:none;z-index:1}.tl-dot.done{background:var(--brand)}.tl-item .tl-body b{font-size:14px}.tl-item .tl-body .date{color:var(--sub);font-size:12px;font-family:var(--mono)}.btn{display:inline-flex;align-items:center;gap:8px;border:none;cursor:pointer;font-family:var(--font);font-weight:600;font-size:14px;padding:11px 18px;border-radius:10px;background:var(--brand);color:#fff;transition:all .15s;box-shadow:0 6px 16px -8px #0196d2b3}.btn:hover{background:var(--brand-600)}.btn:disabled{opacity:.55;cursor:wait;box-shadow:none}.btn.ghost{background:#fff;color:var(--brand-700);border:1px solid var(--line);box-shadow:none}.btn.ghost:hover{background:var(--brand-50)}input.in,textarea.in{width:100%;font-family:var(--font);font-size:14px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fff;outline:none;transition:border .15s,box-shadow .15s}input.in:focus,textarea.in:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}.chat{display:flex;flex-direction:column;height:calc(100vh - 220px);min-height:420px}.chat-scroll{flex:1;overflow-y:auto;padding:4px 2px 16px;display:flex;flex-direction:column;gap:16px}.bubble{max-width:80%;padding:14px 16px;border-radius:14px;font-size:14px;line-height:1.55}.bubble.user{align-self:flex-end;background:var(--brand);color:#fff;border-bottom-right-radius:4px}.bubble.ai{align-self:flex-start;background:#fff;border:1px solid var(--line);border-bottom-left-radius:4px;box-shadow:var(--shadow-sm);white-space:pre-wrap}.sources{margin-top:12px;border-top:1px dashed var(--line);padding-top:10px;display:flex;flex-direction:column;gap:8px}.source{display:flex;align-items:center;gap:10px;font-size:12px}.source .nm{font-weight:600;color:var(--ink)}.source .meta{color:var(--sub)}.chat-input{display:flex;gap:10px;padding-top:14px;border-top:1px solid var(--line)}.suggest{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}.suggest button{background:#fff;border:1px solid var(--line);color:var(--brand-700);font-size:12.5px;padding:7px 12px;border-radius:999px;cursor:pointer;font-family:var(--font);transition:.15s}.suggest button:hover{background:var(--brand-50);border-color:var(--brand-100)}.spinner{width:16px;height:16px;border:2px solid #ffffff66;border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.spinner.dark{border-color:#0196d233;border-top-color:var(--brand)}@keyframes spin{to{transform:rotate(360deg)}}.kv{display:grid;grid-template-columns:150px 1fr;gap:10px 14px;font-size:14px}.kv .k{color:var(--sub)}.kv .v{font-weight:600}.mono{font-family:var(--mono)}.rec{background:linear-gradient(120deg,var(--brand-50),#fff);border:1px solid var(--brand-100);border-radius:var(--r);padding:16px 18px;display:flex;gap:12px;align-items:flex-start}.rec .tro{width:38px;height:38px;border-radius:11px;background:var(--brand);color:#fff;display:grid;place-items:center;flex:none}.score-pill{font-family:var(--mono);font-weight:700;color:var(--brand-700);font-size:18px}.stars{display:inline-flex;gap:2px}.empty{color:var(--sub);font-size:14px;text-align:center;padding:40px}.fab{position:fixed;right:24px;bottom:24px;width:58px;height:58px;border-radius:18px;border:none;cursor:pointer;z-index:60;color:#fff;background:linear-gradient(135deg,var(--brand),#2bb6e6);display:grid;place-items:center;box-shadow:0 14px 30px -8px #0196d299;transition:transform .18s ease,box-shadow .18s ease}.fab:hover{transform:translateY(-2px);box-shadow:0 18px 36px -8px #0196d2b3}.fab .live{position:absolute;top:-3px;right:-3px;width:14px;height:14px;border-radius:50%;background:var(--ok);border:2px solid #fff}.fab-panel{position:fixed;right:24px;bottom:92px;z-index:60;width:min(430px,calc(100vw - 32px));height:min(640px,calc(100vh - 130px));background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 60px -16px #0b223366;display:flex;flex-direction:column;overflow:hidden}.fab-head{background:linear-gradient(120deg,var(--navy-2),var(--navy));color:#fff;padding:14px 16px;display:flex;align-items:center;gap:11px}.fab-head .ico{width:34px;height:34px;border-radius:10px;background:#ffffff1f;display:grid;place-items:center}.fab-head .t b{display:block;font-size:14px}.fab-head .t span{font-size:11px;color:#9fb8cc}.fab-head .x{margin-left:auto;cursor:pointer;opacity:.75;background:none;border:none;color:#fff;padding:4px;border-radius:8px}.fab-head .x:hover{background:#ffffff1f;opacity:1}.fab-body{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:12px;background:#f6f9fb}.fab-body .bubble{max-width:92%;font-size:13.5px}.fab-body .suggest{margin-bottom:2px}.fab-body .suggest button{font-size:11.5px;padding:6px 10px}.fab-foot{padding:10px;border-top:1px solid var(--line);display:flex;gap:8px;background:#fff}.fab-foot .in{padding:10px 12px}.fab-foot .btn{padding:10px 14px}.nav button.navbtn{width:100%;text-align:left;background:none;border:none;font-family:var(--font);cursor:pointer}.nav button.navbtn{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:#b6cadb;font-weight:500;font-size:14px;transition:all .16s ease}.nav button.navbtn:hover{background:#ffffff0f;color:#fff}.nav button.navbtn svg{width:18px;height:18px;opacity:.9}
