#modal:has(.policy-editor){width:min(920px,calc(100vw - 32px));max-width:920px}.policy-editor{min-width:0}.policy-editor h2{margin-bottom:20px}.policy-tabs,.policy-heading,.policy-actions,.policy-path-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.policy-tabs{border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:20px}.policy-heading{justify-content:space-between;margin:24px 0 12px}.policy-heading h3,.policy-decisions h3{font-size:12px;margin:0}.policy-actions .btn{font-size:10px;padding:6px 9px}.policy-table-wrap{overflow:auto}.policy-table{width:100%;border-collapse:collapse;text-align:left;font-size:11px}.policy-table th{font-size:10px;font-weight:500;color:var(--tone-7);padding:12px 8px;border-bottom:1px solid var(--line)}.policy-table td{vertical-align:top;padding:14px 8px;border-bottom:1px solid var(--line)}.policy-table small{display:block;font-size:10px;color:var(--tone-7);margin-top:5px;max-width:220px;overflow-wrap:anywhere}.policy-rule-list{display:grid;gap:10px}.policy-rule{border:1px solid var(--line);border-radius:9px;padding:14px}.policy-rule-title{display:flex;align-items:center;gap:10px;font-size:12px}.policy-rule-title strong{flex:1}.policy-rule-title span:last-child{font-size:10px}.policy-rule-index{font-family:monospace;color:var(--tone-7)}.policy-rule p{font-size:11px;line-height:1.6;overflow-wrap:anywhere;color:var(--tone-7)}.policy-rule small{display:block;font-family:monospace;color:var(--tone-7);font-size:9px;margin-bottom:12px}.policy-disabled{opacity:.5}.policy-action-deny{color:var(--error)}.policy-configure{width:100%}.policy-decisions{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.policy-path-tabs{margin:12px 0}.policy-decision{display:grid;gap:5px;border:1px solid var(--line);border-left:3px solid var(--tone-7);border-radius:6px;margin:10px 0;padding:11px;font-size:11px}.policy-decision>small{font-size:9px;color:var(--tone-7)}.policy-decision p{margin:3px 0;line-height:1.6;overflow-wrap:anywhere}.policy-decision>span{font-size:10px;color:var(--tone-7)}.policy-decision-deny{border-left-color:#b84a4a}.policy-decision-allow{border-left-color:#5a8b6b}.policy-decision .text-link{text-align:left}.policy-editor .network-hint{line-height:1.7}.policy-editor .field-row{gap:14px}.policy-editor form>.btn{margin-top:10px}@media(max-width:600px){.policy-editor .field-row{grid-template-columns:1fr;flex-direction:column}.policy-table{min-width:610px}.policy-rule-title{flex-wrap:wrap}}
.policy-stateful{margin:5px 0 15px;align-items:flex-start;font-size:12px;line-height:1.7}.policy-flow-state{display:inline-block;font-size:10px!important;color:var(--info)!important;font-weight:500}.policy-sessions{border:1px solid var(--line);border-radius:6px;padding:12px;margin:12px 0;font-size:10px}.policy-sessions summary{cursor:pointer;font-size:11px}.policy-sessions p{font-size:10px;color:var(--tone-7);line-height:1.7;margin:10px 0}.policy-sessions article{display:grid;gap:6px;margin:12px 0;padding:10px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}.policy-sessions article small{line-height:1.6;color:var(--tone-7)}
.nat-tuple{display:grid;gap:5px;margin:8px 0}.nat-tuple small{font-size:9px;color:var(--tone-7)}.nat-tuple code{font-size:10px;line-height:1.7;overflow-wrap:anywhere;white-space:normal}.nat-effective{border:1px solid var(--line);padding:10px;border-radius:6px;font-size:10px;line-height:1.7}.policy-decision-translate{border-left-color:var(--info)}.edge-group.virtual path{stroke-dasharray:3 4}
.edge-virtual{stroke-dasharray:3 4}
.hardware-section{border-top:1px solid var(--line);margin-top:20px;padding-top:18px}.hardware-section>summary{cursor:pointer;font-size:11px;font-weight:600;letter-spacing:.02em;margin-bottom:16px}.hardware-extra{margin:10px 0}.hardware-extra>summary{cursor:pointer;font-size:10px;color:var(--tone-7);margin-bottom:14px}.hardware-section .field-row{gap:10px}.hardware-section .field-row>.field{min-width:0;flex:1}.hardware-section input,.hardware-section select{width:100%;min-width:0}.hardware-section .network-hint{font-size:10px;line-height:1.7}.hardware-inventory{max-width:240px;min-width:145px;white-space:normal;overflow-wrap:anywhere;font-size:10px;line-height:1.7}
.placement-extra-hosts{margin:14px 0;font-size:10px;color:var(--tone-7)}.placement-extra-hosts>summary{cursor:pointer;margin-bottom:12px}
.placement-launch{margin-bottom:12px}.placement-capacity-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.placement-host-card{border:1px solid var(--line);border-radius:7px;padding:14px;min-width:0}.placement-host-card>strong{font-size:12px}.placement-host-card>small{display:block;font-size:10px;color:var(--tone-7);margin-top:7px}.placement-host-card .policy-table{margin-top:8px;font-size:10px}.placement-host-card .policy-table th,.placement-host-card .policy-table td{font-size:10px;padding:10px 4px}.placement-host-card .capacity-deficit td:last-child{color:var(--error)}.placement-assignments{display:grid;gap:12px;margin:16px 0}.placement-assignment{display:grid;grid-template-columns:1.2fr 1fr auto;gap:12px;align-items:start;border:1px solid var(--line);border-radius:7px;padding:14px}.placement-assignment>div>strong{font-size:12px}.placement-assignment small{display:block;font-size:10px;color:var(--tone-7);line-height:1.7;margin-top:6px}.placement-assignment .field{margin:0;min-width:0}.placement-assignment select{width:100%}.placement-pin{display:flex;align-items:center;gap:6px;font-size:10px;padding-top:23px}.placement-reason{font-size:10px;line-height:1.7;grid-column:1/-1;margin:0!important}.placement-rejected{grid-column:1/-1;font-size:10px}.placement-rejected summary{cursor:pointer;color:var(--tone-7)}.placement-rejected p{font-size:10px;line-height:1.6}.placement-host-picker{max-height:240px}.placement-editor>.network-hint{line-height:1.7}#placement-error{font-size:11px;color:var(--error)}@media(max-width:650px){.placement-capacity-grid{grid-template-columns:1fr}.placement-assignment{grid-template-columns:1fr}.placement-pin{padding-top:0}}
.batch-overview{display:grid;gap:7px;padding:14px;border:1px solid var(--line);border-radius:7px;background:var(--tone-1);font-size:11px;margin:20px 0}.batch-overview span{font-size:10px;color:var(--tone-7)}
.batch-migration-toggle{font-size:10px;white-space:nowrap}.canvas-top{flex-wrap:wrap;gap:8px}.vm-batch-check{position:absolute;left:-10px;top:34px;width:22px;height:22px;border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:5px;cursor:pointer;font-size:14px;z-index:8;display:grid;place-items:center}.vm-batch-check[aria-pressed="true"]{background:var(--ink);color:var(--paper);border-color:var(--ink)}.node:has(.vm-batch-check[aria-pressed="true"]){outline:2px solid var(--ink);outline-offset:3px}.batch-vm-picker{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:210px;overflow:auto;margin:12px 0 24px}.batch-vm-picker label{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);border-radius:6px;cursor:pointer}.batch-vm-picker label:has(input:checked){border-color:var(--ink);background:var(--tone-1)}.batch-vm-picker strong{font-size:11px}.batch-vm-picker small{display:block;font-size:10px;color:var(--tone-7);line-height:1.7;margin-top:5px}.batch-select-heading{display:flex;align-items:center;gap:12px;font-size:11px;margin-top:22px}.batch-select-heading strong{flex:1}.batch-select-heading .text-link{font-size:10px}.batch-capacity{margin-bottom:14px;min-width:660px}.batch-capacity caption{text-align:left;font-size:10px;color:var(--tone-7);padding:6px 0 12px}.batch-capacity tbody th{font-size:11px;color:var(--ink)}.batch-capacity .capacity-deficit td:last-child{color:var(--error);font-weight:600}.batch-overcommit{display:flex;align-items:center;gap:9px;font-size:11px}.batch-vm-card{border:1px solid var(--line);padding:14px;border-radius:7px;margin:12px 0}.batch-vm-card>summary{font-size:11px;font-weight:600;cursor:pointer}.batch-vm-card .migration-nic:last-child{border-bottom:0}.batch-vm-summary{display:grid;gap:8px;margin:14px 0}.batch-vm-summary>div{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--line);padding:10px;border-radius:6px;font-size:10px}.batch-vm-summary span{color:var(--tone-7)}#batch-error{font-size:11px;color:var(--error)}@media(max-width:620px){.batch-vm-picker{grid-template-columns:1fr}.batch-vm-summary>div{flex-direction:column}.batch-migration-toggle{padding:6px}.batch-vm-card{padding:10px}}
.migration-drop-target{outline:2px solid var(--ink)!important;outline-offset:4px;background:var(--tone-2)!important}.migration-drop-target::after{content:'Soltar para revisar migración';display:block;font-size:10px;padding:5px;color:var(--ink)}
#modal:has(.migration-editor){width:min(1020px,calc(100vw - 32px));max-width:1020px}.migration-editor h2{margin:12px 0}.migration-editor h3{font-size:13px;margin:22px 0 10px}.migration-editor>.field{max-width:420px}.migration-nic{display:grid;grid-template-columns:1fr 1.4fr 1.4fr;align-items:start;gap:16px;padding:16px 0;border-bottom:1px solid var(--line)}.migration-nic strong{font-size:12px}.migration-nic small{display:block;line-height:1.7;color:var(--tone-7);font-size:10px;margin-top:6px}.migration-nic .field{margin:0;min-width:0}.migration-nic select{width:100%}.migration-alert{border-left:2px solid #b18a49;background:var(--tone-2);padding:10px;font-size:11px;line-height:1.6}.migration-alert.error,.migration-result.regression{border-color:var(--error)}.migration-results{max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:8px}.migration-result{border-bottom:1px solid var(--line);border-left:3px solid transparent}.migration-result summary{cursor:pointer;display:flex;justify-content:space-between;gap:16px;font-size:10px;line-height:1.7;padding:12px}.migration-result summary strong{font-size:10px;white-space:nowrap}.migration-comparison{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:0 14px 14px}.migration-comparison section{min-width:0}.migration-comparison h4{font-size:10px}.migration-comparison p,.migration-comparison pre{font-size:10px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7;color:var(--tone-7)}.migration-custom{border:1px solid var(--line);border-radius:8px;padding:14px;margin:18px 0;font-size:11px}.migration-custom summary{cursor:pointer}.migration-custom form{padding-top:14px}#migration-error{color:var(--error);font-size:11px}@media(max-width:720px){.migration-nic,.migration-comparison{grid-template-columns:1fr}.migration-result summary{flex-direction:column;gap:3px}}
