*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f2f2f8;--bg-2: #ffffff;--bg-3: #f6f6fc;--bg-4: #ededf6;--bg-5: #e4e4f0;--border: #e0e0ee;--border-2: #c8c8e0;--text: #16162a;--text-2: #5050a0;--text-3: #9090c0;--accent: #2257e8;--accent-dim: rgba(34, 87, 232, .08);--accent-glow: rgba(34, 87, 232, .16);--danger: #cc1a38;--danger-dim: rgba(204, 26, 56, .08);--warn: #b86800;--warn-dim: rgba(184, 104, 0, .08);--ok: #007a52;--ok-dim: rgba(0, 122, 82, .08);--sev-1: #007a52;--sev-2: #528800;--sev-3: #b86800;--sev-4: #c04000;--sev-5: #c8001c;--sidebar-w: 240px;--topbar-h: 60px;--radius: 8px;--radius-sm: 5px;--radius-xs: 3px;--mono: "IBM Plex Mono", monospace;--sans: "IBM Plex Sans", sans-serif}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:13px;line-height:1.5;overflow:hidden}body{display:flex}.sidebar{width:var(--sidebar-w);min-height:100vh;background:var(--bg-2);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;position:relative;z-index:10}.main{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.sidebar-header{padding:22px 18px 16px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between}.logo{display:flex;align-items:center;gap:12px}.logo-mark{width:34px;height:34px;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--accent);background:var(--accent-dim);border:1px solid rgba(0,212,255,.2);border-radius:var(--radius-sm);animation:logo-pulse 4s ease-in-out infinite;flex-shrink:0}@keyframes logo-pulse{0%,to{opacity:1}50%{opacity:.7}}.logo-text{font-family:var(--mono);font-weight:600;font-size:11px;line-height:1.4;letter-spacing:.08em;color:var(--text)}.version-badge{font-family:var(--mono);font-size:9px;color:var(--text-3);background:var(--bg-4);padding:3px 7px;border-radius:var(--radius-xs);border:1px solid var(--border);align-self:flex-start}.sidebar-nav{flex:1;padding:12px 10px;display:flex;flex-direction:column;gap:1px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;color:var(--text-2);text-decoration:none;font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.04em;border-radius:var(--radius-sm);transition:background .12s,color .12s;position:relative}.nav-item:hover{color:var(--text);background:var(--bg-3)}.nav-item.active{color:var(--accent);background:var(--accent-dim)}.nav-item.active:before{content:"";position:absolute;left:0;top:7px;bottom:7px;width:2px;background:var(--accent);border-radius:0 2px 2px 0;box-shadow:none}.nav-icon{font-size:13px;width:16px;text-align:center;flex-shrink:0}.badge{margin-left:auto;background:var(--danger);color:#fff;font-family:var(--mono);font-size:9px;padding:1px 6px;border-radius:10px;font-weight:700;min-width:18px;text-align:center}.badge:empty{display:none}.nav-group{display:flex;flex-direction:column}.nav-chevron{margin-left:auto;font-size:13px;color:var(--text-3);transition:transform .18s ease;line-height:1;flex-shrink:0}.nav-group.open .nav-chevron{transform:rotate(90deg)}.nav-sub{display:none;flex-direction:column;gap:1px;padding-left:14px;margin-top:1px}.nav-group.open .nav-sub{display:flex}.nav-sub-item{display:flex;align-items:center;gap:10px;padding:7px 12px;color:var(--text-3);text-decoration:none;font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.04em;border-radius:var(--radius-sm);transition:background .12s,color .12s;position:relative}.nav-sub-item:hover{color:var(--text);background:var(--bg-3)}.nav-sub-item.active{color:var(--accent);background:var(--accent-dim)}.nav-sub-item.active:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:2px;background:var(--accent);border-radius:0 2px 2px 0}.sidebar-footer{padding:8px 0 14px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:2px}.settings-nav-label{padding:8px 18px 4px;font-size:9px;font-family:var(--mono);color:var(--text-3);letter-spacing:.08em}.connection-status{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;color:var(--text-2)}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--text-3);flex-shrink:0;transition:background .3s}.status-dot.connected{background:var(--ok);box-shadow:0 0 0 3px var(--ok-dim)}.status-dot.connecting{background:var(--warn);animation:dot-blink 1s ease-in-out infinite}.status-dot.error{background:var(--danger)}@keyframes dot-blink{0%,to{opacity:1}50%{opacity:.25}}.gateway-url{font-family:var(--mono);font-size:9px;color:var(--text-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar{height:var(--topbar-h);background:var(--bg-2);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 28px;gap:16px;flex-shrink:0}.page-title{font-family:var(--mono);font-size:13px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text)}.topbar-right{display:flex;align-items:center;gap:12px}.config-row{display:flex;align-items:center;gap:8px}.config-label{font-family:var(--mono);font-size:9px;font-weight:600;color:var(--text-3);letter-spacing:.1em;white-space:nowrap}.config-input{background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);font-family:var(--mono);font-size:11px;padding:6px 10px;border-radius:var(--radius-sm);width:180px;outline:none;transition:border-color .15s,box-shadow .15s}.config-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.btn-connect{background:var(--accent);color:#fff;border:none;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.1em;padding:7px 16px;border-radius:var(--radius-sm);cursor:pointer;transition:opacity .15s,transform .1s}.btn-connect:hover{opacity:.88}.btn-connect:active{transform:scale(.97)}.pages{flex:1;overflow-y:auto;padding:24px 28px;display:flex;flex-direction:column}.page{display:none;flex-direction:column;gap:20px;animation:fade-in .2s ease}.page.active{display:flex}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.stat-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}.stat-card{background:var(--bg-2);border:1px solid var(--border);padding:18px 18px 14px;border-radius:var(--radius);position:relative;overflow:hidden;box-shadow:0 1px 4px #3c3c780f;transition:border-color .2s,box-shadow .2s}.stat-card:hover{border-color:var(--border-2);box-shadow:0 6px 24px #3c3c781a}.stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--border-2)}.stat-card:nth-child(2):before{background:var(--danger)}.stat-card:nth-child(3):before{background:var(--warn)}.stat-card:nth-child(5):before{background:var(--accent)}.stat-card:nth-child(6):before{background:var(--warn)}.stat-label{font-family:var(--mono);font-size:9px;font-weight:600;color:var(--text-3);letter-spacing:.12em;margin-bottom:10px}.stat-value{font-family:var(--mono);font-size:30px;font-weight:600;color:var(--text);line-height:1;margin-bottom:6px}.stat-value.danger{color:var(--danger)}.stat-value.warn{color:var(--warn)}.stat-value.accent{color:var(--accent)}.stat-sub{font-size:10px;color:var(--text-3)}.panel-row{display:flex;gap:20px;align-items:stretch}.panel{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;overflow:hidden;box-shadow:0 1px 4px #3c3c780f}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);background:var(--bg-3);flex-shrink:0}.panel-title{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text-2);letter-spacing:.1em}.panel-body{padding:16px;flex:1;overflow:auto}.btn-sm{background:var(--bg-4);border:1px solid var(--border-2);color:var(--text-2);font-family:var(--mono);font-size:9px;font-weight:600;letter-spacing:.08em;padding:5px 12px;border-radius:var(--radius-sm);cursor:pointer;transition:background .12s,border-color .12s,color .12s,transform .1s}.btn-sm:hover{background:var(--bg-5);border-color:var(--text-3);color:var(--text)}.btn-sm:active{transform:scale(.96)}.btn-sm.accent{border-color:#00d4ff59;color:var(--accent)}.btn-sm.accent:hover{background:var(--accent-dim);border-color:var(--accent)}.btn-sm.danger{border-color:#ff3b5259;color:var(--danger)}.btn-sm.danger:hover{background:var(--danger-dim);border-color:var(--danger)}.btn-sm.ok{border-color:#00c88059;color:var(--ok)}.btn-sm.ok:hover{background:var(--ok-dim);border-color:var(--ok)}.btn-primary{width:100%;background:var(--accent);color:#fff;border:none;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.1em;padding:10px;border-radius:var(--radius-sm);cursor:pointer;margin-top:8px;transition:opacity .15s,transform .1s}.btn-primary:hover{opacity:.88}.btn-primary:active{transform:scale(.98)}.data-table{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:11px}.data-table th{padding:8px 12px;text-align:left;color:var(--text-3);font-size:9px;font-weight:600;letter-spacing:.1em;border-bottom:1px solid var(--border);white-space:nowrap;position:sticky;top:0;background:var(--bg-2)}.data-table td{padding:9px 12px;color:var(--text-2);border-bottom:1px solid var(--border);vertical-align:middle;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table tbody tr{transition:background .1s}.data-table tbody tr:hover td{background:var(--bg-3);color:var(--text)}.data-table td.empty{color:var(--text-3);text-align:center;padding:32px;font-size:11px}.sev-tag{display:inline-block;font-family:var(--mono);font-size:9px;font-weight:700;padding:2px 7px;border-radius:var(--radius-xs);letter-spacing:.05em}.sev-1{color:var(--sev-1);background:#00c8801a;border:1px solid rgba(0,200,128,.25)}.sev-2{color:var(--sev-2);background:#80c8001a;border:1px solid rgba(128,200,0,.25)}.sev-3{color:var(--sev-3);background:#ffb0201a;border:1px solid rgba(255,176,32,.25)}.sev-4{color:var(--sev-4);background:#ff60001a;border:1px solid rgba(255,96,0,.25)}.sev-5{color:var(--sev-5);background:#ff1a381a;border:1px solid rgba(255,26,56,.25)}.sev-bars{display:flex;flex-direction:column;gap:12px;padding:4px 0}.sev-row{display:flex;align-items:center;gap:12px}.sev-bar-wrap{flex:1;height:6px;background:var(--bg-4);border-radius:3px;overflow:hidden}.sev-bar{height:100%;border-radius:3px;transition:width .8s cubic-bezier(.4,0,.2,1)}#bar-1{background:var(--sev-1)}#bar-2{background:var(--sev-2)}#bar-3{background:var(--sev-3)}#bar-4{background:var(--sev-4)}#bar-5{background:var(--sev-5)}.sev-count{font-family:var(--mono);font-size:10px;color:var(--text-3);width:28px;text-align:right}.chat-layout{display:flex;gap:20px;height:calc(100vh - var(--topbar-h) - 48px)}.chat-config-panel{width:270px;display:flex;flex-direction:column;gap:16px;flex-shrink:0}.chat-main-panel{flex:1;min-width:0}.chat-messages{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:14px;min-height:0}.chat-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;flex:1;color:var(--text-3);text-align:center;padding:40px}.chat-welcome-icon{font-size:36px;color:var(--border-2)}.chat-welcome-sub{font-size:11px}.chat-msg{display:flex;flex-direction:column;gap:5px;animation:msg-in .2s ease}@keyframes msg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.chat-msg-header{font-family:var(--mono);font-size:9px;color:var(--text-3);letter-spacing:.08em;display:flex;align-items:center;gap:8px}.chat-msg-body{background:var(--bg-3);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;font-size:12px;line-height:1.65;color:var(--text);white-space:pre-wrap;word-break:break-word}.chat-msg.user .chat-msg-body{border-left:2px solid var(--accent)}.chat-msg.assistant .chat-msg-body{border-left:2px solid var(--border-2)}.chat-msg.blocked .chat-msg-body{border-left:2px solid var(--danger);background:var(--danger-dim)}.chat-msg-tags{display:flex;gap:5px;flex-wrap:wrap}.meta-tag{font-family:var(--mono);font-size:9px;padding:2px 7px;border-radius:var(--radius-xs);background:var(--bg-4);border:1px solid var(--border);color:var(--text-3)}.meta-tag.ok{color:var(--ok);border-color:#00c8804d;background:var(--ok-dim)}.meta-tag.warn{color:var(--warn);border-color:#ffb0204d;background:var(--warn-dim)}.meta-tag.danger{color:var(--danger);border-color:#ff3b524d;background:var(--danger-dim)}.chat-input-row{display:flex;gap:10px;padding:14px 16px;border-top:1px solid var(--border);flex-shrink:0}.chat-input{flex:1;background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);font-family:var(--sans);font-size:12px;padding:9px 12px;border-radius:var(--radius-sm);resize:none;outline:none;transition:border-color .15s,box-shadow .15s}.chat-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.btn-send{background:var(--accent);color:#fff;border:none;font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.1em;padding:0 20px;border-radius:var(--radius-sm);cursor:pointer;min-width:76px;transition:opacity .15s,transform .1s}.btn-send:hover{opacity:.88}.btn-send:active{transform:scale(.97)}.btn-send:disabled{opacity:.4;cursor:not-allowed}.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.meta-item{display:flex;flex-direction:column;gap:3px}.meta-item-label{font-family:var(--mono);font-size:9px;color:var(--text-3);letter-spacing:.08em}.meta-item-value{font-family:var(--mono);font-size:11px;color:var(--text)}.field-group{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.field-row{display:flex;gap:10px}.field-row .field-group{flex:1}.field-label{font-family:var(--mono);font-size:9px;font-weight:600;color:var(--text-3);letter-spacing:.1em}.field-input{background:var(--bg-3);border:1px solid var(--border-2);color:var(--text);font-family:var(--mono);font-size:11px;padding:8px 10px;border-radius:var(--radius-sm);outline:none;width:100%;transition:border-color .15s,box-shadow .15s}.field-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}textarea.field-input{resize:vertical}select.field-input{cursor:pointer}.field-hint{font-size:10px;color:var(--text-3)}.form-result{margin-top:10px;font-family:var(--mono);font-size:10px;padding:9px 12px;border-radius:var(--radius-sm);display:none}.form-result.ok{background:var(--ok-dim);border:1px solid rgba(0,200,128,.3);color:var(--ok);display:block}.form-result.error{background:var(--danger-dim);border:1px solid rgba(255,59,82,.3);color:var(--danger);display:block}.filter-row{display:flex;align-items:center;gap:8px}.filter-input{background:var(--bg-4);border:1px solid var(--border-2);color:var(--text);font-family:var(--mono);font-size:10px;padding:5px 10px;border-radius:var(--radius-sm);outline:none;width:180px;transition:border-color .15s,box-shadow .15s}.filter-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-dim)}.models-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.model-card{background:var(--bg-3);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;transition:border-color .15s,box-shadow .15s,transform .15s}.model-card:hover{border-color:var(--border-2);box-shadow:0 4px 18px #3c3c781a;transform:translateY(-1px)}.model-name{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--text);margin-bottom:5px;word-break:break-all}.model-provider{font-family:var(--mono);font-size:9px;color:var(--text-3);letter-spacing:.08em}.quarantine-list{display:flex;flex-direction:column;gap:10px}.quarantine-item{background:var(--bg-3);border:1px solid var(--border);border-left:3px solid var(--danger);border-radius:var(--radius-sm);padding:14px 16px;display:flex;align-items:flex-start;gap:16px;transition:border-color .15s}.quarantine-item:hover{border-color:var(--border-2)}.quarantine-item.reviewed{border-left-color:var(--text-3);opacity:.55}.quarantine-meta{flex:1;display:flex;flex-direction:column;gap:5px}.quarantine-id{font-family:var(--mono);font-size:9px;color:var(--text-3)}.quarantine-info{font-family:var(--mono);font-size:10px;color:var(--text)}.quarantine-findings{font-size:10px;color:var(--text-2)}.quarantine-actions{display:flex;flex-direction:column;gap:5px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14143266;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal{background:var(--bg-2);border:1px solid var(--border-2);border-radius:var(--radius);width:500px;max-width:92vw;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 24px 80px #3c3c782e}.modal-header{padding:16px 20px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:11px;font-weight:600;color:var(--text);letter-spacing:.08em}.modal-body{padding:20px;flex:1;overflow-y:auto;font-family:var(--mono);font-size:11px;color:var(--text-2);white-space:pre-wrap;word-break:break-all}.modal-footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end}.audit-row:hover{background:var(--bg-3)}.audit-detail-pre{background:var(--bg-4);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;font-family:var(--mono);font-size:11px;color:var(--text-1);white-space:pre-wrap;word-break:break-word;max-height:220px;overflow-y:auto;margin:0}.audit-detail-empty{font-family:var(--mono);font-size:10px;color:var(--text-3);font-style:italic;padding:6px 0}.api-key-box{background:var(--bg-4);border:1px solid rgba(0,200,128,.3);border-radius:var(--radius-sm);padding:12px 14px;font-family:var(--mono);font-size:11px;color:var(--ok);word-break:break-all;margin-bottom:10px}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-3)}.empty{color:var(--text-3);font-family:var(--mono);font-size:11px;text-align:center;padding:28px}.loading{color:var(--text-3);font-family:var(--mono);font-size:10px}@keyframes spin{to{transform:rotate(360deg)}}.spinner{display:inline-block;animation:spin 1s linear infinite}@media(max-width:1200px){.stat-grid{grid-template-columns:repeat(3,1fr)}.config-input{width:140px}}@media(max-width:900px){:root{--sidebar-w: 200px}.config-input{width:110px}}
