:root{--bg:#f6f8fb;--surface:#fff;--surface-muted:#f1f5f9;--surface-soft:#f8fafc;--border:#d8dee8;--border-strong:#cbd5e1;--text:#111827;--muted:#5b6472;--muted-2:#7b8493;--brand:#2563eb;--brand-dark:#1d4ed8;--brand-warm:#f97316;--success:#16a34a;--warning:#d97706;--danger:#dc2626;--shadow:0 14px 40px #0f172a14}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:radial-gradient(circle at top left, #2563eb14, transparent 32rem), linear-gradient(180deg, #fbfdff 0%, var(--bg) 34rem);color:var(--text);letter-spacing:0;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,textarea,select{font:inherit;letter-spacing:0}a{color:var(--brand)}.app-container{min-height:100vh}main{min-height:calc(100vh - 64px)}.button,.submitButton,.resultButton{border:1px solid var(--brand);background:var(--brand);color:#fff;cursor:pointer;border-radius:7px;padding:10px 14px;font-size:13px;font-weight:800;text-decoration:none;transition:background-color .15s,border-color .15s,transform .15s,box-shadow .15s;box-shadow:0 8px 24px #2563eb2e}.button:hover,.submitButton:hover,.resultButton:hover{background:var(--brand-dark);border-color:var(--brand-dark);transform:translateY(-1px)}.button:disabled,.submitButton:disabled{opacity:.65;cursor:not-allowed;transform:none}.button-secondary,.resultButton{color:var(--brand);box-shadow:none;background:#fff}.button-secondary:hover,.resultButton:hover{color:#fff}*{box-sizing:border-box;margin:0;padding:0}.navbar{z-index:50;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#ffffffeb;justify-content:space-between;align-items:center;height:64px;padding:0 24px;display:flex;position:sticky;top:0}.nav-left{align-items:center;gap:28px;min-width:0;display:flex}.logo-button{cursor:pointer;color:var(--text);background:0 0;border:0;align-items:center;gap:10px;display:inline-flex}.logo-mark{background:linear-gradient(135deg, var(--brand), var(--brand-warm));color:#fff;border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;font-size:14px;font-weight:800;display:inline-flex;box-shadow:0 8px 24px #2563eb2e}.logo{letter-spacing:0;color:var(--text);font-size:17px;font-weight:800}.nav-links{align-items:center;gap:8px;display:flex}.nav-links button{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:6px;padding:8px 12px;font-size:13px;font-weight:700;transition:all .2s}.nav-links button:hover{color:var(--brand);background:var(--surface-muted)}.nav-links button.active{color:var(--brand);background:#eff6ff}.nav-right{gap:12px;display:flex}.system-pill,.nav-context{background:var(--surface-muted);min-height:28px;color:var(--muted);border-radius:6px;align-items:center;padding:0 10px;font-size:12px;font-weight:700;display:inline-flex}.system-pill{border:1px solid var(--border)}@media (width<=700px){.navbar{padding:0 14px}.nav-left{gap:12px}.nav-context,.system-pill{display:none}}@media (width<=430px){.navbar{height:auto;min-height:64px;padding:10px 14px}.nav-left{flex-wrap:wrap;gap:10px 14px;width:100%}.logo-button{flex:none}.nav-links{flex:auto;justify-content:flex-start}.nav-links button{padding:7px 9px}}.scanner-page{width:min(1180px,100% - 32px);margin:0 auto;padding:28px 0 56px}.scanner-hero{margin-bottom:24px}.eyebrow{color:var(--brand);text-transform:uppercase;margin:0 0 8px;font-size:12px;font-weight:800}.scanner-hero h1{max-width:760px;margin:0;font-size:34px;line-height:1.08}.hero-copy{max-width:760px;color:var(--muted);margin:12px 0 0;font-size:15px;line-height:1.6}.scanner-grid{grid-template-columns:minmax(0,1fr) 360px;align-items:start;gap:18px;display:grid}.scanner-panel,.home-output-panel{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:8px}.scanner-panel{padding:20px}.home-output-panel{padding:20px;position:sticky;top:84px}.panel-header{justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:18px;display:flex}.panel-header h2,.home-output-panel h2{margin:0;font-size:18px}.file-pill{text-overflow:ellipsis;white-space:nowrap;color:#166534;background:#dcfce7;border-radius:6px;max-width:260px;padding:6px 9px;font-size:12px;font-weight:800;overflow:hidden}.dropZone{border:1px dashed var(--border-strong);text-align:center;cursor:pointer;background:var(--surface-soft);border-radius:8px;padding:22px;transition:all .2s;position:relative}.dropZoneActive{border-color:var(--brand);background:#eff6ff;box-shadow:0 0 0 3px #2563eb1f}.input{display:none}.label{cursor:pointer;color:var(--text);align-items:center;gap:10px;font-size:14px;font-weight:700;display:inline-flex}.upload-icon{color:var(--brand);background:#dbeafe;border-radius:6px;padding:6px 8px;font-size:11px;font-weight:900}.success{color:#166534;background:#dcfce7;border:1px solid #bbf7d0;border-radius:7px;margin-top:12px;padding:9px 10px;font-size:13px}.error{color:#991b1b;background:#fee2e2;border:1px solid #fecaca;border-radius:7px;margin-top:10px;padding:9px 10px;font-size:13px}.jsonTextArea{color:#dbeafe;box-sizing:border-box;resize:vertical;background:#0f172a;border:1px solid #1e293b;border-radius:8px;width:100%;min-height:250px;max-height:620px;margin-top:14px;padding:16px;font-family:Consolas,Courier New,monospace;font-size:13px;line-height:1.5;display:block}.jsonTextArea:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #2563eb29}.jsonTextArea::placeholder{color:#94a3b8}.emailSection{margin-bottom:16px}.form-section{padding-top:2px}.form-section+.form-section{border-top:1px solid var(--border);padding-top:16px}.section-kicker{color:var(--brand);text-transform:uppercase;margin-bottom:8px;font-size:12px;font-weight:900}.emailLabel{color:var(--text);text-transform:uppercase;margin-bottom:4px;font-size:12px;font-weight:800;display:block}.emailHelp{color:var(--muted);margin:0 0 8px;font-size:13px;line-height:1.4}.emailInput{border:1px solid var(--border);box-sizing:border-box;background:#fff;border-radius:7px;width:100%;padding:11px 12px;font-size:14px}.emailInput:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #2563eb1f}.inputError{border-color:var(--danger)}.scanner-actions{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:14px;margin-top:16px;padding-top:16px;display:flex}.scanner-action-buttons{flex-shrink:0;justify-content:flex-end;gap:10px;margin-left:auto;display:flex}.submit-help{max-width:460px;color:var(--muted);margin:0;font-size:13px;line-height:1.45}.home-output-list{gap:0;margin-top:18px;display:grid}.home-output-item{grid-template-columns:auto 1fr;align-items:start;gap:12px;padding:0 0 18px;display:grid;position:relative}.home-output-item:not(:last-child):after{content:"";background:var(--border);width:1px;position:absolute;top:30px;bottom:6px;left:12px}.home-output-item strong{font-size:13px;display:block}.home-output-item p{color:var(--muted);margin:4px 0 0;font-size:13px;line-height:1.5}.home-output-step{color:#fff;border-radius:99px;place-items:center;width:25px;height:25px;font-size:12px;font-weight:900;line-height:1;display:inline-grid}.signal-blue{background:var(--brand)}.signal-orange{background:var(--brand-warm)}.signal-green{background:var(--success)}@media (width<=900px){.scanner-grid{grid-template-columns:1fr}.home-output-panel{position:static}}@media (width<=620px){.scanner-page{width:min(100% - 20px,1180px);padding-top:24px}.scanner-hero h1{font-size:26px}.scanner-actions{flex-direction:column;align-items:stretch}.scanner-action-buttons{justify-content:flex-start;margin-left:0}.submit-help{max-width:none}}.result-page{width:min(1280px,100% - 32px);margin:0 auto;padding:34px 0 46px}.result-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px;display:flex}.result-kicker{color:var(--brand);text-transform:uppercase;margin:0 0 4px;font-size:12px;font-weight:800}.result-header h1{margin:0;font-size:28px;line-height:1.1}.status-badge{text-transform:uppercase;border-radius:6px;padding:7px 10px;font-size:11px;font-weight:700}.status-pending{color:#7a5b00;background:#fff3cd}.status-processing{color:#1e40af;background:#dbeafe}.status-completed{color:#166534;background:#dcfce7}.status-failed{color:#991b1b;background:#fee2e2}.dependency-status{white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-block}.dependency-status-pending{color:#7a5b00;background:#fff3cd}.dependency-status-processing{color:#1e40af;background:#dbeafe}.dependency-status-scored{color:#166534;background:#dcfce7}.dependency-status-missing{color:#991b1b;background:#fee2e2}.token-row{color:var(--muted);word-break:break-all;margin:0 0 16px;font-size:13px}.polling-row{color:#475569;margin:6px 0 0;font-size:13px}.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.summary-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:16px;box-shadow:0 8px 28px #0f172a0d}.summary-card h2{text-transform:uppercase;color:var(--muted);margin:0 0 12px;font-size:12px}.summary-card p{color:var(--text);margin:0;font-size:28px;font-weight:800}.summary-section{border:1px solid var(--border);background:var(--surface);border-radius:8px;margin-top:16px;padding:16px;box-shadow:0 8px 28px #0f172a0a}.analysis-status-row{align-items:stretch;gap:16px;margin-top:16px;display:flex}.analysis-status-info{flex:2 1 0;margin-top:0}.analysis-status-time{flex-direction:column;flex:260px;justify-content:center;margin-top:0;display:flex}.summary-section h2{margin-top:0;font-size:18px}.table-wrapper{border:1px solid var(--border);border-radius:8px;overflow-x:auto}table{border-collapse:collapse;table-layout:fixed;width:100%}th,td{text-align:left;vertical-align:middle;border-bottom:1px solid #e8edf4;padding:11px 10px;font-size:13px}th{background:var(--surface-muted);color:var(--muted);text-transform:uppercase;z-index:1;font-size:11px;position:sticky;top:0}th:first-child,td:first-child{width:20%}th:nth-child(2),td:nth-child(2){width:25%}th:nth-child(3),td:nth-child(3){width:8%;padding-right:6px}th:nth-child(4),td:nth-child(4){width:13%;padding-left:6px}th:nth-child(5),td:nth-child(5){width:12%}th:nth-child(6),td:nth-child(6),th:nth-child(7),td:nth-child(7){width:7%}th:nth-child(8),td:nth-child(8){width:4%}.dependency-row:hover{background:#f8fbff}.dependency-name-cell{word-break:break-word;white-space:normal}.dependency-toggle-cell{text-align:center;width:56px}.dependency-toggle-cell-right{text-align:right}.dependency-toggle{border:1px solid var(--border-strong);color:#0f172a;cursor:pointer;background:#f8fafc;border-radius:7px;justify-content:center;align-items:center;width:30px;height:30px;font-weight:700;line-height:1;transition:transform .15s,background-color .2s,border-color .2s,box-shadow .2s;display:inline-flex;box-shadow:0 1px 2px #0f172a14}.dependency-toggle-icon{color:currentColor;width:16px;height:16px;transition:transform .2s}.dependency-toggle:hover{background:#eff6ff;border-color:#60a5fa;transform:translateY(-1px);box-shadow:0 3px 8px #2563eb26}.dependency-toggle.is-expanded{transform:rotate(180deg)}.dependency-toggle-cell-right .dependency-toggle{margin-left:auto}.dependency-expanded-row td{background:#fbfdff;border-bottom:1px solid #e8edf4;padding-top:0;padding-bottom:12px}.dependency-expanded-panel{padding:0 10px}.dependency-detail-strip{background:#fbfdff;border-top:1px solid #e2e8f0;align-items:stretch;gap:0;width:100%;display:flex}.strip-group{align-content:center;gap:3px;min-width:108px;padding:14px 14px 10px;display:grid}.strip-group-wide{flex:1;min-width:210px}.strip-group span{color:#64748b;letter-spacing:.02em;text-transform:uppercase;font-size:11px;font-weight:900}.strip-group strong{color:#0f172a;font-size:13px;line-height:1.35}.dependency-strip-link{color:var(--brand);white-space:nowrap;background:#fff;border:1px solid #bfdbfe;border-radius:7px;justify-content:center;align-items:center;margin:10px 0 10px 12px;padding:0 14px;font-size:13px;font-weight:900;text-decoration:none;display:inline-flex}.dependency-strip-link:hover{background:#eff6ff}.clickable-row{cursor:pointer;transition:background-color .2s}.clickable-row:hover{background-color:#f0f4f8}.clickable-row a{color:inherit;text-decoration:none;display:block}.clickable-row a:hover{color:#2563eb}.repo-url-cell{word-break:break-word;white-space:normal}.repo-url-cell a{color:#2563eb;word-break:break-word;white-space:normal;font-size:12px;text-decoration:none;display:block}.repo-url-cell a:hover{text-decoration:underline}.risk-low{color:#166534;font-weight:700}.risk-medium{color:#92400e;font-weight:700}.risk-high{color:#991b1b;font-weight:700}.error-text{color:#991b1b;background:#fee2e2;border:1px solid #fecaca;border-radius:8px;padding:10px}.result-actions{gap:8px;margin-top:16px;display:flex}.button{color:#fff;cursor:pointer;background:#2563eb;border:1px solid #2563eb;border-radius:8px;padding:8px 12px;font-size:14px;text-decoration:none}.button-secondary{color:#2563eb;background:#fff}@media (width<=700px){.result-page{width:min(100% - 24px,1280px);padding:24px 0 36px}.result-header{flex-direction:column;align-items:flex-start}.result-header h1{font-size:26px}.summary-grid{grid-template-columns:1fr}.analysis-status-row{flex-direction:column;gap:12px}.analysis-status-time{flex:0 auto;min-height:120px}.summary-section{padding:14px}.table-wrapper{border:0;border-radius:0;overflow:visible}table,thead,tbody,tr,th,td{width:100%;display:block}thead{display:none}table{border-collapse:separate;table-layout:auto}tbody{gap:10px;display:grid}.dependency-row{border:1px solid var(--border);background:#fff;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;gap:10px 12px;padding:12px;display:grid}.dependency-row td{border:0;padding:0;font-size:13px}.dependency-row td:before{color:var(--muted);text-transform:uppercase;margin-bottom:3px;font-size:10px;font-weight:900;display:block}.dependency-row td:first-child{grid-column:1/2;font-size:15px;font-weight:800}.dependency-row td:first-child:before{content:"Name"}.dependency-row td:nth-child(2){grid-column:1/-1}.dependency-row td:nth-child(2):before{content:"Repository"}.dependency-row td:nth-child(3):before{content:"Version"}.dependency-row td:nth-child(4):before{content:"Type"}.dependency-row td:nth-child(5):before{content:"Status"}.dependency-row td:nth-child(6):before{content:"Score"}.dependency-row td:nth-child(7):before{content:"Risk"}.dependency-row td:nth-child(8){grid-area:1/2/2/3;align-self:start}.dependency-row td:nth-child(8):before{display:none}th:nth-child(n),td:nth-child(n){width:auto;padding-left:0;padding-right:0}.repo-url-cell a{font-size:13px}.dependency-expanded-panel{padding:0}.dependency-expanded-row{margin-top:-10px;display:block}.dependency-expanded-row td{background:0 0;border:0;padding:0 0 10px;display:block}.dependency-detail-strip{border:1px solid var(--border);border-top:0;border-radius:0 0 8px 8px;grid-template-columns:1fr 1fr;display:grid;overflow:hidden}.strip-group{border-bottom:1px solid #e2e8f0;min-width:0}.strip-group-wide{min-width:0}.dependency-strip-link{grid-column:1/-1;min-height:44px;margin:10px}.dependency-toggle-cell{width:56px}.dependency-toggle-cell-right{text-align:right}.result-actions{flex-wrap:wrap}}.dependency-detail-page{width:min(1280px,100% - 32px);margin:0 auto;padding:34px 0 48px}.detail-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:20px;display:flex}.header-content{flex:1;align-items:center;gap:12px;min-width:200px;display:flex}.detail-header h1{word-break:break-word;margin:0;font-size:28px;font-weight:700}.type-badge{text-transform:uppercase;white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:700}.type-dependency{color:#1e40af;background:#dbeafe}.type-dev_dependency{color:#6b21a8;background:#f3e8ff}.button-back{padding:8px 16px;font-size:14px;transition:transform .15s,background-color .15s,border-color .15s}.button-back:hover{transform:scale(1.05)}.info-section{border:1px solid var(--border);background:var(--surface);border-radius:8px;margin-bottom:18px;padding:20px;box-shadow:0 8px 28px #0f172a0a}.info-section h2{color:#0f172a;margin:0 0 16px;font-size:18px}.info-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;display:grid}.info-item{flex-direction:column;gap:4px;display:flex}.info-label{color:#111827;text-transform:uppercase;font-size:12px;font-weight:700}.info-value{color:#333;word-break:break-all;font-family:Courier New,monospace;font-size:14px}.metrics-section{margin-bottom:18px}.metrics-section h2{color:#0f172a;margin:0 0 16px;font-size:18px}.metrics-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;display:grid}.metric-card{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:20px;box-shadow:0 8px 28px #0f172a0a}.metric-card h3{color:#111827;text-transform:uppercase;margin:0 0 16px;font-size:14px;font-weight:700}.score-card{flex-direction:column;display:flex}.score-display{align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.score-value{color:var(--text);font-size:40px;font-weight:700}.score-max{color:#999;font-size:18px;font-weight:500}.score-bar{background:#eee;border-radius:4px;height:8px;margin-bottom:12px;overflow:hidden}.score-fill{border-radius:4px;height:100%;transition:width .3s}.score-low{background:#22c55e}.score-medium{background:#f59e0b}.score-high{background:#ef4444}.score-card p{color:#666;margin:0;font-size:13px}.risk-card{flex-direction:column;display:flex}.metric-card-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:4px;display:flex}.metric-card-header h3{margin-bottom:0}.risk-info-button{color:#0f172a;cursor:pointer;background:0 0;border:0;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;padding:0;transition:transform .15s,background-color .15s,color .15s;display:inline-flex}.risk-info-button svg{width:24px;height:24px}.risk-info-button:hover{color:#020617;background:#e2e8f0;transform:translateY(-1px)}.risk-info-button:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.risk-level{text-transform:uppercase;margin:0 0 12px;font-size:28px;font-weight:700}.risk-level.risk-low{color:#22c55e}.risk-level.risk-medium{color:#f59e0b}.risk-level.risk-high{color:#ef4444}.risk-description{flex:1}.risk-description p{color:#666;margin:0;font-size:13px;line-height:1.5}.detail-tabs{border:1px solid var(--border);background:#eef3f8;border-radius:8px;align-items:center;gap:4px;margin:0 0 18px;padding:4px;display:inline-flex}.detail-tab{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:9px 14px;font-size:13px;font-weight:800;transition:background-color .15s,color .15s,box-shadow .15s}.detail-tab:hover{color:#0f172a;background:#ffffffa6}.detail-tab.is-active{color:#0f172a;background:#fff;box-shadow:0 1px 3px #0f172a1f}.detail-tab:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.github-section{border:1px solid var(--border);background:var(--surface);border-radius:8px;margin-bottom:18px;padding:20px;box-shadow:0 8px 28px #0f172a0a}.github-section h2{color:#0f172a;margin:0 0 16px;font-size:18px}.section-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.section-heading h2{margin:0 0 4px}.section-heading p{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.signal-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.signal-stat-card{border:1px solid var(--border);background:linear-gradient(#fff 0%,#f8fafc 100%);border-radius:8px;gap:8px;min-height:88px;padding:16px;display:grid}.signal-stat-card span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:800}.signal-stat-card strong{color:#0f172a;font-size:26px;line-height:1}.signals-layout{grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:12px;display:grid}.signal-panel{border:1px solid var(--border);background:var(--surface-soft);border-radius:8px;grid-column:span 4;padding:16px}.signal-panel-wide{grid-column:span 7}.signal-panel-side{grid-column:span 5}.signal-panel-issue{grid-column:span 4}.signal-panel-tags{grid-column:span 8}.signal-panel-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.signal-panel-header p{color:#0f172a;text-transform:uppercase;margin:0;font-size:13px;font-weight:900}.signal-panel-header a{color:var(--brand);font-size:13px;font-weight:800;text-decoration:none}.signal-panel-header a:hover{text-decoration:underline}.signal-description{color:#334155;margin:0 0 14px;font-size:13px;line-height:1.55}.repository-identity{background:#fff;border:1px solid #e2e8f0;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;padding:10px 12px;display:flex}.repository-identity strong{color:#0f172a;word-break:break-word;font-size:15px;line-height:1.25}.repository-identity span{color:#3730a3;background:#eef2ff;border-radius:999px;flex:none;padding:5px 8px;font-size:12px;font-weight:900}.signal-mini-metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:14px;display:grid}.signal-mini-metrics div{background:#fff;border:1px solid #e2e8f0;border-radius:8px;gap:4px;padding:10px;display:grid}.signal-mini-metrics span{color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:900}.signal-mini-metrics strong{color:#0f172a;font-size:15px;line-height:1}.signal-definition-grid,.signal-list{gap:10px;margin:0;display:grid}.signal-list-inline{grid-template-columns:repeat(3,minmax(0,1fr))}.signal-list-inline div{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:12px}.signal-definition-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.signal-definition-grid div,.signal-list div{border-bottom:1px solid #e2e8f0;gap:5px;padding-bottom:8px;display:grid}.signal-definition-grid div{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:10px 12px}.signal-definition-grid div:last-child,.signal-list div:last-child{border-bottom:0;padding-bottom:0}.signal-list-inline div,.signal-list-inline div:last-child{background:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:12px}.signal-definition-grid dt,.signal-list dt{color:var(--muted);font-size:12px;font-weight:800}.signal-definition-grid dd,.signal-list dd{color:#0f172a;text-align:left;word-break:break-word;margin:0;font-size:13px;font-weight:700}.signal-list div{justify-content:space-between;align-items:baseline;gap:14px;display:flex}.signal-list dd{text-align:right}.signal-chip-list{flex-wrap:wrap;gap:8px;display:flex}.signal-chip-group-label{color:var(--muted);text-transform:uppercase;margin:12px 0 8px;font-size:12px;font-weight:900}.signal-panel-header+.signal-chip-group-label{margin-top:0}.signal-chip{color:#334155;background:#fff;border:1px solid #cbd5e1;border-radius:999px;padding:6px 9px;font-size:12px;font-weight:800}.signal-empty{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.signal-warning-list{color:#92400e;gap:8px;margin:12px 0 0;padding-left:18px;font-size:13px;display:grid}.github-metrics{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;min-width:0;display:grid}.metric-placeholder{background:var(--surface-soft);border:1px solid var(--border);text-align:left;box-sizing:border-box;border-radius:8px;min-width:0;padding:16px}.metric-placeholder p{color:#111827;margin:0 0 12px;font-size:13px;font-weight:500}.github-metric-value{color:#334155;word-break:break-word;font-size:13px;line-height:1.5}.github-metric-value a{color:#2563eb;text-decoration:none}.github-metric-value a:hover{text-decoration:underline}.relationship-list{gap:12px;display:grid}.score-breakdown-hero{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:14px;display:grid}.score-breakdown-hero div{border:1px solid var(--border);background:linear-gradient(#fff 0%,#f8fafc 100%);border-radius:8px;gap:8px;padding:16px;display:grid}.score-breakdown-hero span,.score-breakdown-value span,.score-breakdown-footer,.score-relationship-counts span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:800}.score-breakdown-hero strong{color:#0f172a;font-size:28px;line-height:1}.score-breakdown-list{gap:12px;display:grid}.score-breakdown-item,.score-relationship-note{border:1px solid var(--border);background:var(--surface-soft);border-radius:8px;padding:16px}.score-breakdown-header{justify-content:space-between;gap:18px;margin-bottom:12px;display:flex}.score-breakdown-header h3,.score-relationship-note h3{color:#0f172a;margin:0 0 6px;font-size:15px}.score-breakdown-header p,.score-relationship-note p{color:#334155;margin:0;font-size:13px;line-height:1.5}.score-breakdown-value{flex:none;align-content:start;justify-items:end;gap:4px;display:grid}.score-breakdown-value strong{color:#0f172a;font-size:22px;line-height:1}.score-breakdown-bar{background:#e2e8f0;border-radius:999px;height:8px;overflow:hidden}.score-breakdown-bar div{border-radius:inherit;background:var(--brand);height:100%}.score-breakdown-footer{text-transform:none;flex-wrap:wrap;gap:10px 18px;margin-top:10px;line-height:1.45;display:flex}.score-input-details{border-top:1px solid #e2e8f0;margin-top:12px;padding-top:12px}.score-input-details summary{width:max-content;color:var(--brand);cursor:pointer;font-size:13px;font-weight:900}.score-input-grid{gap:8px;margin-top:12px;display:grid}.score-input-row{background:#fff;border:1px solid #e2e8f0;border-radius:8px;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.score-input-row div{gap:3px;min-width:0;display:grid}.score-input-row strong{color:#0f172a;font-size:13px}.score-input-row div span{color:var(--muted);word-break:break-word;font-size:12px;line-height:1.35}.score-input-signal{text-align:center;text-transform:uppercase;border-radius:999px;min-width:88px;padding:5px 8px;font-size:11px;font-weight:900}.score-input-strong{color:#166534;background:#dcfce7}.score-input-good{color:#1d4ed8;background:#dbeafe}.score-input-weak{color:#92400e;background:#fef3c7}.score-input-poor{color:#991b1b;background:#fee2e2}.score-input-missing{color:#475569;background:#e2e8f0}.score-input-score{color:#0f172a;text-align:right;min-width:54px;font-size:13px;font-weight:900}.score-relationship-note{background:#fff;justify-content:space-between;align-items:flex-start;gap:16px;margin-top:14px;display:flex}.score-relationship-counts{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.score-relationship-counts span{color:#334155;background:#f8fafc;border:1px solid #cbd5e1;border-radius:999px;padding:7px 9px}.relationship-summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px;display:grid}.relationship-section-heading{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.relationship-section-heading h2{margin-bottom:4px}.relationship-section-heading p{color:var(--muted);margin:0;font-size:13px}.relationship-status-badge{text-transform:uppercase;border-radius:999px;flex:none;padding:6px 10px;font-size:11px;font-weight:800}.relationship-status-completed{color:#166534;background:#dcfce7}.relationship-status-running,.relationship-status-waiting{color:#92400e;background:#fef3c7}.relationship-status-failed{color:#991b1b;background:#fee2e2}.relationship-summary-card{border:1px solid var(--border);background:var(--surface-soft);border-radius:8px;justify-content:space-between;align-items:center;gap:10px;min-height:58px;padding:12px;display:flex}.relationship-summary-card span{color:var(--muted);font-size:12px;font-weight:800;line-height:1.3}.relationship-summary-card strong{color:#0f172a;font-size:24px;line-height:1}.relationship-summary-critical{background:#fff5f5;border-color:#fecaca}.relationship-summary-warning{background:#fffbeb;border-color:#fde68a}.relationship-summary-info{background:#eff6ff;border-color:#bfdbfe}.relationship-item{border:1px solid var(--border);background:#fbfdff;border-radius:8px;padding:16px}.relationship-muted-note{color:var(--muted);margin:0 0 12px;font-size:13px}.relationship-status-note{color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;margin:0 0 12px;padding:10px 12px;font-size:13px;font-weight:700}.relationship-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px;display:flex}.relationship-target{color:#0f172a;margin:0 0 6px;font-size:15px;font-weight:700}.relationship-summary{color:#334155;margin:0;font-size:13px;line-height:1.5}.relationship-badge{text-transform:uppercase;white-space:nowrap;border-radius:6px;flex:none;padding:5px 8px;font-size:11px;font-weight:700}.relationship-critical{color:#991b1b;background:#fee2e2}.relationship-warning{color:#92400e;background:#fef3c7}.relationship-info{color:#1e40af;background:#dbeafe}.relationship-muted{color:#475569;background:#e2e8f0}.relationship-evidence{color:#334155;margin:0;padding-left:18px;font-size:13px;line-height:1.5}.relationship-evidence a{color:#2563eb;text-decoration:none}.relationship-evidence a:hover{text-decoration:underline}.risk-modal-overlay{z-index:40;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a9e;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.risk-modal{background:#fff;border:1px solid #e2e8f0;border-radius:18px;width:min(760px,100%);max-height:90vh;padding:22px;overflow:auto;box-shadow:0 24px 80px #0f172a47}.risk-modal-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;display:flex}.risk-modal-kicker{letter-spacing:.08em;text-transform:uppercase;color:#2563eb;margin:0 0 6px;font-size:12px;font-weight:700}.risk-modal-header h3{color:#0f172a;margin:0;font-size:22px}.risk-modal-close{color:#cbd5e1;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:24px;line-height:1;transition:transform .15s,background-color .15s,border-color .15s;display:inline-flex}.risk-modal-close svg{width:18px;height:18px}.risk-modal-close:hover{background:#f8fafc;border-color:#94a3b8;transform:scale(1.05)}.risk-modal-close:hover svg{color:#94a3b8}.risk-modal-close:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.risk-modal-body{color:#334155;gap:16px;font-size:14px;line-height:1.6;display:grid}.risk-modal-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.risk-modal-card,.risk-modal-notes{background:#f8fafc;border:1px solid #e2e8f0;border-radius:14px;padding:16px}.risk-modal-card h4,.risk-modal-notes h4{color:#0f172a;margin:0 0 8px;font-size:15px}.risk-modal-card p,.risk-modal-notes p{color:#334155;margin:0 0 8px}.risk-modal-card p:last-child,.risk-modal-notes p:last-child{margin-bottom:0}.risk-modal-notes ul{color:#334155;gap:8px;margin:0;padding-left:18px;display:grid}.metric-placeholder-wide{grid-column:1/-1}.raw-json{color:#e2e8f0;white-space:pre-wrap;word-break:break-word;background:#0f172a;border-radius:8px;margin:0;padding:14px;font-size:12px;line-height:1.5;overflow:auto}.warning-list{gap:6px;margin:0;padding-left:18px;list-style:outside;display:grid}.metric-placeholder li{color:#334155;word-break:break-word;font-size:12px}.detail-actions{flex-wrap:wrap;gap:12px;margin-top:24px;display:flex}.detail-actions .button{flex:1;min-width:150px}.error-text{color:#ef4444;background:#fee2e2;border:1px solid #fca5a5;border-radius:6px;margin:16px 0;padding:12px}.filter-clear-button{color:#fff;cursor:pointer;background-color:#6c757d;border:1px solid #6c757d;border-radius:4px;margin-left:10px;padding:4px 12px;font-size:13px;font-weight:500;transition:background-color .15s,border-color .15s}.filter-clear-button:hover{background-color:#5c636a;border-color:#565e64}.filter-clear-button:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.footnote-link{color:#2563eb;vertical-align:super;font-size:.7em;text-decoration:none}.footnote-link:hover{text-decoration:underline}.issue-chart-toggle{border:1px solid var(--border);background:#eef3f8;border-radius:8px;align-items:center;gap:4px;margin:0 0 16px;padding:4px;display:inline-flex}.issue-chart-toggle-button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:6px;padding:8px 12px;font-size:13px;font-weight:800;transition:background-color .15s,color .15s,box-shadow .15s}.issue-chart-toggle-button:hover{color:#0f172a;background:#ffffffa6}.issue-chart-toggle-button.is-active{color:#0f172a;background:#fff;box-shadow:0 1px 3px #0f172a1f}.issue-chart-toggle-button:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.chart-grid{grid-template-columns:repeat(3,1fr);gap:16px;min-width:0;display:grid}.chart-grid-insights{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-grid .metric-placeholder{background:#fff;flex-direction:column;height:280px;display:flex;overflow:hidden}.chart-grid .metric-placeholder .chart-container{flex:1;min-width:0;min-height:0;overflow:visible}.chart-container,.wide-chart-container{width:100%;min-width:0}.wide-chart-container{height:300px;overflow:hidden}.chart-container .recharts-responsive-container,.wide-chart-container .recharts-responsive-container{max-width:100%}.issues-table-wrapper{border:1px solid var(--border);border-radius:8px;max-height:620px;overflow:auto}.issues-table{border-collapse:collapse;width:100%;min-width:720px}.issues-table th{z-index:1;color:#334155;text-align:left;text-transform:uppercase;background:#f1f5f9;font-size:12px;position:sticky;top:0}.issues-table th,.issues-table td{border-bottom:1px solid var(--border);padding:12px 14px;font-size:13px}.issues-table tbody tr:hover{background:#f8fafc}.stat-card-body{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;display:flex}.stat-value-label{text-transform:uppercase;color:#64748b;text-align:center;margin-bottom:4px;font-size:12px}.stat-value-number{color:#0f172a;text-align:center;font-size:28px;font-weight:700}@media (width<=768px){.dependency-detail-page{padding:20px 12px}.detail-header{flex-direction:column;gap:12px}.header-content{flex-direction:column;align-items:flex-start;width:100%}.detail-header h1{font-size:24px}.metrics-grid,.github-metrics{grid-template-columns:1fr}.detail-tabs{width:100%;display:flex}.detail-tab{flex:1;padding-inline:8px}.issue-chart-toggle{width:100%;display:flex}.issue-chart-toggle-button{flex:1}.relationship-summary-grid{grid-template-columns:1fr 1fr}.score-breakdown-hero,.score-breakdown-header,.score-relationship-note{flex-direction:column;grid-template-columns:1fr}.score-breakdown-value{justify-items:start}.score-relationship-counts{justify-content:flex-start}.score-input-row{grid-template-columns:1fr;align-items:start}.score-input-signal,.score-input-score{text-align:left;width:max-content}.section-heading{flex-direction:column}.signal-stat-grid,.signals-layout,.signal-definition-grid,.signal-mini-metrics,.signal-list-inline{grid-template-columns:1fr}.signal-panel,.signal-panel-wide,.signal-panel-side,.signal-panel-issue,.signal-panel-tags{grid-column:auto}.repository-identity{flex-direction:column;align-items:flex-start}.metric-placeholder-wide{grid-column:auto}.score-value{font-size:32px}.risk-level{font-size:24px}.button-back{text-align:center;width:100%}.risk-modal{padding:18px}.risk-modal-grid{grid-template-columns:1fr}.chart-grid,.chart-grid-insights{grid-template-columns:1fr;gap:12px}.chart-grid .metric-placeholder{height:auto;min-height:280px;padding:12px;overflow:visible}.chart-grid .metric-placeholder p{margin-bottom:8px}.chart-container{flex:none;height:220px;min-height:220px}.wide-chart-container{height:240px}}@media (width<=520px){.relationship-summary-grid{grid-template-columns:1fr}}.leaderboard-page{max-width:1200px;margin:0 auto;padding:calc(2rem + 60px) 2rem 2rem}.leaderboard-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:2rem;display:flex}.refresh-button{color:#111827;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:.75rem;justify-content:center;align-items:center;padding:.75rem 1rem;font-weight:600;transition:background .2s,border-color .2s,transform .2s;display:inline-flex}.refresh-button:hover:not(:disabled){background:#f8fafc;border-color:#9ca3af}.refresh-button:disabled{opacity:.6;cursor:not-allowed}.leaderboard-header h1{margin:0 0 .5rem;font-size:2.5rem}.leaderboard-header p{color:#666;margin:0}.leaderboard-section{margin-bottom:2rem}.leaderboard-section h2{margin-bottom:1rem;font-size:1.75rem}.leaderboard-grid{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1rem;display:grid}.leaderboard-repo-card{background:#fff;border:1px solid #e5e7eb;border-radius:1rem;padding:1.25rem;text-decoration:none;box-shadow:0 8px 24px #0f172a0a}.leaderboard-repo-link{color:inherit}.leaderboard-repo-card:hover{cursor:pointer;transform:translateY(-1px);box-shadow:0 12px 28px #0f172a14}.leaderboard-repo-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.75rem;display:flex}.repo-name{color:#111827;font-weight:700;text-decoration:none}.repo-score{color:#0f766e;font-weight:700}.repo-description{color:#4b5563;min-height:2.5rem;margin-bottom:1rem;font-size:.95rem}.repo-meta,.repo-scores{color:#374151;text-align:center;flex-wrap:wrap;justify-content:center;gap:.75rem;margin-bottom:.75rem;display:flex}.repo-meta span{background:#f8fafc;border-radius:9999px;align-items:center;gap:.25rem;padding:.35rem .75rem;font-size:.9rem;display:inline-flex}.repo-scores{flex-wrap:nowrap;justify-content:center;gap:.5rem}.repo-score-item{background:#f8fafc;border-radius:.75rem;flex-direction:column;flex:1;align-items:center;padding:.5rem;display:flex}.repo-language{justify-content:center;margin-bottom:.75rem;display:flex}.repo-language span{color:#374151;background:#f8fafc;border-radius:9999px;align-items:center;gap:.25rem;padding:.35rem .75rem;font-size:.9rem;display:inline-flex}.repo-score-value{color:#111827;font-size:1.15rem;font-weight:700}.repo-score-label{color:#6b7280;text-transform:uppercase;letter-spacing:.08em;font-size:.75rem}.repo-topic{color:#334155;background:#f3f4f6;border-radius:9999px;padding:.35rem .75rem;font-size:.8rem}.leaderboard-loading,.leaderboard-error{color:#111827;background:#f8fafc;border-radius:.75rem;margin-bottom:1rem;padding:1rem}.leaderboard-error{color:#991b1b;background:#fee2e2}
