/* Modelo Phase 8 — native Control module. State meaning never depends on color alone. */
.model-shell{display:grid;gap:16px}
.model-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:18px}
.model-toolbar .model-search{display:flex;flex:1;min-width:260px}
.model-toolbar input,.model-toolbar select,.model-toolbar button,.model-filter,.model-select{background:var(--surface2);color:var(--text);border:1px solid var(--line);border-radius:9px;padding:9px 11px;font:inherit}
.model-toolbar input{width:100%;min-width:0}
.model-perspective{display:flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.model-perspective span{padding:7px 10px;font-size:.68rem;font-weight:800;border-right:1px solid var(--line);color:var(--muted)}
.model-perspective span:last-child{border-right:0}.model-perspective .active{color:var(--cyan);background:#0e263f}
.model-snapshot-context{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:.72rem;color:var(--muted)}
.model-snapshot-context code{max-width:460px;overflow:hidden;text-overflow:ellipsis}
.model-tabs{display:flex;gap:6px;overflow:auto;padding:4px 0 12px;border-bottom:1px solid var(--line)}
.model-tab{background:transparent;border:1px solid transparent;color:var(--muted);padding:8px 10px;border-radius:9px;white-space:nowrap;cursor:pointer}
.model-tab.active,.model-tab:hover{color:var(--text);border-color:var(--line);background:var(--surface2)}
.model-subview{display:none}.model-subview.active{display:block}
.model-status{min-height:18px;font-size:.78rem;color:var(--amber)}.model-status.error{color:#ffb7b7}
.model-kpis{display:grid;grid-template-columns:repeat(4,minmax(100px,1fr));gap:10px;margin:14px 0}
.model-kpi{padding:15px;border:1px solid var(--line);border-radius:13px;background:var(--surface2)}
.model-kpi small,.model-kpi strong{display:block}.model-kpi small{color:var(--muted);text-transform:uppercase;font-size:.63rem;letter-spacing:.08em}.model-kpi strong{font-size:1.5rem;margin-top:6px}
.model-overview-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:14px}
.model-card,.model-break,.model-candidate,.model-impact{border:1px solid var(--line);border-radius:14px;background:var(--surface2);padding:16px}
.model-card h3,.model-break h3,.model-impact h3{margin:0 0 10px}
.model-muted{color:var(--muted)}.model-warning{color:var(--amber)}.model-error{color:#ffb7b7}
.model-state{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:999px;padding:3px 7px;font-size:.62rem;font-weight:800;line-height:1.2;white-space:nowrap}
.model-state.yes,.model-state.active{color:#8ff0c3;border-color:#31d08b66;background:#31d08b0c}
.model-state.no,.model-state.break{color:#ffc0c0;border-color:#ee696966;background:#ee69690d}
.model-state.unknown,.model-state.evidence{color:#dfd7b4;border-color:#c9b66a55;background:#c9b66a0c}
.model-state.hold,.model-state.pending{color:#9bd9ff;border-color:#53b9f066;background:#53b9f00c}
.model-state.obsgap,.model-state.stale,.model-state.changed{color:#ffd089;border-color:#ffba4a66;background:#ffba4a0c}
.model-state.neutral{color:var(--muted)}
.model-dl{display:grid;grid-template-columns:minmax(120px,.42fr) 1fr;gap:7px 12px;margin:8px 0}.model-dl dt{color:var(--muted);font-size:.7rem}.model-dl dd{margin:0;font-size:.76rem;overflow-wrap:anywhere}
.model-source-line{display:grid;grid-template-columns:minmax(170px,1fr) auto auto;gap:8px;padding:8px 0;border-top:1px solid var(--line);align-items:center}
.model-source-line small{color:var(--muted)}
.model-state-grid{display:flex;gap:6px;flex-wrap:wrap}
.model-dimension{display:inline-grid;gap:3px;justify-items:start}.model-dimension small{font-size:.56rem;color:var(--muted)}
.model-table{margin-top:12px}.model-table td{vertical-align:top;overflow-wrap:anywhere}.model-table td>small{display:block;color:var(--muted);margin:3px 0}.model-table code{font-size:.68rem}
.model-link{border:0;background:none;color:var(--cyan);padding:0;display:block;text-align:left;cursor:pointer;font:inherit;font-weight:700}
.ownership-pair{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;min-width:260px}.ownership-pair div{display:grid;gap:3px}.ownership-pair small{color:var(--muted);font-size:.58rem}.ownership-pair strong{font-size:.7rem;overflow-wrap:anywhere}.ownership-pair>span{color:var(--muted)}
.model-graph-wrap{position:relative;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#091522,#0c1b2a);overflow:hidden;min-height:470px}
#modelGraph{display:block;width:100%;height:470px;touch-action:none;cursor:grab}#modelGraph:active{cursor:grabbing}
.model-graph-node{cursor:pointer}.model-graph-node circle{fill:#142b45;stroke:#4a759b;stroke-width:2}.model-graph-node:hover circle,.model-graph-node:focus circle{stroke:var(--cyan);stroke-width:3}.model-graph-node text{fill:#e5edf7;font-size:12px;font-weight:800;pointer-events:none}
.model-graph-edge{stroke:#5e7893;stroke-width:2;opacity:.85;cursor:pointer}.model-graph-edge.hold,.model-graph-edge.pending{stroke:#4db1dd;stroke-dasharray:7 5}.model-graph-edge.break,.model-graph-edge.no{stroke:#ef7777;stroke-width:3}.model-graph-edge.obsgap{stroke:#efb14c;stroke-dasharray:3 4}
.model-graph-controls{position:absolute;right:12px;top:12px;display:flex;gap:5px}.model-graph-controls button{width:34px;height:34px;border:1px solid var(--line);background:#10243a;color:var(--text);border-radius:8px;cursor:pointer}
.model-flow-controls,.model-list-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:12px 0}.model-flow-controls select,.model-list-controls input{min-width:280px;background:var(--surface2);color:var(--text);border:1px solid var(--line);border-radius:9px;padding:9px}
.model-flow-head{display:grid;grid-template-columns:1fr minmax(220px,.42fr);gap:16px;align-items:start}.model-flow-head h3{margin:0}.model-flow-head p{color:var(--muted)}
.model-cut{border:1px solid var(--line);border-radius:10px;padding:10px;display:grid;gap:5px}.model-cut small{color:var(--muted)}.model-cut code{overflow-wrap:anywhere}.model-cut span{font-size:.68rem;color:var(--amber)}
.model-flow-toggle{display:flex;gap:5px;margin:10px 0}.model-flow-toggle button{border:1px solid var(--line);background:var(--surface2);color:var(--muted);border-radius:8px;padding:7px 10px;cursor:pointer}.model-flow-toggle button.active{color:var(--cyan);border-color:#37bddc88}
.coverage-lane{display:grid;grid-template-columns:120px 1fr;gap:8px;border-top:1px solid var(--line);padding:10px 0}.coverage-lane>strong{font-size:.68rem;color:var(--muted)}.coverage-lane>div{display:flex;gap:8px;flex-wrap:wrap}.coverage-item{display:grid;gap:3px}.coverage-item code{font-size:.59rem;max-width:210px;overflow:hidden;text-overflow:ellipsis}
.model-step-list{display:grid;gap:9px;margin:14px 0}.model-step{display:grid;grid-template-columns:minmax(180px,1fr) minmax(100px,.4fr) 2fr;gap:10px;align-items:center;border:1px solid var(--line);border-radius:10px;padding:10px}.model-step>div:first-child{display:flex;gap:7px;align-items:center}.model-step>div:first-child span{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#19334f;color:var(--cyan);font-size:.65rem}.model-step>small{grid-column:1/-1;color:var(--muted)}
.model-edge-chips{display:flex;gap:7px;flex-wrap:wrap}.model-chip{border:1px solid var(--line);background:var(--surface2);color:var(--text);border-radius:999px;padding:6px 9px;font-size:.68rem;cursor:pointer}
.model-break{margin:10px 0}.model-break.hold{border-style:dashed;border-color:#53b9f066}.model-break .title-row{margin:0 0 12px}
.model-contexts{display:flex;gap:7px;flex-wrap:wrap;margin:10px 0}.model-context{border:1px solid var(--line);border-radius:9px;padding:8px;display:grid;gap:3px}.model-context strong{font-size:.65rem}.model-context span{font-size:.68rem;color:var(--muted)}.model-context.repair{border-color:#ee696966}.model-context.activation{border-color:#53b9f066}.model-context.investigation{border-color:#ffba4a66}
.model-evidence{padding-left:18px;max-height:170px;overflow:auto}.model-evidence li{margin:5px 0;font-size:.68rem;overflow-wrap:anywhere}.model-evidence a{color:var(--cyan)}
.model-impact-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.model-impact-grid>div{border-top:1px solid var(--line);padding-top:8px}.model-impact-grid small{color:var(--muted)}.model-impact-grid p{font-size:.73rem}
.model-candidate{margin:10px 0}.model-history-row{display:grid;grid-template-columns:minmax(380px,1.7fr) .7fr auto 1fr;gap:8px;align-items:center;border-top:1px solid var(--line);padding:9px 0}.model-history-row code{font-size:.67rem}.model-history-row small{overflow:hidden;text-overflow:ellipsis}
.model-json{max-height:380px;overflow:auto;background:#08121d;border:1px solid var(--line);border-radius:10px;padding:12px;font-size:.68rem;white-space:pre-wrap}
.model-search-results{position:relative}.model-search-result{width:100%;display:grid;grid-template-columns:90px 1fr minmax(180px,.6fr);gap:8px;text-align:left;background:var(--surface2);border:0;border-top:1px solid var(--line);color:var(--text);padding:8px;cursor:pointer}.model-search-result span,.model-search-result code{color:var(--muted);font-size:.65rem}
.model-detail{position:fixed;right:18px;top:18px;bottom:18px;width:min(520px,calc(100vw - 36px));z-index:100;background:#0e1c2b;border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 60px #000a;padding:18px;overflow:auto}.model-detail[hidden]{display:none}.model-detail-head{display:flex;justify-content:space-between;align-items:center;position:sticky;top:-18px;background:#0e1c2b;padding:16px 0 10px;z-index:2}.model-detail-head h3{margin:0}.model-detail-head button{background:var(--surface2);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:7px 10px;cursor:pointer}
.model-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.model-detail-grid>div{display:grid;gap:5px;border:1px solid var(--line);border-radius:9px;padding:9px}.model-detail-grid small{color:var(--muted)}.model-dim-row{margin:12px 0;display:flex;gap:10px;flex-wrap:wrap}
.model-observations{display:grid;gap:9px}.model-observations article{border:1px solid var(--line);border-radius:10px;padding:10px}.model-observations article>div{display:flex;justify-content:space-between}.model-observations code{display:block;font-size:.65rem;overflow-wrap:anywhere;margin-top:5px}
.model-unavailable{grid-column:1/-1;padding:28px;border:1px dashed #ee696966;border-radius:13px}.model-unavailable strong{display:block;font-size:1.1rem}.model-unavailable p{color:var(--muted)}
@media(max-width:1000px){.model-kpis{grid-template-columns:repeat(2,1fr)}.model-overview-grid,.model-flow-head{grid-template-columns:1fr}.model-step{grid-template-columns:1fr}.model-history-row{grid-template-columns:1fr}.model-impact-grid{grid-template-columns:1fr}}
@media(max-width:620px){.model-kpis{grid-template-columns:1fr 1fr}.model-source-line{grid-template-columns:1fr auto}.model-source-line small{grid-column:1/-1}.model-detail-grid{grid-template-columns:1fr}.ownership-pair{min-width:0;grid-template-columns:1fr}.ownership-pair>span{display:none}.coverage-lane{grid-template-columns:1fr}.model-table{font-size:.7rem}}
.model-global-filters{border:1px solid var(--line);border-radius:12px;padding:10px 12px;background:#0c1927}
.model-global-filters summary{cursor:pointer;color:var(--cyan);font-size:.75rem;font-weight:700}
.model-filter-grid{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:8px;margin-top:10px}
.model-filter-grid label{display:grid;gap:5px;color:var(--muted);font-size:.63rem}
.model-filter-grid select{background:var(--surface2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px;font:inherit}
@media(max-width:1100px){.model-filter-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:700px){.model-filter-grid{grid-template-columns:1fr 1fr}}
.model-perspective button{border:0;border-right:1px solid var(--line);background:transparent;color:var(--muted);padding:7px 10px;font-size:.68rem;font-weight:800;cursor:pointer}
.model-perspective button:last-child{border-right:0}.model-perspective button.active{color:var(--cyan);background:#0e263f}
.model-filterbar{display:grid;grid-template-columns:repeat(5,minmax(130px,1fr));gap:8px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#0b1724}
.model-filterbar label{display:grid;gap:4px;color:var(--muted);font-size:.58rem;text-transform:uppercase;letter-spacing:.05em}
.model-filterbar select,.model-filterbar button{min-width:0;background:var(--surface2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:7px;font:inherit;text-transform:none;letter-spacing:0}
.model-filterbar button{cursor:pointer;align-self:end}
@media(max-width:1100px){.model-filterbar{grid-template-columns:repeat(3,1fr)}}@media(max-width:700px){.model-filterbar{grid-template-columns:1fr 1fr}}

.model-ai-grid{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr));gap:8px;margin:12px 0}
.model-ai-grid label{display:grid;gap:4px;color:var(--muted);font-size:.62rem;text-transform:uppercase;letter-spacing:.04em}
.model-ai-grid select,.model-ai-grid input{min-width:0;background:var(--surface2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px;font:inherit;text-transform:none;letter-spacing:0}
.model-ai-actions{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.model-ai-actions button,#modelAICopy{background:var(--surface2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 10px;cursor:pointer}
.model-ai-actions button:hover,#modelAICopy:hover{border-color:var(--cyan)}
.model-ai-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}
.model-ai-badge{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:2px 7px;font-size:.62rem;margin-left:6px}
.model-ai-advisories{display:grid;gap:8px;margin-top:12px}
.model-advisory{border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--surface2)}
.model-advisory>div{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.model-advisory p{margin:.45rem 0}.model-advisory small{color:var(--muted)}
@media(max-width:1000px){.model-ai-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.model-ai-cards{grid-template-columns:1fr}}
@media(max-width:600px){.model-ai-grid{grid-template-columns:1fr}}
