:root{--color-text-primary:#111;--color-text-secondary:#555;--color-border-default:#e0e0e0;--color-border-strong:#000;--font-size-body:14px;--font-size-meta:13px;--font-size-small:12px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--bg-primary:#fff;--bg-secondary:#fff;--bg-tertiary:#f9fafb;--text-primary:var(--color-text-primary);--text-secondary:#444;--text-muted:var(--color-text-secondary);--border-color:var(--color-border-default);--accent-primary:#111;--accent-secondary:#444;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--spacing-1:var(--spacing-sm);--spacing-2:var(--spacing-md);--spacing-3:var(--spacing-lg);--spacing-4:32px}:focus-visible{outline-offset:2px;outline:2px solid #0003}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-primary);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;line-height:1.5}h1,h2,h3,h4{color:var(--text-primary);letter-spacing:-.01em;font-weight:700}h2{font-weight:600}p,span,div{color:var(--text-secondary)}strong{color:var(--text-primary)}.app-container{max-width:1200px;padding:var(--spacing-4) var(--spacing-2);margin:0 auto}.header{text-align:left;margin-bottom:var(--spacing-4);border-bottom:1px solid var(--border-color);padding-bottom:var(--spacing-3)}.header h1{margin-bottom:.25rem;font-size:1.5rem}.header .description{color:var(--text-muted);max-width:800px;margin-bottom:var(--spacing-2);font-size:.95rem}.cp-branding{margin-bottom:.5rem;font-size:.85rem;font-weight:500}.cp-link{color:var(--text-primary);font-weight:500;text-decoration:underline}.cp-link:hover{text-decoration:underline}.disclaimer-banner{background:var(--bg-tertiary);border:1px solid var(--border-color);padding:var(--spacing-2);border-radius:var(--radius-md);margin-bottom:var(--spacing-3);color:var(--text-secondary);align-items:flex-start;gap:.75rem;font-size:.85rem;display:flex}.warning-icon{flex-shrink:0}.summary-grid{gap:var(--spacing-2);margin-bottom:var(--spacing-4);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.summary-card{background:var(--bg-primary);border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--spacing-2)}.summary-card-inner{flex-direction:column;gap:.5rem;display:flex}.summary-icon{margin-bottom:.25rem;font-size:1.25rem}.summary-content{flex-direction:column;display:flex}.summary-count{color:var(--text-primary);font-size:1.75rem;font-weight:700;line-height:1}.summary-label{color:var(--text-muted);font-size:var(--font-size-meta);text-transform:uppercase;letter-spacing:.05em;margin-top:.25rem;font-weight:600}.controls{margin-bottom:var(--spacing-3);flex-wrap:wrap;gap:.75rem;display:flex}.btn{border-radius:var(--radius-sm);cursor:pointer;border:1px solid #0000;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:600;transition:all .1s;display:inline-flex}.btn-primary{color:#fff;background:#111}.btn-primary:hover{background:#333}.btn-accent{color:#fff;background:#111}.btn-outline{border-color:var(--border-color);color:var(--text-primary);background:#fff}.btn-outline:hover{background:var(--bg-tertiary);border-color:var(--border-color)}.btn-danger{border-color:var(--border-color);color:#dc2626;background:#fff}.btn-danger:hover{background:#fef2f2;border-color:#fecaca}.btn-sm{font-size:var(--font-size-meta);padding:.25rem .75rem}.btn:disabled{opacity:.5;cursor:not-allowed}.metrics-row{gap:var(--spacing-2);margin-bottom:var(--spacing-2);flex-wrap:wrap;display:flex}.metric-tag{font-size:var(--font-size-meta);color:var(--text-muted);align-items:center;gap:.35rem;display:flex}.metric-tag .label{font-weight:400}.metric-tag .value{color:var(--text-primary);font-weight:700}.graph-viewport{border:1px solid var(--border-color);border-radius:var(--radius-md);width:100%;height:600px;margin-top:var(--spacing-2);background:#fff;position:relative;overflow:auto}.graph-svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.graph-edge{stroke:var(--border-color);stroke-width:1px;fill:none;opacity:.5}.graph-edge.active{stroke:var(--text-primary);stroke-width:2px;opacity:1}.graph-edge.dimmed{opacity:.1}.graph-node{border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;z-index:2;background:#fff;width:180px;padding:.75rem;transition:border-color .1s;position:absolute}.graph-node:hover{border-color:var(--color-border-strong)}.graph-node.selected{outline:2px solid var(--color-border-strong);border-color:var(--color-border-strong);z-index:10}.graph-node.dimmed{opacity:.3}.node-badge{display:none}.node-label{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;margin-bottom:.15rem;font-size:.85rem;font-weight:600;overflow:hidden}.node-subtitle{font-size:var(--font-size-meta);color:var(--text-muted);text-transform:uppercase;letter-spacing:.02em}.legend{gap:var(--spacing-2);margin-bottom:var(--spacing-2);font-size:var(--font-size-meta);flex-wrap:wrap;display:flex}.legend-item{color:var(--text-muted);align-items:center;gap:.35rem;display:flex}.legend-color{background:var(--text-primary);border:1px solid var(--border-color);border-radius:2px;width:8px;height:8px}.coverage-matrix-container{margin-top:var(--spacing-4)}.matrix-wrapper{border:1px solid var(--border-color);border-radius:var(--radius-md);overflow-x:auto}.coverage-table{border-collapse:collapse;background:#fff;width:100%;font-size:.85rem}.coverage-table th,.coverage-table td{border:1px solid var(--border-color);text-align:center;padding:.75rem}.coverage-table th{background:var(--bg-tertiary);color:var(--text-primary);font-weight:600}.sticky-col{z-index:5;width:250px;min-width:250px;position:sticky;left:0;background:var(--bg-tertiary)!important;text-align:left!important}.outcome-code{color:var(--text-primary);font-weight:700}.outcome-desc{font-size:var(--font-size-meta);color:var(--text-muted);line-height:1.2}.module-code{color:var(--text-primary);font-weight:600}.indicator{font-size:1rem}.indicator.aligned{color:var(--text-muted)}.indicator.assessed{color:var(--text-primary)}.assessment-view-container,.structural-signals-panel{margin-top:var(--spacing-4)}.assessment-card{border:1px solid var(--border-color);border-radius:var(--radius-md);padding:var(--spacing-2);margin-bottom:var(--spacing-2);background:#fff}.assessment-title{color:var(--text-primary);font-size:.95rem;font-weight:600}.assessment-type{font-size:var(--font-size-meta);color:var(--text-muted);text-transform:uppercase;font-weight:600}.assessment-weight-meta{font-size:var(--font-size-meta);color:var(--text-muted)}.outcomes-mapped{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.outcome-tag{font-size:var(--font-size-meta);color:var(--text-secondary);background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-sm);padding:.15rem .5rem}.signal-item{padding:var(--spacing-2);border-bottom:1px solid var(--border-color);font-size:.9rem}.signal-item:last-child{border-bottom:none}.signal-badge{font-size:var(--font-size-meta);text-transform:uppercase;color:var(--text-muted);font-weight:700}.signal-text{margin-top:.25rem}.structure-editor-overlay{z-index:1000;background:#0006;justify-content:flex-end;display:flex;position:fixed;inset:0}.structure-editor-panel{background:#fff;flex-direction:column;width:400px;height:100%;display:flex;box-shadow:-4px 0 16px #0000000d}.editor-header{padding:var(--spacing-2);border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;display:flex}.editor-content{padding:var(--spacing-2);flex:1;overflow-y:auto}.form-group{margin-bottom:var(--spacing-2)}.form-group label{font-size:var(--font-size-meta);margin-bottom:.25rem;font-weight:600;display:block}.form-control{border:1px solid var(--border-color);border-radius:var(--radius-sm);width:100%;padding:.5rem;font-size:.9rem}.footer{margin-top:var(--spacing-4);padding-top:var(--spacing-3);border-top:1px solid var(--border-color);text-align:left}.footer-text{color:var(--text-muted);font-size:.85rem}.mb-4{margin-bottom:1rem}.mt-4{margin-top:1rem}.text-center{text-align:center}.text-secondary{color:var(--text-secondary)}.italic{font-style:italic}
