:root {
  --bg:     #0d0c14; --bg2:    #191728; --bg3:    #201e32;
  --border: #2a2740; --border2:#3a3660;
  --p:      #8b5cf6; --p2:     #7c3aed; --p-soft: #a78bfa;
  --teal:   #14b8a6; --teal2:  #0d9488;
  --amber:  #f59e0b; --amber2: #d97706;
  --green:  #22c55e; --green2: #16a34a;
  --err:    #ef4444; --warn:   #f59e0b; --ok:#22c55e;
  --text:   #e8e6f5; --text2:  #a09dc0; --text3: #6b689a;
  --radius: 16px; --radius-sm: 10px;
  --font:   'Inter', system-ui, sans-serif;
  --mono:   'DM Mono', monospace;
  --nb-h:   68px; --tb-h: 52px;
}
[data-theme="light"] {
  --bg:#f0eeff; --bg2:#ffffff; --bg3:#e8e4ff;
  --border:#d4cff0; --border2:#bfb8ee;
  --text:#1a1740; --text2:#4a4670; --text3:#8b88b0;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html,body{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);font-size:15px;line-height:1.5;-webkit-text-size-adjust:100%;}
button{cursor:pointer;font-family:inherit;border:none;background:none;}

input,textarea,select{font-family:inherit;font-size:16px;background:var(--bg3);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:11px 14px;outline:none;transition:border-color .2s;width:100%;}
input:focus,textarea:focus,select:focus{border-color:var(--p);}
textarea{resize:vertical;}
a{color:var(--p-soft);}
svg{flex-shrink:0;}

.hidden{display:none!important;}
.w100{width:100%;justify-content:center;}
.text2{color:var(--text2);}
.text3{color:var(--text3);}
.brand-dot{color:var(--p);}

.btn-primary{display:inline-flex;align-items:center;gap:7px;background:var(--p);color:#fff;padding:12px 22px;border-radius:var(--radius-sm);font-weight:700;font-size:14px;transition:opacity .15s,transform .1s;}
.btn-primary:hover{opacity:.88;}
.btn-primary:active{transform:scale(.98);}
.btn-primary:disabled{opacity:.4;pointer-events:none;}
.btn-ghost{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border2);color:var(--text2);padding:9px 16px;border-radius:var(--radius-sm);font-size:13px;background:transparent;transition:background .15s;}
.btn-ghost:hover{background:var(--bg3);}
.btn-gold{display:inline-flex;align-items:center;gap:5px;background:var(--amber);color:#1a0f00;padding:8px 16px;border-radius:var(--radius-sm);font-weight:700;font-size:13px;}
.btn-gold:hover{opacity:.88;}
.btn-sm{padding:6px 12px!important;font-size:12px!important;border-radius:8px!important;}
.btn-teal{background:var(--teal);color:#fff;padding:10px 20px;border-radius:var(--radius-sm);font-weight:700;font-size:14px;}
.icon-btn{color:var(--text2);padding:7px;border-radius:10px;display:flex;align-items:center;transition:color .15s,background .15s;}
.icon-btn:hover{color:var(--text);background:var(--bg3);}
.form-row{display:flex;flex-direction:column;gap:6px;}
.form-row label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);}
.chip{display:inline-flex;align-items:center;background:var(--bg3);border:1px solid var(--border);color:var(--text2);border-radius:20px;padding:3px 10px;font-size:12px;font-weight:600;}

#loading{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg);z-index:9999;flex-direction:column;gap:14px;font-size:13px;color:var(--text3);}
.loading-ring{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--p);border-radius:50%;animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg);}}
.toast{position:fixed;top:calc(var(--tb-h) + 10px);left:50%;transform:translateX(-50%) translateY(-8px);background:var(--bg3);color:var(--text);border:1px solid var(--border);border-radius:12px;padding:10px 18px;font-size:13px;font-weight:600;z-index:9999;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;white-space:nowrap;max-width:90vw;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.toast.success{background:#052e16;border-color:#22c55e;color:#bbf7d0;}
.toast.error{background:#2d0000;border-color:#ef4444;color:#fecaca;}
.toast.warn{background:#2d1a00;border-color:#f59e0b;color:#fde68a;}

#view-login,#view-bienvenida{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:20px;}
.login-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:36px 28px;width:100%;max-width:360px;display:flex;flex-direction:column;gap:24px;}
.login-logo{display:flex;flex-direction:column;align-items:center;gap:10px;}
.login-logo-icon{width:60px;height:60px;background:var(--p);border-radius:18px;display:flex;align-items:center;justify-content:center;font-size:26px;}
.login-logo h1{font-size:1.8rem;font-weight:800;letter-spacing:-.03em;}
.login-logo p{font-size:13px;color:var(--text3);}
.login-form{display:flex;flex-direction:column;gap:12px;}
#login-btn{width:100%;}
.login-error{color:var(--err);font-size:13px;padding:9px 12px;background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.2);border-radius:var(--radius-sm);}
.pin-hint{font-size:12px;color:var(--text3);text-align:center;margin-top:2px;line-height:1.4;}
#view-bienvenida{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg);padding:20px;}

#app{display:flex;flex-direction:column;height:100dvh;overflow:hidden;}

.topbar{height:calc(var(--tb-h) + env(safe-area-inset-top,0px));display:flex;align-items:center;justify-content:space-between;padding:env(safe-area-inset-top,0px) 16px 0;background:var(--bg);border-bottom:1px solid var(--border);flex-shrink:0;z-index:50;}
.topbar-brand{display:flex;align-items:center;gap:8px;}
.brand-icon{font-size:18px;}
.brand-name{font-size:1.1rem;font-weight:800;letter-spacing:-.02em;}
.topbar-actions{display:flex;align-items:center;gap:8px;}
.avatar-btn{cursor:pointer;}
.avatar-circle{width:32px;height:32px;border-radius:50%;background:var(--p);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;}

.avatar-overlay{position:fixed;inset:0;z-index:199;}
.avatar-menu{position:fixed;top:calc(var(--tb-h) + env(safe-area-inset-top,0px) + 6px);right:12px;background:var(--bg2);border:1px solid var(--border);border-radius:14px;width:240px;z-index:200;padding:4px;box-shadow:0 8px 32px rgba(0,0,0,.5);}
.av-header{display:flex;align-items:center;gap:10px;padding:12px 10px;}
.av-big{width:42px;height:42px;border-radius:50%;background:var(--p);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;flex-shrink:0;}
.av-name{font-size:14px;font-weight:700;}
.av-role{font-size:12px;color:var(--text3);}
.av-divider{height:1px;background:var(--border);margin:2px 0;}
.av-item{display:flex;align-items:center;gap:9px;width:100%;padding:10px 12px;border-radius:10px;font-size:13px;color:var(--text2);transition:background .15s;}
.av-item:hover{background:var(--bg3);color:var(--text);}
.av-logout{color:var(--err)!important;}
.av-logout:hover{background:rgba(239,68,68,.1)!important;}

.main{flex:1;overflow-y:auto;padding:16px 16px calc(var(--nb-h) + 16px);-webkit-overflow-scrolling:touch;}
.section{display:none;}
.section.active{display:block;animation:fadeUp .18s ease;}
@keyframes fadeUp{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}

.navbar-bottom{
  position:fixed;bottom:0;left:0;right:0;height:var(--nb-h);
  display:flex;align-items:stretch;z-index:100;
  padding-bottom:env(safe-area-inset-bottom,0);
  background:rgba(25,23,40,.68);
  border-top:1px solid rgba(255,255,255,.08);
  backdrop-filter:blur(22px) saturate(180%);
  -webkit-backdrop-filter:blur(22px) saturate(180%);
  box-shadow:0 -8px 32px rgba(0,0,0,.25);
}
[data-theme="light"] .navbar-bottom{
  background:rgba(255,255,255,.7);
  border-top:1px solid rgba(26,23,64,.08);
  box-shadow:0 -8px 32px rgba(60,50,120,.1);
}

.nav-indicator{
  position:absolute;top:8px;left:0;width:0;
  bottom:calc(env(safe-area-inset-bottom,0px) + 8px);
  border-radius:16px;
  background:linear-gradient(135deg, rgba(139,92,246,.4), rgba(124,58,237,.28));
  border:1px solid rgba(167,139,250,.45);
  box-shadow:0 4px 18px rgba(139,92,246,.3), inset 0 1px 0 rgba(255,255,255,.14);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  transition:transform .38s cubic-bezier(.34,1.56,.64,1),width .38s cubic-bezier(.34,1.56,.64,1),opacity .2s;
  pointer-events:none;z-index:0;opacity:0;will-change:transform,width;
}
.nav-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 2px;color:var(--text3);font-size:8px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;position:relative;z-index:1;transition:color .2s;min-width:0;}
.nav-btn svg{stroke:currentColor;width:20px;height:20px;flex-shrink:0;transition:transform .25s cubic-bezier(.34,1.56,.64,1);}
.nav-btn span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.nav-btn.active{color:#fff;}
.nav-btn.active svg{transform:translateY(-1px) scale(1.06);}
.nav-btn:hover:not(.active){color:var(--text2);}
.nav-badge{position:absolute;top:4px;right:calc(50% - 18px);background:var(--amber);color:#1a0f00;border-radius:20px;font-size:8px;font-weight:800;padding:1px 4px;min-width:14px;text-align:center;z-index:2;}

.wlc-greeting{font-size:1.8rem;font-weight:800;letter-spacing:-.02em;margin-bottom:4px;}
.wlc-sub{font-size:14px;color:var(--text3);margin-bottom:18px;}

.next-svc-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:18px;margin-bottom:14px;}
.next-svc-label{font-size:12px;font-weight:700;color:var(--p);text-transform:uppercase;letter-spacing:.07em;margin-bottom:8px;}
.next-svc-role-badge{float:right;background:rgba(20,184,166,.15);border:1px solid rgba(20,184,166,.35);color:var(--teal);border-radius:20px;padding:4px 12px;font-size:12px;font-weight:700;}
.next-svc-tipo{font-size:1.4rem;font-weight:800;margin-bottom:4px;}
.next-svc-meta{font-size:13px;color:var(--text3);display:flex;align-items:center;gap:6px;margin-bottom:14px;}
.next-svc-bottom{display:flex;align-items:center;justify-content:space-between;}
.next-svc-status{font-size:13px;color:var(--text2);}
.next-svc-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--ok);margin-right:5px;}

.aviso-card{background:var(--bg2);border:1px solid rgba(245,158,11,.3);border-left:3px solid var(--amber);border-radius:var(--radius);padding:14px 16px;margin-bottom:14px;}
.aviso-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.aviso-icon{color:var(--amber);font-size:15px;}
.aviso-title{font-size:14px;font-weight:700;color:var(--amber);}
.aviso-texto{font-size:13px;color:var(--text2);line-height:1.55;margin-bottom:8px;}
.aviso-footer{font-size:11px;color:var(--text3);}
.aviso-imp{color:var(--amber);font-weight:700;}

.wlc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;}
.wlc-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:18px 16px;cursor:pointer;transition:border-color .15s,transform .1s;position:relative;}
.wlc-card:hover{border-color:var(--border2);transform:translateY(-2px);}
.wlc-card:active{transform:scale(.97);}
.wlc-card-icon{width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;margin-bottom:12px;}
.wlc-card-icon svg{width:22px;height:22px;}
.wlc-card-name{font-size:15px;font-weight:700;margin-bottom:3px;}
.wlc-card-sub{font-size:12px;color:var(--text3);}
.wlc-badge{position:absolute;top:10px;right:10px;background:var(--amber);color:#1a0f00;border-radius:20px;font-size:10px;font-weight:800;padding:2px 7px;min-width:18px;text-align:center;}
.wlc-agenda .wlc-card-icon{background:rgba(139,92,246,.15);color:var(--p);}
.wlc-ensayo .wlc-card-icon{background:rgba(245,158,11,.12);color:var(--amber);}
.wlc-banco  .wlc-card-icon{background:rgba(34,197,94,.1);color:var(--ok);}
.wlc-voz    .wlc-card-icon{background:rgba(99,102,241,.12);color:#818cf8;}

.wlc-admin-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;display:flex;align-items:center;gap:14px;cursor:pointer;transition:border-color .15s;margin-top:2px;}
.wlc-admin-card:hover{border-color:var(--border2);}
.wlc-admin-icon{width:46px;height:46px;border-radius:13px;background:rgba(245,158,11,.15);color:var(--amber);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.wlc-admin-info{flex:1;}
.wlc-admin-name{font-size:15px;font-weight:700;}
.wlc-admin-sub{font-size:12px;color:var(--text3);}
.wlc-admin-arrow{color:var(--text3);}

.agenda-header{display:flex;align-items:baseline;gap:10px;margin-bottom:16px;}
.agenda-header h2{font-size:1.6rem;font-weight:800;}
.agenda-count{font-size:14px;color:var(--text3);}
.filter-tabs{display:flex;background:var(--bg2);border:1px solid var(--border);border-radius:25px;padding:3px;margin-bottom:20px;gap:2px;}
.filter-tab{flex:1;padding:8px 12px;border-radius:22px;font-size:13px;font-weight:600;color:var(--text3);transition:background .15s,color .15s;text-align:center;}
.filter-tab.active{background:var(--p);color:#fff;}
.filter-tab:hover:not(.active){color:var(--text);}
.month-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text3);margin-bottom:12px;margin-top:4px;}

.svc-card-v2{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:14px;}
.svc-card-top{padding:14px 16px 10px;}
.svc-card-date-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.svc-card-date{font-size:13px;font-weight:600;color:var(--p);}
.svc-card-badge-prox{background:rgba(139,92,246,.15);border:1px solid rgba(139,92,246,.3);color:var(--p-soft);border-radius:20px;padding:3px 10px;font-size:11px;font-weight:700;}
.svc-card-badge-reg{background:var(--bg3);border:1px solid var(--border);color:var(--text3);border-radius:20px;padding:3px 10px;font-size:11px;font-weight:700;}
.svc-card-badge-esp{background:rgba(20,184,166,.12);border:1px solid rgba(20,184,166,.3);color:var(--teal);border-radius:20px;padding:3px 10px;font-size:11px;font-weight:700;}
.svc-card-tipo{font-size:1.2rem;font-weight:800;margin-bottom:4px;}
.svc-card-time{font-size:13px;color:var(--text3);display:flex;align-items:center;gap:5px;margin-bottom:10px;}
.svc-sirve{display:flex;align-items:center;gap:8px;background:rgba(20,184,166,.08);border:1px solid rgba(20,184,166,.2);border-radius:10px;padding:10px 14px;margin-bottom:10px;}
.svc-sirve-icon{font-size:16px;}
.svc-sirve-text{font-size:14px;color:var(--text2);}
.svc-sirve-rol{color:var(--teal);font-weight:700;}
.svc-no-prog{display:flex;align-items:center;gap:8px;background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:10px;font-size:13px;color:var(--text3);}
.svc-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;}
.svc-chip{display:inline-flex;align-items:center;gap:5px;border-radius:20px;padding:5px 10px;font-size:12px;font-weight:600;}
.svc-chip-ok{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.25);color:var(--ok);}
.svc-chip-warn{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.25);color:var(--amber);}
.svc-chip-gray{background:var(--bg3);border:1px solid var(--border);color:var(--text3);}
.svc-team-row{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-top:1px solid var(--border);background:var(--bg);}
.svc-avatars{display:flex;}
.svc-avatar-mini{width:28px;height:28px;border-radius:50%;background:var(--p);color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg2);margin-left:-6px;}
.svc-avatar-mini:first-child{margin-left:0;}
.svc-integrantes{font-size:12px;color:var(--text3);margin-left:8px;}
.svc-ver-equipo{font-size:12px;font-weight:700;color:var(--p-soft);display:flex;align-items:center;gap:3px;}
.svc-btn-canciones{display:block;width:calc(100% - 32px);margin:10px 16px 14px;background:var(--p);color:#fff;padding:12px;border-radius:12px;font-size:14px;font-weight:700;text-align:center;transition:opacity .15s;}
.svc-btn-canciones:hover{opacity:.88;}
.empty-state{display:flex;flex-direction:column;align-items:center;padding:50px 20px;text-align:center;gap:10px;color:var(--text3);}

.banco-header{display:flex;align-items:baseline;gap:8px;margin-bottom:14px;}
.banco-header h2{font-size:1.6rem;font-weight:800;}
.banco-count{font-size:14px;color:var(--text3);}
.banco-search-wrap{position:relative;margin-bottom:12px;}
.banco-search-wrap svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text3);pointer-events:none;}
#banco-search-v2{padding-left:38px;background:var(--bg2);}
.banco-filter-row{display:flex;background:var(--bg2);border:1px solid var(--border);border-radius:25px;padding:3px;margin-bottom:16px;gap:2px;}
.banco-filter-tab{flex:1;padding:7px 8px;border-radius:22px;font-size:12px;font-weight:600;color:var(--text3);text-align:center;transition:background .15s,color .15s;}
.banco-filter-tab.active{background:var(--p);color:#fff;}
.banco-filter-tab:hover:not(.active){color:var(--text);}
.banco-prox-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text3);margin-bottom:10px;}
.song-card-v2{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px;}
.song-card-v2-top{display:flex;align-items:center;gap:12px;margin-bottom:12px;}

.song-info-v2{flex:1;min-width:0;}
.song-title-v2{font-size:15px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px;}
.song-artist-v2{font-size:13px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.song-star{font-size:18px;color:var(--border2);cursor:pointer;transition:color .15s;flex-shrink:0;}
.song-star.active{color:var(--amber);}
.song-tags-v2{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;}
.stag{display:inline-flex;align-items:center;border-radius:20px;padding:4px 10px;font-size:11px;font-weight:600;}
.stag-gray{background:var(--bg3);border:1px solid var(--border);color:var(--text3);}
.stag-warn{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.2);color:#fca5a5;}
.stag-new{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.25);color:var(--ok);}
.stag-svc{background:rgba(139,92,246,.12);border:1px solid rgba(139,92,246,.25);color:var(--p-soft);}
.song-btns-v2{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;}
.song-action-btn{background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:9px 6px;font-size:12px;font-weight:700;color:var(--text2);transition:background .15s,color .15s,border-color .15s;text-align:center;}
.song-action-btn:hover{background:rgba(139,92,246,.12);border-color:rgba(139,92,246,.3);color:var(--p-soft);}

.admin-tabs{display:flex;background:var(--bg2);border:1px solid var(--border);border-radius:25px;padding:3px;margin-bottom:18px;gap:2px;}
.admin-tab{flex:1;padding:8px 10px;border-radius:22px;font-size:12px;font-weight:700;color:var(--text3);text-align:center;transition:background .15s,color .15s;}
.admin-tab.active{background:var(--p);color:#fff;}
.admin-tab-panel{display:none;}
.admin-tab-panel.active{display:block;}
.admin-section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);margin-bottom:12px;}
.admin-user-list{display:flex;flex-direction:column;gap:8px;}
.admin-user-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;}
.admin-user-left{display:flex;align-items:center;gap:10px;flex:1;min-width:0;}
.admin-user-av{width:36px;height:36px;border-radius:50%;background:var(--p);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex-shrink:0;}
.admin-user-name{font-size:14px;font-weight:700;}
.admin-user-roles{font-size:11px;color:var(--text3);margin-top:1px;}
.admin-edit-btn{background:var(--bg3);border:1px solid var(--border2);color:var(--text2);padding:6px 12px;border-radius:8px;font-size:12px;font-weight:700;white-space:nowrap;}
.admin-edit-panel{display:none;background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;margin-top:6px;}
.admin-edit-panel.open{display:block;}
.admin-roles-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:8px 0;}
.admin-role-chip{display:flex;align-items:center;gap:7px;padding:8px 10px;background:var(--bg2);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:13px;transition:border-color .12s,background .12s;}
.admin-role-chip:hover{border-color:var(--border2);}
.admin-role-chip.selected{background:rgba(139,92,246,.1);border-color:rgba(139,92,246,.35);color:var(--p-soft);}
.admin-role-chip input{width:14px;height:14px;accent-color:var(--p);flex-shrink:0;}
.admin-lider-row{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg2);border:1px solid var(--border);border-radius:8px;margin-bottom:10px;font-size:13px;}
.admin-lider-row input{width:14px;height:14px;accent-color:var(--amber);}
.admin-save-row{display:flex;gap:8px;margin-top:10px;}
.admin-svc-list{display:flex;flex-direction:column;gap:10px;}
.admin-svc-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;}
.admin-svc-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;gap:10px;}
.admin-svc-date{font-size:11px;font-weight:700;color:var(--text3);}
.admin-svc-tipo{font-size:14px;font-weight:700;margin-top:1px;}
.admin-svc-edit-btn{background:var(--bg3);border:1px solid var(--border);color:var(--text2);padding:5px 10px;border-radius:7px;font-size:12px;font-weight:700;white-space:nowrap;}
.admin-svc-body{display:none;padding:12px 14px;border-top:1px solid var(--border);}
.admin-svc-body.open{display:block;}
.admin-rol-group{margin-bottom:12px;}
.admin-rol-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);margin-bottom:6px;}
.admin-rol-checks{display:flex;flex-direction:column;gap:4px;}
.admin-rol-check{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--bg3);border:1px solid var(--border);border-radius:7px;cursor:pointer;font-size:13px;transition:border-color .12s;}
.admin-rol-check:hover{border-color:var(--border2);}
.admin-rol-check.assigned{border-color:rgba(34,197,94,.35);background:rgba(34,197,94,.06);color:var(--ok);}
.admin-rol-check input{width:14px;height:14px;accent-color:var(--ok);}
.admin-save-equipo-btn{width:100%;margin-top:10px;}

.aviso-admin-card{background:var(--bg2);border:1px solid rgba(245,158,11,.25);border-left:3px solid var(--amber);border-radius:var(--radius-sm);padding:12px 14px;margin-bottom:8px;}
.aviso-admin-msg{font-size:14px;color:var(--text);margin-bottom:6px;}
.aviso-admin-meta{font-size:11px;color:var(--text3);}
.aviso-del-btn{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.2);color:var(--err);padding:5px 10px;border-radius:7px;font-size:12px;font-weight:700;margin-top:8px;}
.btn-danger-sm{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.25);color:var(--err);padding:9px 14px;border-radius:var(--radius-sm);font-size:12px;font-weight:700;white-space:nowrap;transition:background .15s;}
.btn-danger-sm:hover{background:rgba(239,68,68,.18);}
.btn-danger-sm:disabled{opacity:.5;pointer-events:none;}

.cal-picker{background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;margin-top:10px;}
.cal-picker-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.cal-month-label{font-size:13px;font-weight:700;color:var(--text);}
.cal-nav-btn{color:var(--text3);padding:4px 8px;border-radius:7px;font-size:16px;transition:background .12s;}
.cal-nav-btn:hover{background:var(--border);}
.cal-days-header{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px;}
.cal-day-name{text-align:center;font-size:10px;font-weight:700;color:var(--text3);text-transform:uppercase;}
.cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;}
.cal-day{text-align:center;padding:7px 2px;border-radius:7px;font-size:13px;cursor:pointer;transition:background .1s,color .1s;}
.cal-day:hover:not(.empty){background:var(--border);}
.cal-day.selected{background:var(--p);color:#fff!important;}
.cal-day.in-range{background:rgba(139,92,246,.15);color:var(--p-soft);}
.cal-day.empty{visibility:hidden;}
.cal-day.today{border:1px solid var(--p);color:var(--p);}
.cal-range-info{font-size:12px;color:var(--text3);margin-top:8px;text-align:center;}

.cs-accordion{display:flex;flex-direction:column;gap:6px;}
.cs-acc-item{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;}
.cs-acc-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 14px;font-size:14px;font-weight:700;color:var(--text);cursor:pointer;transition:background .12s;}
.cs-acc-trigger:hover{background:var(--bg3);}
.cs-acc-trigger-left{display:flex;align-items:center;gap:8px;}
.cs-acc-icon{font-size:15px;}
.cs-acc-badge{font-size:10px;font-weight:800;background:var(--p);color:#fff;border-radius:20px;padding:1px 7px;}
.cs-acc-badge.empty{background:var(--bg3);color:var(--text3);}
.cs-acc-chevron{color:var(--text3);transition:transform .2s;}
.cs-acc-chevron.open{transform:rotate(180deg);}
.cs-acc-body{display:none;padding:12px 14px;border-top:1px solid var(--border);}
.cs-acc-body.open{display:block;}
.cs-check-list{display:flex;flex-direction:column;gap:5px;}
.cs-check-item{display:flex;align-items:center;gap:9px;padding:9px 12px;background:var(--bg3);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:14px;color:var(--text);transition:border-color .12s;}
.cs-check-item:hover{border-color:var(--border2);}
.cs-check-item.selected{border-color:var(--p);color:var(--p-soft);}
.cs-check-item.selected-radio{border-color:var(--p);border-left:3px solid var(--p);color:var(--p-soft);}
.cs-check-item input{width:15px;height:15px;accent-color:var(--p);flex-shrink:0;}
.cs-empty-note{font-size:12px;color:var(--text3);font-style:italic;}
.limit-toggle{display:flex;flex-direction:column;gap:6px;}
.limit-toggle label{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer;}
.limit-toggle input[type=radio]{accent-color:var(--p);}
#cs-limit-num{margin-top:4px;}

.song-picker{position:relative;}
.song-picker-search{position:relative;}
.song-picker-search input{padding-left:34px;}
.sp-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--text3);pointer-events:none;}
.song-picker-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--bg3);border:1px solid var(--border2);border-radius:10px;max-height:200px;overflow-y:auto;z-index:200;display:none;box-shadow:0 8px 24px rgba(0,0,0,.5);}
.song-picker-dropdown.open{display:block;}
.picker-song-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;cursor:pointer;font-size:13px;transition:background .1s;}
.picker-song-item:hover{background:rgba(139,92,246,.1);}
.psi-artist{color:var(--text3);font-size:11px;}
.selected-songs{display:flex;flex-direction:column;gap:4px;margin-top:8px;}
.selected-song-tag{display:flex;align-items:center;justify-content:space-between;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:7px 10px;}
.selected-song-tag-inner{display:flex;align-items:center;gap:6px;font-size:13px;}
.selected-song-num{font-size:11px;font-weight:700;color:var(--text3);min-width:16px;}
.remove-song-btn{background:rgba(239,68,68,.1);color:var(--err);border:1px solid rgba(239,68,68,.2);border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;}

.mei-master-list{display:flex;flex-direction:column;gap:12px;}
.mei-event-block{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;}
.mei-first{border-color:rgba(139,92,246,.3);}
.mei-event-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;cursor:pointer;gap:10px;user-select:none;}
.mei-event-header:hover{background:rgba(255,255,255,.025);}
.mei-event-badge{font-size:10px;font-weight:700;padding:3px 8px;border-radius:20px;text-transform:uppercase;background:var(--bg3);border:1px solid var(--border);color:var(--text3);white-space:nowrap;}
.mei-event-title{font-size:1rem;font-weight:700;}
.mei-event-meta{font-size:11px;color:var(--text3);margin-top:3px;}
.mei-chevron{color:var(--text3);transition:transform .22s;}
.mei-chevron.mei-chevron-open{transform:rotate(180deg);}
.mei-songs-panel{display:none;}
.mei-panel-open{display:block;}
.mei-panel-inner{padding:10px 14px 14px;}
.mei-dots-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;}
.song-cards-grid{display:flex;flex-direction:column;gap:7px;}
.song-preview-card{display:flex;align-items:center;gap:10px;background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:11px 12px;cursor:pointer;transition:border-color .15s;}
.song-preview-card:hover{border-color:var(--border2);}
.spc-num{font-size:12px;font-weight:700;color:var(--text3);min-width:20px;text-align:center;}
.spc-info{flex:1;min-width:0;}
.spc-title{font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.spc-artist{font-size:11px;color:var(--text3);margin-top:1px;}
.spc-tags{display:flex;gap:3px;flex-wrap:wrap;margin-top:5px;}
.meta-tag{font-size:10px;padding:2px 7px;background:var(--bg2);border:1px solid var(--border);border-radius:20px;color:var(--text3);}
.meta-tag-tone{background:rgba(139,92,246,.1);border-color:rgba(139,92,246,.25);color:var(--p-soft);}
.carousel-dots{display:flex;gap:5px;align-items:center;}
.dot{width:6px;height:6px;border-radius:50%;background:var(--border);cursor:pointer;transition:background .18s,width .18s;}
.dot.active{background:var(--p);width:14px;border-radius:4px;}
.carousel-counter{font-size:11px;font-weight:700;color:var(--text3);}
.ensayo-blocked{display:flex;flex-direction:column;align-items:center;gap:12px;padding:50px 20px;text-align:center;}

.fs-overlay{position:fixed;inset:0;background:var(--bg);z-index:300;display:flex;flex-direction:column;}
.fs-topbar{display:flex;align-items:center;gap:10px;padding:calc(10px + env(safe-area-inset-top,0px)) 14px 10px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0;}
.fs-back-btn{display:flex;align-items:center;gap:4px;color:var(--text2);font-size:13px;font-weight:700;padding:6px 10px;border-radius:8px;}
.fs-back-btn:hover{background:var(--bg3);}
.fs-counter{font-size:12px;font-weight:700;color:var(--text3);}
.fs-slides-wrap{flex:1;overflow:hidden;position:relative;}
.fs-slide{position:absolute;inset:0;overflow-y:auto;display:none;flex-direction:column;gap:12px;
  -webkit-overflow-scrolling:touch;scrollbar-width:none;

  padding:14px 14px calc(var(--nb-h) + 90px + env(safe-area-inset-bottom,0px));}
.fs-slide::-webkit-scrollbar{display:none;}
.fs-slide.active{display:flex;}
.fs-player-compact{width:100%;height:130px;border-radius:10px;overflow:hidden;background:#000;flex-shrink:0;}
.fs-player-iframe{width:100%;height:100%;border:none;}
.fs-player-link{display:inline-flex;align-items:center;gap:5px;background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.2);color:var(--p-soft);padding:5px 12px;border-radius:8px;font-size:12px;font-weight:600;text-decoration:none;}
.fs-song-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;}
.fs-song-title{font-size:1.4rem;font-weight:800;line-height:1.2;}
.fs-song-artist{font-size:12px;color:var(--text3);}
.fs-tonalidad-badge{display:inline-flex;align-items:center;gap:6px;background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.2);border-radius:8px;padding:4px 10px;flex-shrink:0;}
.fs-ton-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text3);}
.fs-ton-val{font-size:14px;font-weight:700;color:var(--p-soft);}
.lyrics-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;flex-wrap:wrap;}
.lyrics-label{font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);font-weight:700;}
.lyrics-tools{display:flex;align-items:center;gap:5px;}
.fs-lyrics{white-space:pre-wrap;font-size:15px;line-height:1.5;color:var(--text);}
.chord-line{color:var(--p-soft);font-family:var(--mono);font-size:.82em;font-weight:700;display:block;line-height:1.3;margin-top:8px;letter-spacing:.01em;}
.lyrics-line{display:block;line-height:1.55;margin-bottom:2px;}
.chord{color:var(--p-soft);font-weight:700;}
.lyrics-box{white-space:pre-wrap;font-size:14px;line-height:1.6;color:var(--text);}
.as-mini-btn{display:inline-flex;align-items:center;gap:3px;background:var(--bg3);border:1px solid var(--border2);color:var(--text3);padding:4px 8px;border-radius:6px;font-size:11px;font-weight:700;transition:background .15s,color .15s;}
.as-mini-btn:hover{background:var(--border);}
.as-mini-btn.as-mini-active{background:rgba(34,197,94,.1);border-color:rgba(34,197,94,.3);color:var(--ok);}
.as-speed-btn{background:var(--bg3);border:1px solid var(--border);color:var(--text3);width:22px;height:22px;border-radius:50%;font-size:13px;display:flex;align-items:center;justify-content:center;font-weight:700;}
.zoom-mini-btn{background:var(--bg3);border:1px solid var(--border);color:var(--text2);padding:3px 7px;border-radius:5px;font-size:12px;font-weight:700;}
.zoom-mini-val{font-size:11px;color:var(--text3);min-width:28px;text-align:center;}
.transp-paren-wrap{display:flex;align-items:center;gap:5px;background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.22);border-radius:7px;padding:2px 4px;}
.transp-paren-btn{background:var(--bg3);border:1px solid var(--border);color:var(--p-soft);padding:3px 7px;border-radius:5px;font-size:11px;font-weight:800;}
.transp-paren-val{font-size:11px;font-weight:700;color:var(--p-soft);min-width:22px;text-align:center;}
.transp-controls{display:inline-flex;align-items:center;gap:4px;}
.transp-btn{background:var(--bg3);border:1px solid var(--border2);color:var(--text2);width:26px;height:26px;border-radius:6px;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;}
.transp-btn:hover{background:var(--border);}
.transp-val{font-size:12px;font-weight:700;color:var(--p-soft);min-width:22px;text-align:center;}
.notation-toggle-btn{background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.25);color:var(--p-soft);padding:3px 7px;border-radius:6px;font-size:11px;font-weight:700;}
.fs-notas-equipo{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.2);border-radius:10px;padding:10px 12px;font-size:13px;color:var(--amber);margin-top:4px;}
.fs-notas-equipo-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--amber);margin-bottom:4px;}
.metronome-panel-big{background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:12px;}
.metro-top-row{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.metro-big-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text3);font-weight:700;}
.metro-time-sig-row{display:flex;gap:5px;}
.metro-sig-btn{padding:6px 10px;border-radius:7px;font-size:12px;font-weight:700;border:1px solid var(--border2);color:var(--text3);background:var(--bg3);transition:background .15s,color .15s,border-color .15s;}
.metro-sig-btn.active{background:rgba(139,92,246,.2);border-color:var(--p);color:var(--p-soft);}
.metro-beat-bars{display:flex;gap:7px;align-items:flex-end;height:100px;}
.beat-bar{flex:1;border-radius:6px 6px 4px 4px;background:var(--border);overflow:hidden;height:80px;display:flex;align-items:flex-end;}
.beat-bar-first .beat-bar-inner{background:var(--p)!important;}
.beat-bar-hidden{display:none!important;}
.beat-bar-inner{width:100%;height:22%;background:rgba(139,92,246,.2);border-radius:6px;transition:height .06s ease-out,background .06s;}
.beat-bar.beat-on .beat-bar-inner{background:var(--amber);height:100%!important;animation:beatPulse .14s ease-out;}
@keyframes beatPulse{0%{transform:scaleY(1.15);}100%{transform:scaleY(1);}}
.metro-big-controls{display:flex;align-items:center;gap:6px;}
.metro-big-btn{background:var(--bg3);border:1px solid var(--border2);color:var(--text2);padding:7px 10px;border-radius:8px;font-size:13px;font-weight:700;flex:1;max-width:48px;transition:background .15s;}
.metro-big-btn:hover{background:var(--border);}
.metro-big-bpm-wrap{display:flex;flex-direction:column;align-items:center;gap:1px;flex:1;}
.metro-big-bpm{font-size:2rem;font-weight:800;color:var(--text);line-height:1;}
.metro-big-sub{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;}
.metro-half-double{display:flex;align-items:center;gap:5px;}
.metro-halfdouble-btn{flex:1;background:var(--bg3);border:1px solid var(--border);color:var(--text3);padding:7px;border-radius:8px;font-size:12px;}
.metro-play-btn{flex:2;background:var(--p);color:#fff;padding:10px 16px;border-radius:10px;font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:6px;}
.metro-play-btn.playing{background:#dc2626;}
.tips-ia-section{background:rgba(139,92,246,.05);border:1px solid rgba(139,92,246,.18);border-radius:12px;padding:12px;margin-top:6px;}
.tips-ia-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;}
.tips-ia-title{display:flex;align-items:center;gap:5px;font-size:13px;font-weight:700;color:var(--p-soft);}
.tips-ia-btn{background:rgba(139,92,246,.15);border:1px solid rgba(139,92,246,.35);color:var(--p-soft);padding:5px 10px;border-radius:7px;font-size:12px;font-weight:700;}
.tips-ia-btn:hover{background:rgba(139,92,246,.3);}
.tips-ia-content{display:flex;flex-direction:column;gap:9px;}
.tips-song-ref{font-size:11px;color:var(--text3);border-bottom:1px solid var(--border);padding-bottom:7px;}
.tips-ton{color:var(--p-soft);font-weight:700;}
.tips-diagnostico{font-size:13px;color:var(--text2);line-height:1.6;padding:9px 12px;background:var(--bg3);border-radius:8px;}
.tips-tecnica{font-size:13px;color:var(--text2);line-height:1.6;padding:9px 12px;background:rgba(34,197,94,.05);border:1px solid rgba(34,197,94,.12);border-radius:8px;}
.tips-sec-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);display:block;margin-bottom:5px;}
.tips-ejercicio-card{background:var(--bg2);border:1px solid var(--border);border-left:3px solid var(--p);border-radius:0 8px 8px 0;padding:9px 12px;margin-bottom:5px;}
.tips-ej-title{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700;margin-bottom:4px;}
.tips-ej-num{background:var(--p);color:#fff;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0;}
.tips-ej-desc{font-size:12px;color:var(--text2);line-height:1.5;}
.tips-ej-time{font-size:11px;color:var(--text3);margin-top:3px;display:inline-block;}
.tips-puntos{padding-left:14px;display:flex;flex-direction:column;gap:3px;}
.tips-puntos li{font-size:12px;color:var(--text2);}
.tips-consejo-final{background:rgba(245,158,11,.07);border:1px solid rgba(245,158,11,.2);border-radius:8px;padding:9px 12px;font-size:13px;color:var(--amber);line-height:1.5;}

.voz-categories{display:flex;flex-direction:column;gap:10px;}
.voz-cat-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;}
.voz-cat-title{font-size:14px;font-weight:700;margin-bottom:2px;}
.voz-cat-desc{font-size:12px;color:var(--text3);margin-bottom:8px;}
.voz-level-row{display:flex;gap:5px;flex-wrap:wrap;}
.voz-level-btn{background:var(--bg3);border:1px solid var(--border2);color:var(--text2);padding:5px 11px;border-radius:20px;font-size:12px;font-weight:700;}
.voz-level-btn:hover{background:rgba(139,92,246,.15);border-color:var(--p);color:var(--p-soft);}
.voz-exercise-panel{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-top:14px;}
.voz-ex-header{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.voz-close-btn{color:var(--text3);font-size:12px;font-weight:700;padding:5px 10px;border-radius:8px;border:1px solid var(--border);}
.voz-close-btn:hover{background:var(--bg3);}
.voz-ex-title{font-size:14px;font-weight:700;}
.voz-ex-instruccion{font-size:13px;color:var(--text2);line-height:1.6;margin-bottom:14px;}
.voz-consejo-box{background:rgba(245,158,11,.07);border:1px solid rgba(245,158,11,.2);border-radius:8px;padding:9px 12px;font-size:13px;color:var(--amber);margin-top:12px;}
.voz-btn-row{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px;}
.voz-start-btn{background:var(--p);color:#fff;padding:10px 20px;border-radius:10px;font-size:14px;font-weight:700;}
.voz-stop-btn{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.25);color:var(--err);padding:10px 16px;border-radius:10px;font-size:14px;font-weight:700;}
.voz-rep-counter{font-size:12px;color:var(--text3);margin-top:8px;text-align:center;}
.voz-breath-ring-wrap{display:flex;justify-content:center;padding:18px 0;}
.voz-breath-ring{width:150px;height:150px;border-radius:50%;border:4px solid var(--border);display:flex;align-items:center;justify-content:center;transition:border-color .4s,box-shadow .4s;background:var(--bg3);}
.voz-breath-ring.inhale{border-color:var(--p);box-shadow:0 0 32px rgba(139,92,246,.3);animation:ringExpand 1s ease-in-out forwards;}
.voz-breath-ring.hold{border-color:var(--amber);box-shadow:0 0 20px rgba(245,158,11,.25);}
.voz-breath-ring.exhale{border-color:var(--ok);box-shadow:0 0 24px rgba(34,197,94,.25);animation:ringContract 1s ease-in-out forwards;}
.voz-breath-ring.rest{border-color:var(--border);box-shadow:none;}
@keyframes ringExpand{from{transform:scale(.88);}to{transform:scale(1.06);}}
@keyframes ringContract{from{transform:scale(1.06);}to{transform:scale(.88);}}
.voz-breath-ring-inner{display:flex;flex-direction:column;align-items:center;gap:4px;}
.voz-breath-label{font-size:13px;font-weight:700;color:var(--text2);text-align:center;}
.voz-breath-timer{font-size:1.8rem;font-weight:800;color:var(--text);line-height:1;}
.voz-ref-note-box{display:flex;flex-direction:column;align-items:center;gap:5px;background:rgba(139,92,246,.07);border:1px solid rgba(139,92,246,.2);border-radius:10px;padding:12px;margin-bottom:14px;}
.voz-ref-note-name{font-size:1.8rem;font-weight:800;color:var(--p-soft);}
.voz-ref-freq{font-size:12px;color:var(--text3);}
.voz-play-ref-btn{background:rgba(139,92,246,.15);border:1px solid rgba(139,92,246,.35);color:var(--p-soft);padding:6px 12px;border-radius:8px;font-size:12px;font-weight:700;}
.voz-pitch-canvas{width:100%;border-radius:10px;background:var(--bg2);border:1px solid var(--border);display:block;max-height:110px;}
.voz-pitch-note-display{display:flex;flex-direction:column;align-items:center;gap:7px;padding:14px;}
.voz-pitch-note{font-size:2.8rem;font-weight:800;line-height:1;}
.voz-pitch-cents{font-size:13px;font-weight:700;color:var(--text3);}
.voz-pitch-meter-wrap{display:flex;align-items:center;gap:7px;width:100%;max-width:260px;}
.voz-pitch-flat{font-size:11px;color:var(--err);font-weight:700;}
.voz-pitch-sharp{font-size:11px;color:var(--amber);font-weight:700;}
.voz-pitch-meter-bar{flex:1;height:7px;background:var(--border);border-radius:4px;position:relative;overflow:hidden;}
.voz-pitch-meter-needle{position:absolute;top:0;bottom:0;width:4px;background:var(--p);border-radius:2px;transition:left .08s ease-out;left:50%;}
.voz-rango-ejercicio{background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:12px;font-size:13px;font-weight:600;text-align:center;margin:10px 0;}
.voz-patron-wrap{display:flex;gap:5px;flex-wrap:wrap;justify-content:center;padding:16px 0;}
.voz-note-bubble{background:rgba(139,92,246,.15);border:1px solid rgba(139,92,246,.3);color:var(--p-soft);border-radius:50%;width:42px;height:42px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;animation:bubbleIn .3s ease both;}
@keyframes bubbleIn{from{opacity:0;transform:scale(.7);}to{opacity:1;transform:scale(1);}}

.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.8);z-index:500;display:none;align-items:flex-end;justify-content:center;}
@media(min-width:600px){.modal-backdrop{align-items:center;}}
.modal-box{background:var(--bg2);border:1px solid var(--border2);border-radius:var(--radius) var(--radius) 0 0;width:100%;max-height:92vh;display:flex;flex-direction:column;overflow:hidden;}
@media(min-width:600px){.modal-box{border-radius:var(--radius);max-width:520px;max-height:88vh;}}
.modal-hd{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0;}
.modal-back{display:inline-flex;align-items:center;gap:4px;background:var(--bg3);border:1px solid var(--border);color:var(--text2);padding:6px 12px;border-radius:8px;font-size:13px;font-weight:700;white-space:nowrap;flex-shrink:0;}
.modal-back:hover{background:var(--border);color:var(--text);}
.modal-title{font-size:1.05rem;font-weight:700;flex:1;}
.modal-bd{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;scrollbar-width:none;}
.modal-bd::-webkit-scrollbar{display:none;}
.modal-ft{padding:12px 16px;border-top:1px solid var(--border);flex-shrink:0;}

.song-detail-player{width:100%;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:#000;}
.song-detail-player iframe{width:100%;height:100%;border:none;}
.song-detail-title{font-size:1.2rem;font-weight:800;margin-bottom:3px;}
.song-detail-artist{font-size:13px;color:var(--text3);margin-bottom:8px;}
.add-song-found{background:var(--bg3);border:1px solid var(--border2);border-radius:var(--radius-sm);padding:13px;}
.add-song-found-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ok);background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.2);border-radius:20px;padding:2px 9px;display:inline-block;margin-bottom:7px;}
.add-song-found-title{font-size:15px;font-weight:700;margin-bottom:2px;}
.add-song-found-artist{font-size:13px;color:var(--text3);}
.add-song-error{background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.2);border-radius:8px;padding:9px 12px;font-size:13px;color:var(--err);}
.hist-container{display:flex;flex-direction:column;gap:12px;}
.hist-stats-row{display:flex;gap:7px;flex-wrap:wrap;}
.hist-stat-chip{flex:1;min-width:70px;background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:9px 11px;display:flex;flex-direction:column;align-items:center;gap:3px;}
.hist-stat-chip.hist-stat-active{background:rgba(245,158,11,.07);border-color:rgba(245,158,11,.25);}
.hist-stat-val{font-size:1.1rem;font-weight:800;}
.hist-stat-lbl{font-size:10px;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;}
.hist-alert{background:rgba(245,158,11,.07);border:1px solid rgba(245,158,11,.25);border-radius:8px;padding:8px 12px;font-size:13px;color:var(--amber);}
.hist-free{background:rgba(34,197,94,.06);border:1px solid rgba(34,197,94,.2);border-radius:8px;padding:8px 12px;font-size:13px;color:var(--ok);}
.hist-month-label{font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.07em;padding:4px 0;}
.hist-entry{background:var(--bg2);border:1px solid var(--border);border-radius:8px;padding:9px 12px;margin-bottom:5px;}
.hist-entry-tipo{font-size:13px;font-weight:600;}
.hist-entry-fecha{font-size:11px;color:var(--text3);}
.hist-future{border-color:rgba(139,92,246,.25);}
.hist-today{border-color:rgba(34,197,94,.35);}

.btn-notas-acordes{display:inline-flex;align-items:center;gap:5px;background:rgba(34,197,94,.08);border:1px solid rgba(34,197,94,.25);color:var(--ok);padding:6px 12px;border-radius:8px;font-size:12px;font-weight:600;}
.pdf-overlay{position:fixed;inset:0;background:var(--bg);z-index:400;display:flex;flex-direction:column;}
.pdf-overlay-topbar{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0;}
.pdf-overlay-back{display:flex;align-items:center;gap:4px;color:var(--text2);font-size:13px;font-weight:700;padding:6px 10px;border-radius:8px;}
.pdf-overlay-title{flex:1;font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pdf-zoom-controls{display:flex;align-items:center;gap:6px;}
.pdf-zoom-btn{background:var(--bg3);border:1px solid var(--border);color:var(--text2);padding:4px 8px;border-radius:6px;font-size:12px;font-weight:700;}
.pdf-zoom-val{font-size:12px;color:var(--text3);min-width:34px;text-align:center;}
.pdf-overlay-frame-wrap{flex:1;overflow:hidden;position:relative;}
.pdf-overlay-frame{position:absolute;inset:0;width:100%;height:100%;border:none;transform-origin:top left;}

@media(max-width:380px){.topbar{padding:env(safe-area-inset-top,0px) 12px 0;}.main{padding:12px 12px calc(var(--nb-h) + 12px);}.nav-btn span{font-size:8px;}}

@media(min-width:700px){
  .main{padding:22px 28px calc(var(--nb-h) + 22px);}
  .main > .section{max-width:1100px;margin:0 auto;}
  .navbar-bottom{padding-left:max(0px,calc((100vw - 1100px)/2));
                 padding-right:max(0px,calc((100vw - 1100px)/2));}
  #view-login,#view-bienvenida{background:var(--bg);}

  .wlc-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));}
  .voz-categories{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
  .admin-user-list{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;align-items:start;}
  .admin-user-list > .admin-section-title,
  .admin-user-list > #admin-new-user-panel,
  .admin-user-list > button{grid-column:1/-1;}
}
@media(min-width:1000px){

  #banco-lista{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;align-items:start;}
  #banco-lista > .banco-prox-label,
  #banco-lista > .banco-mas-btn,
  #banco-lista > .banco-fin,
  #banco-lista > .empty-state{grid-column:1/-1;}
  .song-card-v2{margin-bottom:0;}
  .agenda-lista{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;align-items:start;margin-bottom:18px;}
  .svc-card-v2{margin-bottom:0;}
}
@media(min-width:1400px){
  .main > .section{max-width:1280px;}
  .navbar-bottom{padding-left:max(0px,calc((100vw - 1280px)/2));
                 padding-right:max(0px,calc((100vw - 1280px)/2));}
}

.mei-event-block.mei-scheduled{border-color:rgba(34,197,94,.4);}
.mei-event-block.mei-scheduled .mei-event-header{border-left:3px solid var(--ok);}
.mei-status-row{display:flex;align-items:center;gap:8px;margin:10px 0 4px;flex-wrap:wrap;}
.mei-status-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;font-weight:600;padding:4px 10px;border-radius:20px;}
.mei-chip-ensayo{background:rgba(139,92,246,.12);border:1px solid rgba(139,92,246,.25);color:var(--p-soft);}
.mei-chip-dias{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.25);color:var(--amber);}

.mp-play-btn:hover{opacity:.85;}
.mp-play-btn svg{width:14px;height:14px;}

.limit-option{display:flex;align-items:center;gap:10px;background:var(--bg3);border:1px solid var(--border);border-radius:8px;padding:10px 12px;cursor:pointer;margin-bottom:6px;transition:border-color .12s;}
.limit-option:hover{border-color:var(--border2);}
.limit-option.selected{border-color:var(--p);background:rgba(139,92,246,.08);}
.limit-option input[type=radio]{accent-color:var(--p);width:16px;height:16px;flex-shrink:0;}
.limit-option-label{font-size:14px;color:var(--text);flex:1;}
.limit-num-input{width:60px;padding:4px 8px;font-size:14px;border-radius:6px;text-align:center;}

.lyric-section-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--p-soft);background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.2);border-radius:20px;padding:2px 10px;display:inline-block;margin:12px 0 5px;}
.lyric-section-label:first-child{margin-top:0;}

html{font-size:15px;}
@media(max-width:380px){html{font-size:13px;}.navbar-bottom{height:60px;}.nav-btn svg{width:18px;height:18px;}.main{padding-bottom:calc(60px + 12px);}}
@media(min-width:380px) and (max-width:480px){html{font-size:14px;}}

.notes-action-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 16px;border-radius:10px;font-size:13px;font-weight:700;transition:opacity .15s;margin-top:4px;width:100%;justify-content:center;}
.notes-btn-has{background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.35);color:var(--ok);}
.notes-btn-has:hover{opacity:.85;}
.notes-btn-empty{background:transparent;border:2px solid var(--amber);color:var(--amber);}
.notes-btn-empty:hover{background:rgba(245,158,11,.08);}
.edit-lyrics-btn{display:block;width:100%;margin-top:4px;padding:7px 14px;border-radius:8px;font-size:12px;font-weight:700;color:var(--p-soft);background:rgba(139,92,246,.08);border:1px solid rgba(139,92,246,.2);text-align:center;}
.edit-lyrics-btn:hover{background:rgba(139,92,246,.15);}

.note-files-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;}
.note-file-item{display:flex;align-items:center;gap:10px;background:var(--bg3);border:1px solid var(--border);border-radius:10px;padding:10px 12px;}
.note-file-icon{font-size:18px;flex-shrink:0;}
.note-file-name{flex:1;font-size:13px;font-weight:600;color:var(--text);min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.note-file-actions{display:flex;gap:6px;flex-shrink:0;}
.note-view-btn{background:var(--p);color:#fff;padding:5px 12px;border-radius:7px;font-size:12px;font-weight:700;}
.note-del-btn{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.2);color:var(--err);width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;}
.note-upload-section{background:var(--bg3);border:1px solid var(--border);border-radius:12px;padding:14px;}
.note-upload-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);margin-bottom:10px;}
.note-type-row{display:flex;gap:6px;margin-bottom:12px;}
.note-type-btn{flex:1;padding:8px 10px;border-radius:8px;font-size:12px;font-weight:700;color:var(--text3);background:var(--bg2);border:1px solid var(--border);transition:background .12s,color .12s;}
.note-type-btn.active{background:var(--p);color:#fff;border-color:var(--p);}
.note-file-pick-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px;border-radius:10px;border:2px dashed var(--border2);color:var(--text2);font-size:13px;font-weight:600;transition:border-color .15s,background .15s;}
.note-file-pick-btn:hover{border-color:var(--p);background:rgba(139,92,246,.05);color:var(--p-soft);}
.note-file-preview{margin-top:8px;}

.sec-cards-wrap{display:flex;flex-direction:column;gap:8px;}
.sec-card{background:var(--bg2);border:1px solid var(--border);border-radius:12px;overflow:hidden;}
.sec-card-hd{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--bg3);border-bottom:1px solid var(--border);}
.sec-card-label{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--p-soft);}
.sec-card-actions{display:flex;gap:6px;}
.sec-edit-btn{color:var(--text3);padding:4px 7px;border-radius:6px;background:var(--bg2);border:1px solid var(--border);display:flex;align-items:center;transition:background .12s,color .12s;}
.sec-edit-btn:hover{background:rgba(139,92,246,.12);color:var(--p-soft);border-color:rgba(139,92,246,.3);}
.sec-card-body{padding:10px 12px;line-height:1.7;font-size:inherit;}
.sec-edit-area{padding:10px 12px;border-top:1px solid var(--border);background:rgba(139,92,246,.03);}
.sec-ta{font-family:var(--mono);font-size:13px;line-height:1.7;min-height:60px;border-radius:8px;}
.sec-edit-btns{display:flex;gap:7px;margin-top:8px;}
.sec-save-btn{background:var(--ok);color:#fff;padding:7px 16px;border-radius:8px;font-size:13px;font-weight:700;flex:1;text-align:center;}
.sec-cancel-btn{background:var(--bg3);border:1px solid var(--border2);color:var(--text2);padding:7px 12px;border-radius:8px;font-size:13px;font-weight:700;}
.sec-add-btn{display:block;width:100%;margin-top:4px;padding:9px;border-radius:10px;border:2px dashed var(--border2);color:var(--text3);font-size:13px;font-weight:700;text-align:center;transition:border-color .12s,color .12s;}
.sec-add-btn:hover{border-color:var(--p);color:var(--p-soft);}

.pchord-line{display:flex;flex-wrap:wrap;align-items:flex-end;padding:3px 0;white-space:pre-wrap;}
.pchord-group{display:inline-flex;flex-direction:column;align-items:flex-start;margin-right:1px;}
.pchord-name{font-size:.72em;font-weight:800;color:var(--p-soft);font-family:var(--mono);
  line-height:1.15;letter-spacing:.02em;white-space:nowrap;}
.pchord-text{line-height:1.5;white-space:pre;}
.lyrics-line{display:block;line-height:1.7;}
.chord-line-solo{display:block;line-height:1.5;padding:3px 0;font-family:var(--mono);white-space:pre-wrap;}
.chord-line-solo .chord,.chord{color:var(--p-soft);font-weight:800;font-family:var(--mono);}

.banco-prox-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  color:var(--teal);background:rgba(20,184,166,.06);border:1px solid rgba(20,184,166,.2);
  border-radius:8px;padding:7px 12px;margin-bottom:12px;}

.next-svc-card .no-svc-msg{font-size:13px;color:var(--text3);text-align:center;}

@keyframes pulse{from{opacity:.7;}to{opacity:1;}}

.sec-card-hd{gap:6px;}
.sec-edit-hint{font-size:10px;color:var(--text3);padding:4px 0;font-style:italic;}
.sec-ta{width:100%;background:var(--bg2);color:var(--text);border-radius:8px;
  border:1px solid var(--border);padding:9px;font-size:13px;line-height:1.7;
  font-family:var(--mono);resize:vertical;}
.sec-ta:focus{border-color:var(--p);outline:none;}

.notes-uploading{display:flex;align-items:center;gap:8px;
  font-size:12px;color:var(--text3);margin-top:6px;}

@media(max-width:360px){
  .brand-name{font-size:.95rem;}
  .brand-icon{font-size:15px;}
  .topbar-actions{gap:4px;}
  .avatar-circle{width:28px;height:28px;font-size:12px;}
}

.login-logo-img{width:100%;max-width:250px;height:auto;display:block;margin:0 auto 2px;}
.brand-logo-icon{width:26px;height:26px;display:block;flex-shrink:0;}
[data-theme="light"] .login-logo-img,[data-theme="light"] .brand-logo-icon{filter:none;}

.mp{display:flex;align-items:center;gap:10px;background:var(--bg3);
  border:1px solid var(--border);border-radius:12px;padding:9px 12px;margin-bottom:10px;
  transition:border-color .18s;}
.mp.mp-playing{border-color:rgba(139,92,246,.45);background:rgba(139,92,246,.06);}
.mp-btn{width:34px;height:34px;border-radius:50%;background:var(--p);color:#fff;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  transition:transform .12s,opacity .15s;position:relative;}
.mp-btn:hover{opacity:.88;}
.mp-btn:active{transform:scale(.92);}
.mp.mp-playing .mp-btn{background:var(--p2);box-shadow:0 0 0 4px rgba(139,92,246,.18);}
.mp-spin{width:15px;height:15px;border:2px solid rgba(255,255,255,.3);
  border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;}
.mp-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;}
.mp-bar{position:relative;height:4px;background:rgba(255,255,255,.13);border-radius:3px;
  cursor:pointer;touch-action:none;}
.mp-bar::before{content:'';position:absolute;inset:-12px 0;}
.mp-fill{height:100%;width:0%;background:var(--p);border-radius:3px;
  transition:width .2s linear;pointer-events:none;}
.mp-knob{position:absolute;top:50%;left:0%;width:14px;height:14px;border-radius:50%;
  background:#fff;transform:translate(-50%,-50%);box-shadow:0 1px 4px rgba(0,0,0,.5);
  opacity:0;transition:opacity .15s,left .2s linear;pointer-events:none;}
.mp:hover .mp-knob,.mp.mp-playing .mp-knob{opacity:1;}

.mp-bar.mp-seeking .mp-fill,.mp-bar.mp-seeking .mp-knob{transition:none;}
.mp-times{display:flex;justify-content:space-between;font-size:10px;color:var(--text3);
  font-variant-numeric:tabular-nums;line-height:1;}
.mp-ext-link{display:inline-flex;align-items:center;gap:5px;background:rgba(139,92,246,.1);
  border:1px solid rgba(139,92,246,.25);color:var(--p-soft);padding:7px 13px;
  border-radius:10px;font-size:12px;font-weight:700;text-decoration:none;margin-bottom:10px;}
[data-theme="light"] .mp-bar{background:rgba(0,0,0,.12);}

.btn-new-wide{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;
  margin:0 0 18px;padding:11px;border-radius:12px;font-size:13px;font-weight:700;
  color:var(--amber);background:rgba(245,158,11,.08);
  border:1px solid rgba(245,158,11,.28);transition:background .15s;}
.btn-new-wide:hover{background:rgba(245,158,11,.16);}
.btn-new-wide:active{transform:scale(.99);}
.filter-tabs{margin-bottom:12px;}

.letra-warn{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.25);
  border-radius:9px;padding:9px 12px;font-size:12px;color:var(--amber);line-height:1.5;margin-top:8px;}
.letra-ok{background:rgba(34,197,94,.07);border:1px solid rgba(34,197,94,.22);
  border-radius:9px;padding:8px 12px;font-size:12px;color:var(--ok);margin-top:8px;}

.kp{background:var(--bg3);border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:12px;}
.kp-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:9px;}
.kp-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);}
.kp-current{font-size:12px;font-weight:700;color:var(--p-soft);text-align:right;}
.kp-mode{display:flex;gap:4px;background:var(--bg2);border:1px solid var(--border);
  border-radius:20px;padding:3px;margin-bottom:9px;}
.kp-mode-btn{flex:1;padding:6px;border-radius:16px;font-size:12px;font-weight:700;
  color:var(--text3);transition:background .13s,color .13s;}
.kp-mode-btn.active{background:var(--p);color:#fff;}
.kp-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;}
.kp-key{display:flex;flex-direction:column;align-items:center;gap:1px;padding:7px 2px;
  background:var(--bg2);border:1px solid var(--border);border-radius:9px;
  transition:border-color .12s,background .12s,transform .1s;}
.kp-key:hover{border-color:var(--border2);}
.kp-key:active{transform:scale(.94);}
.kp-key.active{background:var(--p);border-color:var(--p);}
.kp-key-am{font-size:14px;font-weight:800;color:var(--text);line-height:1;}
.kp-key-la{font-size:8px;color:var(--text3);line-height:1;}
.kp-key.active .kp-key-am,.kp-key.active .kp-key-la{color:#fff;}
.kp-clear{width:100%;margin-top:8px;padding:6px;border-radius:8px;font-size:11px;
  font-weight:600;color:var(--text3);border:1px solid var(--border);}
.kp-clear:hover{color:var(--text2);background:var(--bg2);}
@media(max-width:400px){.kp-grid{grid-template-columns:repeat(4,1fr);}}

.tt{background:var(--bg3);border:1px solid var(--border);border-radius:12px;padding:12px;margin-bottom:12px;}
.tt-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:10px;}
.tt-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--text3);}
.tt-hint{font-size:10px;color:var(--text3);text-align:right;line-height:1.3;}
.tt-hint.tt-hint-ok{color:var(--ok);}
.tt-row{display:flex;gap:11px;align-items:stretch;}
.tt-pad{position:relative;flex:0 0 96px;height:96px;border-radius:16px;
  background:linear-gradient(160deg,var(--p) 0%,var(--p2) 100%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  color:#fff;overflow:hidden;user-select:none;-webkit-user-select:none;
  touch-action:manipulation;transition:transform .07s;}
.tt-pad:active{transform:scale(.95);}
.tt-pad-bpm{font-size:1.9rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;
  position:relative;z-index:2;}
.tt-pad-unit{font-size:9px;font-weight:700;letter-spacing:.14em;opacity:.75;
  text-transform:uppercase;position:relative;z-index:2;}
.tt-pulse{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;}
.tt-pulse.on{animation:ttFlash .22s ease-out;}
@keyframes ttFlash{0%{opacity:.42;}100%{opacity:0;}}
.tt-side{flex:1;display:flex;flex-direction:column;justify-content:center;gap:7px;min-width:0;}
.tt-manual{display:flex;align-items:center;gap:5px;}
.tt-step{width:30px;height:30px;flex-shrink:0;border-radius:8px;background:var(--bg2);
  border:1px solid var(--border2);color:var(--text2);font-size:16px;font-weight:700;
  display:flex;align-items:center;justify-content:center;}
.tt-step:hover{background:var(--border);color:var(--text);}
.tt-manual input{flex:1;min-width:0;text-align:center;font-size:15px;font-weight:700;
  padding:6px 4px;font-variant-numeric:tabular-nums;}
.tt-manual input::-webkit-outer-spin-button,
.tt-manual input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.tt-actions{display:flex;gap:5px;}
.tt-mini{flex:1;padding:6px 4px;border-radius:8px;font-size:11px;font-weight:700;
  color:var(--text3);background:var(--bg2);border:1px solid var(--border);
  transition:background .13s,color .13s;}
.tt-mini:hover{background:var(--border);color:var(--text);}
.tt-mini.tt-mini-on{background:var(--p);border-color:var(--p);color:#fff;}
.tt-taps{display:flex;gap:4px;justify-content:center;min-height:6px;}
.tt-dot{width:5px;height:5px;border-radius:50%;background:var(--border2);
  transition:background .15s,transform .15s;}
.tt-dot.on{background:var(--p);transform:scale(1.25);}

.es-details{margin-bottom:12px;}
.es-details summary{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:var(--text3);cursor:pointer;padding:8px 0;list-style:none;}
.es-details summary::-webkit-details-marker{display:none;}
.es-details summary::before{content:'▸ ';color:var(--p-soft);}
.es-details[open] summary::before{content:'▾ ';}

.song-card-actions-top{display:flex;align-items:center;gap:7px;flex-shrink:0;}
.song-edit-btn{width:26px;height:26px;border-radius:7px;display:flex;align-items:center;
  justify-content:center;color:var(--text3);background:var(--bg3);border:1px solid var(--border);
  transition:color .13s,border-color .13s,background .13s;}
.song-edit-btn:hover{color:var(--p-soft);border-color:rgba(139,92,246,.35);background:rgba(139,92,246,.1);}
.stag-tone{background:rgba(139,92,246,.13);border:1px solid rgba(139,92,246,.28);
  color:var(--p-soft);font-weight:700;}

#loading{padding:24px;}
.boot{width:100%;max-width:300px;display:flex;flex-direction:column;align-items:center;gap:16px;}
.boot-brand{font-size:1.5rem;font-weight:800;letter-spacing:-.02em;color:var(--text);}
.boot-list{list-style:none;width:100%;display:flex;flex-direction:column;gap:2px;margin:0;padding:0;}
.boot-row{display:flex;align-items:center;gap:9px;padding:6px 10px;border-radius:8px;
  font-size:13px;color:var(--text3);}
.boot-row-err{background:rgba(239,68,68,.07);color:#fca5a5;}
.boot-lbl{flex:1;min-width:0;}
.boot-ok{color:var(--ok);font-weight:700;width:14px;text-align:center;}
.boot-err{color:var(--err);font-weight:700;width:14px;text-align:center;}
.boot-wait{color:var(--border2);width:14px;text-align:center;}
.boot-load{width:14px;height:14px;flex-shrink:0;border:2px solid var(--border);
  border-top-color:var(--p);border-radius:50%;animation:spin .7s linear infinite;}
.boot-n{font-size:11px;color:var(--text3);font-variant-numeric:tabular-nums;}
.boot-msg{font-size:10px;color:#fca5a5;max-width:130px;text-align:right;line-height:1.3;}
.boot-hint{font-size:12px;color:var(--text3);}
.boot-fail{width:100%;background:rgba(239,68,68,.07);border:1px solid rgba(239,68,68,.22);
  border-radius:12px;padding:14px;text-align:center;}
.boot-fail strong{display:block;font-size:14px;color:#fca5a5;margin-bottom:6px;}
.boot-fail p{font-size:12px;color:var(--text2);line-height:1.5;margin:0 0 4px;}
.boot-pista{color:var(--amber)!important;font-size:11px!important;margin-top:6px!important;}
.boot-retry{margin-top:12px;background:var(--p);color:#fff;padding:10px 22px;
  border-radius:10px;font-size:13px;font-weight:700;}

.song-cover-mini{width:46px;height:46px;border-radius:11px;overflow:hidden;flex-shrink:0;background:var(--bg3);}
.song-cover-mini img{width:100%;height:100%;object-fit:cover;display:block;}
.cover-gen{width:100%;height:100%;display:flex;align-items:center;justify-content:center;}
.cover-gen span{font-size:15px;font-weight:800;color:rgba(255,255,255,.92);
  letter-spacing:.02em;text-shadow:0 1px 3px rgba(0,0,0,.35);}

.banco-mas-btn{display:block;width:100%;margin:6px 0 4px;padding:12px;border-radius:12px;
  font-size:13px;font-weight:700;color:var(--p-soft);background:rgba(139,92,246,.08);
  border:1px solid rgba(139,92,246,.22);transition:background .15s;}
.banco-mas-btn:hover{background:rgba(139,92,246,.16);}
.banco-fin{text-align:center;font-size:11px;color:var(--text3);padding:12px 0 4px;}

.own-badge{display:inline-block;background:rgba(245,158,11,.12);border:1px solid rgba(245,158,11,.3);
  color:var(--amber);border-radius:20px;padding:4px 12px;font-size:11px;font-weight:800;
  text-transform:uppercase;letter-spacing:.08em;}
.own-folder{background:var(--bg3);border:1px solid var(--border);border-radius:10px;
  padding:10px 12px;margin-top:10px;font-size:12px;color:var(--text2);line-height:1.6;}
.own-folder a{color:var(--p-soft);font-weight:700;}
.own-lock{background:rgba(34,197,94,.07);border:1px solid rgba(34,197,94,.22);
  border-radius:10px;padding:12px;text-align:center;}
.own-lock-state{font-size:14px;font-weight:700;color:var(--ok);}
.own-lock.own-lock-on{background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.28);}
.own-lock.own-lock-on .own-lock-state{color:var(--err);}
.own-lock-msg{font-size:12px;color:var(--text2);margin-top:6px;line-height:1.5;}
.btn-danger-wide{display:block;width:100%;padding:12px;border-radius:12px;font-size:13px;
  font-weight:700;color:var(--err);background:rgba(239,68,68,.08);
  border:1px solid rgba(239,68,68,.28);transition:background .15s;}
.btn-danger-wide:hover{background:rgba(239,68,68,.16);}
.btn-danger-wide:disabled{opacity:.5;pointer-events:none;}
.boot-fail p{text-align:left;}

.lic-banner{display:flex;align-items:flex-start;gap:9px;background:rgba(245,158,11,.09);
  border:1px solid rgba(245,158,11,.28);border-radius:12px;padding:12px 14px;margin-bottom:14px;
  font-size:13px;color:var(--amber);line-height:1.5;}
.lic-banner svg{flex-shrink:0;margin-top:1px;}

.note-empty{color:var(--text3);font-size:13px;text-align:center;padding:18px 0;}
.note-status{font-size:12px;color:var(--text3);text-align:center;margin-top:9px;line-height:1.5;}
.note-status.note-status-err{color:#fca5a5;}
.note-file-preview img{max-width:100%;border-radius:9px;margin-top:8px;display:block;}
.note-file-meta{font-size:11px;color:var(--text3);margin-top:5px;text-align:center;}
.note-file-chip{background:var(--bg2);border:1px solid var(--border);border-radius:9px;
  padding:11px;text-align:center;font-size:12px;color:var(--text2);margin-top:8px;}

.btn-ver-notas{display:inline-flex;align-items:center;gap:6px;
  background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.32);
  color:var(--ok);padding:5px 11px;border-radius:8px;
  font-size:12px;font-weight:700;white-space:nowrap;transition:background .15s;}
.btn-ver-notas:hover{background:rgba(34,197,94,.22);}
.vn-count{background:var(--ok);color:#04220f;border-radius:20px;
  padding:0 6px;font-size:10px;font-weight:800;min-width:16px;text-align:center;}

.note-file-tipo{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;
  color:var(--p-soft);background:rgba(139,92,246,.12);border:1px solid rgba(139,92,246,.25);
  border-radius:5px;padding:2px 6px;flex-shrink:0;}

.render-fail{background:rgba(239,68,68,.07);border:1px solid rgba(239,68,68,.22);
  border-radius:12px;padding:18px;text-align:center;margin:8px 0;}
.render-fail strong{display:block;font-size:14px;color:#fca5a5;margin-bottom:6px;}
.render-fail p{font-size:12px;color:var(--text2);line-height:1.5;margin:0 0 12px;}

.banco-aviso{background:rgba(20,184,166,.07);border:1px solid rgba(20,184,166,.28);
  border-radius:12px;padding:13px 14px;margin-bottom:12px;}
.banco-aviso-cab{display:flex;align-items:center;gap:8px;color:var(--teal);margin-bottom:5px;}
.banco-aviso-cab strong{font-size:13px;}
.banco-aviso > p{font-size:12px;color:var(--text2);line-height:1.5;margin:0 0 10px;}
.banco-hit{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;
  background:var(--bg2);border:1px solid var(--border);border-radius:10px;
  padding:10px 12px;margin-bottom:6px;position:relative;text-align:left;
  transition:border-color .15s,background .15s;}
.banco-hit:hover{border-color:rgba(20,184,166,.4);background:rgba(20,184,166,.05);}
.banco-hit-tit{font-size:13px;font-weight:700;color:var(--text);padding-right:52px;}
.banco-hit-ver{font-size:11px;font-weight:600;color:var(--text3);}
.banco-hit-meta{font-size:11px;color:var(--text3);}
.banco-hit-ver-btn{position:absolute;right:11px;top:50%;transform:translateY(-50%);
  font-size:11px;font-weight:700;color:var(--teal);
  background:rgba(20,184,166,.12);border:1px solid rgba(20,184,166,.3);
  border-radius:7px;padding:3px 10px;}

.banco-det{display:flex;flex-direction:column;}
.banco-verificado{align-self:flex-start;font-size:10px;font-weight:800;
  text-transform:uppercase;letter-spacing:.07em;color:var(--ok);
  background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.28);
  border-radius:20px;padding:3px 10px;margin-bottom:8px;}
.banco-det-tit{font-size:1.25rem;font-weight:800;line-height:1.2;}
.banco-det-art{font-size:13px;color:var(--text3);margin-bottom:14px;}
.banco-det-datos{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px;}
.bd-dato{background:var(--bg3);border:1px solid var(--border);border-radius:10px;
  padding:9px;text-align:center;}
.bd-dato span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--text3);margin-bottom:3px;}
.bd-dato strong{font-size:14px;color:var(--p-soft);}
.banco-det-bloque{margin-bottom:14px;}
.banco-det-bloque label{display:block;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.07em;color:var(--text3);margin-bottom:7px;}
.banco-secs{display:flex;flex-wrap:wrap;gap:5px;}
.banco-sec{font-size:11px;font-weight:700;color:var(--p-soft);
  background:rgba(139,92,246,.1);border:1px solid rgba(139,92,246,.25);
  border-radius:20px;padding:3px 10px;}
.banco-yt{position:relative;padding-bottom:56.25%;height:0;border-radius:10px;overflow:hidden;}
.banco-yt iframe{position:absolute;inset:0;width:100%;height:100%;border:none;}
.banco-tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:12px;}
.banco-nota{font-size:11px;color:var(--text3);line-height:1.55;
  background:var(--bg3);border-radius:9px;padding:10px 12px;margin:0;}

.form-falta{background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.28);
  border-radius:11px;padding:11px 13px;margin-bottom:12px;}
.form-falta strong{display:block;font-size:13px;color:var(--amber);margin-bottom:4px;}
.form-falta p{font-size:12px;color:var(--text2);line-height:1.55;margin:0;}

.admin-user-card{display:block;}
.admin-user-card-cab{display:flex;align-items:center;justify-content:space-between;gap:10px;}

.herr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;}
.herr-card{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;
  background:var(--bg2);border:1px solid var(--border);border-radius:14px;padding:16px 14px;
  transition:border-color .15s,transform .1s;}
.herr-card:hover{border-color:var(--border2);transform:translateY(-2px);}
.herr-card:active{transform:scale(.97);}
.herr-icono{width:40px;height:40px;border-radius:12px;background:rgba(139,92,246,.14);
  color:var(--p-soft);display:flex;align-items:center;justify-content:center;margin-bottom:8px;}
.herr-icono svg{width:20px;height:20px;}
.herr-nombre{font-size:14px;font-weight:700;color:var(--text);}
.herr-desc{font-size:11px;color:var(--text3);line-height:1.4;}
.herr-abierta{background:var(--bg2);border:1px solid var(--border);border-radius:14px;
  padding:16px;margin-top:16px;}
.herr-abierta-cab{display:flex;align-items:center;gap:10px;margin-bottom:14px;}
.herr-abierta-tit{font-size:15px;font-weight:700;}
.af-ayuda{font-size:12px;color:var(--text3);line-height:1.55;margin:0 0 12px;}

.af-tabs{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:12px;}
.af-tab{font-size:11px;font-weight:700;padding:6px 11px;border-radius:20px;
  background:var(--bg3);border:1px solid var(--border);color:var(--text3);}
.af-tab.active{background:var(--p);border-color:var(--p);color:#fff;}
.af-cuerdas{display:grid;grid-template-columns:repeat(auto-fit,minmax(64px,1fr));gap:6px;margin-bottom:12px;}
.af-cuerda{display:flex;flex-direction:column;align-items:center;gap:1px;padding:9px 4px;
  background:var(--bg3);border:1px solid var(--border);border-radius:10px;transition:border-color .12s;}
.af-cuerda:hover{border-color:var(--p);}
.af-cuerda:active{transform:scale(.95);}
.af-cuerda-n{font-size:15px;font-weight:800;color:var(--text);}
.af-cuerda-hz{font-size:9px;color:var(--text3);}

.mt-bpm-caja{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:12px;}
.mt-paso{width:44px;height:40px;border-radius:10px;background:var(--bg3);
  border:1px solid var(--border2);color:var(--text2);font-size:13px;font-weight:700;}
.mt-paso:hover{background:var(--border);color:var(--text);}
.mt-bpm{display:flex;flex-direction:column;align-items:center;min-width:88px;}
.mt-bpm span{font-size:2.4rem;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;}
.mt-bpm small{font-size:9px;letter-spacing:.14em;color:var(--text3);text-transform:uppercase;}
.mt-rango{width:100%;accent-color:var(--p);margin-bottom:14px;}
.mt-compas-fila{display:flex;gap:6px;justify-content:center;margin-bottom:14px;}
.mt-compas{padding:7px 15px;border-radius:20px;font-size:13px;font-weight:700;
  background:var(--bg3);border:1px solid var(--border);color:var(--text3);}
.mt-compas.active{background:var(--p);border-color:var(--p);color:#fff;}
.mt-pulsos{display:flex;gap:8px;justify-content:center;margin-bottom:16px;}
.mt-pulso{width:34px;height:34px;border-radius:50%;background:var(--bg3);
  border:2px solid var(--border);transition:background .06s,transform .06s,border-color .06s;}
.mt-pulso-fuerte{border-color:var(--border2);}
.mt-pulso.on{background:var(--p);border-color:var(--p);transform:scale(1.16);}
.mt-pulso-fuerte.on{background:var(--amber);border-color:var(--amber);}

.bat-patrones{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:6px;margin-bottom:10px;}
.bat-pat{display:flex;flex-direction:column;gap:1px;padding:8px 10px;border-radius:10px;
  background:var(--bg3);border:1px solid var(--border);text-align:left;}
.bat-pat.active{background:rgba(139,92,246,.14);border-color:var(--p);}
.bat-pat-n{font-size:12px;font-weight:700;color:var(--text);}
.bat-pat-niv{font-size:9px;color:var(--text3);}
.bat-pista{font-size:12px;color:var(--text2);background:var(--bg3);border-radius:9px;
  padding:9px 12px;margin:0 0 12px;line-height:1.5;}
.bat-set{position:relative;width:100%;padding-bottom:72%;background:var(--bg3);
  border:1px solid var(--border);border-radius:14px;margin-bottom:12px;
  overflow:visible;}
.bat-pieza{position:absolute;transform:translate(-50%,-50%);border-radius:50%;
  background:var(--bg2);border:2px solid var(--border2);
  transition:background .06s,border-color .06s,transform .06s,box-shadow .06s;}
.bat-pieza span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  font-size:10px;font-weight:800;color:var(--text2);white-space:nowrap;
  pointer-events:none;text-shadow:0 1px 3px rgba(0,0,0,.85);letter-spacing:.01em;}
.bat-pieza.golpe{background:var(--pc);border-color:var(--pc);
  transform:translate(-50%,-50%) scale(1.1);box-shadow:0 0 26px var(--pc);}
.bat-pieza.golpe span{color:#0a0a14;text-shadow:none;}
@media(max-width:420px){.bat-pieza span{font-size:9px;}}
.bat-secuencia{display:flex;gap:4px;margin-bottom:12px;}
.bat-paso{flex:1;height:26px;border-radius:6px;background:var(--bg3);border:1px solid var(--border);
  display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;
  color:var(--text3);transition:background .05s;}
.bat-paso.on{background:var(--p);border-color:var(--p);color:#fff;}
.bat-tempo{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:10px;}
.bat-auto{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--text2);
  background:var(--bg3);border:1px solid var(--border);border-radius:10px;
  padding:10px 12px;margin-bottom:12px;}
.bat-auto input{accent-color:var(--p);width:16px;height:16px;}
.bat-cuenta{text-align:center;font-size:2.4rem;font-weight:800;color:var(--amber);
  min-height:44px;line-height:1.2;}

.resp-lista{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:6px;margin-bottom:14px;}
.resp-op{display:flex;flex-direction:column;gap:1px;padding:9px 11px;border-radius:10px;
  background:var(--bg3);border:1px solid var(--border);text-align:left;}
.resp-op.active{background:rgba(139,92,246,.14);border-color:var(--p);}
.resp-op-n{font-size:12px;font-weight:700;color:var(--text);}
.resp-op-niv{font-size:9px;color:var(--text3);}
.resp-postura{background:var(--bg3);border-radius:10px;padding:11px 13px;margin-bottom:10px;}
.resp-postura strong{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.07em;
  color:var(--text3);margin-bottom:4px;}
.resp-postura p{font-size:12px;color:var(--text2);line-height:1.55;margin:0;}
.resp-fases{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:6px;}
.resp-fase{font-size:10px;font-weight:700;color:var(--p-soft);background:rgba(139,92,246,.1);
  border:1px solid rgba(139,92,246,.24);border-radius:20px;padding:3px 9px;}

.tono-octavas{display:flex;gap:6px;justify-content:center;margin-bottom:12px;}
.tono-oct{padding:7px 16px;border-radius:20px;font-size:12px;font-weight:700;
  background:var(--bg3);border:1px solid var(--border);color:var(--text3);}
.tono-oct.active{background:var(--p);border-color:var(--p);color:#fff;}
.tono-rejilla{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:12px;}
.tono-tecla{display:flex;flex-direction:column;align-items:center;gap:1px;padding:12px 4px;
  border-radius:10px;background:var(--bg2);border:1px solid var(--border);transition:all .12s;}
.tono-tecla.negra{background:var(--bg3);}
.tono-tecla:hover{border-color:var(--p);}
.tono-tecla.sonando{background:var(--p);border-color:var(--p);transform:scale(1.05);}
.tono-lat{font-size:14px;font-weight:800;color:var(--text);}
.tono-am{font-size:9px;color:var(--text3);}
.tono-tecla.sonando .tono-lat,.tono-tecla.sonando .tono-am{color:#fff;}
.tono-actual{text-align:center;font-size:12px;color:var(--text3);font-variant-numeric:tabular-nums;}

.voz-sub-tabs{display:flex;gap:4px;background:var(--bg3);border:1px solid var(--border);
  border-radius:22px;padding:3px;margin-bottom:14px;}
.voz-sub{flex:1;padding:7px;border-radius:18px;font-size:12px;font-weight:700;color:var(--text3);}
.voz-sub.active{background:var(--p);color:#fff;}
@media(min-width:700px){
  .herr-grid{grid-template-columns:repeat(3,1fr);}
  .tono-rejilla{grid-template-columns:repeat(6,1fr);}
}

.dias-fila{display:flex;gap:5px;flex-wrap:wrap;}
.dia-btn{flex:1;min-width:42px;padding:9px 4px;border-radius:9px;font-size:12px;font-weight:700;
  background:var(--bg3);border:1px solid var(--border);color:var(--text3);transition:all .12s;}
.dia-btn:hover{border-color:var(--border2);color:var(--text2);}
.dia-btn.active{background:var(--p);border-color:var(--p);color:#fff;}
.hora-input{font-size:15px;font-weight:600;text-align:center;font-variant-numeric:tabular-nums;}
.hora-input::-webkit-calendar-picker-indicator{filter:invert(.7);cursor:pointer;}

.bat-modos{display:flex;gap:4px;background:var(--bg3);border:1px solid var(--border);
  border-radius:22px;padding:3px;margin-bottom:12px;}
.bat-modo{flex:1;padding:8px;border-radius:18px;font-size:12px;font-weight:700;color:var(--text3);}
.bat-modo.active{background:var(--p);color:#fff;}
.bat-cancion-cab{background:var(--bg3);border:1px solid var(--border);border-radius:11px;
  padding:11px 13px;margin-bottom:10px;}
.bat-cancion-cab strong{display:block;font-size:14px;color:var(--text);margin-bottom:3px;}
.bat-cancion-cab span{font-size:11px;color:var(--text3);line-height:1.5;}
.bat-mapa{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px;}
.bat-sec-chip{display:flex;align-items:center;gap:5px;padding:6px 11px;border-radius:20px;
  background:var(--bg3);border:1px solid var(--border);transition:all .15s;}
.bat-sec-chip.on{background:var(--p);border-color:var(--p);transform:scale(1.05);
  box-shadow:0 0 16px rgba(139,92,246,.4);}
.bat-sec-n{font-size:11px;font-weight:700;color:var(--text2);}
.bat-sec-c{font-size:9px;font-weight:800;color:var(--text3);
  background:var(--bg2);border-radius:20px;padding:1px 6px;}
.bat-sec-chip.on .bat-sec-n{color:#fff;}
.bat-sec-chip.on .bat-sec-c{color:var(--p);background:#fff;}

.seccion-sub{font-size:13px;color:var(--text3);line-height:1.5;margin:-6px 0 16px;}

.af-medidor{background:var(--bg3);border:1px solid var(--border);border-radius:14px;
  padding:20px 16px 16px;text-align:center;margin-bottom:14px;
  transition:border-color .25s,background .25s;}
.af-medidor.af-ok{border-color:rgba(34,197,94,.45);background:rgba(34,197,94,.05);}
.af-medidor.af-cerca{border-color:rgba(245,158,11,.35);}
.af-medidor.af-lejos{border-color:rgba(239,68,68,.3);}

.af-nota-grande{font-size:3.6rem;font-weight:800;line-height:1;color:var(--text3);
  transition:color .2s;font-variant-numeric:tabular-nums;letter-spacing:-.02em;}
.af-medidor.af-ok    .af-nota-grande{color:var(--ok);}
.af-medidor.af-cerca .af-nota-grande{color:var(--amber);}
.af-medidor.af-lejos .af-nota-grande{color:var(--err);}
.af-freq{font-size:11px;color:var(--text3);font-variant-numeric:tabular-nums;
  min-height:15px;margin-top:2px;}

.af-escala{position:relative;height:56px;margin:16px 0 6px;}
.af-marcas{position:absolute;inset:0;display:flex;justify-content:space-between;
  align-items:flex-end;padding:0 2px;}
.af-marca{width:1px;height:12px;background:var(--border2);border-radius:1px;}
.af-marca-alta{height:20px;}
.af-marca-centro{width:2px;height:100%;background:transparent;}
.af-zona-ok{position:absolute;left:45.5%;right:45.5%;top:0;bottom:0;
  background:rgba(34,197,94,.10);border-radius:4px;}

.af-centro{position:absolute;left:50%;top:0;bottom:0;width:2px;
  background:var(--ok);transform:translateX(-50%);border-radius:2px;opacity:.55;}

.af-aguja{position:absolute;left:50%;top:-4px;bottom:-4px;width:4px;border-radius:3px;
  background:var(--text);transform:translateX(-50%);
  transition:left .1s linear,background .2s;box-shadow:0 0 10px rgba(0,0,0,.5);}
.af-medidor.af-ok    .af-aguja{background:var(--ok);box-shadow:0 0 16px var(--ok);}
.af-medidor.af-cerca .af-aguja{background:var(--amber);}
.af-medidor.af-lejos .af-aguja{background:var(--err);}

.af-escala-etq{display:flex;justify-content:space-between;align-items:center;
  font-size:10px;color:var(--text3);font-variant-numeric:tabular-nums;}
.af-escala-etq span:nth-child(2){font-size:12px;font-weight:700;color:var(--text2);}
.af-veredicto{font-size:13px;font-weight:600;color:var(--text3);margin-top:12px;min-height:19px;}
.af-veredicto.af-v-ok{color:var(--ok);font-weight:800;}
.af-veredicto.af-v-cerca{color:var(--amber);}
.af-veredicto.af-v-lejos{color:var(--err);}

.af-cuerda.sonando{background:rgba(139,92,246,.16);border-color:var(--p);
  transform:scale(1.06);}
.af-cuerda.sonando .af-cuerda-n{color:var(--p-soft);}

.eq-fila{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;}
.eq-campo-caja{display:flex;flex-direction:column;gap:5px;min-width:0;}
.eq-campo-caja label{font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:.07em;color:var(--text3);}
.eq-campo-caja .eq-campo{width:100%;}
.eq-campo-caja .dias-fila{gap:4px;}
.eq-campo-caja .dia-btn{padding:8px 2px;font-size:11px;min-width:0;}
input[type="time"].eq-campo,input[type="date"].eq-campo{
  font-variant-numeric:tabular-nums;text-align:center;padding-left:6px;padding-right:6px;}
input[type="time"].eq-campo::-webkit-calendar-picker-indicator,
input[type="date"].eq-campo::-webkit-calendar-picker-indicator{filter:invert(.7);cursor:pointer;}

@media(max-width:480px){.eq-fila{grid-template-columns:1fr;gap:10px;}}

.ensayo-aviso{background:rgba(139,92,246,.07);border:1px solid rgba(139,92,246,.22);
  border-radius:11px;padding:11px 13px;margin-bottom:12px;
  font-size:12px;color:var(--text2);line-height:1.55;}

.admin-svc-card{max-width:100%;overflow:hidden;}
.admin-svc-body{max-width:100%;overflow-x:hidden;}
.admin-svc-body input,
.admin-svc-body select,
.admin-svc-body textarea{max-width:100%;min-width:0;}
input[type="date"],input[type="time"]{min-width:0;max-width:100%;}
.eq-fila{min-width:0;}
.eq-fila > *{min-width:0;}
.cs-accordion,.cs-acc-item,.cs-acc-trigger{max-width:100%;min-width:0;}
.cs-acc-trigger-left{min-width:0;overflow:hidden;}
.cs-acc-trigger-left span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cs-check-item{max-width:100%;min-width:0;}
.cs-check-item span{overflow:hidden;text-overflow:ellipsis;}
.admin-svc-header{min-width:0;}
.admin-svc-tipo{overflow:hidden;text-overflow:ellipsis;}

/* ==========================================================
   v58 — instalación, actualización, consentimiento y PIN
   ========================================================== */

.update-bar{position:fixed;left:0;right:0;bottom:0;z-index:10000;display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;background:var(--p);color:#fff;padding:11px 16px;font-size:13.5px;font-weight:600;box-shadow:0 -4px 20px rgba(0,0,0,.28);}
.update-bar button{background:#fff;color:var(--p2);border-radius:8px;padding:7px 16px;font-size:13px;font-weight:700;}
.update-bar button:active{transform:scale(.97);}





.instalar-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--p);color:#fff;padding:11px 18px;border-radius:var(--radius-sm);font-weight:700;font-size:13.5px;width:100%;transition:opacity .15s,transform .1s;}
.instalar-btn:hover{opacity:.88;}
.instalar-btn:active{transform:scale(.98);}

.pasos-inst{display:flex;flex-direction:column;gap:14px;}
.pasos-inst > p{font-size:13.5px;color:var(--text2);line-height:1.55;}
.paso{display:grid;grid-template-columns:26px 1fr;gap:12px;align-items:start;}
.paso-n{width:26px;height:26px;border-radius:50%;background:var(--p);color:#fff;font-size:12.5px;font-weight:700;display:flex;align-items:center;justify-content:center;}
.paso-txt{font-size:13.5px;color:var(--text);line-height:1.5;padding-top:3px;}
.paso-txt em{color:var(--text2);font-style:normal;display:block;font-size:12.5px;margin-top:2px;}
.paso-ico{display:inline-flex;vertical-align:-4px;margin:0 3px;color:var(--p-soft);}
.inst-aviso{border-left:3px solid var(--amber);background:rgba(245,158,11,.09);border-radius:0 8px 8px 0;padding:12px 14px;font-size:13px;color:var(--text2);line-height:1.5;}
.inst-aviso strong{color:var(--text);}
.inst-copiar{display:flex;gap:8px;align-items:center;}
.inst-copiar input{font-size:12.5px;font-family:var(--mono);}

.consent-row{display:flex;align-items:flex-start;gap:9px;font-size:12.5px;color:var(--text2);line-height:1.45;cursor:pointer;padding:2px 0;}
.consent-row input[type=checkbox]{width:17px;height:17px;flex:0 0 17px;margin-top:1px;accent-color:var(--p);cursor:pointer;}
.consent-row a{text-decoration:underline;}

.login-hola{font-size:14px;color:var(--text);text-align:center;font-weight:600;line-height:1.4;}
.login-hola span{display:block;font-size:12.5px;color:var(--text3);font-weight:400;margin-top:3px;}
#login-pin{text-align:center;font-family:var(--mono);font-size:20px;letter-spacing:.35em;padding:14px;}
#login-pin::placeholder{font-family:var(--font);font-size:14px;letter-spacing:normal;}
.link-btn{color:var(--text3);font-size:12.5px;text-decoration:underline;padding:4px;background:none;}
.link-btn:hover{color:var(--text2);}

.pin-badge{display:inline-flex;align-items:center;gap:6px;background:var(--bg3);border:1px solid var(--border2);border-radius:8px;padding:3px 9px;font-family:var(--mono);font-size:13px;font-weight:500;letter-spacing:.12em;color:var(--p-soft);}
.pin-badge-lbl{font-family:var(--font);font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text3);}
.pin-regen{color:var(--text3);font-size:11px;text-decoration:underline;padding:2px 4px;}
.pin-regen:hover{color:var(--p-soft);}
.pin-nuevo{display:flex;flex-direction:column;gap:10px;align-items:center;text-align:center;border:1px solid var(--p);background:rgba(139,92,246,.09);border-radius:var(--radius-sm);padding:18px;}
.pin-nuevo .pin-grande{font-family:var(--mono);font-size:32px;font-weight:500;letter-spacing:.35em;text-indent:.35em;color:var(--text);}
.pin-nuevo p{font-size:12.5px;color:var(--text2);line-height:1.5;}

.bienv-hero{display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;}
.bienv-ico{width:52px;height:52px;border-radius:16px;background:var(--bg3);border:1px solid var(--border2);color:var(--p);display:flex;align-items:center;justify-content:center;}
.bienv-hero h2{font-size:1.05rem;font-weight:700;letter-spacing:-.01em;line-height:1.3;}
.bienv-hero p{font-size:13px;color:var(--text2);line-height:1.5;}
.instalar-listo{display:none;align-items:center;justify-content:center;gap:8px;background:rgba(34,197,94,.1);border:1px solid var(--green);color:var(--green);border-radius:var(--radius-sm);padding:11px 14px;font-size:13px;font-weight:600;}
.pin-faltantes{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;border:1px solid var(--amber);background:rgba(245,158,11,.09);border-radius:var(--radius-sm);padding:13px 16px;margin-bottom:14px;}
.pin-faltantes strong{display:block;font-size:13.5px;font-weight:700;color:var(--text);}
.pin-faltantes span{display:block;font-size:12.5px;color:var(--text2);line-height:1.45;margin-top:2px;}
.svc-cal-row{padding:0 16px 12px;}
.svc-cal-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;border:1px solid var(--border2);color:var(--text2);background:transparent;border-radius:var(--radius-sm);padding:10px 14px;font-size:13px;font-weight:600;transition:background .15s,color .15s,border-color .15s;}
.svc-cal-btn:hover{background:var(--bg3);color:var(--text);border-color:var(--p);}
.svc-cal-btn:active{transform:scale(.99);}

/* ── Configuración del ministerio ─────────────────────────────── */
.cfg-wrap{display:flex;flex-direction:column;gap:22px;}
.cfg-bloque{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px;}
.cfg-ayuda{font-size:12.5px;color:var(--text2);line-height:1.5;margin:2px 0 12px;}
.cfg-lista{list-style:none;display:flex;flex-wrap:wrap;gap:7px;margin:0 0 12px;padding:0;}
.cfg-item{display:inline-flex;align-items:center;gap:7px;background:var(--bg3);border:1px solid var(--border2);border-radius:20px;padding:5px 6px 5px 12px;font-size:12.5px;color:var(--text);}
.cfg-item-fijo{border-style:dashed;}
.cfg-quitar{width:19px;height:19px;border-radius:50%;background:var(--border2);color:var(--text2);font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;}
.cfg-quitar:hover{background:var(--err);color:#fff;}
.cfg-fijo-lbl{font-size:9.5px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--text3);padding-right:7px;}
.cfg-agregar{display:flex;gap:8px;}
.cfg-agregar input{flex:1;font-size:13px;padding:9px 12px;}
.cfg-agregar .btn-ghost{white-space:nowrap;}
.cfg-nota{border-left:3px solid var(--amber);background:rgba(245,158,11,.08);border-radius:0 8px 8px 0;padding:13px 16px;font-size:12.5px;color:var(--text2);line-height:1.55;}
.cfg-nota strong{color:var(--text);}
.cfg-nota em{font-style:normal;font-family:var(--mono);font-size:11.5px;}

/* ── v59: bienvenida, instrucciones y login ───────────────────── */
.bienv-reco{font-size:11.5px;color:var(--text3);text-align:center;line-height:1.45;margin-top:-4px;}
.login-saludo{font-size:1.05rem;font-weight:700;letter-spacing:-.01em;line-height:1.3;color:var(--text);margin-top:4px;}
.campo{display:flex;flex-direction:column;gap:6px;}
.campo label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text3);}
#login-pin{text-align:left;font-family:var(--font);font-size:16px;letter-spacing:.28em;padding:11px 14px;}
#login-pin::placeholder{font-family:var(--font);font-size:15px;letter-spacing:normal;}
.consent-link{font-size:12px;color:var(--text3);text-decoration:underline;align-self:flex-start;margin-top:-4px;}
.consent-link:hover{color:var(--p-soft);}
.pin-hint strong{color:var(--text2);font-weight:600;}

.inst-titulo{font-size:1.02rem;font-weight:700;letter-spacing:-.01em;line-height:1.3;color:var(--text);}
.inst-intro{font-size:13px;color:var(--text2);line-height:1.55;margin-top:-6px;}
.paso-rotulo{display:block;font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--p-soft);margin-bottom:2px;}
.paso-n{font-family:var(--mono);font-size:11.5px;letter-spacing:.02em;}
.paso-txt b{font-weight:600;color:var(--text);}
.inst-seguir{align-self:center;margin-top:4px;}



/* ── Cola de reproducción ─────────────────────────────────────── */
.cola-barra{position:relative;background:var(--bg3);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;margin-bottom:12px;transition:border-color .2s,background .2s;}
.cola-barra.cola-activa{border-color:var(--p);background:rgba(139,92,246,.1);}
.cola-inicio{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.cola-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border2);color:var(--text2);background:transparent;border-radius:8px;padding:8px 13px;font-size:12.5px;font-weight:600;transition:background .15s,color .15s,border-color .15s;}
.cola-btn:hover{background:var(--bg2);color:var(--text);border-color:var(--p);}
.cola-btn:active{transform:scale(.97);}
.cola-btn-play{background:var(--p);border-color:var(--p);color:#fff;}
.cola-btn-play:hover{background:var(--p2);border-color:var(--p2);color:#fff;}
.cola-btn-ico{padding:8px 10px;}
.cola-btn-stop{border-color:var(--err);color:var(--err);}
.cola-btn-stop:hover{background:rgba(239,68,68,.12);color:var(--err);border-color:var(--err);}

.cola-player{display:flex;flex-direction:column;gap:9px;}
.cola-cab{display:flex;align-items:center;gap:11px;min-width:0;}
.cola-pp{width:38px;height:38px;flex:0 0 38px;border-radius:50%;background:var(--p);color:#fff;display:flex;align-items:center;justify-content:center;transition:background .15s;}
.cola-pp:hover{background:var(--p2);}
.cola-pp .cola-pp-pausa{display:none;}
.cola-pp.sonando .cola-pp-play{display:none;}
.cola-pp.sonando .cola-pp-pausa{display:flex;}
.cola-tit{flex:1;min-width:0;display:flex;flex-direction:column;}
.cola-tit b{font-size:13.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cola-tit span{font-size:11.5px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cola-pos{font-family:var(--mono);font-size:11px;color:var(--p-soft);white-space:nowrap;}
.cola-bar{position:relative;height:5px;background:var(--border);border-radius:3px;cursor:pointer;margin:6px 0;overflow:visible;}
.cola-bar::before{content:"";position:absolute;left:0;right:0;top:-11px;bottom:-11px;}
.cola-knob{position:absolute;z-index:2;top:50%;left:0;width:13px;height:13px;margin:-6.5px 0 0 -6.5px;border-radius:50%;background:#fff;border:2px solid var(--p);box-shadow:0 1px 4px rgba(0,0,0,.4);pointer-events:none;transition:left .3s linear;}
.cola-fill{position:absolute;z-index:1;top:0;left:0;height:100%;width:0;background:var(--p);border-radius:3px;transition:width .3s linear;}
.cola-pies{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.cola-pies .cola-t,.cola-pies .cola-d{font-family:var(--mono);font-size:11px;color:var(--text3);min-width:38px;}
.cola-pies .cola-d{text-align:right;}
.cola-ctrls{display:flex;align-items:center;gap:7px;}
.cola-cerrar{position:absolute;top:7px;right:7px;width:24px;height:24px;border-radius:50%;color:var(--text3);display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;}
.cola-cerrar:hover{background:var(--bg2);color:var(--err);}
.cola-player .cola-cab{padding-right:24px;}

/* ── Avisos de canción repetida y PIN dentro de la edición ────── */
.cancion-reciente{border-color:var(--err)!important;background:rgba(239,68,68,.08)!important;}
.aviso-reciente{display:block;font-size:11px;color:var(--err);line-height:1.4;margin-top:3px;font-weight:600;}
.picker-song-item.psi-reciente{border-left:3px solid var(--err);}
.psi-aviso{font-size:10px;font-weight:700;color:var(--err);background:rgba(239,68,68,.14);border-radius:5px;padding:1px 6px;margin-left:6px;white-space:nowrap;}
.pin-fila{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.pin-badge-grande{font-size:15px;padding:6px 12px;letter-spacing:.18em;}
.pin-aviso{font-size:11px;color:var(--text3);line-height:1.45;margin-top:6px;}

/* ── Confirmación propia (el confirm del navegador no aparece en la app) ── */
.modal-box-corto{max-width:380px;}
.conf-titulo{font-size:1.02rem;font-weight:700;letter-spacing:-.01em;margin-bottom:8px;}
.conf-texto{font-size:13.5px;color:var(--text2);line-height:1.55;}
.conf-ft{display:flex;gap:9px;}
.conf-ft .btn-ghost{flex:1;justify-content:center;padding:12px 16px;}
.conf-ft .btn-primary{flex:1;justify-content:center;}

/* ── Interruptor de configuración y copiar letra ──────────────── */
.cfg-switch{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--text);cursor:pointer;padding:4px 0;}
.cfg-switch input{width:18px;height:18px;accent-color:var(--p);cursor:pointer;flex:0 0 18px;}
.copiar-letra-btn{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border2);color:var(--text2);background:transparent;border-radius:7px;padding:5px 9px;font-size:11.5px;font-weight:600;transition:background .15s,color .15s,border-color .15s;}
.copiar-letra-btn:hover{background:var(--bg3);color:var(--text);border-color:var(--p);}
.copiar-letra-btn:active{transform:scale(.97);}

/* ---------- Acceso pausado: iglesia inactiva ----------
   Tapa la app entera. Va por encima de todo y no se puede cerrar:
   mientras el enlace esté suspendido no se navega a ninguna parte. */
.pausa-capa{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;
  justify-content:center;padding:22px;background:rgba(8,7,14,.86);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
.pausa-card{position:relative;width:100%;max-width:330px;background:#1a1822;
  border:1px solid #2b2738;border-radius:22px;padding:34px 26px 28px;text-align:center;
  box-shadow:0 24px 60px rgba(0,0,0,.55);overflow:hidden;}
.pausa-card::before{content:"";position:absolute;top:0;left:0;right:0;height:5px;
  background:#f0a12e;}
.pausa-ico{width:66px;height:66px;margin:0 auto 18px;border-radius:50%;
  background:rgba(240,161,46,.14);display:flex;align-items:center;justify-content:center;
  color:#f0a12e;}
.pausa-card h2{font-size:19px;font-weight:800;color:var(--text);margin:0 0 14px;
  letter-spacing:-.01em;}
.pausa-card p{font-size:13.5px;line-height:1.6;color:var(--text2);margin:0 0 13px;}
.pausa-card p:last-of-type{margin-bottom:0;}
.pausa-pie{margin-top:20px;font-size:11.5px;color:var(--text3);display:flex;
  align-items:center;justify-content:center;gap:7px;}
.pausa-punto{width:6px;height:6px;border-radius:50%;background:#f0a12e;
  animation:pausaLatido 1.8s ease-in-out infinite;}
@keyframes pausaLatido{0%,100%{opacity:.25}50%{opacity:1}}
.pausa-card a{color:var(--p);text-decoration:none;font-weight:600;}
