@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";
:root{--bg-root:#0a0a0a;--bg-surface:#111;--bg-surface-hover:#191919;--bg-surface-active:#262626;--bg-elevated:#141414;--border-default:#ffffff0f;--border-subtle:#ffffff08;--border-strong:#ffffff1a;--text-primary:#ededed;--text-secondary:#a0a0a0;--text-muted:#666;--text-inverse:#0a0a0a;--accent:#3b82f6;--accent-hover:#2563eb;--accent-subtle:#3b82f61a;--success:#22c55e;--success-subtle:#22c55e1a;--warning:#eab308;--warning-subtle:#eab3081a;--danger:#ef4444;--danger-subtle:#ef44441a;--info:#3b82f6;--info-subtle:#3b82f61a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:12px;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"SF Mono", "Fira Code", monospace;--sidebar-width:220px;--ease-out:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--duration-fast:.15s;--duration-normal:.2s;--duration-slow:.3s}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:14px}body{font-family:var(--font-sans);background-color:var(--bg-root);color:var(--text-primary);letter-spacing:-.011em;width:100%;max-width:100vw;min-height:100vh;line-height:1.5;overflow-x:hidden}a{color:var(--accent);transition:color var(--duration-fast) var(--ease-in-out);text-decoration:none}a:hover{color:var(--accent-hover)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.app-layout{width:100%;max-width:100vw;min-height:100vh;display:flex;overflow-x:hidden}.mobile-header{padding:var(--space-3) var(--space-4);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border-default);z-index:40;background:#111113d9;justify-content:space-between;align-items:center;display:none;position:sticky;top:0}.hamburger-btn{color:var(--text-primary);cursor:pointer;padding:var(--space-1);background:0 0;border:none;justify-content:center;align-items:center;display:flex}.close-sidebar-btn{color:var(--text-muted);cursor:pointer;padding:var(--space-2);background:0 0;border:none;font-size:16px;display:none}.sidebar-overlay{-webkit-backdrop-filter:blur(4px);z-index:45;opacity:0;pointer-events:none;background:#0009;transition:opacity .3s;display:none;position:fixed;inset:0}.sidebar-overlay.open{opacity:1;pointer-events:auto;display:block}.app-sidebar{width:var(--sidebar-width);background:var(--bg-surface);border-right:1px solid var(--border-default);padding:var(--space-4) 0;z-index:50;transition:transform .35s var(--ease-out), opacity var(--duration-slow) ease;flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-logo{padding:var(--space-4) var(--space-5);color:var(--text-primary);letter-spacing:-.02em;border-bottom:1px solid var(--border-default);margin-bottom:var(--space-2);font-size:15px;font-weight:700}.sidebar-nav{gap:var(--space-1);padding:0 var(--space-2);flex-direction:column;flex:1;display:flex}.sidebar-link{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);color:var(--text-muted);border-radius:var(--radius-md);transition:all var(--duration-normal) var(--ease-in-out);cursor:pointer;text-align:left;background:0 0;border:none;width:100%;font-size:13px;font-weight:500;display:flex}.sidebar-link:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.sidebar-link.active{background:var(--accent-subtle);color:var(--accent);font-weight:600}.sidebar-link svg{flex-shrink:0;width:16px;height:16px}.sidebar-section-label{padding:var(--space-4) var(--space-3) var(--space-1);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:10px;font-weight:600}.sidebar-footer{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border-default)}.app-main{margin-left:var(--sidebar-width);flex-direction:column;flex:1;min-width:0;min-height:100vh;display:flex}.app-header{border-bottom:1px solid var(--border-default);height:60px;padding:0 var(--space-6);-webkit-backdrop-filter:blur(12px);z-index:30;background:#111113d9;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.app-header>div{flex-wrap:wrap;align-items:center;width:100%;display:flex}.app-header-title{color:var(--text-primary);letter-spacing:-.01em;font-size:15px;font-weight:600}.app-content{padding:var(--space-6);flex:1;width:100%;min-width:0}@media (max-width:768px){.mobile-header{display:flex}.close-sidebar-btn{display:block}.app-sidebar{opacity:0;background:#09090b;width:280px;transform:translate(-100%);box-shadow:0 0 40px #000c}.app-sidebar.open{opacity:1;transform:translate(0)}.app-main{margin-left:0}.app-header{padding:0 var(--space-4);height:auto;min-height:52px;padding-top:var(--space-2);padding-bottom:var(--space-2)}.app-content{padding:var(--space-3)}.hide-mobile{display:none!important}.card{padding:var(--space-4)}.card-value{font-size:24px}}.card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-5);transition:border-color var(--duration-normal) var(--ease-in-out), box-shadow var(--duration-normal) var(--ease-in-out), transform var(--duration-normal) var(--ease-out)}.stats-grid .card:hover,.action-grid .card:hover{border-color:#ffffff1a;transform:translateY(-1px);box-shadow:0 2px 8px #0000004d,0 0 0 1px #ffffff08}.card-header{margin-bottom:var(--space-4);justify-content:space-between;align-items:center;display:flex}.card-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:600}.card-value{color:var(--text-primary);letter-spacing:-.03em;margin-top:var(--space-1);font-size:28px;font-weight:700}.card-subtitle{color:var(--text-muted);margin-top:var(--space-1);font-size:12px}.action-grid{gap:var(--space-4);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));display:grid}.stats-grid{gap:var(--space-4);margin-bottom:var(--space-6);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}@media (max-width:640px){.stats-grid{gap:var(--space-2);grid-template-columns:1fr 1fr}.stats-grid .card .card-title{font-size:11px}.stats-grid .card .card-subtitle{font-size:10px}.action-grid{grid-template-columns:1fr}}.table-container{border:1px solid var(--border-default);border-radius:var(--radius-lg);background:var(--bg-surface);overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}thead{background:var(--bg-elevated)}th{text-align:left;padding:var(--space-3) var(--space-4);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--border-default);white-space:nowrap;font-size:11px;font-weight:600}td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-subtle);color:var(--text-primary);white-space:nowrap;transition:background var(--duration-fast) var(--ease-in-out)}tr:hover td{background:var(--bg-surface-hover)}tr:last-child td{border-bottom:none}.badge{white-space:nowrap;transition:opacity var(--duration-fast) var(--ease-in-out);border-radius:100px;align-items:center;padding:2px 8px;font-size:11px;font-weight:600;line-height:1.4;display:inline-flex}.badge-success{background:var(--success-subtle);color:var(--success)}.badge-warning{background:var(--warning-subtle);color:var(--warning)}.badge-danger{background:var(--danger-subtle);color:var(--danger)}.badge-info{background:var(--info-subtle);color:var(--info)}.badge-neutral{color:var(--text-secondary);background:#ffffff0a}.btn{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);font-size:13px;font-weight:500;font-family:var(--font-sans);border-radius:var(--radius-md);cursor:pointer;transition:all var(--duration-normal) var(--ease-in-out);white-space:nowrap;-webkit-user-select:none;user-select:none;border:1px solid #0000;line-height:1.4;display:inline-flex}.btn:active:not(:disabled){transition-duration:80ms;transform:scale(.97)}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 1px 2px #0000004d,inset 0 1px #ffffff1a}.btn-primary:hover{background:var(--accent-hover);box-shadow:0 2px 6px #3b82f640,inset 0 1px #ffffff1a}.btn-secondary{color:var(--text-secondary);border-color:var(--border-strong);background:0 0}.btn-secondary:hover{background:var(--bg-surface-hover);color:var(--text-primary);border-color:#ffffff26}.btn-danger{background:var(--danger);color:#fff;box-shadow:0 1px 2px #0000004d}.btn-danger:hover{background:#dc2626;box-shadow:0 2px 6px #ef444440}.btn-ghost{color:var(--text-secondary);padding:var(--space-1) var(--space-2);background:0 0;border:none}.btn-ghost:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.btn-sm{padding:var(--space-1) var(--space-3);font-size:12px}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.form-group{margin-bottom:var(--space-4)}.form-label{color:var(--text-secondary);margin-bottom:var(--space-1);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600;display:block}.form-input{width:100%;padding:var(--space-2) var(--space-3);font-size:13px;font-family:var(--font-sans);background:var(--bg-root);border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--duration-normal) var(--ease-in-out), box-shadow var(--duration-normal) var(--ease-in-out)}.form-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #3b82f626}.form-input::placeholder{color:var(--text-muted)}select.form-input{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2371717a' viewBox='0 0 16 16'%3E%3Cpath d='M8 11L3 6h10l-5 5z'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;padding-right:28px}textarea.form-input{resize:vertical;min-height:80px}.modal-overlay{-webkit-backdrop-filter:blur(4px);z-index:100;animation:fadeIn var(--duration-normal) var(--ease-out);background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-xl);padding:var(--space-6);width:100%;max-width:520px;max-height:80vh;animation:slideUp var(--duration-slow) var(--ease-out);overflow-y:auto;box-shadow:0 16px 70px #0009,0 0 0 1px #ffffff0a}.modal-title{margin-bottom:var(--space-4);letter-spacing:-.02em;font-size:16px;font-weight:700}.modal-footer{justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-6);display:flex}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.toast{top:var(--space-4);right:var(--space-4);padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);z-index:200;animation:slideIn var(--duration-slow) var(--ease-out);font-size:13px;font-weight:500;position:fixed;box-shadow:0 8px 30px #0006}.toast-success{background:var(--success);color:#fff}.toast-error{background:var(--danger);color:#fff}.toast-warning{background:var(--warning);color:var(--text-inverse)}@keyframes slideIn{0%{opacity:0;transform:translate(100%)translateY(-4px)}to{opacity:1;transform:translate(0)translateY(0)}}.test-banner{background:var(--warning-subtle);color:var(--warning);text-align:center;padding:var(--space-1) var(--space-4);letter-spacing:.04em;border-bottom:1px solid #eab3084d;font-size:12px;font-weight:600}.signal-grid{gap:var(--space-2);flex-wrap:wrap;display:flex}.signal-tag{border-radius:var(--radius-sm);font-size:11px;font-weight:500;font-family:var(--font-mono);align-items:center;gap:4px;padding:2px 8px;display:inline-flex}.signal-tag.present{background:var(--success-subtle);color:var(--success);transition:background var(--duration-fast) var(--ease-in-out)}.signal-tag.present:hover{background:#22c55e2e}.signal-tag.missing{color:var(--text-muted);transition:background var(--duration-fast) var(--ease-in-out);background:#ffffff08}.signal-tag.missing:hover{background:#ffffff0f}.timeline{flex-direction:column;gap:0;display:flex}.timeline-item{gap:var(--space-3);padding:var(--space-3) 0;border-left:2px solid var(--border-default);padding-left:var(--space-4);margin-left:6px;display:flex;position:relative}.timeline-item:before{content:"";background:var(--border-strong);border-radius:50%;width:8px;height:8px;position:absolute;top:16px;left:-5px}.timeline-item.dispatch:before{background:var(--accent)}.timeline-item.stage:before{background:var(--success)}.timeline-item.score:before{background:var(--warning)}.timeline-item.note:before{background:var(--text-muted)}.timeline-content{flex:1}.timeline-label{color:var(--text-primary);font-size:12px;font-weight:600}.timeline-meta{color:var(--text-muted);margin-top:2px;font-size:11px}.payload-block{background:var(--bg-root);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:var(--space-4);font-family:var(--font-mono);color:var(--text-secondary);white-space:pre-wrap;word-break:break-all;font-size:12px;line-height:1.6;overflow-x:auto}.empty-state{text-align:center;padding:var(--space-12) var(--space-6);color:var(--text-muted)}.empty-state-text{margin-bottom:var(--space-4);font-size:14px}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.mt-2{margin-top:var(--space-2)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.text-sm{font-size:12px}.text-xs{font-size:11px}.text-muted{color:var(--text-muted)}.text-secondary{color:var(--text-secondary)}.font-mono{font-family:var(--font-mono)}.font-semibold{font-weight:600}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.w-full{width:100%}.tooltip-wrapper{cursor:help;align-items:center;gap:4px;display:inline-flex;position:relative}.tooltip-icon{width:14px;height:14px;color:var(--text-muted);background:#71717a2e;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:9px;font-weight:700;line-height:1;display:inline-flex}.tooltip-text{visibility:hidden;opacity:0;color:var(--text-primary);border-radius:var(--radius-md);white-space:normal;z-index:60;pointer-events:none;border:1px solid var(--border-strong);text-transform:none;letter-spacing:normal;background:#1a1a1f;width:max-content;max-width:240px;padding:6px 10px;font-size:11px;font-weight:400;line-height:1.4;transition:opacity .15s,visibility .15s;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 4px 12px #0006}.tooltip-wrapper:hover .tooltip-text{visibility:visible;opacity:1}.mobile-card-list{display:none}@media (max-width:768px){.desktop-table{display:none}.mobile-card-list{gap:var(--space-2);flex-direction:column;display:flex}.mobile-card-item{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4)}.mobile-card-item-header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.mobile-card-item-title{color:var(--text-primary);font-size:13px;font-weight:600}.mobile-card-item-body{gap:var(--space-1) var(--space-4);grid-template-columns:1fr 1fr;font-size:12px;display:grid}.mobile-card-item-row{flex-direction:column;gap:1px;display:flex}.mobile-card-item-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:10px}.mobile-card-item-value{color:var(--text-primary);font-size:12px}}.action-scroller{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}@media (max-width:768px){.action-scroller{-webkit-overflow-scrolling:touch;padding-bottom:var(--space-2);margin:0 calc(-1 * var(--space-3));padding-left:var(--space-3);padding-right:var(--space-3);scrollbar-width:none;flex-wrap:nowrap;overflow-x:auto}.action-scroller::-webkit-scrollbar{display:none}.action-scroller .btn{flex-shrink:0}.action-divider{display:none}}.action-divider{background:var(--border-default);flex-shrink:0;width:1px;height:20px;margin:0 4px}.audit-card{background:var(--bg-surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);padding:var(--space-4);gap:var(--space-3);transition:border-color var(--duration-normal) var(--ease-in-out), background var(--duration-normal) var(--ease-in-out);align-items:flex-start;display:flex}.audit-card:hover{background:var(--bg-surface-hover);border-color:#ffffff17}.audit-icon{border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:14px;display:flex}.audit-card-content{flex:1;min-width:0}.audit-card-title{color:var(--text-primary);margin-bottom:2px;font-size:13px;font-weight:600}.audit-card-meta{color:var(--text-muted);gap:var(--space-3);flex-wrap:wrap;font-size:11px;display:flex}.audit-card-detail{color:var(--text-secondary);margin-top:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-root);border-radius:var(--radius-sm);border:1px solid var(--border-subtle);font-size:12px}.filter-bar{align-items:center;gap:var(--space-2);margin-bottom:var(--space-4);flex-wrap:wrap;display:flex}.filter-chip{cursor:pointer;border:1px solid var(--border-default);color:var(--text-secondary);font-size:12px;font-weight:500;font-family:var(--font-sans);background:0 0;border-radius:100px;align-items:center;padding:4px 12px;transition:all .15s;display:inline-flex}.filter-chip:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.filter-chip.active{background:var(--accent-subtle);color:var(--accent);border-color:#3b82f64d}@media (max-width:768px){.filter-bar{-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:var(--space-1);flex-wrap:nowrap;overflow-x:auto}.filter-bar::-webkit-scrollbar{display:none}.filter-chip{flex-shrink:0}.signals-grid-2col{grid-template-columns:1fr!important}}.signals-grid-2col{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}
