@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500;600;700&family=Outfit:wght@500;600;700;800&display=swap";*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #09090b;--surface: #121214;--surface-2: #18181b;--surface-3: #27272a;--border: #27272a;--border-light: #3f3f46;--text: #a1a1aa;--text-dim: #71717a;--text-bright: #f4f4f5;--accent: #f4f4f5;--accent-hover: #ffffff;--critical: #ef4444;--critical-bg: rgba(239, 68, 68, .1);--critical-border: rgba(239, 68, 68, .2);--warning: #f59e0b;--warning-bg: rgba(245, 158, 11, .1);--warning-border: rgba(245, 158, 11, .2);--info: #3b82f6;--info-bg: rgba(59, 130, 246, .1);--info-border: rgba(59, 130, 246, .2);--done: #10b981;--done-bg: rgba(16, 185, 129, .1);--done-border: rgba(16, 185, 129, .2);--suppressed: #71717a;--suppressed-bg: rgba(113, 113, 122, .1);--suppressed-border: rgba(113, 113, 122, .2);--wip: #fbbf24;--wip-bg: rgba(251, 191, 36, .1);--wip-border: rgba(251, 191, 36, .2);--shadow-sm: 0 1px 2px rgba(0,0,0,.5);--shadow-md: 0 4px 12px rgba(0,0,0,.6);--transition-smooth: all .2s cubic-bezier(.16, 1, .3, 1);--transition-fast: all .1s ease-out}html,body,#root{height:100%;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,sans-serif;font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:Inter,sans-serif;font-weight:600;color:var(--text-bright)}a{color:inherit;text-decoration:none}input,button,select,textarea{font:inherit}button{cursor:pointer;border:none;background:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-light)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideDown{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.app-shell{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg)}.content-area{display:flex;flex:1;overflow:hidden;position:relative}.spinner{width:16px;height:16px;border:2px solid var(--border-light);border-top-color:var(--text-bright);border-radius:50%;animation:spin .6s linear infinite}.loading-center{flex:1;display:flex;align-items:center;justify-content:center}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:4px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:500;border:1px solid transparent}.badge-dot{width:4px;height:4px;border-radius:50%;flex-shrink:0}.badge.critical{background:var(--critical-bg);border-color:var(--critical-border);color:var(--critical)}.badge.critical .badge-dot{background:var(--critical)}.badge.warning{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning)}.badge.warning .badge-dot{background:var(--warning)}.badge.info{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}.badge.info .badge-dot{background:var(--info)}.badge.done{background:var(--done-bg);border-color:var(--done-border);color:var(--done)}.badge.done .badge-dot{background:var(--done)}.badge.suppressed{background:var(--suppressed-bg);border-color:var(--suppressed-border);color:var(--suppressed)}.badge.suppressed .badge-dot{background:var(--suppressed)}.badge.wip{background:var(--wip-bg);border-color:var(--wip-border);color:var(--wip)}.badge.wip .badge-dot{background:var(--wip)}.badge.open{background:var(--critical-bg);border-color:var(--critical-border);color:var(--critical)}.badge.open .badge-dot{background:var(--critical)}.badge.server{background:var(--info-bg);border-color:var(--info-border);color:var(--info)}.badge.frontend{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning)}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--text-dim);padding:80px 20px}.empty-state-title{font-size:14px;font-weight:500;color:var(--text-bright)}.login-page{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;background:var(--bg)}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:32px;box-shadow:var(--shadow-md);animation:slideDown .3s cubic-bezier(.16,1,.3,1) forwards}.login-logo{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:8px}.login-logo-text{font-family:JetBrains Mono,monospace;font-size:20px;font-weight:600;color:var(--text-bright);letter-spacing:.05em}.login-logo-sub{font-family:Inter,sans-serif;font-size:13px;color:var(--text-dim);text-align:center;margin-bottom:32px}.login-field{margin-bottom:16px}.login-label{display:block;font-family:Inter,sans-serif;font-size:12px;font-weight:500;color:var(--text);margin-bottom:6px}.login-input{width:100%;background:var(--bg);border:1px solid var(--border-light);border-radius:6px;padding:10px 12px;color:var(--text-bright);font-size:14px;font-family:Inter,sans-serif;outline:none;transition:var(--transition-fast)}.login-input::placeholder{color:var(--text-dim)}.login-input:focus{border-color:var(--text-bright)}.login-error{background:var(--critical-bg);border:1px solid var(--critical-border);color:var(--critical);border-radius:6px;padding:10px 12px;font-size:13px;margin-bottom:16px;display:flex;align-items:center;gap:8px}.login-btn{width:100%;background:var(--text-bright);color:var(--bg);border-radius:6px;padding:10px;font-family:Inter,sans-serif;font-size:14px;font-weight:500;margin-top:8px;transition:var(--transition-fast)}.login-btn:hover{background:#fff}.login-btn:active{transform:translateY(1px)}.login-btn:disabled{opacity:.5;cursor:not-allowed}.login-hint{font-size:12px;color:var(--text-dim);text-align:center;margin-top:24px;font-family:Inter,sans-serif}.login-twofa-hint{font-size:13px;color:var(--text-dim);text-align:center;margin-bottom:20px;font-family:Inter,sans-serif}.login-otp-btns{display:flex;gap:8px;margin-bottom:8px}.login-otp-btn{flex:1;padding:8px;border-radius:6px;border:1px solid var(--border-light);background:var(--surface-2);color:var(--text);font-family:Inter,sans-serif;font-size:12px;font-weight:500;transition:var(--transition-fast)}.login-otp-btn:hover:not(:disabled){color:var(--text-bright);background:var(--surface-3)}.login-otp-btn:disabled{opacity:.5;cursor:not-allowed}.login-back{display:block;width:100%;text-align:center;margin-top:12px;font-size:13px;color:var(--text-dim);font-family:Inter,sans-serif;transition:var(--transition-fast);background:transparent;border:none;cursor:pointer;padding:4px}.login-back:hover{color:var(--text-bright)}.header{height:56px;background:var(--bg);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 24px;gap:32px;flex-shrink:0;z-index:10;position:relative}.header-logo{display:flex;align-items:center;gap:8px;font-family:JetBrains Mono,monospace;font-weight:600;font-size:14px;color:var(--text-bright);letter-spacing:.05em}.header-logo-dot{width:6px;height:6px;background:var(--text-bright)}.header-nav{display:flex;gap:4px;flex:1}.header-nav-link{padding:6px 12px;border-radius:6px;font-family:Inter,sans-serif;font-size:13px;font-weight:500;color:var(--text-dim);transition:var(--transition-fast)}.header-nav-link:hover,.header-nav-link.active{color:var(--text-bright);background:var(--surface-2)}.header-stats{display:flex;gap:12px;align-items:center;font-family:Inter,sans-serif;margin-left:auto}.header-user{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:6px;border:1px solid transparent;color:var(--text-bright);font-family:Inter,sans-serif;font-size:13px;font-weight:500;transition:var(--transition-fast);cursor:pointer}.header-user:hover{background:var(--surface-2);border-color:var(--border)}.header-avatar{width:24px;height:24px;border-radius:4px;background:var(--surface-3);display:flex;align-items:center;justify-content:center;font-size:11px;font-family:Inter,sans-serif;font-weight:600;color:var(--text-bright);overflow:hidden;flex-shrink:0;border:1px solid var(--border-light)}.header-avatar img{width:100%;height:100%;object-fit:cover}.header-logout{padding:6px 12px;border-radius:6px;border:1px solid transparent;color:var(--text-dim);font-family:Inter,sans-serif;font-size:13px;font-weight:500;transition:var(--transition-fast)}.header-logout:hover{color:var(--text-bright);background:var(--surface-2)}.sidebar{width:240px;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;flex-shrink:0;padding:16px 0;background:var(--surface)}.sidebar-section{padding:0 12px 16px}.sidebar-label{font-family:Inter,sans-serif;font-size:11px;font-weight:600;color:var(--text-dim);padding:0 8px;margin-bottom:8px;text-transform:uppercase;letter-spacing:.05em}.sidebar-divider{height:1px;background:var(--border);margin:4px 12px 16px}.filter-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:6px 8px;margin-bottom:2px;border-radius:6px;color:var(--text);font-family:Inter,sans-serif;font-size:13px;transition:var(--transition-fast);text-align:left}.filter-btn:hover{color:var(--text-bright);background:var(--surface-2)}.filter-btn.active{color:var(--text-bright);background:var(--surface-3);font-weight:500}.filter-count{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-dim);background:transparent;padding:2px 0}.filter-btn:hover .filter-count,.filter-btn.active .filter-count{color:var(--text)}.errors-main{flex:1;overflow-y:auto;display:flex;flex-direction:column;background:var(--bg)}.errors-toolbar{padding:12px 24px;display:flex;gap:16px;align-items:center;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--bg);position:sticky;top:0;z-index:10}.search-input{flex:1;background:var(--surface);border:1px solid var(--border-light);border-radius:6px;padding:8px 12px;color:var(--text-bright);font-size:13px;outline:none;transition:var(--transition-fast)}.search-input:focus{border-color:var(--text-bright)}.errors-count{font-family:Inter,sans-serif;font-size:13px;color:var(--text-dim)}.error-list{display:flex;flex-direction:column;flex-shrink:0}.error-card{display:block;padding:12px 24px;background:var(--bg);border-bottom:1px solid var(--border);transition:var(--transition-fast);cursor:pointer}.error-card:hover{background:var(--surface)}.error-card-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.error-card-fp{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-dim);border:1px solid var(--border-light);padding:2px 6px;border-radius:4px}.error-card-route{font-size:13px;color:var(--text-bright);font-weight:500;font-family:JetBrains Mono,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-card-message{font-size:13px;color:var(--text);margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.error-card-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.error-card-meta-item{font-size:12px;color:var(--text-dim);font-family:Inter,sans-serif}.action-btn{padding:6px 12px;border-radius:6px;font-family:Inter,sans-serif;font-size:13px;font-weight:500;border:1px solid var(--border-light);color:var(--text);background:var(--surface);transition:var(--transition-fast)}.action-btn:hover:not(:disabled){color:var(--text-bright);background:var(--surface-3)}.action-btn:disabled{opacity:.5;cursor:not-allowed}.detail-page{flex:1;overflow-y:auto;padding:32px;max-width:1000px;width:100%}.detail-back{display:inline-flex;align-items:center;gap:8px;color:var(--text-dim);font-family:Inter,sans-serif;font-size:13px;font-weight:500;margin-bottom:24px;transition:var(--transition-fast);padding:6px 12px;border-radius:6px;background:var(--surface);border:1px solid var(--border)}.detail-back:hover{color:var(--text-bright);background:var(--surface-2)}.detail-header{margin-bottom:32px}.detail-fp-row{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.detail-fp{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text);background:var(--surface-3);border:1px solid var(--border-light);padding:2px 8px;border-radius:4px}.detail-title{font-family:JetBrains Mono,monospace;font-size:20px;color:var(--text-bright);font-weight:600;word-break:break-all;line-height:1.4}.detail-meta-row{display:flex;align-items:center;gap:24px;flex-wrap:wrap;padding:16px;border-radius:8px;background:var(--surface);border:1px solid var(--border);margin-bottom:32px}.detail-meta-item{display:flex;flex-direction:column;gap:4px}.detail-meta-label{font-family:Inter,sans-serif;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);font-weight:600}.detail-meta-value{font-family:JetBrains Mono,monospace;font-size:14px;color:var(--text-bright)}.detail-meta-sep{width:1px;height:32px;background:var(--border-light);align-self:center}.detail-actions{display:flex;gap:8px;margin-bottom:32px;flex-wrap:wrap}.action-btn{padding:6px 16px;border-radius:6px;font-family:Inter,sans-serif;font-size:13px;font-weight:500;border:1px solid var(--border);color:var(--text);background:var(--surface);transition:var(--transition-fast)}.action-btn:hover{color:var(--text-bright);border-color:var(--border-light);background:var(--surface-2)}.action-btn.active{color:var(--bg);border-color:var(--text-bright);background:var(--text-bright)}.action-btn.active-critical{color:var(--critical);border-color:var(--critical-border);background:var(--critical-bg)}.action-btn.active-wip{color:var(--wip);border-color:var(--wip-border);background:var(--wip-bg)}.action-btn.active-done{color:var(--done);border-color:var(--done-border);background:var(--done-bg)}.action-btn.active-suppressed{color:var(--suppressed);border-color:var(--suppressed-border);background:var(--suppressed-bg)}.detail-section{margin-bottom:32px}.detail-section-title{font-family:Inter,sans-serif;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);font-weight:600;margin-bottom:12px;display:flex;align-items:center;gap:16px}.detail-section-title:after{content:"";flex:1;height:1px;background:var(--border)}.detail-message{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:16px;font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text-bright);line-height:1.6;word-break:break-word}.detail-stack{background:#000;border:1px solid var(--border-light);border-radius:6px;padding:16px;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text);line-height:1.6;white-space:pre-wrap;word-break:break-all;overflow-x:auto}.detail-stack .stack-at{color:var(--text-dim)}.detail-stack .stack-file{color:var(--text-bright)}.detail-ua{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:12px 16px;font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-dim);word-break:break-all}.ep-main{flex:1;overflow-y:auto;display:flex;flex-direction:column;background:var(--bg)}.ep-toolbar{padding:12px 24px;display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--border);flex-shrink:0;background:var(--bg);position:sticky;top:0;z-index:10;flex-wrap:wrap}.ep-method-filters,.ep-health-filters{display:flex;gap:4px}.ep-method-btn,.ep-health-btn{padding:4px 10px;border-radius:5px;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;border:1px solid var(--border-light);color:var(--text-dim);background:transparent;transition:var(--transition-fast);cursor:pointer}.ep-method-btn:hover,.ep-health-btn:hover{color:var(--text-bright);border-color:var(--text-dim);background:var(--surface-2)}.ep-health-btn.active,.ep-method-btn.active{background:var(--surface-2);color:var(--text-bright)}.ep-method-btn.method-get.active{background:#3b82f612;border-color:#3b82f640;color:#3b82f6}.ep-method-btn.method-post.active{background:#22c55e12;border-color:#22c55e40;color:#22c55e}.ep-method-btn.method-patch.active{background:#f59e0b12;border-color:#f59e0b40;color:#f59e0b}.ep-method-btn.method-delete.active{background:#ef444412;border-color:#ef444440;color:#ef4444}.ep-method-btn.method-put.active{background:#a855f712;border-color:#a855f740;color:#a855f7}.ep-summary{display:flex;align-items:center;padding:10px 24px;border-bottom:1px solid var(--border);background:var(--surface);flex-shrink:0;gap:0}.ep-stat{display:flex;align-items:baseline;gap:7px}.ep-stat-val{font-family:JetBrains Mono,monospace;font-size:22px;font-weight:700;color:var(--text-bright);line-height:1}.ep-stat-warn{color:#ef4444}.ep-stat-ok{color:#22c55e}.ep-stat-label{font-size:12px;color:var(--text-dim);font-family:Inter,sans-serif}.ep-stat-divider{width:1px;height:28px;background:var(--border);margin:0 24px}.ep-table{flex:1;display:flex;flex-direction:column}.ep-table-header,.ep-row{display:grid;grid-template-columns:86px 1fr 110px 170px 160px 100px;padding:0 24px;align-items:center}.ep-table-header{padding-top:8px;padding-bottom:8px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:53px;z-index:9;font-family:Inter,sans-serif;font-size:11px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em}.ep-row{padding-top:10px;padding-bottom:10px;border-bottom:1px solid var(--border);transition:var(--transition-fast)}.ep-row:hover{background:var(--surface)}.ep-row-degraded{background:#ef444406}.ep-row-degraded:hover{background:#ef44440e}.ep-method-badge{display:inline-block;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;padding:3px 7px;border-radius:4px;background:var(--surface-2);color:var(--text-dim)}.ep-method-badge.method-get{background:#3b82f614;color:#3b82f6}.ep-method-badge.method-post{background:#22c55e14;color:#22c55e}.ep-method-badge.method-patch{background:#f59e0b14;color:#f59e0b}.ep-method-badge.method-delete{background:#ef444414;color:#ef4444}.ep-method-badge.method-put{background:#a855f714;color:#a855f7}.ep-path{font-family:JetBrains Mono,monospace;font-size:13px;color:var(--text-bright);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:16px}.ep-col-status{display:flex;align-items:center;gap:6px}.ep-health-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.ep-dot-ok{background:#22c55e}.ep-dot-err{background:#ef4444;box-shadow:0 0 6px #ef444455}.ep-health-ok{font-size:12px;color:#22c55e;font-family:Inter,sans-serif}.ep-health-err{font-size:12px;color:#ef4444;font-family:Inter,sans-serif;font-weight:600}.ep-error-counts{display:flex;align-items:center;gap:6px}.ep-err-total{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;color:var(--text-bright)}.ep-err-open{font-size:11px;padding:1px 6px;border-radius:3px;background:#ef444420;color:#ef4444;font-family:Inter,sans-serif;font-weight:600}.ep-err-critical{font-size:11px;padding:1px 6px;border-radius:3px;background:#f9731620;color:#f97316;font-family:Inter,sans-serif;font-weight:600}.ep-err-none{color:var(--text-dim);font-family:JetBrains Mono,monospace;font-size:13px}.ep-col-codes{display:flex;gap:4px;flex-wrap:wrap}.ep-chip{font-family:JetBrains Mono,monospace;font-size:11px;font-weight:700;padding:2px 6px;border-radius:3px}.chip-2xx{background:#22c55e14;color:#22c55e}.chip-3xx{background:#3b82f614;color:#3b82f6}.chip-4xx{background:#f59e0b14;color:#f59e0b}.chip-5xx{background:#ef444414;color:#ef4444}.ep-last{font-family:Inter,sans-serif;font-size:12px;color:var(--text-dim)}.maint-main{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:40px 24px;background:var(--bg);overflow-y:auto}.maint-card{width:100%;max-width:560px;background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.maint-header{padding:20px 24px;border-bottom:1px solid var(--border);background:var(--surface-2)}.maint-title-row{display:flex;align-items:flex-start;gap:14px}.maint-icon{font-size:22px;line-height:1;margin-top:2px;opacity:.7}.maint-title{font-family:JetBrains Mono,monospace;font-size:15px;font-weight:600;color:var(--text-bright);margin-bottom:4px}.maint-sub{font-size:12px;color:var(--text-dim);line-height:1.5}.maint-body{padding:24px}.maint-loading{color:var(--text-dim);font-size:13px;font-family:JetBrains Mono,monospace}.maint-status-row{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.maint-indicator{display:flex;align-items:center;gap:8px;font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;padding:10px 16px;border-radius:8px}.maint-indicator-on{background:#ef44441f;color:#f87171;border:1px solid rgba(239,68,68,.25)}.maint-indicator-off{background:#22c55e1a;color:#4ade80;border:1px solid rgba(34,197,94,.2)}.maint-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.maint-dot-on{background:#ef4444;box-shadow:0 0 6px #ef4444;animation:maint-pulse 1.5s ease-in-out infinite}.maint-dot-off{background:#22c55e}@keyframes maint-pulse{0%,to{opacity:1}50%{opacity:.4}}.maint-btn{padding:9px 20px;border-radius:7px;font-family:JetBrains Mono,monospace;font-size:12px;font-weight:600;border:none;cursor:pointer;transition:opacity .15s}.maint-btn:disabled{opacity:.5;cursor:not-allowed}.maint-btn-enable{background:#ef4444;color:#fff}.maint-btn-enable:hover:not(:disabled){background:#dc2626}.maint-btn-disable{background:#22c55e;color:#fff}.maint-btn-disable:hover:not(:disabled){background:#16a34a}.maint-no-perm{font-size:12px;color:var(--text-dim);font-style:italic}.maint-error{margin-top:14px;padding:10px 14px;background:#ef44441a;border:1px solid rgba(239,68,68,.2);border-radius:6px;font-size:12px;color:#f87171;font-family:JetBrains Mono,monospace}.maint-notice{margin-top:16px;padding:12px 16px;background:#fbbf2414;border:1px solid rgba(251,191,36,.2);border-radius:7px;font-size:12px;color:#fbbf24;display:flex;gap:8px;line-height:1.5}.maint-notice-icon{flex-shrink:0}
