:root{--brand:#1f4b99;--brand-deep:#2f6fd0;--brand-tint:#eef4ff;--on-brand:#fff;--accent:#0ea5e9;--accent-hover:#0284c7;--accent-tint:#ecfeff;--accent-tint-border:#a5f3fc;--secondary:#64748b;--secondary-hover:#475569;--danger:#dc2626;--danger-hover:#b91c1c;--text:#0f172a;--muted:#64748b;--bg:#f1f5f9;--surface:#fff;--surface-soft:#f8fafc;--border:#e2e8f0;--border-strong:#cbd5e1;--ok-text:#15803d;--ok-bg:#f0fdf4;--ok-border:#bbf7d0;--err-text:#b91c1c;--err-bg:#fef2f2;--err-border:#fecaca;--warn-text:#b45309;--warn-bg:#fffbeb;--warn-border:#fde68a;--warn-solid:#d97706;--warn-solid-hover:#b45309;--ok-solid-hover:#126b34;--violet:#7c3aed;--violet-hover:#6d28d9;--code-bg:#0f172a;--code-text:#cbd5e1;--code-border:#1e293b;--code-muted:#94a3b8;--shadow-pop:0 8px 24px #0f172a1a;--scrim:#0f172a73}*{box-sizing:border-box}body{color:var(--text);background:var(--bg);margin:0;font-family:Segoe UI,Arial,sans-serif;font-size:14px;line-height:1.5}.section-title{text-transform:uppercase;letter-spacing:.04em;color:var(--brand);margin:0 0 12px;font-size:.75rem;font-weight:700}.platform-shell{min-height:100vh;display:flex}.platform-sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:16px;width:248px;padding:18px 14px;display:flex;position:relative}.platform-brand{color:var(--brand);padding:0 8px;font-size:.95rem;font-weight:700;text-decoration:none;display:block}.platform-brand span{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:2px;font-size:.66rem;font-weight:600;display:block}.platform-nav{flex-direction:column;gap:2px;display:flex}.platform-nav-group{text-transform:uppercase;letter-spacing:.04em;color:var(--brand);margin:6px 0 4px;padding:0 8px;font-size:.68rem;font-weight:600}.platform-nav-group:not(:first-child){border-top:1px solid var(--border);margin-top:15px;padding-top:14px}.platform-nav a{color:var(--text);border-radius:8px;align-items:center;gap:8px;padding:7px 8px;font-size:.82rem;text-decoration:none;display:flex}.platform-nav a:hover{background:var(--surface-soft)}.platform-nav a.is-active{background:var(--brand-tint);color:var(--brand);font-weight:600}.platform-nav a svg{flex:none;width:15px;height:15px}.platform-sidebar-foot{border-top:1px solid var(--border);flex-direction:column;gap:9px;margin-top:auto;padding-top:13px;display:flex}.platform-user{color:var(--muted);word-break:break-all;padding:0 8px;font-size:.76rem}.platform-main{flex:1;min-width:0;padding:22px 26px 40px}.platform-page{flex-direction:column;gap:16px;display:flex}.platform-page>*{min-width:0}@media (width<=860px){.platform-shell{flex-direction:column}.platform-sidebar{border-right:0;border-bottom:1px solid var(--border);flex-flow:wrap;align-items:center;gap:10px;width:auto;padding:12px 14px}.platform-nav{flex-flow:wrap;align-items:center;gap:4px}.platform-nav-group{margin:0 4px 0 8px}.platform-nav-group:not(:first-child){border-top:0;border-left:1px solid var(--border);margin-left:12px;padding:2px 0 2px 14px}.platform-sidebar-foot{border-top:0;flex-direction:row;align-items:center;margin-top:0;margin-left:auto;padding-top:0}.platform-main{padding:16px 14px 32px}}.platform-topbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.platform-topbar-title h1{color:var(--brand);margin:0;font-size:1.25rem}.platform-topbar-title p{color:var(--muted);margin:4px 0 0;font-size:.82rem}.platform-topbar-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}:where(.platform-page,.login-panel,.modal-card) a{color:var(--accent);text-decoration:none}:where(.platform-page,.login-panel,.modal-card) a:hover{text-decoration:underline}:where(.platform-page,.login-panel,.modal-card) button{cursor:pointer;background:var(--accent);color:var(--on-brand);border:0;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px 13px;font-family:inherit;font-size:.8rem;display:inline-flex}:where(.platform-page,.login-panel,.modal-card) button:hover{background:var(--accent-hover)}:where(.platform-page,.login-panel,.modal-card) button:disabled{opacity:.55;cursor:not-allowed}:where(.platform-page,.login-panel,.modal-card) button:disabled:hover{background:var(--accent)}:where(.platform-page,.login-panel,.modal-card) button svg{flex:none;width:14px;height:14px}:where(.platform-page,.login-panel,.modal-card) input,:where(.platform-page,.login-panel,.modal-card) select,:where(.platform-page,.login-panel,.modal-card) textarea{background:var(--surface);border:1px solid var(--border-strong);width:100%;color:var(--text);border-radius:8px;padding:7px 10px;font-family:inherit;font-size:.82rem}:where(.platform-page,.login-panel,.modal-card) input:focus,:where(.platform-page,.login-panel,.modal-card) select:focus,:where(.platform-page,.login-panel,.modal-card) textarea:focus{outline:2px solid var(--accent-tint);border-color:var(--accent)}:where(.platform-page,.login-panel,.modal-card) input[type=checkbox],:where(.platform-page,.login-panel,.modal-card) input[type=radio]{width:auto;accent-color:var(--accent)}:where(.platform-page,.login-panel,.modal-card) label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:13px 0 5px;font-size:.68rem;font-weight:600;display:block}:where(.platform-page,.modal-card) table{border-collapse:collapse;width:100%;font-size:.8rem}:where(.platform-page,.modal-card) th{text-align:left;background:var(--surface-soft);border-bottom:1px solid var(--border);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;white-space:nowrap;padding:9px 10px;font-size:.68rem;font-weight:600}:where(.platform-page,.modal-card) td{border-bottom:1px solid var(--border);vertical-align:middle;padding:9px 10px}:where(.platform-page,.modal-card) tbody tr:hover{background:var(--surface-soft)}.crud-table-wrap{overflow-x:auto}.is-numeric{text-align:right}.actions-inline,.actions-cell{justify-content:flex-end;gap:5px;display:flex}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px}.card-wide{max-width:1120px}.card-wider{max-width:1240px}.card h2{color:var(--brand);margin:0 0 12px;font-size:.95rem}.card h3{margin:0 0 10px;font-size:.85rem}.card h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:13px 0 5px;font-size:.68rem;font-weight:600}.btn{background:var(--accent);color:var(--on-brand);cursor:pointer;border:0;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:8px 13px;font-family:inherit;font-size:.8rem;display:inline-flex}.btn:hover{background:var(--accent-hover)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn svg{flex:none;width:14px;height:14px}.btn-sm{padding:5px 10px;font-size:.74rem}.btn-sm svg{width:13px;height:13px}.btn-ghost,.btn-secondary,.secondary-button{background:var(--secondary)!important;color:var(--on-brand)!important;border:0!important}.btn-ghost:hover,.btn-secondary:hover,.secondary-button:hover{background:var(--secondary-hover)!important}.btn-danger,.danger-button{background:var(--danger)!important}.btn-danger:hover,.danger-button:hover{background:var(--danger-hover)!important}.btn-ok{background:var(--ok-text)!important}.btn-ok:hover{background:var(--ok-solid-hover)!important}.btn-warn{background:var(--warn-solid)!important}.btn-warn:hover{background:var(--warn-solid-hover)!important}.btn-info{background:var(--surface)!important;color:var(--accent)!important;border:1px solid var(--accent-tint-border)!important}.btn-info:hover{background:var(--accent-tint)!important}.btn-tls{background:var(--surface)!important;color:var(--violet)!important;border:1px solid var(--border-strong)!important}.btn-tls:hover{background:var(--brand-tint)!important;border-color:var(--violet)!important}.button-link{font-size:.78rem;color:var(--accent)!important;background:0 0!important;border:0!important;padding:0!important}.button-link:hover{text-decoration:underline;background:0 0!important}.icon-btn,.icon-action{cursor:pointer;border-radius:8px;place-items:center;width:27px;height:27px;padding:0;display:inline-grid;border:1px solid var(--border)!important;background:var(--surface)!important;color:var(--muted)!important}.icon-btn:hover,.icon-action:hover{background:var(--surface-soft)!important;color:var(--text)!important;border-color:var(--border-strong)!important}.icon-btn svg,.icon-action svg{width:15px;height:15px}.icon-btn.view{color:var(--accent)!important;border-color:var(--accent-tint-border)!important}.icon-btn.view:hover{background:var(--accent-tint)!important;color:var(--accent)!important}.icon-btn.edit{color:var(--warn-text)!important;border-color:var(--warn-border)!important}.icon-btn.edit:hover{background:var(--warn-bg)!important;color:var(--warn-text)!important}.icon-btn.danger{color:var(--danger)!important;border-color:var(--err-border)!important}.icon-btn.danger:hover{background:var(--err-bg)!important;color:var(--danger)!important}.th-with-action{align-items:center;gap:6px;display:inline-flex}.refresh-btn{width:22px;height:22px;color:var(--muted)!important;background:0 0!important;border:0!important}.refresh-btn:hover{color:var(--accent)!important;background:0 0!important}.refresh-btn svg{width:13px;height:13px}.refresh-btn:disabled{opacity:.6;cursor:default}.spin{animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.form-field{flex-direction:column;gap:5px;display:flex}.form-field>span{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.68rem;font-weight:600}.form-hint{color:var(--muted);font-size:.7rem}.crud-form{flex-direction:column;gap:13px;display:flex}.form-grid{grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:13px;display:grid}.form-actions{justify-content:flex-end;gap:8px;display:flex}.row{flex-wrap:wrap;gap:13px;display:flex}.row>*{flex:1;min-width:min(160px,100%)}.error-box,.error{background:var(--err-bg);border:1px solid var(--err-border);color:var(--err-text);border-radius:10px;align-items:center;gap:7px;padding:9px 12px;font-size:.78rem;display:flex}.status{border-radius:10px;padding:9px 12px;font-size:.78rem}.status-ok,.success{background:var(--ok-bg);border:1px solid var(--ok-border);color:var(--ok-text);border-radius:10px;padding:9px 12px;font-size:.78rem}.notice{background:var(--accent-tint);border:1px solid var(--accent-tint-border);color:var(--text);border-radius:10px;padding:9px 12px;font-size:.78rem}.notice code{background:var(--surface);border:1px solid var(--accent-tint-border);border-radius:4px;padding:1px 5px;font-size:.85em}.empty-state{text-align:center;color:var(--muted);padding:18px;font-size:.8rem}.muted{color:var(--muted);font-size:.76rem}.pill{background:var(--surface-soft);border:1px solid var(--border);border-radius:999px;padding:2px 9px;font-size:.7rem;display:inline-block}.dot{border-radius:999px;flex-shrink:0;width:9px;height:9px;display:inline-block}.progress-bar{background:var(--border);border-radius:999px;flex:1;min-width:60px;height:6px;overflow:hidden}.progress-fill{background:var(--accent);border-radius:999px;height:100%}.status-chip{white-space:nowrap;border:1px solid;border-radius:999px;padding:2px 9px;font-size:.72rem;font-weight:600;display:inline-block}.info-grid{grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr));gap:10px;display:grid}.info-item{background:var(--surface-soft);border:1px solid var(--border);border-radius:10px;padding:10px 12px}.info-item span{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.66rem;display:block}.info-item strong{color:var(--text);font-size:1.2rem}.badge{white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:.7rem;font-weight:600;display:inline-block}.badge-ok{background:var(--ok-bg);border:1px solid var(--ok-border);color:var(--ok-text)}.badge-warn{background:var(--warn-bg);border:1px solid var(--warn-border);color:var(--warn-text)}.badge-err{background:var(--err-bg);border:1px solid var(--err-border);color:var(--err-text)}.badge-muted{background:var(--surface-soft);border:1px solid var(--border);color:var(--muted)}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:999px;width:28px;height:28px;animation:.8s linear infinite spin}.center{place-items:center;min-height:70vh;display:grid}.spacer{flex:1}.modal-backdrop{background:var(--scrim);z-index:50;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:var(--surface);border-radius:12px;flex-direction:column;width:100%;min-width:0;max-width:560px;max-height:90vh;display:flex}.modal-card-large{max-width:900px}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:15px 18px;display:flex}.modal-header h2{color:var(--brand);margin:0;font-size:.95rem}.modal-body{min-width:0;padding:18px;overflow-y:auto}.modal-close{border:1px solid var(--border);background:var(--surface);width:26px;height:26px;color:var(--muted);cursor:pointer;border-radius:8px;flex:none;place-items:center;padding:0;font-size:.78rem;line-height:1;display:inline-grid}.modal-close:hover{background:var(--err-bg);border-color:var(--err-border);color:var(--err-text)}.login-panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px 24px}.login-panel h1{color:var(--brand);margin:0 0 4px;font-size:1.25rem}.login-panel h2{color:var(--brand);margin:0 0 4px;font-size:1.1rem}.login-panel>p{color:var(--muted);margin:0 0 16px;font-size:.82rem}.slotline{flex-wrap:wrap;align-items:stretch;gap:13px;display:flex}.slotline .slot{flex:min(200px,100%);min-width:0}.slot{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:13px 15px}.slot.clickable{cursor:pointer}.slot.clickable:hover{border-color:var(--accent);background:var(--surface-soft)}.slot.empty{background:var(--surface-soft);border-style:dashed}.slot.pair{border-color:var(--border-strong)}.slot.selected{border-color:var(--accent);background:var(--accent-tint)}.slot.selected .slot-num{background:var(--accent);color:var(--on-brand)}.slot .slot-num{background:var(--brand-tint);width:24px;height:24px;color:var(--brand);border-radius:8px;place-items:center;margin-bottom:7px;font-size:.8rem;font-weight:700;display:inline-grid}.slot .slot-title{font-size:.85rem;font-weight:600}.pair-box{flex:2.1 min(320px,100%);padding:0;display:flex}.pair-box .ph{flex:1;min-width:0;padding:13px 15px}.pair-box .ph+.ph{border-left:1px solid var(--border-strong)}.pair-box .pair-banner,.pair-tag{color:var(--brand);text-transform:uppercase;letter-spacing:.04em;font-size:.68rem;font-weight:600}.livelog,.code-surface{background:var(--code-bg);border:1px solid var(--code-border);white-space:pre-wrap;word-break:break-word;color:var(--code-text);border-radius:10px;padding:13px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.74rem;line-height:1.55}.livelog{height:380px;overflow:auto}pre.sql{background:var(--code-bg);color:var(--code-text);border-radius:10px;padding:12px;font-size:.74rem;overflow:auto}.status-cell{cursor:default;display:inline-flex;position:relative}.status-cell .tip{z-index:60;background:var(--code-bg);color:var(--code-text);text-transform:none;letter-spacing:normal;min-width:200px;box-shadow:var(--shadow-pop);white-space:normal;border-radius:10px;width:max-content;max-width:min(520px,100vw - 32px);padding:9px 12px;font-size:.74rem;font-weight:400;display:none;position:absolute;top:calc(100% + 6px);left:0}.status-cell.tip-right .tip{left:auto;right:0}.status-cell:hover .tip{display:block}.status-cell .tip .ln{align-items:center;gap:7px;padding:2px 0;display:flex}.status-cell .tip .dot{border-radius:999px;flex:none;width:9px;height:9px}.status-cell .tip .dot.up{background:var(--ok-border)}.status-cell .tip .dot.down{background:var(--err-border)}.status-cell .tip .dot.unknown{background:var(--code-muted)}.status-cell .tip .tip-foot{border-top:1px solid var(--code-border);color:var(--code-muted);margin-top:5px;padding-top:5px;font-size:.7rem}.qr img{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:190px;height:190px;padding:8px}.slot-grid{grid-template-columns:repeat(auto-fill,minmax(min(240px,100%),1fr));gap:13px;display:grid}@media (width>=1180px){.slot-grid{grid-template-columns:repeat(4,1fr)}}.slot-card-wrap{display:contents}.slot-card-wrap.es-par{border:1px solid var(--border-strong);border-radius:12px;grid-column:span 2;display:flex;overflow:hidden}.slot-card-wrap.es-par .slot-card{border-radius:0;flex:1;min-width:0;border:0!important}.slot-card-wrap.es-par .slot-card+.slot-card{border-left:1px solid var(--border-strong)!important}@media (width<=700px){.slot-card-wrap.es-par{flex-direction:column;grid-column:span 1}.slot-card-wrap.es-par .slot-card+.slot-card{border-left:0!important;border-top:1px solid var(--border-strong)!important}}.slot-card-datos{flex-direction:column;gap:2px;margin-top:8px;display:flex}.slot-card-datos .muted{word-break:break-all;font-size:.72rem}.slot-card{text-align:left;cursor:pointer;font-family:inherit;font-size:inherit;border-radius:12px;display:block;background:var(--surface)!important;border:1px solid var(--border)!important;color:var(--text)!important;padding:13px 15px!important}.slot-card:hover{border-color:var(--accent)!important;background:var(--surface-soft)!important}.slot-card-head{align-items:center;gap:8px;margin-bottom:7px;display:flex;position:relative}.slot-card .slot-title{font-size:.85rem;font-weight:600}.slot-card-meta{flex-wrap:wrap;gap:5px;margin-top:9px;display:flex}.slot-card-sub{word-break:break-all;margin-top:5px}.estado-dot{border-radius:999px;flex:none;width:11px;height:11px;display:inline-block}.estado-ok{background:var(--ok-text)}.estado-warn{background:var(--warn-solid)}.estado-err{background:var(--danger)}.estado-muted{background:var(--border-strong)}.estado-tip{z-index:60;background:var(--code-bg);color:var(--code-text);min-width:230px;box-shadow:var(--shadow-pop);border-radius:10px;padding:9px 12px;font-size:.74rem;font-weight:400;display:none;position:absolute;top:calc(100% + 8px);left:0}.slot-card-head:hover .estado-tip{display:block}.estado-tip .ln{align-items:center;gap:7px;padding:2px 0;display:flex}.estado-tip .tip-foot{border-top:1px solid var(--code-border);color:var(--code-muted);margin-top:6px;padding-top:6px;font-size:.7rem}.app-tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:4px;margin-bottom:14px;display:flex}.app-tab{cursor:pointer;border-radius:8px 8px 0 0;font-size:.78rem;color:var(--muted)!important;background:0 0!important;border:0!important;padding:7px 12px!important}.app-tab:hover{background:var(--surface-soft)!important;color:var(--text)!important}.app-tab.is-active{font-weight:600;color:var(--brand)!important;border-bottom:2px solid var(--brand)!important;background:0 0!important}.acciones-apiladas{flex-direction:column;align-items:stretch;gap:4px;display:flex}.acciones-apiladas .btn{white-space:nowrap;padding:4px 8px;font-size:.7rem}.cap-barra{border:1px solid var(--border);background:var(--surface-soft);border-radius:999px;height:22px;display:flex;overflow:hidden}.cap-seg{height:100%}.cap-so{background:var(--secondary)}.cap-apps{background:var(--accent)}.cap-cache{background:var(--warn-solid)}.cap-nc{background:repeating-linear-gradient(45deg, var(--muted) 0 4px, transparent 4px 8px), var(--surface-soft)}.cap-libre{background:var(--surface-soft)}.cap-leyenda{color:var(--muted);flex-wrap:wrap;gap:14px;margin-top:9px;font-size:.74rem;display:flex}.cap-punto{vertical-align:middle;border-radius:3px;width:9px;height:9px;margin-right:5px;display:inline-block}.cap-punto.cap-libre{border:1px solid var(--border-strong)}.cap-mini{background:var(--border);border-radius:999px;height:5px;margin-top:6px;overflow:hidden}.cap-mini-fill{border-radius:999px;height:100%}.cap-mini-fill.cap-ok{background:var(--ok-text)}.cap-mini-fill.cap-warn{background:var(--warn-solid)}.cap-mini-fill.cap-err{background:var(--danger)}.cap-nota{margin-top:6px;font-size:.72rem;font-weight:600}.cap-txt-ok{color:var(--ok-text)}.cap-txt-warn{color:var(--warn-text)}.cap-txt-err{color:var(--danger)}.cap-celda{min-width:120px}.cap-celda-top{justify-content:space-between;align-items:baseline;gap:6px;display:flex}.cap-celda-top strong{font-size:.95rem}.cap-celda-det{margin-top:4px;font-size:.68rem}.cap-barra-sm{height:14px;margin-top:5px}
