:root{--bg-base: #F4F5F7;--bg-surface: #FFFFFF;--bg-raised: #F8F9FA;--bg-overlay: #EDEEF0;--bg-hover: #E4E6EA;--border-subtle: #E8E9EC;--border-light: #D8DADE;--border-strong: #B8BCC4;--comb-brand: var(--blue-900);--comb-brand-dark: var(--blue-700);--blue-50: #F0F4FF;--blue-100: #E0E8FF;--blue-200: #C0D0F0;--blue-400: #6B8CC4;--blue-500: #4F72B0;--blue-600: #3A5A9A;--blue-700: #2E4880;--blue-900: #1A2D54;--sa-primary: var(--blue-900);--sa-primary-hover: #24386A;--sa-primary-light: var(--blue-50);--sage-100: #E8EFE8;--sage-500: #558055;--sa-sage: var(--sage-500);--stone-100: #F0EDE8;--stone-500: #7A6E60;--green-100: #E6F4EC;--green-500: #3A8054;--green-600: #2E6642;--sa-success: var(--green-500);--sa-success-light: var(--green-100);--red-100: #FAEAEA;--red-500: #A84848;--red-600: #8C3636;--sa-danger: var(--red-500);--sa-danger-light: var(--red-100);--yellow-100: #FBF5E0;--yellow-500: #A08030;--yellow-600: #806020;--sa-warning: var(--yellow-500);--sa-warning-light: var(--yellow-100);--text-primary: #1E2430;--text-secondary: #4A5568;--text-muted: #7A8699;--text-disabled: #B0BAC8;--text-inverse: #F8F9FA;--font-sans: "Figtree", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Courier New", monospace;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-md: 18px;--text-lg: 22px;--text-xl: 26px;--text-2xl: 32px;--text-3xl: 40px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--sp-12: 48px;--sp-16: 64px;--r-sm: 4px;--r-md: 7px;--r-lg: 11px;--r-xl: 16px;--r-full: 9999px;--shadow-xs: 0 1px 2px rgba(30,36,48,.06);--shadow-sm: 0 1px 4px rgba(30,36,48,.08), 0 1px 2px rgba(30,36,48,.04);--shadow-md: 0 4px 12px rgba(30,36,48,.1), 0 2px 4px rgba(30,36,48,.06);--shadow-lg: 0 8px 24px rgba(30,36,48,.12);--shadow-focus-blue: 0 0 0 3px rgba(79,114,176,.18);--shadow-focus-red: 0 0 0 3px rgba(196,100,100,.15);--t-fast: .1s ease;--t-base: .16s ease;--t-slow: .25s ease;--sidebar-width: 220px;--navbar-height: 60px;--content-max-width: 1440px;--row-zebra: rgba(15, 23, 42, .028);color-scheme:light}:root[data-theme=dark]{color-scheme:dark;--bg-base: #161B22;--bg-surface: #1C2128;--bg-raised: #22272E;--bg-overlay: #2D333B;--bg-hover: #373E47;--border-subtle: #2D333B;--border-light: #373E47;--border-strong: #444C56;--sa-primary: #1E4A78;--sa-primary-hover: #17395D;--sa-primary-light: #1C2A3A;--blue-700: #6E9EBF;--teal-500: #2D8F88;--sa-accent: #2D8F88;--sa-success: #238636;--sa-success-light: #122519;--green-600: #3FB950;--sa-danger: #DA3633;--sa-danger-light: #2D1111;--red-600: #F85149;--sa-warning: #BB8009;--sa-warning-light: #2A1F00;--yellow-600: #E3B341;--text-primary: #E6EDF3;--text-secondary: #8D96A0;--text-muted: #545D68;--text-disabled: #363D45;--text-inverse: #161B22;--row-zebra: rgba(255, 255, 255, .04);--shadow-sm: 0 1px 4px rgba(0,0,0,.35), 0 1px 2px rgba(0,0,0,.25);--shadow-md: 0 4px 12px rgba(0,0,0,.4);--shadow-lg: 0 8px 24px rgba(0,0,0,.5);--shadow-focus-blue: 0 0 0 3px rgba(56, 118, 168, .3);--shadow-focus-red: 0 0 0 3px rgba(218, 54, 51, .25)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#app{height:100%}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-primary);background:var(--bg-base);-webkit-font-smoothing:antialiased}a{color:var(--sa-primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}input,select{font-family:inherit;font-size:var(--text-base)}.btn{display:inline-flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4);border:1px solid transparent;border-radius:var(--r-md);font-size:var(--text-sm);font-weight:600;transition:background var(--t-fast),border-color var(--t-fast);background:var(--bg-surface);color:var(--text-secondary);border-color:var(--border-light)}.btn:hover{background:var(--bg-hover)}.btn-primary{background:var(--sa-primary);color:#fff;border-color:transparent}.btn-primary:hover{background:var(--sa-primary-hover)}.btn-sm{padding:var(--sp-1) var(--sp-3);font-size:var(--text-xs)}.btn:disabled{opacity:.55;cursor:not-allowed}.input,.select{width:100%;padding:var(--sp-2) var(--sp-3);border:1px solid var(--border-light);border-radius:var(--r-md);background:var(--bg-surface);color:var(--text-primary);transition:border-color var(--t-fast),box-shadow var(--t-fast)}.input:focus,.select:focus{outline:none;border-color:var(--sa-primary);box-shadow:var(--shadow-focus-blue)}.input:disabled,.select:disabled{background:var(--bg-base);color:var(--text-muted);cursor:not-allowed;border-color:var(--border-subtle);-webkit-text-fill-color:var(--text-muted);opacity:1}.field{display:flex;flex-direction:column;gap:var(--sp-1)}.field>label{font-size:var(--text-xs);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px}.card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-xl);box-shadow:var(--shadow-sm)}.card-pad{padding:var(--sp-5)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th{text-align:center!important;padding:var(--sp-3) var(--sp-3);background:var(--sa-primary);color:#fff;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.3px;border-bottom:1px solid var(--border-subtle);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.table th.acc-col{cursor:default}.table th[data-orden=asc]:after{content:" ▲";font-size:9px}.table th[data-orden=desc]:after{content:" ▼";font-size:9px}.tabla-arrastrando{cursor:grabbing!important;-webkit-user-select:none;user-select:none}.tabla-arrastrando *{cursor:grabbing!important}.table th.ord{cursor:pointer;-webkit-user-select:none;user-select:none}.table th.ord:hover{filter:brightness(1.12)}.table td{padding:var(--sp-3) var(--sp-3);border-bottom:1px solid var(--border-subtle);color:var(--text-secondary);white-space:nowrap;max-width:280px;overflow:hidden;text-overflow:ellipsis}.table td:not(:last-child){border-right:1px solid var(--border-subtle)}.table th:not(:last-child){border-right:1px solid rgba(255,255,255,.18)}.table tbody tr:nth-child(2n){background:var(--row-zebra)}.table tbody tr:hover{background:var(--bg-hover)}.table tbody tr{cursor:default}.table tbody tr.clickable{cursor:pointer}.badge{display:inline-flex;align-items:center;padding:2px var(--sp-2);border-radius:var(--r-full);font-size:var(--text-xs);font-weight:600;white-space:nowrap;background:var(--bg-overlay);color:var(--text-secondary)}.badge-green{background:var(--sa-success-light);color:var(--green-600)}.badge-red{background:var(--sa-danger-light);color:var(--red-600)}.badge-yellow{background:var(--sa-warning-light);color:var(--yellow-600)}.badge-blue{background:var(--sa-primary-light);color:var(--blue-700)}.muted{color:var(--text-muted)}.mono{font-family:var(--font-sans);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.row{display:flex;gap:var(--sp-3);align-items:center}.wrap{flex-wrap:wrap}.grow,.spacer{flex:1}.stack{display:flex;flex-direction:column;gap:var(--sp-4)}.page-title{font-size:var(--text-2xl);font-weight:700;color:var(--text-primary)}.eyebrow{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--sa-primary)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:var(--r-md);border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-secondary);cursor:pointer;padding:0;vertical-align:middle}.icon-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.icon-btn.danger{color:var(--sa-danger)}.icon-btn.danger:hover{background:color-mix(in srgb,var(--sa-danger) 12%,transparent);border-color:var(--sa-danger)}.icon-btn.primary{background:var(--sa-primary-light);border-color:var(--sa-primary);color:var(--sa-primary)}.icon-btn.primary:hover{background:var(--sa-primary);color:#fff}.icon-btn:disabled,.icon-btn.primary:disabled,.icon-btn.danger:disabled{opacity:.35;cursor:not-allowed;background:var(--bg-surface);border-color:var(--border-subtle);color:var(--text-muted)}.acciones{display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:nowrap;white-space:nowrap;width:104px;margin-inline:auto}.acciones .icon-btn{flex:1 1 0;width:auto}.acc-col{text-align:center}.btn-danger{background:var(--sa-danger);color:#fff;border-color:transparent}.btn-danger:hover{background:color-mix(in srgb,var(--sa-danger) 85%,black)}.badge-block{display:block;white-space:normal;line-height:1.5;padding:var(--sp-2) var(--sp-3)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:grid;place-items:center;z-index:50;padding:var(--sp-4)}.modal{background:var(--bg-surface);border-radius:var(--r-xl);box-shadow:0 12px 44px #0f172a47;width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4);border-bottom:1px solid var(--border-subtle)}.modal-title{font-size:var(--text-md);font-weight:700;color:var(--text-primary);margin:0;flex:1}.modal-x{border:none;background:none;font-size:var(--text-lg);color:var(--text-muted);cursor:pointer;line-height:1;padding:0 var(--sp-1)}.modal-x:hover{color:var(--text-primary)}.modal-body{padding:var(--sp-4);overflow-y:auto}.modal-foot{display:flex;justify-content:flex-end;gap:var(--sp-2);padding:var(--sp-4);border-top:1px solid var(--border-subtle)}.req{color:var(--sa-danger)}.filtros{--control-h: 38px;display:flex;gap:var(--sp-4);align-items:flex-end;flex-wrap:wrap}.filtros .input,.filtros .select,.filtros .btn{height:var(--control-h)}.filtros-card{border:1px solid var(--border-subtle);border-radius:var(--r-lg);padding:var(--sp-3) var(--sp-4);background:var(--bg-surface)}.card-tabla{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.table tbody.cargando{opacity:.45;pointer-events:none}.aro-mini{display:inline-block;width:14px;height:14px;vertical-align:-2px;border:2px solid var(--border-light);border-top-color:var(--sa-primary);border-radius:50%;animation:aro-girar .8s linear infinite}@keyframes aro-girar{to{transform:rotate(360deg)}}.vacio{padding:var(--sp-5);color:var(--text-muted);font-size:var(--text-sm);text-align:center}.table thead th:not(.acc-col):not(:empty):not([data-orden]):after{content:" ↕";font-size:9px;opacity:.55}.banda-sin-sede[data-v-633d47e6],.banda-ensayo[data-v-633d47e6]{margin:var(--sp-4) var(--sp-6) 0;padding:var(--sp-3) var(--sp-4);background:var(--amber-50, #fffbeb);color:var(--amber-800, #92400e);border:1px solid var(--amber-200, #fde68a);border-radius:var(--r-md, 8px);font-size:var(--text-sm)}.layout[data-v-633d47e6]{display:flex;min-height:100%}.sidebar[data-v-633d47e6]{width:var(--sidebar-width);flex-shrink:0;background:var(--bg-surface);border-right:1px solid var(--border-subtle);display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand[data-v-633d47e6]{display:flex;gap:var(--sp-2);align-items:center;padding:var(--sp-3);background:var(--sa-primary);color:#fff}.brand-logo[data-v-633d47e6]{flex-shrink:0;width:32px;height:32px;object-fit:contain}.brand-name[data-v-633d47e6]{font-weight:700;font-size:var(--text-sm);color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-sub[data-v-633d47e6]{font-size:10px;color:#ffffffb8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brand-text[data-v-633d47e6]{flex:1;min-width:0}.brand-toggle[data-v-633d47e6]{flex-shrink:0;display:inline-grid;place-items:center;width:26px;height:26px;border:none;border-radius:var(--r-sm, 6px);background:#ffffff24;color:#fff;cursor:pointer}.brand-toggle[data-v-633d47e6]:hover{background:#ffffff42}.brand-toggle svg[data-v-633d47e6]{width:15px;height:15px}.nav[data-v-633d47e6]{display:flex;flex-direction:column;gap:2px;padding:var(--sp-3) var(--sp-2);flex:1;min-height:0;overflow-y:auto}.nav-item[data-v-633d47e6]{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);color:var(--text-secondary);font-size:var(--text-sm);font-weight:500;text-decoration:none;transition:background var(--t-fast)}.nav-item[data-v-633d47e6]:hover{background:var(--bg-hover);text-decoration:none}.nav-item.active[data-v-633d47e6]{background:var(--sa-primary-light);color:var(--blue-700);font-weight:600}.nav-ico[data-v-633d47e6]{display:inline-grid;place-items:center;width:18px;height:18px;color:var(--text-muted)}.nav-item.active .nav-ico[data-v-633d47e6]{color:var(--blue-700)}.nav-group[data-v-633d47e6]{width:100%;border:none;background:none;text-align:left;font-family:inherit;cursor:pointer}.nav-lbl[data-v-633d47e6]{flex:1}.chev[data-v-633d47e6]{color:var(--text-muted);transition:transform var(--t-fast);flex-shrink:0}.chev.open[data-v-633d47e6]{transform:rotate(180deg)}.subnav[data-v-633d47e6]{display:flex;flex-direction:column;gap:2px;margin:2px 0 6px;padding-left:30px}.subitem[data-v-633d47e6]{display:flex;align-items:center;gap:var(--sp-2);padding:7px var(--sp-3);border-radius:var(--r-md);color:var(--text-secondary);font-size:var(--text-sm);text-decoration:none;transition:background var(--t-fast),color var(--t-fast)}.subitem[data-v-633d47e6]:before{content:"";width:5px;height:5px;border-radius:50%;background:var(--border-light);flex-shrink:0}.subitem[data-v-633d47e6]:hover{background:var(--bg-hover);color:var(--text-primary);text-decoration:none}.subitem[data-v-633d47e6]:hover:before{background:var(--text-muted)}.subitem.active[data-v-633d47e6]{background:var(--sa-primary-light);color:var(--blue-700);font-weight:600}.subitem.active[data-v-633d47e6]:before{background:var(--sa-primary)}.sub-lbl[data-v-633d47e6]{flex:1}.sub-badge[data-v-633d47e6]{flex-shrink:0;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-full);background:var(--sa-danger);color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;line-height:1}.sidebar-bottom[data-v-633d47e6]{margin-top:auto;padding:var(--sp-2);border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:2px}.sidebar-foot[data-v-633d47e6]{padding:var(--sp-2) var(--sp-3) var(--sp-1);font-size:var(--text-xs)}.main[data-v-633d47e6]{flex:1;display:flex;flex-direction:column;min-width:0}.navbar[data-v-633d47e6]{height:var(--navbar-height);background:var(--bg-surface);border-bottom:1px solid var(--border-subtle);display:flex;align-items:center;gap:var(--sp-4);padding:0 var(--sp-6);position:sticky;top:0;z-index:5}.nav-title[data-v-633d47e6]{font-size:var(--text-lg);font-weight:700;color:var(--text-primary);margin:0}.servicio[data-v-633d47e6]{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap}.grupo-sel[data-v-633d47e6]{max-width:220px;font-size:var(--text-sm);padding:4px 8px}.asistencia-wsp[data-v-633d47e6]{display:inline-flex;align-items:center;gap:6px;text-decoration:none;background:#25d366;color:#fff;border-radius:999px;padding:5px 12px 5px 9px;font-weight:700;font-size:var(--text-sm);white-space:nowrap}.asistencia-wsp[data-v-633d47e6]:hover{background:#1ebe5d}@media(max-width:640px){.asist-label[data-v-633d47e6]{display:none}}.servicio .tilde[data-v-633d47e6]{color:var(--green-600);font-weight:700}.servicio.mal[data-v-633d47e6]{color:var(--red-600);font-weight:600}.theme-btn[data-v-633d47e6]{display:inline-grid;place-items:center;width:36px;height:36px;border-radius:var(--r-md);border:1px solid var(--border-subtle);background:var(--bg-surface);color:var(--text-secondary);transition:background var(--t-fast),color var(--t-fast)}.theme-btn[data-v-633d47e6]:hover{background:var(--bg-hover);color:var(--text-primary)}.usermenu[data-v-633d47e6]{position:relative}.userbtn[data-v-633d47e6]{display:flex;align-items:center;gap:var(--sp-2);padding:4px 10px 4px 4px;border-radius:var(--r-full);border:1px solid transparent;background:none;color:var(--text-primary);font-family:inherit;transition:background var(--t-fast)}.userbtn[data-v-633d47e6]:hover,.userbtn.open[data-v-633d47e6]{background:var(--bg-hover);border-color:var(--border-subtle)}.userbtn .chev[data-v-633d47e6]{color:var(--text-muted);transition:transform var(--t-fast)}.userbtn .chev.open[data-v-633d47e6]{transform:rotate(180deg)}.uname[data-v-633d47e6]{font-size:var(--text-sm);font-weight:600}.uterm[data-v-633d47e6]{font-size:var(--text-xs);color:var(--sa-primary);font-weight:600}:root[data-theme=dark] .uterm[data-v-633d47e6]{color:var(--blue-700)}.uroles[data-v-633d47e6]{font-size:var(--text-xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.avatar[data-v-633d47e6]{width:30px;height:30px;border-radius:var(--r-full);background:var(--sa-primary);color:#fff;display:grid;place-items:center;font-weight:700;font-size:var(--text-sm)}.usermenu-panel[data-v-633d47e6]{position:absolute;right:0;top:calc(100% + 6px);min-width:220px;z-index:20;padding:var(--sp-2);box-shadow:var(--shadow-lg, 0 8px 24px rgba(0, 0, 0, .14))}.usermenu-head[data-v-633d47e6]{padding:var(--sp-2) var(--sp-3) var(--sp-3);border-bottom:1px solid var(--border-subtle);margin-bottom:var(--sp-2)}.usermenu-item[data-v-633d47e6]{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-2) var(--sp-3);border:none;background:none;border-radius:var(--r-md);color:var(--text-primary);font-family:inherit;font-size:var(--text-sm);text-align:left;transition:background var(--t-fast)}.usermenu-item[data-v-633d47e6]:hover{background:var(--bg-hover)}.usermenu-item.salir[data-v-633d47e6]{color:var(--sa-danger, #b3261e)}.content[data-v-633d47e6]{padding:var(--sp-6);max-width:var(--content-max-width);width:100%;margin:0 auto}.content.ancho-completo[data-v-633d47e6]{max-width:none}.toast-exito[data-v-633d47e6]{position:fixed;top:calc(var(--navbar-height) + 12px);left:50%;transform:translate(-50%);z-index:80;display:flex;align-items:center;gap:var(--sp-2);background:var(--green-600, #16a34a);color:#fff;font-size:var(--text-sm);font-weight:600;padding:10px 18px;border-radius:var(--r-full, 999px);box-shadow:0 4px 16px #00000038}.toast-enter-active[data-v-633d47e6],.toast-leave-active[data-v-633d47e6]{transition:opacity .25s,transform .25s}.toast-enter-from[data-v-633d47e6],.toast-leave-to[data-v-633d47e6]{opacity:0;transform:translate(-50%) translateY(-8px)}.carg-overlay[data-v-5b2740eb]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:200;display:grid;place-items:center;background:#0f172a52;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);cursor:progress}.carg-box[data-v-5b2740eb]{display:flex;flex-direction:column;align-items:center;gap:var(--sp-4);background:var(--bg-surface);color:var(--text-primary);padding:40px 60px;border-radius:var(--r-xl);font-weight:600}.carg-txt[data-v-5b2740eb]{font-size:var(--text-lg)}.pico[data-v-5b2740eb]{display:block}.cuerpo[data-v-5b2740eb]{fill:var(--sa-primary)}.drop[data-v-5b2740eb]{transform-box:fill-box;transform-origin:center;animation:drip-5b2740eb 1.9s ease-in infinite}@keyframes drip-5b2740eb{0%{transform:translateY(-6px);opacity:0}16%{opacity:1}62%{opacity:1}to{transform:translateY(96px);opacity:0}}.carg-fade-enter-active[data-v-5b2740eb],.carg-fade-leave-active[data-v-5b2740eb]{transition:opacity .15s ease}.carg-fade-enter-from[data-v-5b2740eb],.carg-fade-leave-to[data-v-5b2740eb]{opacity:0}@media(prefers-reduced-motion:reduce){.drop[data-v-5b2740eb]{animation-duration:3.6s}}.lineas[data-v-80f1ea7f]{display:grid;grid-template-columns:max-content 1fr;gap:var(--sp-1) var(--sp-4);margin:0;font-size:var(--text-sm)}.lineas dt[data-v-80f1ea7f]{color:var(--text-muted)}.lineas dd[data-v-80f1ea7f]{margin:0;font-weight:600;color:var(--text-primary)}
