@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap');
:root{--bg:#07111f;--panel:#0b1727;--panel2:#0e1d2f;--line:#203146;--muted:#7990a8;--text:#eef6ff;--cyan:#1ee6c7;--cyan2:#19bfa9;--blue:#4c84ff;--amber:#ffbd5a;--red:#ff6b6b;--white:#fff;--shadow:0 18px 50px rgba(0,0,0,.25)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:'DM Sans',Segoe UI,sans-serif}button,input,textarea{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;background:radial-gradient(circle at 55% -20%,rgba(30,230,199,.08),transparent 35%),var(--bg)}
.topbar{height:74px;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 24px;gap:34px;background:rgba(7,17,31,.93)}.brand{display:flex;align-items:center;gap:11px;min-width:210px}.brand strong,.modal-brand strong{font:700 21px 'Space Grotesk';letter-spacing:.5px}.brand strong span,.modal-brand strong span{color:var(--cyan)}.brand small{display:block;color:#6d8197;font-size:8px;letter-spacing:1.4px;margin-top:2px}.brand-mark{width:32px;height:32px;position:relative;border:1px solid #28415b;border-radius:7px;transform:rotate(45deg)}.brand-mark span{position:absolute;width:4px;height:4px;border-radius:50%;background:var(--cyan);box-shadow:0 0 9px var(--cyan)}.brand-mark span:nth-child(1){left:7px;top:7px}.brand-mark span:nth-child(2){right:7px;top:7px}.brand-mark span:nth-child(3){left:14px;bottom:7px}.project-title{flex:1;max-width:470px;border-left:1px solid var(--line);padding-left:28px}.project-title label,.session-stats small{display:block;font-size:9px;color:#6f849b;letter-spacing:1.4px;font-weight:700}.project-title input{width:100%;background:transparent;border:0;color:#dceafa;font:600 14px 'Space Grotesk';padding:3px 0;outline:none}.session-stats{margin-left:auto;display:flex;align-items:center;gap:22px}.session-stats strong{display:block;font:600 15px 'Space Grotesk';margin-top:3px}.timer-block strong{color:var(--cyan);letter-spacing:1px}.divider{width:1px;height:30px;background:var(--line)}.icon-btn{width:38px;height:38px;border:1px solid var(--line);border-radius:7px;background:#0d1d2d;color:var(--cyan);font-size:21px}
.tabs{height:53px;border-bottom:1px solid var(--line);display:flex;padding:0 24px;background:#091522}.tab{height:53px;padding:0 23px;background:transparent;border:0;border-bottom:2px solid transparent;color:#7890a7;font-size:11px;font-weight:700;letter-spacing:.8px}.tab span{font-size:9px;margin-right:7px}.tab b{background:#1a2a3c;color:#8da2b8;border-radius:12px;padding:2px 7px;margin-left:5px}.tab.active{color:var(--text);border-color:var(--cyan)}.tab.active span{color:var(--cyan)}.tab-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.ghost-btn,.primary-btn,.outline-btn{border-radius:6px;padding:10px 17px;font-size:10px;font-weight:700;letter-spacing:.8px}.ghost-btn{border:0;background:transparent;color:#8da3ba}.primary-btn{border:1px solid var(--cyan);background:var(--cyan);color:#04201d;box-shadow:0 7px 25px rgba(30,230,199,.14)}.outline-btn{border:1px solid #31506d;background:transparent;color:#cfe0f1}.primary-btn:hover{background:#53f3db}.ghost-btn:hover,.outline-btn:hover{color:white;border-color:#64829e}
.view{display:none}.view.active{display:flex}#plannerView{height:calc(100vh - 127px);min-height:620px}.catalog-panel{width:285px;min-width:285px;border-right:1px solid var(--line);background:#091522;display:flex;flex-direction:column}.panel-heading,.workspace-toolbar{padding:18px 18px 13px;display:flex;align-items:center;justify-content:space-between}.eyebrow{color:var(--cyan);font-size:8px;font-weight:700;letter-spacing:1.6px}.panel-heading h2,.workspace-toolbar h2{font:600 15px 'Space Grotesk';margin:3px 0 0}.stock-legend{font-size:8px;color:#627a92}.stock-legend i{display:inline-block;width:5px;height:5px;background:var(--cyan);border-radius:50%;margin-right:4px}.search-wrap{margin:0 18px 12px;background:#0d1d2d;border:1px solid #1d3248;border-radius:6px;height:35px;display:flex;align-items:center;padding:0 10px;color:#68819a}.search-wrap input{background:transparent;border:0;outline:0;color:#dce9f7;width:100%;font-size:11px;margin-left:7px}.category-tabs{padding:0 18px;display:flex;gap:5px;overflow-x:auto;scrollbar-width:none}.category-tabs button{white-space:nowrap;background:transparent;border:0;border-bottom:2px solid transparent;color:#627990;padding:7px 4px;font-size:8px;font-weight:700;text-transform:uppercase}.category-tabs button.active{color:var(--cyan);border-color:var(--cyan)}.catalog-list{overflow:auto;padding:10px 12px 24px}.catalog-item{display:grid;grid-template-columns:40px 1fr auto;gap:10px;align-items:center;padding:10px 8px;border:1px solid transparent;border-bottom-color:#15263a;cursor:grab;transition:.18s}.catalog-item:hover{background:#0e2033;border-color:#28425b;border-radius:7px;transform:translateX(2px)}.catalog-icon,.node-icon{display:grid;place-items:center;width:38px;height:38px;border-radius:6px;background:linear-gradient(145deg,#142a40,#0b1827);border:1px solid #29435d;color:var(--cyan);font:600 16px 'Space Grotesk'}.catalog-item h3{font-size:10px;margin:0 0 3px;color:#dceafa}.catalog-item p{font-size:8px;color:#6b8299;margin:0}.item-price{text-align:right}.item-price strong{display:block;font:600 9px 'Space Grotesk';color:#c7d9eb}.item-price small{font-size:7px;color:var(--cyan)}.item-price small.low{color:var(--amber)}.catalog-item.disabled{opacity:.35;cursor:not-allowed}
.workspace-panel{flex:1;min-width:480px;display:flex;flex-direction:column}.workspace-toolbar{height:65px;border-bottom:1px solid var(--line);padding:12px 20px}.toolbar-actions{display:flex;align-items:center;gap:4px}.tool-btn{width:30px;height:29px;background:#0b1929;border:1px solid #20364d;color:#7991a9;border-radius:4px}.tool-btn.active{color:var(--cyan);border-color:#2a746e;background:#102a2d}.toolbar-divider{width:1px;height:22px;background:var(--line);margin:0 6px}.toolbar-actions>span{font-size:9px;color:#7991a9;min-width:34px;text-align:center}.canvas-wrap{position:relative;flex:1;overflow:hidden;background-color:#07111d;background-image:radial-gradient(#1b2b3d 1px,transparent 1px);background-size:18px 18px}.topology-canvas{position:absolute;inset:0;transform-origin:0 0;transition:transform .15s}.site-zone{position:absolute;border:1px dashed #294058;border-radius:10px;background:rgba(8,21,35,.45)}.site-zone.drag-over{border-color:var(--cyan);background:rgba(30,230,199,.06)}.dc-zone{left:5%;right:5%;top:5%;height:52%}.branch-zone{top:68%;height:26%;width:28%}.b1{left:5%}.b2{left:36%}.b3{right:5%}.zone-title{height:38px;border-bottom:1px solid rgba(41,64,88,.65);display:flex;align-items:center;padding:0 12px;gap:9px;color:#7690a8}.zone-title>span{font:600 10px 'Space Grotesk';color:var(--cyan)}.zone-title strong{display:block;font-size:8px;letter-spacing:1px;color:#8fa5b9}.zone-title small{display:block;font-size:6px;letter-spacing:.5px;margin-top:1px}.remote-label{position:absolute;top:61%;left:5%;right:5%;display:flex;align-items:center;gap:10px;justify-content:center;color:#526c85;font-size:7px;letter-spacing:1.4px;font-weight:bold}.remote-label span{height:1px;flex:1;background:#1d3043}.topology-node{position:absolute;width:76px;height:62px;padding:5px;border:1px solid #284159;background:#0b1929;border-radius:7px;box-shadow:0 8px 18px rgba(0,0,0,.22);cursor:move;z-index:3;user-select:none}.topology-node.selected{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(30,230,199,.12),0 8px 18px rgba(0,0,0,.3)}.topology-node.connecting{border-color:var(--amber)}.topology-node .node-icon{width:28px;height:27px;font-size:12px;margin:auto}.topology-node strong{display:block;text-align:center;font-size:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:4px;color:#c9daeb}.node-remove{display:none;position:absolute;right:-6px;top:-7px;width:16px;height:16px;border-radius:50%;border:0;background:var(--red);color:white;font-size:10px;padding:0}.topology-node.selected .node-remove{display:block}.connections{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}.connections line{stroke:#2c7180;stroke-width:2;stroke-dasharray:6 4}.connections line.wan{stroke:var(--cyan);filter:drop-shadow(0 0 3px rgba(30,230,199,.4))}.canvas-tip{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:#0e2031;border:1px solid #273f57;border-radius:20px;padding:7px 14px;color:#7790a8;font-size:8px;z-index:8}
.metrics-panel{width:263px;min-width:263px;border-left:1px solid var(--line);background:#091522;padding:14px;overflow:auto}.score-card{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:5px 3px 16px}.score-ring{--score:0;flex:none;width:75px;height:75px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--cyan) calc(var(--score)*1%),#182a3c 0);position:relative}.score-ring:before{content:"";position:absolute;inset:6px;border-radius:50%;background:#091522}.score-ring div{position:relative;text-align:center}.score-ring strong{font:700 24px 'Space Grotesk'}.score-ring small{font-size:8px;color:#657d94}.score-card h3{font:600 12px 'Space Grotesk';margin:4px 0}.score-card p{margin:0;font-size:8px;color:#6e859b}.budget-card,.checklist-card{padding:15px 2px;border-bottom:1px solid var(--line)}.metric-title{display:flex;justify-content:space-between;font-size:8px;color:#8298ae;font-weight:700;letter-spacing:.6px}.metric-title b{color:var(--cyan)}.progress{height:5px;margin:9px 0 11px;background:#182b3e;border-radius:4px;overflow:hidden}.progress i{display:block;height:100%;width:0;background:var(--cyan);transition:.25s}.progress i.over{background:var(--red)}.budget-numbers{display:flex;justify-content:space-between}.budget-numbers div:last-child{text-align:right}.budget-numbers small{font-size:6px;color:#607890;display:block}.budget-numbers strong{font:600 11px 'Space Grotesk'}.check-item{display:flex;align-items:center;gap:8px;font-size:8px;color:#698198;padding:6px 0}.check-item i{width:14px;height:14px;border:1px solid #2c4258;border-radius:50%;display:grid;place-items:center;font-style:normal;font-size:8px}.check-item.done{color:#bfd2e3}.check-item.done i{background:var(--cyan);border-color:var(--cyan);color:#06201d}.hint-card{margin-top:14px;border:1px solid #294059;background:linear-gradient(145deg,#0e2031,#0a1726);border-radius:8px;padding:12px}.hint-head{display:flex;align-items:center;gap:10px}.bulb{width:28px;height:28px;display:grid;place-items:center;border-radius:6px;background:rgba(30,230,199,.1);color:var(--cyan)}.hint-head strong{display:block;font-size:9px}.hint-head small{font-size:7px;color:#6c8399}.hint-head b{color:var(--cyan)}.hint-card button{width:100%;margin-top:10px;border:1px solid #2a6c68;background:#102a2d;color:var(--cyan);padding:8px;border-radius:4px;font-size:8px;font-weight:700;letter-spacing:.8px}.hint-card button:disabled{opacity:.35}.autosave{display:flex;align-items:center;gap:9px;padding:13px 3px}.autosave>span{width:7px;height:7px;background:var(--cyan);border-radius:50%;box-shadow:0 0 8px var(--cyan)}.autosave strong{display:block;font-size:7px;color:#8096aa}.autosave small{font-size:6px;color:#506a83}
.content-view{padding:38px;min-height:calc(100vh - 127px);display:none;flex-direction:column}.content-view.active{display:flex}.section-header{display:flex;justify-content:space-between;align-items:end;margin-bottom:25px}.section-header h1,.brief-card h1{font:600 30px 'Space Grotesk';margin:5px 0}.section-header p{color:#7890a7;font-size:11px;margin:0;max-width:650px}.summary-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:18px}.summary-card{background:var(--panel);border:1px solid var(--line);padding:15px;border-radius:8px}.summary-card small{font-size:8px;color:#70879e;letter-spacing:1px}.summary-card strong{display:block;font:600 19px 'Space Grotesk';margin-top:6px}.summary-card.accent strong{color:var(--cyan)}.table-card{background:var(--panel);border:1px solid var(--line);border-radius:9px;overflow:auto}.table-card table{border-collapse:collapse;width:100%;font-size:10px}.table-card th{text-align:left;color:#71889f;font-size:8px;letter-spacing:.8px;padding:13px 16px;border-bottom:1px solid var(--line)}.table-card td{padding:12px 16px;border-bottom:1px solid #15263a;color:#c7d6e5}.table-card td small{display:block;color:#607992}.qty-control{display:flex;align-items:center;gap:8px}.qty-control button,.remove-bom{border:1px solid #294159;background:#0d1c2b;color:#91a5b8;border-radius:3px}.qty-control button{width:20px;height:20px}.remove-bom{padding:4px 7px}.empty-state{text-align:center;padding:70px;color:#5c748b;font-size:11px}.big-score{text-align:right}.big-score strong{display:block;font:700 45px 'Space Grotesk';color:var(--cyan)}.big-score span{font-size:9px;color:#71889e}.evaluation-grid{display:grid;grid-template-columns:1.3fr .7fr;gap:18px}.rubric-card,.recommendation-card{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:20px}.rubric-row{display:grid;grid-template-columns:1fr 2fr 55px;align-items:center;gap:16px;padding:16px 0;border-bottom:1px solid #192b3e}.rubric-row:last-child{border:0}.rubric-row strong{font-size:11px}.rubric-row small{display:block;color:#688198;font-size:8px;margin-top:3px}.rubric-bar{height:6px;background:#182b3e;border-radius:4px;overflow:hidden}.rubric-bar i{display:block;height:100%;background:var(--cyan)}.rubric-points{text-align:right;font:600 12px 'Space Grotesk'}.recommendation-card h2{font:600 19px 'Space Grotesk';margin:10px 0}.recommendation-card p{font-size:10px;line-height:1.7;color:#8499ad}.penalty-box{margin-top:20px}.penalty{padding:10px;border-left:2px solid var(--amber);background:rgba(255,189,90,.05);font-size:9px;color:#b8a17c;margin-bottom:7px}
.brief-layout{display:grid;grid-template-columns:1fr 1.2fr;gap:22px;max-width:1100px;margin:auto}.brief-card,.requirements-card{border:1px solid var(--line);border-radius:10px;padding:34px;background:var(--panel)}.brief-card{background:radial-gradient(circle at 90% 10%,rgba(30,230,199,.13),transparent 38%),var(--panel)}.brief-card>p{color:#879caf;font-size:12px;line-height:1.8}.brief-facts{display:grid;grid-template-columns:1fr 1fr;margin-top:42px;border-top:1px solid var(--line)}.brief-facts div{padding:18px 0;border-bottom:1px solid var(--line)}.brief-facts div:nth-child(odd){border-right:1px solid var(--line)}.brief-facts div:nth-child(even){padding-left:18px}.brief-facts strong{display:block;font:600 22px 'Space Grotesk';color:var(--cyan)}.brief-facts span{font-size:8px;color:#70879d}.requirements-card h2{font:600 19px 'Space Grotesk';margin:0 0 15px}.requirements-card ol{list-style:none;padding:0;margin:0}.requirements-card li{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}.requirements-card li>span{color:var(--cyan);font:600 10px 'Space Grotesk'}.requirements-card li strong{font-size:10px}.requirements-card li p{font-size:8px;color:#70879c;margin:4px 0}.requirements-card label{display:block;margin-top:20px;font-size:8px;color:#8298ad;letter-spacing:1px;font-weight:700}.requirements-card textarea{width:100%;height:100px;margin-top:8px;resize:vertical;background:#081522;border:1px solid #23394f;color:#d5e4f2;padding:11px;border-radius:6px;font-size:10px;outline:none}.requirements-card textarea:focus{border-color:#2e8178}
.modal-overlay{position:fixed;inset:0;background:rgba(3,9,16,.84);backdrop-filter:blur(9px);display:none;align-items:center;justify-content:center;z-index:50;padding:20px}.modal-overlay.active{display:flex}.start-modal{width:620px;background:radial-gradient(circle at 95% 0,rgba(30,230,199,.14),transparent 38%),#0b1828;border:1px solid #294058;border-radius:14px;padding:42px;box-shadow:var(--shadow)}.modal-brand{display:flex;align-items:center;gap:12px;margin-bottom:36px}.start-modal h1{font:600 35px/1.15 'Space Grotesk';margin:10px 0 14px}.start-modal>p{font-size:11px;color:#8298ac;line-height:1.7;max-width:520px}.student-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:25px 0}.student-fields label{font-size:8px;color:#8298ad;letter-spacing:.7px;font-weight:bold}.student-fields input{display:block;margin-top:7px;width:100%;padding:11px;background:#081522;border:1px solid #284158;border-radius:5px;color:white;outline:none}.large{width:100%;padding:14px;display:flex;justify-content:space-between}.resume-btn{display:block;margin:15px auto 0;border:0;background:transparent;color:#8ba2b6;font-size:9px;text-decoration:underline}.dialog{position:relative;width:440px;background:#0c1a2a;border:1px solid #2b435a;border-radius:11px;padding:31px;box-shadow:var(--shadow)}.close-btn{position:absolute;right:14px;top:12px;border:0;background:transparent;color:#7890a6;font-size:20px}.hint-number{font:700 52px 'Space Grotesk';color:rgba(30,230,199,.14);position:absolute;right:30px;top:24px}.dialog h2{font:600 21px 'Space Grotesk';margin:10px 0}.dialog p{color:#8298ac;font-size:11px;line-height:1.7}.dialog>.primary-btn{margin-top:12px}.final-score-line{display:flex;justify-content:space-between;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:10px}.final-score-line strong{color:var(--cyan);font:600 16px 'Space Grotesk'}.export-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0 10px}.finish-dialog>small{color:#5f788f;font-size:7px}.toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,20px);background:#dffcf7;color:#08221f;padding:10px 18px;border-radius:6px;font-size:9px;font-weight:700;opacity:0;pointer-events:none;transition:.25s;z-index:99}.toast.show{opacity:1;transform:translate(-50%,0)}
@media(max-width:1100px){.metrics-panel{width:230px;min-width:230px}.catalog-panel{width:250px;min-width:250px}.project-title{display:none}.topbar{gap:15px}.topology-node{width:65px}.summary-cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:800px){.topbar{padding:0 12px}.brand{min-width:auto}.brand small{display:none}.session-stats .divider,.session-stats>div:not(.timer-block){display:none}.tabs{overflow-x:auto;padding:0 8px}.tab{padding:0 11px}.tab-actions{position:fixed;bottom:0;left:0;right:0;background:#081522;padding:8px;z-index:20;justify-content:flex-end;border-top:1px solid var(--line)}#plannerView{height:auto;min-height:calc(100vh - 127px);flex-direction:column}.catalog-panel,.metrics-panel{width:100%;min-width:0;border:0}.catalog-panel{height:280px}.workspace-panel{height:600px;min-width:0}.metrics-panel{padding-bottom:70px}.score-card,.budget-card,.checklist-card,.hint-card{max-width:560px;margin-left:auto;margin-right:auto}.content-view{padding:22px 14px 80px}.section-header{align-items:flex-start;gap:15px}.evaluation-grid,.brief-layout{grid-template-columns:1fr}.summary-cards{grid-template-columns:1fr 1fr}.start-modal{padding:26px}.student-fields{grid-template-columns:1fr}.start-modal h1{font-size:27px}}
@media print{body{background:#fff;color:#14202b}.topbar,.tabs,.catalog-panel,.metrics-panel,.workspace-toolbar,.canvas-tip,.modal-overlay,.toast{display:none!important}.app-shell{background:white}.view{display:none!important}#bomView{display:flex!important;padding:10px}.section-header p,.table-card td,.summary-card{color:#253747}.summary-card,.table-card{background:white;border-color:#ccd5dd}.table-card th,.table-card td{border-color:#dce2e7}.table-card th{color:#50606e}.section-header h1{color:#112331}.outline-btn,.remove-bom,.qty-control button{display:none}.report-meta{display:block!important}}
.report-meta{display:none}
.catalog-item{position:relative}.catalog-item.picked{background:rgba(30,230,199,.07);border-color:var(--cyan);border-radius:7px}.catalog-item.picked:after{content:"ELIGE SEDE";position:absolute;right:8px;bottom:2px;color:var(--cyan);font-size:6px;font-weight:700;letter-spacing:.7px}.site-zone.pick-target{border-color:#3d8d85;background:rgba(30,230,199,.035);cursor:copy}

/* Legibilidad ampliada */
body{font-size:16px}.topbar{height:82px;padding:0 22px;gap:22px}.brand small{font-size:10px}.project-title label,.session-stats small{font-size:10px}.project-title input{font-size:15px}.session-stats strong{font-size:16px}.tabs{height:58px}.tab{height:58px;font-size:12px}.tab span{font-size:10px}.eyebrow{font-size:10px}.panel-heading h2,.workspace-toolbar h2{font-size:17px}.stock-legend{font-size:10px}.search-wrap{height:40px}.search-wrap input{font-size:13px}.category-tabs button{font-size:10px;padding:9px 5px}.catalog-panel{width:315px;min-width:315px}.catalog-item{grid-template-columns:44px 1fr auto;padding:12px 8px}.catalog-item h3{font-size:12px}.catalog-item p{font-size:10px}.item-price strong{font-size:11px}.item-price small{font-size:9px}.metrics-panel{width:290px;min-width:290px}.score-card h3{font-size:14px}.score-card p,.hint-head strong{font-size:10px}.metric-title,.check-item{font-size:10px}.budget-numbers small,.hint-head small,.autosave strong{font-size:9px}.budget-numbers strong{font-size:13px}.autosave small{font-size:8px}.hint-card button{font-size:10px}.zone-title strong{font-size:10px}.zone-title small{font-size:8px}.zone-title>span{font-size:11px}.remote-label{font-size:9px}.topology-node strong{font-size:9px}.canvas-tip{font-size:10px}.table-card table{font-size:12px}.table-card th{font-size:10px}.section-header p{font-size:13px}.rubric-row strong{font-size:13px}.rubric-row small{font-size:10px}.recommendation-card p,.dialog p{font-size:12px}.requirements-card li strong{font-size:12px}.requirements-card li p{font-size:10px}.requirements-card label{font-size:10px}.requirements-card textarea{font-size:12px}#plannerView{height:calc(100vh - 140px)}

/* Indicadores superiores */
.top-compliance{display:flex;gap:7px;align-items:center;margin-left:auto}.compliance-chip{min-width:94px;padding:8px 10px;border:1px solid #254057;background:#0c1c2c;border-radius:7px}.compliance-chip.grade{border-color:#2a6e68;background:rgba(30,230,199,.07)}.compliance-chip small{display:block;color:#7790a7;font-size:8px;font-weight:700;letter-spacing:.9px}.compliance-chip strong{display:block;margin-top:2px;font:600 15px 'Space Grotesk';color:#ddecf9}.compliance-chip.grade strong{color:var(--cyan)}.top-compliance+.session-stats{margin-left:0}.standards-box{margin-top:20px;border-top:1px solid var(--line);padding-top:16px}.standards-box>div{margin-bottom:16px}.standards-box span{font-size:11px;font-weight:700}.standards-box strong{float:right;font:600 14px 'Space Grotesk';color:var(--cyan)}.standards-box small{display:block;color:#6d8499;font-size:9px;margin-top:5px}.mini-progress{height:6px;background:#182b3e;border-radius:5px;overflow:hidden;margin-top:8px}.mini-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--blue),var(--cyan));transition:.3s}

/* Sitios principal, alternos y sucursales */
.dc-zone{left:3%;right:auto;top:4%;width:46%;height:53%}.alternate-zone{top:4%;height:53%;width:21.5%;border-color:#30465c;background:rgba(13,28,45,.6)}.alternate-zone .zone-title>span{color:var(--amber)}.a1{left:51%}.a2{right:3%}.branch-zone{top:69%;height:26%}.remote-label{top:62%}

/* Selector y proyección 3D */
.view-toggle{display:flex;border:1px solid #294159;border-radius:5px;overflow:hidden}.view-toggle button{border:0;background:#0b1929;color:#758ca2;padding:7px 10px;font-size:10px;font-weight:700}.view-toggle button.active{background:var(--cyan);color:#06201d}.topology-canvas{--zoom:1}.canvas-wrap.mode-3d{background-image:linear-gradient(rgba(30,230,199,.025),rgba(30,230,199,.01)),radial-gradient(#21374b 1px,transparent 1px);perspective:1100px}.canvas-wrap.mode-3d .topology-canvas{transform:perspective(1100px) translateY(-5%) rotateX(48deg) rotateZ(-2deg) scale(var(--zoom));transform-origin:50% 45%}.canvas-wrap.mode-3d .site-zone{background:linear-gradient(145deg,rgba(19,42,62,.86),rgba(7,19,32,.86));border-style:solid;box-shadow:8px 10px 0 #07101b,12px 14px 24px rgba(0,0,0,.45)}.canvas-wrap.mode-3d .topology-node{box-shadow:5px 8px 0 #07111f,9px 13px 20px rgba(0,0,0,.46);transform:translateZ(18px)}.canvas-wrap.mode-3d .connections{filter:drop-shadow(3px 5px 2px rgba(0,0,0,.5))}

/* Configurador de componentes */
.config-dialog{width:min(720px,94vw);max-height:90vh;overflow:auto}.config-title{display:flex;align-items:center;gap:13px;margin:12px 0 20px}.config-title h2{margin:0}.config-title p{margin:3px 0 0}.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.config-grid label,.notes-label{color:#8ca1b5;font-size:10px;font-weight:700;letter-spacing:.5px}.config-grid input,.config-grid select,.notes-label textarea{display:block;width:100%;margin-top:6px;background:#081522;border:1px solid #294159;border-radius:5px;color:#e8f2fb;padding:10px;font-size:12px;outline:none}.config-grid input:focus,.config-grid select:focus,.notes-label textarea:focus{border-color:var(--cyan)}.subcomponent-section{margin:20px 0 15px}.config-section-title{display:flex;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:8px}.config-section-title span{font-size:10px;font-weight:700;letter-spacing:1px}.config-section-title small{font-size:9px;color:#71889e}.subcomponent-option{display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:10px;padding:10px 3px;border-bottom:1px solid #17283a;cursor:pointer}.subcomponent-option input{accent-color:var(--cyan)}.subcomponent-option strong{display:block;font-size:12px}.subcomponent-option small{display:block;font-size:9px;color:#70879d;margin-top:2px}.subcomponent-option>span{font:600 11px 'Space Grotesk';color:#bcd0e2}.notes-label textarea{height:70px;resize:vertical}.config-cost{display:flex;justify-content:space-between;align-items:center;margin:15px 0;padding:12px;border:1px solid #284159;background:#0a1928;border-radius:6px;font-size:11px}.config-cost strong{font:600 18px 'Space Grotesk';color:var(--cyan)}.config-save{width:100%;padding:13px}.node-configured:after{content:"✓";position:absolute;left:-6px;top:-7px;width:16px;height:16px;display:grid;place-items:center;border-radius:50%;background:var(--cyan);color:#06201d;font-size:9px;font-weight:700}

@media(max-width:1250px){.project-title{display:none}.topbar{gap:14px}.top-compliance{margin-left:auto}.catalog-panel{width:285px;min-width:285px}.metrics-panel{width:260px;min-width:260px}}
@media(max-width:900px){.top-compliance{display:none}.view-toggle{margin-right:3px}.alternate-zone{width:22%}.dc-zone{width:44%}}
@media(max-width:800px){#plannerView{height:auto}.config-grid{grid-template-columns:1fr}.topbar{height:74px}.tabs{height:53px}.tab{height:53px}.catalog-panel{width:100%;min-width:0}.metrics-panel{width:100%;min-width:0}.workspace-panel{height:650px}}
@media(max-width:900px){.topbar{height:132px;flex-wrap:wrap;align-content:center;padding-top:8px;padding-bottom:8px}.top-compliance{display:flex;order:3;width:100%;margin:0;gap:6px}.compliance-chip{flex:1;min-width:0;padding:6px 9px}.compliance-chip small{font-size:8px}.compliance-chip strong{font-size:14px}.tabs{height:53px}.tab{height:53px}#plannerView{height:calc(100vh - 185px)}}
@media(max-width:800px){#plannerView{height:auto}.topbar{height:132px}.workspace-panel{height:650px;flex:none}.catalog-panel{height:320px}.metrics-panel{padding-bottom:80px}}

/* Catálogo jerárquico y categorías */
.category-tabs{flex-wrap:wrap;overflow:visible;gap:6px;padding-bottom:8px}.category-tabs button{border:1px solid color-mix(in srgb,var(--cat-color,#64829e) 45%,transparent);border-bottom-width:1px;border-radius:5px;padding:7px 8px;color:var(--cat-color,#8fa5b9);background:color-mix(in srgb,var(--cat-color,#64829e) 7%,transparent)}.category-tabs button.active{border-color:var(--cat-color,var(--cyan));color:#07111f;background:var(--cat-color,var(--cyan))}.catalog-group{margin:5px 0 13px}.catalog-group-title{display:flex;align-items:center;gap:8px;padding:8px 7px;color:var(--cat-color);font-size:11px;font-weight:700;letter-spacing:1px;text-transform:uppercase}.catalog-group-title i{width:8px;height:8px;background:var(--cat-color);border-radius:2px;box-shadow:0 0 9px color-mix(in srgb,var(--cat-color) 55%,transparent)}.catalog-item{border-left:3px solid var(--cat-color,#29435d)}.catalog-item .catalog-icon{color:var(--cat-color,var(--cyan));border-color:color-mix(in srgb,var(--cat-color,var(--cyan)) 45%,#29435d)}

/* Red, alimentación y estado */
.connections line{stroke-width:2.5;stroke-dasharray:10 7;animation:networkFlow 1.1s linear infinite}.connections line.network,.connections line.wan{stroke:#17dfff;filter:drop-shadow(0 0 4px rgba(23,223,255,.75))}.connections line.power{stroke:#ffbd5a;stroke-dasharray:4 6;filter:drop-shadow(0 0 4px rgba(255,189,90,.55))}@keyframes networkFlow{to{stroke-dashoffset:-34}}.power-led{position:absolute;right:5px;bottom:5px;width:7px;height:7px;border-radius:50%;background:#34485b;border:1px solid #557087;box-shadow:none}.power-led.on{background:#42f58d;border-color:#b5ffd0;box-shadow:0 0 8px #42f58d}.topology-node.failed{border-color:var(--red)!important;animation:failureBlink .8s ease-in-out infinite alternate}.topology-node.failed .power-led{background:var(--red);border-color:#ffb0b0;box-shadow:0 0 10px var(--red)}@keyframes failureBlink{to{box-shadow:0 0 0 3px rgba(255,107,107,.24),0 8px 18px rgba(0,0,0,.3)}}.connect-network.active{color:#17dfff!important;border-color:#17dfff!important}.connect-power.active{color:var(--amber)!important;border-color:var(--amber)!important}

/* Isométrico */
.canvas-wrap.mode-3d .topology-canvas{transform:perspective(1350px) translateY(-3%) rotateX(57deg) rotateZ(-29deg) scale(calc(var(--zoom) * .78));transform-origin:50% 45%}.canvas-wrap.mode-3d .site-zone{box-shadow:12px 15px 0 #06101a,18px 22px 30px rgba(0,0,0,.55)}.canvas-wrap.mode-3d .topology-node{transform:translateZ(30px);box-shadow:8px 12px 0 #06111e,13px 18px 24px rgba(0,0,0,.55)}.canvas-wrap.mode-3d .connections line{stroke-width:3;animation-duration:.75s}

/* Evaluación, aprobación y evidencia normativa */
.evaluation-status{display:flex;justify-content:space-between;align-items:center;gap:10px}.pass-badge{padding:6px 9px;border-radius:4px;background:rgba(255,107,107,.12);color:var(--red);font-size:9px;font-weight:700;letter-spacing:.6px}.pass-badge.passed{background:rgba(66,245,141,.12);color:#42f58d}.rubric-bar i.level-low,.mini-progress i.level-low{background:var(--red)}.rubric-bar i.level-mid,.mini-progress i.level-mid{background:var(--amber)}.rubric-bar i.level-pass,.mini-progress i.level-pass{background:#42f58d}.compliance-evidence{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.compliance-evidence>div{background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:20px}.evidence-heading{display:flex;align-items:center;gap:9px;border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:5px}.evidence-heading h2{font:600 16px 'Space Grotesk';margin:0}.standard-dot{width:9px;height:9px;border-radius:50%}.iso-dot{background:var(--cyan);box-shadow:0 0 8px var(--cyan)}.icrea-dot{background:var(--blue);box-shadow:0 0 8px var(--blue)}.evidence-item{padding:13px 2px;border-bottom:1px solid #17283a}.evidence-item:last-child{border:0}.evidence-item strong{font-size:12px;color:#dceaf6}.evidence-item p{margin:5px 0 0;color:#7f96aa;font-size:10px;line-height:1.55}.evidence-empty{padding:25px 0;color:#647d93;font-size:11px}.incident-result{margin-top:15px;padding:11px;border-radius:5px;font-size:10px;font-weight:700}.incident-result.resolved{background:rgba(66,245,141,.1);color:#42f58d}.incident-result.aborted{background:rgba(255,189,90,.09);color:var(--amber)}

/* Caso único */
.case-dialog{width:min(820px,95vw);max-height:92vh;overflow:auto}.case-dialog>h2{font-size:26px}.case-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:18px 0}.case-metrics>div{background:#091827;border:1px solid var(--line);padding:13px;border-radius:6px}.case-metrics small{display:block;color:#7690a7;font-size:9px}.case-metrics strong{display:block;color:var(--cyan);font:600 19px 'Space Grotesk';margin-top:4px}.case-columns{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:18px 0}.case-columns h3{font-size:12px;color:#e1edf7}.case-columns ol,.case-columns ul{padding-left:20px;color:#8ca1b4;font-size:11px;line-height:1.65}.case-columns li{margin-bottom:7px}.save-justification{width:100%;margin-top:9px}

/* Administración de incidentes */
.admin-btn{border:1px solid #31506d;background:#0d1d2d;color:#a9bed1;border-radius:6px;padding:9px 11px;font-size:9px;font-weight:700;letter-spacing:.8px}.admin-btn:hover{border-color:var(--amber);color:var(--amber)}.admin-login label,.admin-grid label{display:block;color:#8ca1b5;font-size:10px;font-weight:700}.admin-login input,.admin-grid select,.failure-diagnosis select{display:block;width:100%;margin:7px 0 14px;background:#081522;border:1px solid #294159;border-radius:5px;color:#e8f2fb;padding:11px}.login-error{min-height:19px;color:var(--red);font-size:10px}.admin-login .primary-btn{width:100%}.admin-panel{width:min(580px,94vw)}.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.admin-impact{display:flex;justify-content:space-between;padding:13px;background:#111b28;border:1px solid #3b2b31;border-radius:6px;margin:10px 0 16px}.admin-impact span{font-size:11px}.admin-impact strong{color:var(--red);font:600 17px 'Space Grotesk'}.danger-btn{width:100%;border:1px solid var(--red);background:var(--red);color:#210505;padding:12px;border-radius:5px;font-size:10px;font-weight:700;letter-spacing:.8px}.admin-panel>small{display:block;color:#667e94;font-size:8px;margin-top:11px}.failure-banner{position:fixed;z-index:35;top:140px;left:50%;transform:translateX(-50%);width:min(820px,94vw);display:flex;align-items:center;gap:20px;padding:10px 14px;background:#31151c;border:1px solid var(--red);box-shadow:0 10px 35px rgba(255,42,62,.25);border-radius:0 0 8px 8px}.failure-banner[hidden]{display:none}.failure-pulse{width:12px;height:12px;border-radius:50%;background:var(--red);box-shadow:0 0 0 0 rgba(255,107,107,.7);animation:pulseFailure 1.2s infinite}.failure-banner>div:nth-child(2){flex:1}.failure-banner small{display:block;color:#d9939b;font-size:8px}.failure-banner strong{display:block;color:white;font:600 13px 'Space Grotesk';margin-top:2px}.failure-banner button{border:1px solid #ff9aa4;background:transparent;color:#ffb6bd;border-radius:4px;padding:8px 10px;font-size:9px;font-weight:700}@keyframes pulseFailure{70%{box-shadow:0 0 0 9px rgba(255,107,107,0)}100%{box-shadow:0 0 0 0 rgba(255,107,107,0)}}.failure-diagnosis{padding:13px;background:rgba(255,107,107,.08);border:1px solid #6b3037;border-radius:6px;margin-bottom:18px}.failure-diagnosis strong{color:var(--red);font-size:12px}.failure-diagnosis p{margin:4px 0 8px}.failure-diagnosis button{width:100%;border:1px solid var(--red);background:transparent;color:#ff9da6;padding:9px;border-radius:4px;font-size:9px;font-weight:700}

@media(max-width:900px){.failure-banner{top:185px}.compliance-evidence{grid-template-columns:1fr}.admin-btn{padding:7px 8px}.session-stats{gap:9px}.case-columns{grid-template-columns:1fr}}

/* Controles operativos y retroalimentación visual del lienzo */
.tool-icon{width:18px;height:18px;display:block;margin:auto;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.bolt-icon{fill:#ffcf3f;stroke:#ffcf3f}.connect-power{color:#ffcf3f}.connect-network{color:#18dfff}.connect-network .rj45-icon{stroke:#18dfff}.connections .connection-hit{stroke:transparent!important;stroke-width:16!important;stroke-dasharray:none!important;pointer-events:stroke;cursor:pointer;animation:none!important;filter:none!important}.connections .connection-line{pointer-events:none}.connections .connection-line.selected{stroke-width:4.5!important;filter:drop-shadow(0 0 7px #fff)!important}.node-stars{position:absolute;left:18px;right:18px;top:-10px;display:flex;justify-content:center;gap:1px;color:#ffd84f;font-size:9px;line-height:1;text-shadow:0 0 5px rgba(255,216,79,.8);pointer-events:none}.node-statuses{position:absolute;left:4px;right:4px;bottom:3px;display:flex;align-items:center;justify-content:space-between;pointer-events:none}.network-status{width:13px;height:11px;display:grid;place-items:center;border:1px solid #506276;border-radius:2px;color:#78899b;background:#091521}.network-status svg{width:10px;height:8px;fill:none;stroke:currentColor;stroke-width:1.5}.network-status.amber{color:#ffbd5a;border-color:#80663c;box-shadow:0 0 6px rgba(255,189,90,.35)}.network-status.green{color:#42f58d;border-color:#3a9360;box-shadow:0 0 7px rgba(66,245,141,.55)}.network-status.off{color:#536678;box-shadow:none}.node-power-toggle{position:absolute;right:3px;bottom:2px;width:25px;height:13px;padding:0;border:1px solid #53677a;border-radius:8px;background:#162536;z-index:5}.node-power-toggle:before{content:"";position:absolute;width:7px;height:7px;left:2px;top:2px;border-radius:50%;background:#718396;transition:.15s}.node-power-toggle.on{border-color:#42f58d;background:rgba(66,245,141,.15)}.node-power-toggle.on:before{left:14px;background:#42f58d;box-shadow:0 0 6px #42f58d}.power-led{right:34px;bottom:5px}.topology-node:not(.selected) .node-power-toggle{opacity:.82}.topology-node .node-icon{margin-top:1px}.topology-node strong{margin-top:2px;padding-bottom:10px}

/* Badges de evaluación: los sitios alternos son méritos adicionales */
.achievements-card{margin-top:18px;background:var(--panel);border:1px solid var(--line);border-radius:9px;padding:20px}.achievements-heading{display:flex;align-items:end;justify-content:space-between;gap:16px}.achievements-heading h2{font:600 19px 'Space Grotesk';margin:5px 0 0}.achievements-heading>span{color:var(--cyan);font-size:10px;font-weight:700}.achievements-card>p{color:#7890a7;font-size:11px;margin:8px 0 17px}.achievement-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.achievement{display:grid;grid-template-columns:38px 1fr;align-items:center;gap:10px;min-height:74px;padding:12px;border:1px solid #22364b;border-radius:8px;background:#091625;opacity:.42}.achievement.unlocked{opacity:1;border-color:#2b736d;background:linear-gradient(135deg,rgba(30,230,199,.09),rgba(10,24,39,.9));box-shadow:inset 0 0 18px rgba(30,230,199,.035)}.achievement-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:50%;background:#15273a;color:#6f8398;font-size:18px}.achievement.unlocked .achievement-icon{background:rgba(30,230,199,.14);color:#ffd84f;box-shadow:0 0 12px rgba(30,230,199,.18)}.achievement strong{display:block;font-size:11px}.achievement small{display:block;color:#738aa0;font-size:8px;line-height:1.35;margin-top:3px}.achievement.unlocked small{color:#93a9bc}@media(max-width:1100px){.achievement-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:650px){.achievement-grid{grid-template-columns:1fr}}
@media(max-width:600px){.failure-banner{gap:9px}.failure-banner>div:nth-child(2){display:none}.failure-banner strong{font-size:11px}.admin-grid,.case-metrics{grid-template-columns:1fr}.category-tabs{flex-wrap:nowrap;overflow-x:auto}}
.compliance-chip.grade.passed{border-color:#42f58d;background:rgba(66,245,141,.12)}.compliance-chip.grade.passed strong{color:#42f58d}
.node-statuses{right:34px}.node-statuses .power-led{position:static;flex:0 0 auto}
.connections line.power.inactive-power{stroke:#5b5140;filter:none;animation:none;stroke-dasharray:3 7}.admin-failure-summary{display:flex;flex-direction:column;gap:5px;padding:14px;background:rgba(255,107,107,.06);border:1px solid #5d3038;border-radius:7px;margin:15px 0}.admin-failure-summary span{font-size:8px;letter-spacing:1px;color:#c78089}.admin-failure-summary strong{font:600 17px 'Space Grotesk';color:#ff939d}.admin-failure-summary small{font-size:9px;color:#758ca1}
.canvas-wrap:not(.mode-3d) .topology-canvas{transform:scale(var(--zoom));transform-origin:0 0}

/* Lienzo simplificado: centro principal amplio y una sola sede alterna */
.dc-zone{left:3%;top:4%;width:63%;height:53%}.alternate-zone{left:auto;right:3%;top:4%;width:28%;height:53%}.a1{left:auto;right:3%}.hand-tool{font-size:15px;line-height:1;filter:saturate(.8)}

/* Vista isométrica contenida y legible */
.canvas-wrap.mode-3d{perspective:1600px;overflow:hidden}.canvas-wrap.mode-3d .topology-canvas{transform:perspective(1600px) translateY(5%) rotateX(38deg) rotateZ(-8deg) scale(calc(var(--zoom) * .82));transform-origin:50% 43%}.canvas-wrap.mode-3d .site-zone{box-shadow:7px 10px 0 #06101a,12px 16px 22px rgba(0,0,0,.42)}.canvas-wrap.mode-3d .topology-node{transform:translateZ(18px);box-shadow:4px 7px 0 #06111e,8px 12px 18px rgba(0,0,0,.48)}.canvas-wrap.mode-3d .connections line{stroke-width:2.4;animation-duration:.9s}

/* El aviso ocupa su propia fila y nunca cubre la barra de herramientas */
.failure-banner{position:relative;top:auto;left:auto;transform:none;width:100%;max-width:none;border-left:0;border-right:0;border-radius:0;z-index:12;box-shadow:0 8px 22px rgba(255,42,62,.16)}@media(max-width:900px){.failure-banner{top:auto}}

/* WAN entre sedes */
.connections line.network.wan-link{stroke:#b86cff!important;stroke-width:3;stroke-dasharray:13 7;filter:drop-shadow(0 0 5px rgba(184,108,255,.8))}.connections .wan-label{fill:#d7b4ff;stroke:#07111f;stroke-width:3px;paint-order:stroke fill;font:700 9px 'Space Grotesk';letter-spacing:1px;text-anchor:middle;pointer-events:none}

/* Agrupación de equipos dentro del rack */
.topology-node.rack-node{width:154px;padding-bottom:5px;background:linear-gradient(180deg,#0d1e30,#081521);border-color:#42617e}.rack-node>.node-icon{margin-left:8px}.rack-node>strong{text-align:left;padding-left:3px;padding-right:30px}.rack-contents{position:absolute;left:5px;right:5px;top:59px;display:flex;flex-direction:column;gap:3px;padding:4px;background:#06111c;border:1px solid #2a4055;border-radius:4px}.rack-contents>small{font-size:7px;letter-spacing:.7px;color:#668097;margin-bottom:1px}.rack-slot{height:18px;display:grid;grid-template-columns:17px 1fr auto 7px 17px;align-items:center;gap:4px;padding:0 3px;border:1px solid #263c50;border-radius:3px;background:#0c1c2b;color:#b9ccdd;font-size:8px;cursor:pointer}.rack-slot:hover,.rack-slot.selected{border-color:var(--cyan);background:#102a31}.rack-slot.failed{border-color:var(--red);animation:failureBlink .8s ease-in-out infinite alternate}.rack-slot-icon{color:var(--cyan);text-align:center}.rack-slot b{font-size:7px;color:#ffd84f}.rack-slot-led{width:7px;height:7px;padding:0;border:0;border-radius:50%;background:#3a4a59}.rack-slot-led.on{background:#42f58d;box-shadow:0 0 5px #42f58d}.unrack-btn{width:16px;height:14px;padding:0;border:0;border-radius:2px;background:#182c3e;color:#8ca5ba;font-size:8px}.unrack-btn:hover{background:#27445c;color:white}.canvas-wrap.mode-3d .rack-contents{transform:translateZ(8px)}

/* Edición espacial y puertos individuales dentro del rack */
.zone-title{cursor:grab;user-select:none}.site-zone.layout-editing .zone-title{cursor:grabbing}.site-zone.layout-editing{border-color:var(--cyan);box-shadow:0 0 0 2px rgba(30,230,199,.08)}.zone-resize-handle{position:absolute;right:4px;bottom:4px;width:18px;height:18px;padding:0;border:1px solid #3b6078;border-radius:3px;background:#0d2132;cursor:nwse-resize;z-index:7}.zone-resize-handle:before,.zone-resize-handle:after{content:"";position:absolute;right:3px;bottom:4px;width:9px;height:1px;background:var(--cyan);transform:rotate(-45deg);transform-origin:right center}.zone-resize-handle:after{right:3px;bottom:8px;width:5px}.zone-resize-handle:hover{border-color:var(--cyan);background:#123146}.canvas-wrap.mode-3d .zone-resize-handle{display:none}.canvas-wrap.mode-3d .zone-title{cursor:default}
.rack-slot.energized{border-color:#ffd84f!important;box-shadow:inset 0 0 0 1px rgba(255,216,79,.32),0 0 8px rgba(255,216,79,.24);background:linear-gradient(90deg,rgba(255,216,79,.11),#0c1c2b)}.rack-slot.networked:not(.energized){border-left-color:var(--cyan);box-shadow:inset 2px 0 0 rgba(30,230,199,.45)}.rack-slot.connecting{border-color:var(--amber)!important;box-shadow:0 0 0 2px rgba(255,184,77,.2)}.rack-slot.failed{border-color:var(--red)!important;box-shadow:0 0 8px rgba(255,87,102,.35);animation:failureBlink .8s ease-in-out infinite alternate}

/* Presupuesto extraordinario */
.request-budget-btn{width:100%;margin-top:13px;padding:9px;border:1px solid #3c6078;border-radius:5px;background:#0c2132;color:#a9d8f2;font-size:9px;font-weight:800;letter-spacing:.65px}.request-budget-btn:hover{border-color:var(--cyan);color:var(--cyan)}.budget-request-dialog{width:min(510px,94vw)}.budget-request-label{display:block;margin-top:18px;color:#8ca1b5;font-size:10px;font-weight:700;letter-spacing:.7px}.budget-request-label input{display:block;width:100%;margin-top:7px;padding:12px;background:#071522;border:1px solid #294159;border-radius:5px;color:#eef8ff;font:600 17px 'Space Grotesk';outline:none}.budget-request-label input:focus{border-color:var(--cyan)}.budget-time-condition{margin:14px 0;padding:13px;border:1px solid #31475d;border-radius:6px;background:#091725}.budget-time-condition span,.budget-time-condition small{display:block;color:#71889e;font-size:9px}.budget-time-condition strong{display:block;margin:5px 0 8px;color:#a9bfd2;font-size:13px}.budget-time-condition.valid{border-color:#8a6c2e;background:rgba(255,189,90,.06)}.budget-time-condition.valid strong{color:var(--amber)}.budget-time-condition.severe{border-color:#8a3740;background:rgba(255,87,102,.07)}.budget-time-condition.severe strong{color:#ff8b95}.budget-request-dialog>.primary-btn{width:100%;padding:12px}.budget-request-dialog>.primary-btn:disabled{opacity:.4;cursor:not-allowed}

/* Telemetría operativa por sitio */
.zone-title{position:relative;padding-right:6px}.site-telemetry{margin-left:auto;display:grid;grid-template-columns:auto auto;justify-items:end;align-items:center;gap:2px 8px;pointer-events:none;font:700 7px 'Space Grotesk';white-space:nowrap}.site-telemetry>span{display:flex;align-items:center;gap:3px}.site-kva{color:#ffd86c}.site-kva.alert{color:#ff717e;animation:failureBlink .8s ease-in-out infinite alternate}.site-temp{color:#54d8ff}.site-temp i{position:relative;width:5px;height:17px;border:1px solid currentColor;border-radius:4px;background:#091521;overflow:hidden}.site-temp i:after{content:"";position:absolute;left:0;right:0;bottom:0;height:var(--temp);background:currentColor}.site-temp.cold{color:#65c7ff}.site-temp.optimal{color:#52ef9a}.site-temp.warm{color:#ffc45a}.site-temp.hot{color:#ff6673}.site-monthly{grid-column:1/3;color:#a7bfd3}.ups-load{position:absolute;right:2px;top:-11px;padding:2px 4px;border:1px solid #6b5d34;border-radius:3px;background:#111d27;color:#ffd86c;font:700 7px 'Space Grotesk';z-index:6}.ups-load.alert,.topology-node.overloaded .ups-load{border-color:var(--red);color:#ff7d88;background:#2a1118}.topology-node.overloaded{border-color:var(--red)!important;box-shadow:0 0 0 2px rgba(255,87,102,.15),0 0 12px rgba(255,87,102,.3)}.rack-slot.overloaded{border-color:var(--red)!important;background:#28121a}.rack-slot.overloaded b{color:#ff8490}

/* El zoom amplía todo el lienzo, incluyendo equipos y tipografía */
.canvas-wrap:not(.mode-3d){overflow:auto}.topology-canvas{will-change:transform}.tool-btn#zoomIn,.tool-btn#zoomOut{font-size:17px;font-weight:700}

/* Enlaces construidos con puntos, no guiones */
.connections .connection-line{stroke-linecap:round;stroke-dasharray:1 8!important;animation:dotFlow .85s linear infinite}.connections .connection-line.power{stroke-dasharray:1 7!important}.connections .connection-line.wan-link{stroke-dasharray:1 9!important}.connections .connection-line.inactive-power{stroke-dasharray:1 8!important}@keyframes dotFlow{to{stroke-dashoffset:-18}}

/* Relatos de diagnóstico */
.witness-report{margin:11px 0;padding:12px 13px;border-left:3px solid var(--amber);border-radius:4px;background:#111d2b}.witness-report span{display:block;color:var(--amber);font-size:8px;font-weight:800;letter-spacing:1px}.witness-report p{margin:7px 0;color:#d5e2ed;font-size:11px;line-height:1.6}.witness-report small{display:block;color:#7890a5;font-size:8px}.failure-diagnosis>p{margin:8px 0}

/* Fibra óptica: flujo cian con destellos rápidos */
.connections .connection-line.fiber-link{stroke:#25f4ff!important;stroke-width:3.2!important;stroke-dasharray:1 5!important;filter:drop-shadow(0 0 4px #25f4ff) drop-shadow(0 0 8px rgba(37,244,255,.65))!important;animation:fiberFlow .28s linear infinite,fiberFlash .38s ease-in-out infinite alternate!important}.connections .fiber-label{fill:#57f7ff}@keyframes fiberFlow{to{stroke-dashoffset:-12}}@keyframes fiberFlash{from{opacity:.55}to{opacity:1}}

/* Cierre y retroalimentación final */
.next-finish-btn{width:100%;margin:4px 0 12px;padding:11px 14px;display:flex;justify-content:space-between;border:1px solid #32746d;border-radius:5px;background:#102a2d;color:var(--cyan);font-size:10px;font-weight:800;letter-spacing:.8px}.next-finish-btn:hover{background:#15383a}.final-review-dialog{width:min(760px,95vw);max-height:92vh;overflow:auto}.finish-now-btn{width:100%;margin-top:18px;padding:13px}.completion-score{display:flex;align-items:center;gap:14px;margin:15px 0 20px;padding:14px;border:1px solid #2d485e;border-radius:7px;background:#091827}.completion-score strong{color:var(--cyan);font:700 26px 'Space Grotesk'}.completion-score span{font-size:11px;color:#c6d8e7}.completion-score small{margin-left:auto;max-width:260px;text-align:right;color:#7891a8;font-size:8px}.completion-report section{margin-top:18px}.completion-report section h3{margin:0 0 8px;color:#e5f0f8;font-size:12px}.completion-report section>div{padding:12px;border:1px solid #22394d;border-radius:6px;background:#091725}.completion-report #workSummary p{margin:0 0 9px;color:#9cb0c2;line-height:1.65}.completion-report #workSummary p:last-child{margin-bottom:0}.completion-report #bestPracticeTips article{display:grid;grid-template-columns:27px 1fr;gap:9px;padding:8px 0;border-bottom:1px solid #1c3042}.completion-report #bestPracticeTips article:last-child{border-bottom:0}.completion-report #bestPracticeTips span{color:var(--cyan);font:700 10px 'Space Grotesk'}.completion-report #bestPracticeTips p{margin:0;color:#a8bdcf;line-height:1.55}.completion-report>.primary-btn{width:100%;margin-top:18px;padding:12px}
/* Endpoints, WiFi, DRP y clima operativo */
.activity-rail{height:64px;display:flex;align-items:stretch;border-bottom:1px solid #183149;background:#06111e;overflow:hidden;position:relative;z-index:20}
.sim-calendar{flex:0 0 165px;padding:8px 14px;border-right:1px solid #1b3850;display:flex;flex-direction:column;justify-content:center}.sim-calendar small{font-size:8px;color:#6f91a8;letter-spacing:.14em}.sim-calendar strong{font-size:18px;color:#1ee6c7}.sim-calendar span{font-size:9px;color:#86a1b5}
.activity-stream{display:flex;gap:8px;align-items:center;overflow:hidden;padding:6px 10px;flex:1}.activity-empty{color:#6e879a;font-size:11px}.activity-item{position:relative;flex:0 0 225px;min-height:48px;padding:5px 8px;border-left:3px solid #5bd6a2;background:#0a1b2a;overflow:hidden}.activity-item.negative{border-color:#ff6678;background:#21131b}.activity-item span{display:block;color:#6f91a8;font-size:7px;letter-spacing:.08em}.activity-item p{margin:2px 0;color:#c8d9e7;font-size:9px;line-height:1.15}.activity-item b{font-size:8px;color:#5bd6a2}.activity-item.negative b{color:#ff7888}.activity-item button{float:right;border:1px solid #ffb64d;background:#2a1c09;color:#ffd276;font-size:7px;font-weight:900;padding:3px 5px;cursor:pointer}
.activity-item.talent:not(.negative){border-color:#72f0a1}.activity-item.component:not(.negative){border-color:#55c8ff}.activity-item.site:not(.negative){border-color:#c5d46b}.activity-item.talent span{color:#72f0a1}.activity-item.component span{color:#55c8ff}.activity-item.site span{color:#c5d46b}
.site-health{position:relative;display:inline-flex!important;align-items:center;gap:4px;padding:4px 7px!important;border:1px solid currentColor;border-radius:5px;font-size:9px!important;font-weight:950;overflow:hidden;isolation:isolate;animation:healthBeat 1.7s ease-in-out infinite}.site-health i{position:absolute;inset:auto 0 0 0;height:3px;width:var(--health);background:currentColor;z-index:-1;transition:width .5s}.site-health.good{color:#59f28a;background:#0d2e1b}.site-health.warning{color:#ffd45d;background:#30250b}.site-health.critical{color:#ff6678;background:#351019;animation:healthDanger .75s infinite}.site-health b{font-size:13px}
@keyframes healthBeat{50%{filter:brightness(1.3);transform:scale(1.025)}}@keyframes healthDanger{50%{box-shadow:0 0 14px #ff3a55;transform:scale(1.06)}}
.talent-avatar{position:absolute;z-index:8;left:45px;top:70px;font-size:24px;filter:drop-shadow(0 3px 4px #000);pointer-events:none;animation-delay:var(--talent-delay)}.talent-avatar.walking{animation:talentWalk 9s linear infinite}.talent-avatar.sleeping{animation:talentSleep 4s ease-in-out infinite}.talent-avatar.sleeping:after{content:"Z z";position:absolute;color:#78d8ff;font-size:10px;animation:sleepZ 1.4s infinite}.talent-avatar.slipping{animation:talentSlip 4.5s ease-in-out infinite}.talent-avatar.whipping{animation:talentWalk 8s linear infinite}.talent-avatar.whipping:after{content:"〰";position:absolute;color:#ffd36b;font-size:25px;transform-origin:left center;animation:whip .8s infinite}
@keyframes talentWalk{0%{left:8%;top:30%}25%{left:72%;top:38%}50%{left:65%;top:75%}75%{left:20%;top:68%}100%{left:8%;top:30%}}@keyframes talentSleep{50%{transform:translateY(3px) rotate(7deg)}}@keyframes sleepZ{to{transform:translate(12px,-18px);opacity:0}}@keyframes talentSlip{0%,55%,100%{transform:translate(0) rotate(0)}65%{transform:translate(20px,10px) rotate(85deg)}80%{transform:translate(28px,10px) rotate(75deg)}}@keyframes whip{50%{transform:rotate(-45deg) scaleX(1.4)}}
.topology-node[data-item-id^="talent-"]{border-color:#72f0a1;background:#0b211d}.topology-node[data-item-id^="talent-"] .node-icon{font-size:21px}
.site-temp.warm,.site-temp.hot{animation:thermalAlert .65s infinite}.site-temp.warm:before,.site-temp.hot:before{content:"ALERTA · ";font-size:7px;font-weight:950}@keyframes thermalAlert{50%{color:#fff;background:#e72d45;box-shadow:0 0 12px #ff324d}}
.failover-btn{border:1px solid #ff5d70;background:#28131a;color:#ff8896;border-radius:5px;padding:9px 13px;font-weight:900;letter-spacing:.08em;cursor:pointer;white-space:nowrap}
.failover-btn.active{background:#ff3854;color:#fff;box-shadow:0 0 18px #ff385477;animation:incidentPulse 1s infinite}
.corrective-cost{margin-top:10px;padding:10px 12px;border:1px solid #29465e;background:#071827;color:#8fa8bc;font-weight:800}
.corrective-cost.selected{border-color:#ffd84f;color:#ffd84f;background:#271f0b}
#endpointUserField small{display:block;color:#7892a8;margin-top:5px;font-size:.78rem}
.tool-btn.connect-wireless{color:#ff82d8}.wifi-icon{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7}
.connection-line.wireless{stroke:#ff82d8;stroke-width:2.5;stroke-linecap:round;stroke-dasharray:1 9;animation:wifiFlow .8s linear infinite;filter:drop-shadow(0 0 4px #ff82d8)}
.wireless-label{fill:#ff82d8!important}.connection-line.weather-risk{stroke:#ff9d3d!important;filter:drop-shadow(0 0 6px #ff512f);animation:weatherWan .55s linear infinite}
.connection-line.drp-route{stroke:#84ff70;stroke-width:3;stroke-linecap:round;stroke-dasharray:1 10;animation:wifiFlow .55s linear infinite;filter:drop-shadow(0 0 6px #54ff76);pointer-events:none}.drp-label{fill:#84ff70!important}
@keyframes wifiFlow{to{stroke-dashoffset:-20}}@keyframes weatherWan{to{stroke-dashoffset:-16}}
.topology-node[data-item-id="users"]:after{content:"USUARIOS · 💻 + 📱";position:absolute;left:50%;top:calc(100% + 3px);transform:translateX(-50%);white-space:nowrap;font-size:8px;color:#ff82d8;font-weight:900;letter-spacing:.05em}
.topology-node[data-item-id="ap"] .node-icon:after{content:")))";position:absolute;color:#ff82d8;font-size:10px;transform:translate(3px,-7px);animation:wifiPulse 1.2s infinite}
@keyframes wifiPulse{50%{opacity:.25;transform:translate(3px,-7px) scale(1.25)}}
.site-weather{position:absolute;right:8px;bottom:7px;z-index:3;display:flex;align-items:center;gap:7px;max-width:205px;padding:5px 8px;border:1px solid #29475e;background:#061625dd;color:#bcd1e3;pointer-events:none;overflow:hidden}
.site-weather .weather-symbol{font-size:20px;color:#ffd84f;z-index:2}.site-weather span{z-index:2}.site-weather b,.site-weather small{display:block;font-size:9px;line-height:1.2}.site-weather small{color:#7898af;margin-top:2px}.site-weather.risk{border-color:#ff8b3d}.site-weather.risk small{color:#ffad67}
.weather-particles{position:absolute;inset:0;opacity:.28;pointer-events:none}.weather-rain .weather-particles,.weather-storm .weather-particles{background-image:radial-gradient(circle,#70ddff 1px,transparent 2px);background-size:9px 9px;animation:weatherFall .7s linear infinite}.weather-hail .weather-particles{background-image:radial-gradient(circle,#fff 1px,transparent 2px);background-size:12px 12px;animation:weatherFall .45s linear infinite}.weather-wind .weather-particles{background:repeating-linear-gradient(0deg,transparent 0 5px,#b9eaff 6px 7px);animation:weatherWind 1s linear infinite}.weather-heat .site-weather{box-shadow:inset 0 0 22px #ff601833}
@keyframes weatherFall{to{background-position:0 18px}}@keyframes weatherWind{to{background-position:30px 0}}
.site-event-badge{position:absolute;inset:42px 8px auto 8px;z-index:12;padding:8px;text-align:center;background:#351018ee;border:1px solid #ff536b;color:#fff;font-size:10px;font-weight:950;letter-spacing:.08em;box-shadow:0 0 22px #ff243b55;animation:incidentPulse .8s infinite;pointer-events:none}
.site-zone.drp-active{border-color:#77ff84!important;box-shadow:inset 0 0 28px #3cff6a18,0 0 16px #3cff6a33}.site-zone.drp-active .site-event-badge{background:#0b321ddd;border-color:#6aff84;color:#8cff9d;animation:none}
.site-zone.drp-served{box-shadow:inset 0 0 20px #3cff6918}.site-zone.site-outage,.site-zone.regional-failure{filter:saturate(.55);border-color:#ff5268!important;background-image:repeating-linear-gradient(135deg,#ff33440b 0 12px,transparent 12px 24px)}
@media(max-width:1000px){.failover-btn{padding:7px;font-size:10px}.site-weather{max-width:155px}.site-weather small{display:none}}
@media(max-width:1000px){.activity-rail{height:54px}.sim-calendar{flex-basis:125px}.activity-item{flex-basis:190px}.activity-item p{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.site-health{padding:2px 4px!important}.site-health b{font-size:10px}}
#plannerView{height:calc(100vh - 204px)}.content-view{min-height:calc(100vh - 204px)}
@media(max-width:900px){#plannerView{height:calc(100vh - 239px)}}
@media(max-width:800px){#plannerView{height:auto}.activity-rail{height:54px}}

/* Lienzos por sede, paneles plegables y administración local de proyectos */
.site-canvas-tabs{margin-left:auto;display:flex;align-items:stretch;height:100%;border-left:1px solid var(--line);border-right:1px solid var(--line)}.site-canvas-tabs button{border:0;border-bottom:2px solid transparent;background:#081522;color:#708aa2;padding:0 11px;font-size:8px;font-weight:900;letter-spacing:.07em;white-space:nowrap}.site-canvas-tabs button:hover{color:#c6d9e8;background:#0d1c2a}.site-canvas-tabs button.active{color:#1ee6c7;border-bottom-color:#1ee6c7;background:#0d202b}.tab-actions{margin-left:8px}
.site-zone.canvas-hidden,.topology-node.site-hidden,.remote-label.canvas-hidden{display:none!important}.topology-canvas .site-zone:not(.canvas-hidden){left:3%!important;top:4%!important;width:94%!important;height:91%!important;right:auto!important;border-style:solid;background:rgba(8,21,35,.66)}
.wan-outlet{position:absolute;right:-1px;top:48%;transform:translateY(-50%);z-index:11;width:76px;height:88px;border:1px solid #2b6684;border-right:0;border-radius:12px 0 0 12px;background:#092237;color:#53d9ff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;box-shadow:0 0 22px #21bdea1f}.wan-outlet svg{width:34px;height:34px;fill:none;stroke:currentColor;stroke-width:1.7}.wan-outlet span{font-size:11px;font-weight:950;letter-spacing:.12em}.wan-outlet small{font-size:7px;color:#79a7bd}.wan-outlet:after{content:attr(data-links);position:absolute;right:4px;top:4px;min-width:15px;height:15px;display:grid;place-items:center;border-radius:10px;background:#17364c;color:#8db8cc;font-size:8px}.wan-outlet.linked{color:#55f0cf;border-color:#33d5bd;background:#0a2b31;animation:wanOutletPulse 1.8s infinite}.wan-outlet:hover{filter:brightness(1.25)}@keyframes wanOutletPulse{50%{box-shadow:0 0 22px #27e5cc77}}
#plannerView.catalog-collapsed .catalog-panel{width:0!important;min-width:0!important;padding:0!important;border:0;overflow:hidden;opacity:0}#plannerView.metrics-collapsed .metrics-panel{width:0!important;min-width:0!important;padding:0!important;border:0;overflow:hidden;opacity:0}.catalog-panel,.metrics-panel{transition:width .22s,min-width .22s,padding .22s,opacity .16s}.panel-toggle{font-weight:900;color:#5fd8ff}
#budgetTop.regional-credit{color:#59f28a!important;text-shadow:0 0 10px #39ef7277;animation:creditPulse .65s infinite}@keyframes creditPulse{50%{transform:scale(1.05);filter:brightness(1.35)}}
.wan-dialog label,.project-id-label{display:block;margin:18px 0 10px;color:#7892a8;font-size:10px;font-weight:800;letter-spacing:.08em}.wan-dialog select,.project-id-label input{display:block;width:100%;margin-top:7px;background:#071725;border:1px solid #28465f;color:#dceafa;padding:12px;border-radius:5px}.projects-dialog{max-width:650px}.autosave-project-row{display:flex;align-items:center;justify-content:space-between;border:1px solid #234159;background:#091a29;padding:13px;margin:16px 0}.autosave-project-row strong,.autosave-project-row small{display:block}.autosave-project-row strong{font-size:10px;color:#1ee6c7}.autosave-project-row small{font-size:9px;color:#738ca1;margin-top:4px}.saved-projects-list{margin-top:16px;max-height:250px;overflow:auto;border-top:1px solid #1e3448}.saved-projects-list article{display:flex;align-items:center;justify-content:space-between;padding:12px 4px;border-bottom:1px solid #172c3e}.saved-projects-list strong,.saved-projects-list code,.saved-projects-list small{display:block}.saved-projects-list strong{font-size:11px}.saved-projects-list code{color:#55d8ff;margin:3px 0;font-size:10px}.saved-projects-list small,.empty-projects{color:#71899f;font-size:9px}.saved-projects-list button{border:1px solid #2b746c;background:#102a2d;color:#1ee6c7;padding:7px 11px;font-size:8px;font-weight:900}.generated-project-id{margin:20px 0;padding:18px;text-align:center;border:1px dashed #39dbc4;background:#09251f;color:#5ff5dc;font:800 23px 'Space Grotesk';letter-spacing:.12em}
@media(max-width:1450px){.site-canvas-tabs button{padding:0 6px;font-size:7px}.tab-actions .ghost-btn{padding-left:8px;padding-right:8px}.site-canvas-tabs{order:3;width:100%;height:34px;margin:0;border-top:1px solid var(--line)}.tabs{height:92px;flex-wrap:wrap}.site-canvas-tabs button{flex:1}#plannerView{height:calc(100vh - 238px)}}
@media(max-width:800px){.site-canvas-tabs{min-width:520px}.wan-outlet{width:58px;height:72px}.site-canvas-tabs{overflow-x:auto}#plannerView.catalog-collapsed .catalog-panel,#plannerView.metrics-collapsed .metrics-panel{height:0!important}}
