:root{
    --dark:#15161C;
    --dark2:#1D1F27;
    --pink:#E6007E;
    --pink-light:#FDE8F2;
    --pink-dark:#B0005F;
    --page-bg:#F5F6F8;
    --card-bg:#FFFFFF;
    --text:#16171C;
    --text-muted:#70737D;
    --border:#E7E8EC;
    --red:#DC2626;
    --red-bg:#FDECEC;
    --green:#16A34A;
    --green-bg:#E9F7EF;
    --amber:#D97706;
    --amber-bg:#FEF3E2;
    --blue:#2563EB;
    --blue-bg:#E6EEFB;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
    background:var(--page-bg);
    color:var(--text);
  }
  ::selection{background:var(--pink-light);}
  button{font-family:inherit;}
  :focus-visible{outline:2px solid var(--pink);outline-offset:2px;}

  /* ---------- Login ---------- */
  .login-wrap{
    min-height:100vh;width:100%;
    display:flex;align-items:center;justify-content:center;
    background:var(--page-bg);
    padding:20px;
  }
  .login-card{
    width:360px;background:#fff;border-radius:12px;padding:34px 30px;
    border:1px solid var(--border);
    box-shadow:0 2px 10px rgba(20,20,25,.05);
  }
  .login-logo{
    display:flex;align-items:center;justify-content:center;
    height:64px;margin-bottom:28px;
  }
  .login-logo-placeholder{
    font-size:15px;font-weight:800;letter-spacing:.5px;color:var(--pink-dark);
    text-align:center;line-height:1.2;
  }
  .login-logo-placeholder small{
    display:block;font-size:9.5px;font-weight:600;color:var(--text-muted);
    letter-spacing:1.2px;text-transform:uppercase;margin-top:3px;
  }
  .login-field{margin-bottom:16px;}
  .login-field label{font-size:12.5px;font-weight:600;color:var(--text);display:block;margin-bottom:6px;}
  .login-input-wrap{position:relative;}
  .login-input-wrap svg{
    position:absolute;left:12px;top:50%;transform:translateY(-50%);
    width:15px;height:15px;color:#AEB0B8;pointer-events:none;
  }
  .login-field input{
    width:100%;padding:10px 12px 10px 36px;border:1px solid var(--border);border-radius:8px;
    font-size:13.5px;background:#fff;color:var(--text);
  }
  .login-field input:focus{border-color:var(--pink);}
  .login-field input:focus-visible{outline:none;}
  .login-error{
    display:none;
    font-size:12.5px;color:var(--red);background:var(--red-bg);
    padding:9px 12px;border-radius:8px;margin-bottom:14px;
  }
  .login-error.show{display:block;}
  .login-btn{
    width:100%;padding:11px;border:none;border-radius:8px;
    background:var(--pink);color:#fff;font-weight:700;font-size:13.5px;cursor:pointer;
    margin-top:6px;transition:background .12s ease;
  }
  .login-btn:hover{background:var(--pink-dark);}
  .login-btn:disabled{background:#CACCD1;cursor:default;}
  .login-footer{
    text-align:center;font-size:11px;color:#B4B6BE;margin-top:20px;
  }

  /* ---------- Sidebar ---------- */
  .app{display:none;min-height:100vh;}
  .app.active{display:flex;}
  .sidebar{
    width:248px;flex-shrink:0;background:var(--dark);color:#fff;
    padding:22px 14px;display:flex;flex-direction:column;
    position:sticky;top:0;height:100vh;overflow-y:auto;overflow-x:hidden;
    transition:width .18s ease;
  }
  .sidebar.collapsed{width:72px;padding-left:10px;padding-right:10px;}

  .sidebar-top{display:flex;justify-content:flex-end;padding:4px 8px 22px 8px;}
  .sidebar.collapsed .sidebar-top{justify-content:center;padding-left:0;padding-right:0;}

  .sidebar-toggle{
    width:30px;height:30px;border-radius:7px;flex-shrink:0;padding:0;
    background:transparent;border:1px solid #33353F;color:#9C9EAA;
    display:flex;align-items:center;justify-content:center;cursor:pointer;
    transition:background .12s ease, color .12s ease, border-color .12s ease;
  }
  .sidebar-toggle:hover{background:#22242E;color:#fff;border-color:#43454F;}
  .sidebar-toggle i{font-size:17px;line-height:1;}
  .nav-section{font-size:10px;color:#6E7080;letter-spacing:1px;text-transform:uppercase;font-weight:700;padding:12px 12px 6px 12px;white-space:nowrap;}
  .sidebar.collapsed .nav-section{display:none;}
  nav{display:flex;flex-direction:column;gap:2px;}
  .nav-item{
    display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;
    color:#C7C9D4;font-size:13.5px;font-weight:500;cursor:pointer;border:none;
    background:none;text-align:left;width:100%;transition:background .12s ease, color .12s ease;
    white-space:nowrap;
  }
  .sidebar.collapsed .nav-item{justify-content:center;padding-left:0;padding-right:0;}
  .sidebar.collapsed .nav-label{display:none;}
  .nav-item:hover{background:#22242E;color:#fff;}
  .nav-item.active{background:var(--pink);color:#fff;}
  .nav-icon{width:18px;height:18px;flex-shrink:0;color:#C7C9D4;display:flex;align-items:center;justify-content:center;}
  .nav-icon svg{width:18px;height:18px;display:block;}
  .nav-item:hover .nav-icon,.nav-item.active .nav-icon{color:#fff;}
  .sidebar-footer{margin-top:auto;padding-top:14px;border-top:1px solid #292B36;}
  .who{display:flex;align-items:center;gap:9px;padding:8px;border-radius:9px;}
  .sidebar.collapsed .who{justify-content:center;padding-left:0;padding-right:0;}
  .sidebar.collapsed .who-name{display:none;}
  .avatar{
    width:30px;height:30px;border-radius:50%;background:var(--pink-light);color:var(--pink-dark);
    display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;
  }
  .who-name{font-size:13px;font-weight:600;white-space:nowrap;}
  .logout-btn{
    display:flex;align-items:center;gap:8px;width:100%;margin-top:6px;padding:8px 8px;
    border:none;background:none;color:#8A8C99;font-size:12.5px;cursor:pointer;border-radius:8px;
    white-space:nowrap;
  }
  .sidebar.collapsed .logout-btn{justify-content:center;padding-left:0;padding-right:0;}
  .sidebar.collapsed .logout-label{display:none;}
  .logout-btn:hover{background:#22242E;color:#fff;}

  /* ---------- Main ---------- */
  .main{flex:1;min-width:0;}
  .topbar{
    background:var(--card-bg);border-bottom:1px solid var(--border);
    padding:18px 32px;position:sticky;top:0;z-index:5;
  }
  .topbar h1{font-size:19px;margin:0;font-weight:700;letter-spacing:-.2px;}
  .content{padding:26px 32px 60px 32px;}

  /* ---------- Empty state ---------- */
  .empty-state{
    background:var(--card-bg);border:1px solid var(--border);border-radius:16px;
    padding:64px 40px;text-align:center;max-width:520px;margin:40px auto 0 auto;
  }
  .empty-icon{
    width:56px;height:56px;border-radius:14px;background:var(--pink-light);color:var(--pink-dark);
    display:flex;align-items:center;justify-content:center;margin:0 auto 20px auto;
  }
  .empty-icon svg{width:26px;height:26px;}
  .empty-state h2{font-size:16px;margin:0 0 8px 0;font-weight:700;}
  .empty-state p{font-size:13.5px;color:var(--text-muted);line-height:1.6;margin:0;}
  .empty-tag{
    display:inline-block;margin-top:18px;font-size:10.5px;font-weight:700;
    color:var(--text-muted);background:#F1F2F5;padding:4px 10px;border-radius:20px;
    letter-spacing:.4px;text-transform:uppercase;
  }

  .view{display:none;}
  .view.active{display:block;}

  /* ---------- Derivaciones ---------- */
  .deriv-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;}
  .pill-filter{display:flex;gap:6px;}
  .pill{font-size:12px;padding:6px 13px;border-radius:20px;background:#F1F2F5;color:var(--text-muted);font-weight:600;cursor:pointer;border:none;}
  .pill.active{background:var(--dark);color:#fff;}
  .deriv-refresh{width:34px;height:34px;border-radius:9px;border:1px solid var(--border);background:#fff;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;}
  .deriv-refresh:hover{background:#F5F6F8;color:var(--text);}
  .deriv-refresh svg{width:16px;height:16px;}
  .deriv-refresh.spinning svg{animation:deriv-spin .7s linear infinite;}
  @keyframes deriv-spin{to{transform:rotate(360deg);}}

  .deriv-status{padding:40px;text-align:center;color:var(--text-muted);font-size:13.5px;}
  .deriv-status-error{color:var(--red);}
  .deriv-retry-btn{margin-left:8px;border:none;background:var(--pink);color:#fff;font-size:12.5px;font-weight:700;padding:6px 12px;border-radius:7px;cursor:pointer;}
  .deriv-retry-btn:hover{background:var(--pink-dark);}

  .deriv-list{display:flex;flex-direction:column;gap:10px;}
  .deriv-card{background:var(--card-bg);border:1px solid var(--border);border-radius:14px;padding:16px 18px;display:flex;gap:14px;align-items:flex-start;}
  .deriv-card.is-atendida{opacity:.6;}
  .deriv-badge{flex-shrink:0;width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;}
  .deriv-badge svg{width:18px;height:18px;}
  .deriv-badge.cat-queja{background:var(--red-bg);color:var(--red);}
  .deriv-badge.cat-dolor{background:var(--amber-bg);color:var(--amber);}
  .deriv-badge.cat-patologia{background:var(--blue-bg);color:var(--blue);}
  .deriv-badge.cat-otro{background:#F1F2F5;color:var(--text-muted);}

  .deriv-body{flex:1;min-width:0;}
  .deriv-top-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;}
  .deriv-cliente{font-size:13.5px;font-weight:700;}
  .deriv-tel{font-size:12px;color:var(--text-muted);font-weight:500;margin-left:6px;}
  .deriv-tiempo{font-size:11.5px;color:var(--text-muted);white-space:nowrap;}
  .deriv-cat-label{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;margin-top:2px;}
  .deriv-cat-label.cat-queja{color:var(--red);}
  .deriv-cat-label.cat-dolor{color:var(--amber);}
  .deriv-cat-label.cat-patologia{color:var(--blue);}
  .deriv-cat-label.cat-otro{color:var(--text-muted);}
  .deriv-mensaje{font-size:13px;color:var(--text);margin-top:6px;line-height:1.5;white-space:pre-wrap;}
  .deriv-resumen{font-size:13px;color:var(--text);margin:8px 0 0 0;line-height:1.55;}
  .deriv-quote{margin-top:10px;padding:10px 14px;background:var(--pink-light);border-left:3px solid var(--pink);border-radius:8px;}
  .deriv-quote-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--pink-dark);margin:0 0 4px 0;}
  .deriv-quote-text{font-size:13px;color:var(--text);margin:0;line-height:1.5;font-style:italic;}
  .deriv-actions{margin-top:10px;display:flex;align-items:center;gap:10px;}
  .deriv-atender-btn{border:1px solid var(--border);background:#fff;color:var(--text);font-size:12px;font-weight:700;padding:6px 12px;border-radius:7px;cursor:pointer;}
  .deriv-atender-btn:hover{background:var(--pink);color:#fff;border-color:var(--pink);}
  .deriv-atender-btn:disabled{opacity:.5;cursor:default;}
  .deriv-atendida-tag{font-size:11.5px;color:var(--green);font-weight:700;display:flex;align-items:center;gap:5px;}

  /* ---------- Agenda ---------- */
  .agenda-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;gap:12px;flex-wrap:wrap;}
  .agenda-nav{display:flex;align-items:center;gap:10px;}
  .agenda-nav-btn{width:34px;height:34px;border-radius:9px;border:1px solid var(--border);background:#fff;color:var(--text-muted);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;}
  .agenda-nav-btn:hover{background:#F5F6F8;color:var(--text);}
  .agenda-nav-btn:disabled{opacity:.4;cursor:default;}
  .agenda-nav-btn:disabled:hover{background:#fff;color:var(--text-muted);}
  .agenda-nav-btn svg{width:16px;height:16px;}
  .agenda-fecha{display:flex;align-items:center;gap:8px;min-width:220px;justify-content:center;}
  .agenda-fecha span{font-size:14px;font-weight:700;}
  .agenda-hoy-btn{font-size:11.5px;font-weight:700;color:var(--pink-dark);background:var(--pink-light);border:none;padding:4px 10px;border-radius:20px;cursor:pointer;}
  .agenda-hoy-btn:hover{background:var(--pink);color:#fff;}

  .agenda-list{display:flex;flex-direction:column;background:var(--card-bg);border:1px solid var(--border);border-radius:14px;overflow:hidden;}
  .cita-row{display:flex;align-items:center;gap:14px;padding:13px 20px;border-bottom:1px solid var(--border);}
  .cita-row:last-child{border-bottom:none;}
  .cita-time{width:52px;font-weight:700;font-size:13.5px;font-variant-numeric:tabular-nums;flex-shrink:0;color:var(--text);}
  .prof-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
  .cita-info{flex:1;min-width:0;}
  .cita-servicio{font-size:13.5px;font-weight:600;color:var(--text);}
  .cita-prof{font-size:12px;color:var(--text-muted);}
  .cita-cliente{font-size:12.5px;color:var(--text-muted);text-align:right;flex-shrink:0;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .badge{font-size:10.5px;font-weight:700;padding:3px 8px;border-radius:6px;text-transform:uppercase;letter-spacing:.3px;flex-shrink:0;}
  .badge-bot{background:var(--pink-light);color:var(--pink-dark);}
  .badge-manual{background:#EEF0F3;color:var(--text-muted);}

  /* ---------- Clientes ---------- */
  .cli-toolbar-left{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
  .cli-search{position:relative;}
  .cli-search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);width:15px;height:15px;color:#AEB0B8;pointer-events:none;}
  .cli-search input{
    width:280px;max-width:100%;padding:8px 12px 8px 34px;border:1px solid var(--border);border-radius:9px;
    font-size:13.5px;font-family:inherit;background:#fff;color:var(--text);
  }
  .cli-search input:focus{border-color:var(--pink);outline:none;}
  .cli-count{font-size:12px;color:var(--text-muted);}
  .cli-nombre{font-weight:600;}
  .serv-table tbody tr.is-inactivo td{opacity:.55;}
  .cli-etiquetas{display:flex;gap:6px;min-height:20px;}
  .badge-dificil{background:var(--amber-bg);color:var(--amber);}
  .badge-inactivo{background:#EEF0F3;color:var(--text-muted);}
  .cli-lopd{font-size:11.5px;font-weight:700;}
  .cli-lopd-ok{color:var(--green);}
  .cli-lopd-pend{color:var(--amber);}


  /* ---------- Clientes: ficha (panel lateral) ---------- */
  .serv-table tbody tr[data-id]{cursor:pointer;}
  .serv-table tbody tr[data-id]:hover td{background:var(--page-bg);}
  .cli-drawer-backdrop{
    position:fixed;inset:0;background:rgba(21,22,28,.35);z-index:90;
    opacity:0;visibility:hidden;transition:opacity .18s ease,visibility .18s ease;
  }
  .cli-drawer-backdrop.open{opacity:1;visibility:visible;}
  .cli-drawer{
    position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);background:var(--card-bg);
    z-index:91;display:flex;flex-direction:column;box-shadow:-8px 0 30px rgba(0,0,0,.12);
    transform:translateX(100%);visibility:hidden;
    transition:transform .2s ease,visibility .2s ease;
  }
  .cli-drawer.open{transform:translateX(0);visibility:visible;}
  .cli-drawer-head{
    display:flex;align-items:center;justify-content:space-between;gap:12px;
    padding:18px 24px;border-bottom:1px solid var(--border);
  }
  .cli-drawer-head h2{margin:0;font-size:17px;font-weight:700;}
  .cli-drawer-close{
    border:none;background:transparent;font-size:26px;line-height:1;color:var(--text-muted);
    cursor:pointer;padding:2px 8px;border-radius:7px;
  }
  .cli-drawer-close:hover{background:var(--page-bg);color:var(--text);}
  .cli-drawer-body{flex:1;overflow-y:auto;padding:8px 24px 28px;}
  .cli-sec{padding:18px 0 4px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:14px;}
  .cli-sec:last-child{border-bottom:none;}
  .cli-sec h3{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-weight:700;}
  .cli-sec .config-field{margin:0;}
  .cli-sec .serv-input:disabled{opacity:1;color:var(--text);background:var(--page-bg);cursor:default;}
  .cli-sec .serv-input.cli-textarea{width:100%;min-height:76px;resize:vertical;line-height:1.5;}
  .cli-row2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
  .cli-check{display:flex;align-items:center;gap:8px;font-size:13.5px;}
  .cli-checks{display:flex;flex-direction:column;gap:10px;padding-bottom:14px;}
  .cli-doc-list{list-style:none;margin:0;padding:0 0 14px;display:flex;flex-direction:column;gap:8px;}
  .cli-doc{
    display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;
    padding:9px 12px;border:1px solid var(--border);border-radius:9px;
  }
  .cli-doc-meta{color:var(--text-muted);font-size:12px;white-space:nowrap;}
  .cli-doc-nombre{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
  .cli-vacio{font-size:13px;color:var(--text-muted);margin:0;padding-bottom:14px;}
  .cli-doc-info{display:flex;flex-direction:column;gap:2px;min-width:0;}
  .cli-doc-acciones{display:flex;gap:6px;flex-shrink:0;align-items:center;}
  .cli-doc-btn{border:1px solid var(--border);background:#fff;border-radius:7px;font-size:12px;font-weight:700;padding:5px 11px;cursor:pointer;color:var(--text);}
  .cli-doc-btn:hover{background:var(--page-bg);}
  .cli-doc-btn-del{color:var(--red);}
  .cli-doc-btn-del:hover{background:var(--red-bg);border-color:var(--red);}
  .cli-doc-subir{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
  .cli-upload{display:inline-block;cursor:pointer;}
  .cli-doc-estado{font-size:12.5px;color:var(--text-muted);}
  .cli-doc-estado.is-error{color:var(--red);font-weight:600;}
  .cli-doc-estado.is-ok{color:var(--green);font-weight:600;}

  .cli-toolbar-right{display:flex;align-items:center;gap:10px;}
  .cli-new-btn{
    border:none;background:var(--pink);color:#fff;font-size:12.5px;font-weight:700;
    padding:9px 16px;border-radius:9px;cursor:pointer;white-space:nowrap;
  }
  .cli-new-btn:hover{background:var(--pink-dark);}
  .cli-drawer-foot{
    border-top:1px solid var(--border);padding:12px 24px 16px;background:var(--card-bg);
    display:flex;flex-direction:column;gap:8px;
  }
  .cli-form-msg{margin:0;font-size:12.5px;min-height:16px;color:var(--text-muted);}
  .cli-form-msg.is-error{color:var(--red);font-weight:600;}
  .cli-form-msg.is-ok{color:var(--green);font-weight:600;}
  .cli-foot-btns{display:flex;justify-content:flex-end;gap:10px;}
  .cli-btn-pri,.cli-btn-sec{border:none;border-radius:8px;font-size:13px;font-weight:700;padding:9px 18px;cursor:pointer;}
  .cli-btn-pri{background:var(--pink);color:#fff;}
  .cli-btn-pri:hover:not(:disabled){background:var(--pink-dark);}
  .cli-btn-pri:disabled{background:#F1F2F5;color:var(--text-muted);cursor:default;}
  .cli-btn-sec{background:#F1F2F5;color:var(--text);}
  .cli-btn-del{
    margin-right:auto;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--red);
    font-size:13px;font-weight:700;padding:9px 14px;cursor:pointer;
  }
  .cli-btn-del:hover:not(:disabled){background:var(--red-bg);border-color:var(--red);}
  .cli-btn-del:disabled{opacity:.5;cursor:default;}
  .cli-btn-sec:hover{background:#E7E8EC;}
  .cli-sec .serv-input.cli-invalid{border-color:var(--red);}
  .cli-excl{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;padding:2px 0;}
  .cli-excl .cli-check{font-weight:400;}
  .cli-excl.cli-invalid{outline:1px solid var(--red);outline-offset:4px;border-radius:6px;}
  .cli-check input{cursor:pointer;}
  .cli-check{cursor:pointer;}
  .cli-req{color:var(--red);}
  .cli-sec-inner{display:flex;flex-direction:column;gap:14px;}

  /* ---------- Servicios ---------- */
  .serv-toolbar{display:flex;justify-content:flex-end;margin-bottom:18px;}
  .serv-table-wrap{background:var(--card-bg);border:1px solid var(--border);border-radius:14px;overflow:hidden;overflow-x:auto;}
  .serv-table{width:100%;border-collapse:collapse;font-size:13.5px;}
  .serv-table thead th{
    text-align:left;font-size:11px;color:var(--text-muted);text-transform:uppercase;
    letter-spacing:.4px;font-weight:700;padding:12px 20px;border-bottom:1px solid var(--border);
    white-space:nowrap;background:var(--page-bg);
  }
  .serv-table tbody td{padding:8px 20px;border-bottom:1px solid var(--border);vertical-align:middle;white-space:nowrap;}
  .serv-table tbody tr:last-child td{border-bottom:none;}

  .serv-input{
    border:1px solid transparent;background:transparent;border-radius:7px;
    padding:6px 8px;font-size:13.5px;color:var(--text);font-family:inherit;width:200px;
    transition:border-color .12s ease,background .12s ease;
  }
  .serv-input-num{width:75px;}
  .serv-input:hover{background:var(--page-bg);}
  .serv-input:focus{border-color:var(--pink);background:#fff;outline:none;}

  .serv-switch{position:relative;display:inline-block;width:36px;height:20px;}
  .serv-switch input{opacity:0;width:0;height:0;position:absolute;}
  .serv-switch-slider{position:absolute;inset:0;background:#D9DAE1;border-radius:20px;cursor:pointer;transition:background .15s ease;}
  .serv-switch-slider::before{
    content:"";position:absolute;width:15px;height:15px;left:2.5px;top:2.5px;
    background:#fff;border-radius:50%;transition:transform .15s ease;
  }
  .serv-switch input:checked + .serv-switch-slider{background:var(--pink);}
  .serv-switch input:checked + .serv-switch-slider::before{transform:translateX(16px);}

  .serv-save-btn{
    padding:6px 14px;border:none;border-radius:7px;font-size:12px;font-weight:700;
    background:#F1F2F5;color:var(--text-muted);cursor:pointer;
    transition:background .12s ease,color .12s ease,opacity .12s ease;
  }
  .serv-table tr.is-dirty .serv-save-btn:not(:disabled){background:var(--pink);color:#fff;}
  .serv-save-btn.is-dirty:not(:disabled){background:var(--pink);color:#fff;}
  .serv-save-btn:disabled{opacity:.55;cursor:default;}

  /* ---------- Configuración (formulario, no tabla) ---------- */
  .config-form{
    background:var(--card-bg);border:1px solid var(--border);border-radius:14px;
    padding:24px 28px;max-width:480px;margin:0 auto;display:flex;flex-direction:column;gap:18px;
  }
  .config-field{display:flex;flex-direction:column;gap:6px;}
  .config-field label{font-size:12.5px;font-weight:600;color:var(--text);}
  .config-field .serv-input{width:100%;border-color:var(--border);}
  .config-field-row-inputs{display:flex;align-items:center;gap:8px;}
  .config-field-row-inputs .serv-input{width:auto;flex:1;border-color:var(--border);}
  .config-actions{display:flex;align-items:center;gap:12px;padding-top:6px;border-top:1px solid var(--border);}

  .config-dias-row{display:flex;gap:6px;margin-top:4px;}
  .config-dia-toggle{position:relative;display:block;width:32px;height:32px;cursor:pointer;}
  .config-dia-toggle input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer;}
  .config-dia-toggle span{
    display:flex;align-items:center;justify-content:center;width:100%;height:100%;
    border-radius:8px;border:1px solid var(--border);font-size:12px;font-weight:700;
    color:var(--text-muted);transition:background .12s ease,color .12s ease,border-color .12s ease;
  }
  .config-dia-toggle input:checked + span{background:var(--pink);color:#fff;border-color:var(--pink);}
  .config-dia-toggle input:hover + span{border-color:var(--pink);}
  .config-field-hint{font-size:11px;color:var(--text-muted);margin:0;}

  /* ---------- Bonos ---------- */
  .bo-tipo{font-weight:600;}
  .bo-tipo .badge{margin-left:6px;vertical-align:1px;}
  .bo-cliente-tel{display:block;font-size:12px;color:var(--text-muted);font-weight:400;}
  .bo-sesiones{display:flex;flex-direction:column;gap:5px;min-width:96px;}
  .bo-sesiones-num{font-weight:700;font-variant-numeric:tabular-nums;}
  .bo-sesiones-num span{font-weight:400;color:var(--text-muted);}
  .bo-bar{display:block;height:5px;border-radius:3px;background:#EEF0F3;overflow:hidden;}
  .bo-bar > span{display:block;height:100%;background:var(--green);border-radius:3px;}
  .bo-bar.is-pocas > span{background:var(--amber);}
  .bo-bar.is-cero > span{background:var(--red);}
  .bo-aviso{color:var(--amber);font-weight:700;font-size:12px;}
  .bo-sin-cad{color:var(--text-muted);}
  .bo-pill{display:inline-block;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px;}
  .bo-pill-activo{background:var(--green-bg);color:var(--green);}
  .bo-pill-agotado{background:var(--amber-bg);color:var(--amber);}
  .bo-pill-caducado{background:var(--red-bg);color:var(--red);}
  .bo-pill-anulado{background:#EEF0F3;color:var(--text-muted);}
  .serv-table tbody tr.bo-apagado td{opacity:.6;}

  .bo-drawer-backdrop{
    position:fixed;inset:0;background:rgba(21,22,28,.35);z-index:88;
    opacity:0;visibility:hidden;transition:opacity .18s ease,visibility .18s ease;
  }
  .bo-drawer-backdrop.open{opacity:1;visibility:visible;}
  .bo-drawer{
    position:fixed;top:0;right:0;bottom:0;width:min(600px,100vw);background:var(--card-bg);
    z-index:89;display:flex;flex-direction:column;box-shadow:-8px 0 30px rgba(0,0,0,.12);
    transform:translateX(100%);visibility:hidden;
    transition:transform .2s ease,visibility .2s ease;
  }
  .bo-drawer.open{transform:translateX(0);visibility:visible;}

  .bo-resumen{display:flex;flex-direction:column;gap:10px;padding-bottom:14px;}
  .bo-resumen-fila{display:flex;justify-content:space-between;gap:12px;font-size:13.5px;}
  .bo-resumen-fila > span:first-child{color:var(--text-muted);}
  .bo-link{border:none;background:none;padding:0;font:inherit;font-weight:700;color:var(--pink-dark);cursor:pointer;text-align:right;}
  .bo-link:hover{text-decoration:underline;}
  .bo-ayuda{font-size:12px;color:var(--text-muted);margin:0;line-height:1.45;}
  .bo-ayuda.is-aviso{color:var(--amber);font-weight:600;}
  .bo-acciones-sec{display:flex;gap:10px;flex-wrap:wrap;padding-bottom:14px;}

  .bo-fijas-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
  .bo-fija-item{
    display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;
    padding:9px 12px;border:1px solid var(--border);border-radius:9px;
  }
  .bo-fija-item small{display:block;color:var(--text-muted);font-size:12px;}
  .bo-fija{
    display:grid;grid-template-columns:1fr 1fr 104px;gap:8px;align-items:center;
    padding:10px;border:1px dashed var(--border);border-radius:9px;
  }
  .bo-fija .bo-fija-serv{grid-column:1 / -1;}
  .bo-fija .bo-fija-fin{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:8px;}
  .bo-fija .serv-input{width:100%;box-sizing:border-box;}
  .bo-fijas-nuevas{display:flex;flex-direction:column;gap:10px;}
  .bo-add-btn{align-self:flex-start;}

  .bo-citas{list-style:none;margin:0;padding:0 0 14px;display:flex;flex-direction:column;gap:6px;}
  .bo-cita{
    display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;
    padding:8px 12px;border:1px solid var(--border);border-radius:9px;
  }
  .bo-cita-det{color:var(--text-muted);font-size:12px;}
  .bo-cita-marca{font-size:11.5px;font-weight:700;white-space:nowrap;}
  .bo-cita-marca.is-desc{color:var(--green);}
  .bo-cita-marca.is-pend{color:var(--text-muted);}
  .bo-cita-marca.is-cancel{color:var(--red);}

  .bo-picker{position:relative;}
  .bo-picker-lista{
    position:absolute;left:0;right:0;top:100%;z-index:5;margin:4px 0 0;padding:4px;list-style:none;
    background:#fff;border:1px solid var(--border);border-radius:9px;box-shadow:0 8px 24px rgba(0,0,0,.12);
    max-height:220px;overflow-y:auto;
  }
  .bo-picker-lista li{padding:8px 10px;border-radius:7px;font-size:13px;cursor:pointer;}
  .bo-picker-lista li:hover,.bo-picker-lista li.is-sel{background:var(--page-bg);}
  .bo-picker-lista li small{color:var(--text-muted);margin-left:6px;}
  .bo-picker-lista li.is-vacio{cursor:default;color:var(--text-muted);}
  .bo-picker-lista li.is-vacio:hover{background:none;}
  .bo-cliente-elegido{
    display:flex;justify-content:space-between;align-items:center;gap:10px;
    padding:9px 12px;border:1px solid var(--border);border-radius:9px;font-size:13.5px;font-weight:600;
  }

  /* Agenda: «No se presentó» */
  .cita-acciones{flex-shrink:0;display:flex;align-items:center;gap:8px;}
  .cita-btn{
    border:1px solid var(--border);background:#fff;border-radius:7px;font-size:11.5px;font-weight:700;
    padding:5px 10px;cursor:pointer;color:var(--text-muted);white-space:nowrap;
  }
  .cita-btn:hover:not(:disabled){background:var(--red-bg);border-color:var(--red);color:var(--red);}
  .cita-btn.is-deshacer:hover:not(:disabled){background:var(--page-bg);border-color:var(--text-muted);color:var(--text);}
  .cita-btn:disabled{opacity:.5;cursor:default;}
  .badge-noshow{background:var(--red-bg);color:var(--red);}

  /* Ficha de cliente: sección Bonos */
  .cli-bonos{list-style:none;margin:0;padding:0 0 14px;display:flex;flex-direction:column;gap:8px;}
  .cli-bono{
    display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;
    padding:9px 12px;border:1px solid var(--border);border-radius:9px;
  }
  .cli-bono small{display:block;color:var(--text-muted);font-size:12px;}
  .cli-bonos-acciones{padding-bottom:14px;}

  @media (max-width:640px){
    .bo-fija{grid-template-columns:1fr 1fr;}
    .bo-fija input[type=time]{grid-column:1 / -1;}
  }

  /* ---------- Cobros ---------- */
  .cb-filtros{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;margin-bottom:16px;}
  .cb-filtros label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:var(--text-muted);}
  .cb-filtros .serv-input{min-width:150px;}
  .cb-filtros label.cb-check{flex-direction:row;align-items:center;gap:7px;font-weight:600;padding-bottom:10px;cursor:pointer;}
  .cb-totales{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:18px;}
  .cb-total{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:14px 16px;}
  .cb-total span{display:block;font-size:12px;color:var(--text-muted);font-weight:600;}
  .cb-total strong{display:block;margin-top:4px;font-size:20px;font-variant-numeric:tabular-nums;}
  .cb-total.is-principal{background:var(--dark);border-color:var(--dark);}
  .cb-total.is-principal span{color:#B9BCC6;}
  .cb-total.is-principal strong{color:#fff;}
  .cb-total.is-aviso strong{color:var(--amber);}
  .cb-num{text-align:right !important;font-variant-numeric:tabular-nums;white-space:nowrap;}
  .cb-sub{display:block;font-size:12px;color:var(--text-muted);font-weight:400;}
  .cb-anulado td{opacity:.55;}
  .cb-anulado .cb-num{text-decoration:line-through;}
  .cb-pill{display:inline-block;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px;background:#EEF0F3;color:var(--text-muted);}
  .cb-pill.is-consultar{background:var(--amber-bg);color:var(--amber);}
  .cb-pill.is-custom{background:var(--pink-light);color:var(--pink-dark);margin-left:6px;}
  .cb-acciones{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap;}
  .cb-btn{border:none;border-radius:7px;font-size:12px;font-weight:700;padding:6px 11px;cursor:pointer;background:#F1F2F5;color:var(--text);}
  .cb-btn:hover:not(:disabled){background:#E7E8EC;}
  .cb-btn:disabled{opacity:.45;cursor:default;}
  .cb-btn.is-pri{background:var(--pink);color:#fff;}
  .cb-btn.is-pri:hover:not(:disabled){background:var(--pink-dark);}
  .cb-seccion{margin-bottom:26px;}
  .cb-seccion h3{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);font-weight:700;}
  .cb-aviso{background:var(--amber-bg);color:var(--amber);border-radius:10px;padding:10px 14px;font-size:13px;font-weight:600;margin-bottom:16px;}
  .cb-link{border:none;background:none;padding:0;font:inherit;font-weight:700;color:inherit;cursor:pointer;text-align:left;}
  .cb-link:hover{text-decoration:underline;}
  .cb-modal-backdrop{position:fixed;inset:0;background:rgba(21,22,28,.45);z-index:120;display:none;align-items:center;justify-content:center;padding:16px;}
  .cb-modal-backdrop.open{display:flex;}
  .cb-modal{background:var(--card-bg);border-radius:14px;width:100%;max-width:440px;max-height:92vh;overflow:auto;padding:22px;box-shadow:0 20px 50px rgba(0,0,0,.25);}
  .cb-modal h3{margin:0 0 4px;font-size:17px;}
  .cb-modal-ctx{margin:0 0 14px;font-size:13px;color:var(--text-muted);line-height:1.45;}
  .cb-modal .config-field{margin:0 0 12px;}
  .cb-modal .serv-input{width:100%;box-sizing:border-box;}
  .cb-modal .serv-input.cli-invalid{border-color:var(--red);}
  .cb-modal-btns{display:flex;justify-content:flex-end;gap:10px;margin-top:6px;}
  /* Bloque D: registrar cobro / anotar cancelación */
  .cb-modal .bo-picker-lista{position:static;box-shadow:none;margin-top:6px;max-height:170px;}
  .cd-lista{display:flex;flex-direction:column;gap:6px;max-height:210px;overflow:auto;}
  .cd-op{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--border);border-radius:9px;padding:9px 11px;font-size:13px;font-weight:600;cursor:pointer;}
  .cd-op:hover{background:var(--page-bg);}
  .cd-op.is-sel{border-color:var(--pink);background:var(--pink-light);}
  .cd-op.is-dis{opacity:.55;cursor:default;}
  .cd-op.is-dis:hover{background:none;}
  .cd-op input{margin-top:3px;}
  .cd-op small,.cd-check small{display:block;font-weight:400;color:var(--text-muted);font-size:12px;margin-top:2px;line-height:1.4;}
  .cd-check{display:flex;gap:9px;align-items:flex-start;font-size:13px;font-weight:600;margin:0 0 12px;cursor:pointer;}
  .cd-check input{margin-top:3px;}
  .pn-manual{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;background:#EEF0F6;color:#4B5169;}
  .cb-pag-resumen{display:flex;gap:18px;font-size:13px;padding-bottom:10px;flex-wrap:wrap;}
  .cb-pag-resumen span{color:var(--text-muted);}
  .cb-pag-resumen strong{font-variant-numeric:tabular-nums;}
  .cli-pagos{list-style:none;margin:0;padding:0 0 14px;display:flex;flex-direction:column;gap:8px;}
  .cli-pago{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--border);border-radius:10px;padding:9px 12px;font-size:13px;}
  .cli-pago small{display:block;color:var(--text-muted);font-size:12px;}
  .cli-pago.is-anulado{opacity:.55;}
  .cli-pago.is-anulado strong{text-decoration:line-through;}
  .cli-pago strong{font-variant-numeric:tabular-nums;white-space:nowrap;}
  @media (max-width:700px){ .cb-filtros .serv-input{min-width:0;width:100%;} .cb-filtros label{flex:1 1 140px;} }

  /* ---------- Cancelaciones y Modificaciones ---------- */
  .pn-badge{display:inline-block;min-width:18px;padding:0 6px;margin-left:4px;border-radius:999px;background:rgba(0,0,0,.08);font-size:11px;line-height:18px;text-align:center;font-variant-numeric:tabular-nums;}
  .pill.active .pn-badge{background:rgba(255,255,255,.22);}
  .pn-badge.is-aviso{background:var(--amber-bg);color:var(--amber);}
  .pill.active .pn-badge.is-aviso{background:var(--amber);color:#fff;}
  .pn-tipo,.pn-estado{display:inline-block;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:999px;background:#EEF0F3;color:var(--text-muted);}
  .pn-tipo-cancelacion{background:var(--pink-light);color:var(--pink-dark);}
  .pn-tipo-modificacion{background:#E8F0FE;color:#2B59C3;}
  .pn-tipo-no_show{background:var(--amber-bg);color:var(--amber);}
  .pn-estado-sin_importe{background:var(--amber-bg);color:var(--amber);}
  .pn-estado-por_cobrar{background:var(--pink-light);color:var(--pink-dark);}
  .pn-estado-pagada{background:#E4F5EA;color:#1E7B3E;}
  .pn-condonada td{opacity:.6;}
  .pn-condonada td:last-child{opacity:1;}
  .cb-link-aviso{text-decoration:underline;margin-left:6px;}
  /* ============ HORARIO SEMANAL (punto 13 · incremento 1) ============ */
  .hs-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:16px;}
  .hs-semana{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .hs-semana-txt{display:flex;flex-direction:column;gap:3px;min-width:200px;}
  .hs-semana-txt strong{font-size:15px;}
  .hs-estado{font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:20px;width:fit-content;background:#F1F2F5;color:var(--text-muted);}
  .hs-estado-borrador{background:var(--amber-bg);color:var(--amber);}
  .hs-estado-publicada{background:var(--green-bg);color:var(--green);}
  .hs-estado-sin_publicar{background:var(--red-bg);color:var(--red);}
  .hs-acciones{display:flex;gap:8px;flex-wrap:wrap;}
  .hs-menu{position:relative;}
  .hs-menu-lista{position:absolute;top:calc(100% + 4px);left:0;z-index:30;min-width:240px;background:#fff;border:1px solid var(--border,#E4E6EB);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:6px;display:flex;flex-direction:column;}
  .hs-menu-lista[hidden]{display:none;}
  .hs-menu-tit{font-size:11px;font-weight:700;color:var(--muted,#6B7280);text-transform:uppercase;letter-spacing:.04em;padding:6px 10px 4px;}
  .hs-menu-item{border:none;background:none;text-align:left;font-size:13px;padding:8px 10px;border-radius:7px;cursor:pointer;color:var(--text);}
  .hs-menu-item:hover:not(:disabled){background:#F1F2F5;}
  .hs-menu-item:disabled{color:#A0A4AB;cursor:default;}
  .hs-menu-sep{height:1px;background:var(--border,#E4E6EB);margin:6px 4px;}
  .hs-banner{background:var(--amber-bg);color:#7A4B05;border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:14px;line-height:1.45;}
  .hs-banner.is-alerta{background:var(--red-bg);color:#8E1B1B;}
  .hs-aviso-breve{margin-top:6px;font-weight:600;}
  .hs-dias{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px;}
  .hs-dia{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;border:1px solid var(--border);background:#fff;border-radius:10px;padding:8px 14px;cursor:pointer;min-width:104px;}
  .hs-dia.active{background:var(--dark);border-color:var(--dark);color:#fff;}
  .hs-dia-nom{font-size:13px;font-weight:700;}
  .hs-dia-sub{font-size:11px;color:var(--text-muted);}
  .hs-dia.active .hs-dia-sub{color:rgba(255,255,255,.7);}
  .hs-dia.is-vacio .hs-dia-nom{opacity:.65;}
  .hs-dot{position:absolute;top:7px;right:8px;width:8px;height:8px;border-radius:50%;}
  .hs-dot-bloquea{background:var(--red);}
  .hs-dot-confirmar{background:var(--amber);}
  .hs-dia-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px;}
  .hs-leyenda{display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-size:11.5px;color:var(--text-muted);}
  .hs-ley{display:inline-block;width:14px;height:14px;border-radius:3px;margin-left:8px;}
  .hs-ley:first-child{margin-left:0;}
  .hs-ley-trabajo{background:#FFE066;}
  .hs-ley-recepcion{background:#F4A340;}
  .hs-ley-bloqueado{background:#9CA3AF;}
  .hs-ley-cita{background:repeating-linear-gradient(45deg,#E6007E 0 3px,#F7B3D7 3px 6px);}
  .hs-ley-no{background:#2B2C33;}
  .hs-ayuda{font-size:12px;color:var(--text-muted);margin:0 0 10px;}
  .hs-grid-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:#fff;}
  .hs-grid{display:flex;min-width:max-content;}
  .hs-col{flex:0 0 112px;border-right:1px solid var(--border);}
  .hs-col:last-child{border-right:none;}
  .hs-col-horas{flex:0 0 52px;background:#FAFAFB;}
  .hs-col-head{height:46px;display:flex;align-items:center;flex-wrap:wrap;column-gap:6px;row-gap:1px;align-content:center;padding:0 8px;border-bottom:1px solid var(--border);font-size:12.5px;font-weight:700;position:sticky;top:0;background:#fff;}
  .hs-col-horas .hs-col-head{background:#FAFAFB;}
  .hs-col-nom{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hs-color{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0;border:1px solid rgba(0,0,0,.12);vertical-align:middle;}
  .hs-nobot{flex-basis:100%;font-size:9.5px;font-weight:600;color:var(--text-muted);}
  .hs-hora{font-size:10.5px;color:var(--text-muted);text-align:right;padding:0 6px;box-sizing:border-box;transform:translateY(-6px);}
  .hs-col-body{position:relative;background-color:#2B2C33;background-image:repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--hs-slot) - 1px),rgba(255,255,255,.08) calc(var(--hs-slot) - 1px),rgba(255,255,255,.08) var(--hs-slot));}
  .hs-col-body.is-editable{cursor:copy;}
  .hs-tramo{position:absolute;left:3px;right:3px;border:none;border-radius:6px;padding:3px 6px;text-align:left;display:flex;flex-direction:column;gap:1px;overflow:hidden;cursor:pointer;font-family:inherit;box-shadow:0 1px 2px rgba(0,0,0,.25);}
  .hs-tramo:disabled{cursor:default;}
  .hs-tramo-trabajo{background:#FFE066;color:#3D3200;}
  .hs-tramo-recepcion{background:#F4A340;color:#3B2200;}
  .hs-tramo-bloqueado{background:#9CA3AF;color:#1F2128;}
  .hs-tramo:not(:disabled):hover{filter:brightness(.95);outline:2px solid var(--pink);}
  .hs-tramo-h{font-size:10.5px;font-weight:700;}
  .hs-tramo-t{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hs-cita{position:absolute;right:3px;width:34px;border-radius:5px;background:repeating-linear-gradient(45deg,#E6007E 0 3px,#F7B3D7 3px 6px);color:#fff;font-size:9px;font-weight:700;display:flex;align-items:flex-start;justify-content:center;padding-top:2px;pointer-events:none;opacity:.9;}
  .hs-bottom{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:18px;}
  .hs-box{min-width:0;}
  .hs-box{background:#fff;border:1px solid var(--border);border-radius:12px;padding:14px 16px;}
  .hs-box h3{margin:0 0 10px;font-size:14px;}
  .hs-ok{font-size:13px;color:var(--green);margin:0;}
  .hs-avisos{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:340px;overflow:auto;}
  .hs-av{font-size:12.5px;line-height:1.4;padding:7px 10px;border-radius:8px;background:#F6F7F9;border-left:3px solid #C9CBD2;}
  .hs-av[data-hs-ir]{cursor:pointer;}
  .hs-av[data-hs-ir]:hover{background:#EEF0F3;}
  .hs-av-bloquea{border-left-color:var(--red);background:var(--red-bg);}
  .hs-av-confirmar{border-left-color:var(--amber);background:var(--amber-bg);}
  .hs-av-tag{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);margin-bottom:2px;}
  .hs-av-bloquea .hs-av-tag{color:var(--red);}
  .hs-av-confirmar .hs-av-tag{color:var(--amber);}
  .hs-resumen td{font-size:12.5px;}
  .hs-resumen tr.hs-fuera td{color:var(--amber);}
  .hs-modal-horas{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
  .hs-btn-borrar{margin-right:auto;color:var(--red);}
  .hs-avisos-modal{max-height:46vh;}
  .hs-modal-sub{font-size:12.5px;font-weight:700;margin:12px 0 4px;}
  .hs-resumen-mini{margin:0;padding-left:18px;font-size:12.5px;columns:2;}
  @media (max-width:900px){ .hs-bottom{grid-template-columns:minmax(0,1fr);} }
  @media (max-width:640px){
    .hs-acciones{width:100%;}
    .hs-semana{width:100%;}
    .hs-semana-txt{min-width:0;flex:1;}
    .hs-estado{max-width:100%;white-space:normal;}
    .hs-semana-txt strong{font-size:13.5px;}
    #hs-siguiente{width:100%;}
    .hs-acciones > .cb-btn, .hs-menu{flex:1 1 45%;}
    .hs-menu > .cb-btn{width:100%;}
    .hs-menu-lista{left:auto;right:0;}
    .hs-dia{min-width:0;flex:1 1 30%;padding:7px 10px;}
    .hs-col{flex-basis:96px;}
  }
  /* ============ HORARIO SEMANAL · incremento 2 (citas) ============ */
  .hs-dia-bar #hs-modo{margin-right:auto;}
  .hs-tramo.is-fondo{cursor:inherit;box-shadow:none;}
  .hs-tramo.is-fondo .hs-tramo-h,.hs-tramo.is-fondo .hs-tramo-t{opacity:.8;}
  .hs-cita-full{position:absolute;left:8px;right:3px;border:none;border-radius:6px;padding:3px 6px;text-align:left;display:flex;flex-direction:column;gap:1px;overflow:hidden;cursor:pointer;font-family:inherit;box-shadow:0 1px 3px rgba(0,0,0,.35);z-index:2;}
  .hs-cita-full:hover{outline:2px solid var(--pink);}
  .hs-cita-full.is-fuera{outline:2px dashed var(--red);outline-offset:-2px;}
  .hs-cita-full.is-pasada{opacity:.7;}
  .hs-cita-full .is-dificil{color:#E11D48;font-weight:800;background:rgba(255,255,255,.85);border-radius:3px;padding:0 3px;width:fit-content;max-width:100%;}
  .hs-picker{position:relative;}
  /* Incremento 3: reservas fijas previstas y huecos retenidos */
  .hs-fija{position:absolute;left:8px;right:3px;border:2px dashed #6B7280;border-radius:6px;padding:2px 5px;text-align:left;display:flex;flex-direction:column;gap:1px;overflow:hidden;cursor:pointer;font-family:inherit;background:rgba(255,255,255,.93);color:#16171C;box-shadow:0 0 0 1px rgba(0,0,0,.28),0 1px 3px rgba(0,0,0,.3);z-index:1;}
  .hs-fija:hover{outline:2px solid var(--pink);}
  .hs-fija.is-conflicto{border-color:#DC2626;background:#FEE2E2;color:#7F1D1D;}
  .hs-fija .hs-tramo-h{opacity:1;color:#4B5563;font-weight:700;}
  .hs-fija.is-conflicto .hs-tramo-h{color:#991B1B;}
  .hs-fija .hs-tramo-t{font-weight:600;}
  .hs-fija .is-dificil{color:#E11D48;font-weight:800;}
  .hs-fijas{display:flex;align-items:center;justify-content:space-between;gap:10px 14px;flex-wrap:wrap;background:#EEF2FF;color:#2B3A8C;border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:14px;line-height:1.45;}
  .hs-fijas.has-conflicto{background:var(--amber-bg);color:#7A4B05;}
  .hs-fijas .cb-btn{flex:0 0 auto;}
  .hs-fijas-det{flex-basis:100%;font-size:12px;}
  .hs-fijas-det summary{cursor:pointer;font-weight:600;}
  .hs-fijas-det ul{margin:6px 0 0;padding-left:18px;}
  .hs-gcal{background:#fff;border:1px solid var(--border);border-left:4px solid #E2A03F;border-radius:12px;padding:10px 16px;margin-bottom:14px;font-size:13px;}
  .hs-gcal-det summary{cursor:pointer;font-size:14px;}
  .hs-gcal-ayuda{margin:6px 0 8px;color:var(--muted,#6B7280);font-size:12px;}
  .hs-gcal-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;}
  .hs-gcal-item{display:flex;align-items:flex-start;gap:10px 12px;flex-wrap:wrap;border-top:1px solid var(--border);padding-top:8px;line-height:1.45;}
  .hs-gcal-tipo{flex:0 0 auto;font-size:11px;font-weight:700;border-radius:999px;padding:3px 9px;white-space:nowrap;}
  .hs-gcal-tipo.is-amber{background:var(--amber-bg);color:#7A4B05;}
  .hs-gcal-tipo.is-red{background:var(--red-bg);color:#8E1B1B;}
  .hs-gcal-tipo.is-blue{background:#EEF2FF;color:#2B3A8C;}
  .hs-gcal-txt{flex:1 1 260px;min-width:0;overflow-wrap:anywhere;}
  .hs-gcal-cuando{font-weight:600;margin-bottom:2px;}
  .hs-gcal-bt{flex:0 0 auto;display:flex;gap:6px;}
  .hs-retenidos{background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px 16px;margin-bottom:14px;}
  .hs-retenidos h4{margin:0 0 4px;font-size:13px;}
  .hs-retenidos p.hs-ret-ayuda{margin:0 0 8px;font-size:12px;color:var(--text-muted);}
  .hs-ret{display:flex;align-items:center;justify-content:space-between;gap:8px 12px;flex-wrap:wrap;padding:8px 0;border-top:1px solid var(--border);font-size:13px;}
  .hs-ret:first-of-type{border-top:none;}
  .hs-ret-info{display:flex;flex-direction:column;gap:2px;min-width:0;}
  .hs-ret-info small{color:var(--text-muted);font-size:12px;}
  .hs-ret-badge{display:inline-block;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:20px;background:var(--amber-bg);color:var(--amber);width:fit-content;}
  .hs-picker-lista{position:absolute;left:0;right:0;top:100%;z-index:5;list-style:none;margin:4px 0 0;padding:4px;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 20px rgba(0,0,0,.12);max-height:220px;overflow:auto;}
  .hs-picker-lista li{padding:7px 9px;border-radius:6px;cursor:pointer;font-size:13px;display:flex;justify-content:space-between;gap:8px;}
  .hs-picker-lista li:hover{background:#F5F6F8;}
  .hs-picker-lista li small{color:var(--text-muted);}
  .hs-picker-lista li.is-vacio{cursor:default;color:var(--text-muted);}
  .hs-cliente-sel{display:flex;align-items:center;gap:10px;font-size:13.5px;}
  .hs-cliente-sel:empty{display:none;}
  .hs-ficha-cita{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13px;}
  .hs-ficha-cita li span{display:inline-block;min-width:76px;color:var(--text-muted);font-size:12px;}
  .hs-ficha-cita li.is-dificil{color:var(--red);}
  .hs-cita-acciones{display:flex;gap:8px;flex-wrap:wrap;}
  .hs-radio{display:block;font-size:13.5px;font-weight:600;margin:0 0 10px;cursor:pointer;}
  .hs-radio small{display:block;font-weight:400;color:var(--text-muted);margin:2px 0 0 22px;}
  .hs-toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(20px);background:var(--dark);color:#fff;font-size:13px;padding:10px 16px;border-radius:10px;opacity:0;pointer-events:none;transition:all .2s;z-index:200;max-width:90vw;}
  .hs-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
  @media (max-width:640px){ #hs-modo{flex-wrap:wrap;} }
  .hs-tramo.is-fondo:hover{outline:none;filter:none;}

  /* ============ HORARIO SEMANAL · incremento 4 (pendientes y sugerencia de hueco) ============ */
  .hs-cuerpo{display:grid;grid-template-columns:minmax(0,1fr) clamp(232px,18vw,290px);gap:14px;align-items:start;}
  .hs-cuerpo.sin-pend{grid-template-columns:minmax(0,1fr);}
  .hs-main{min-width:0;}
  .hs-pend{background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px 14px;position:sticky;top:78px;max-height:calc(100vh - 94px);overflow:auto;min-width:0;}
  .hs-pend[hidden]{display:none;}
  .hs-pend-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;}
  .hs-pend-head h3{margin:0;font-size:14px;}
  .hs-pend-n{font-weight:600;color:var(--text-muted);font-size:12.5px;}
  .hs-proponer{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--border);}
  .hs-proponer .hs-pend-ayuda{margin:0;}
  .hs-pend-ayuda{font-size:12px;color:var(--text-muted);margin:0 0 10px;line-height:1.45;}
  .hs-pend .hs-retenidos{border:none;border-top:1px solid var(--border);border-radius:0;padding:12px 0 0;margin:12px 0 0;background:transparent;}
  .hs-pend .hs-ret{flex-direction:column;align-items:stretch;gap:6px;}
  .hs-pend .hs-ret .cb-btn{width:100%;}
  .hs-pend-vacio{font-size:12.5px;color:var(--text-muted);margin:0 0 10px;line-height:1.45;}
  #hs-pend-toggle.is-activo{background:var(--dark);color:#fff;}
  .hs-pc{border:1px solid var(--border);border-radius:10px;padding:9px 11px;margin-bottom:8px;background:#fff;display:flex;flex-direction:column;gap:3px;}
  .hs-pc.is-primero{border-color:var(--pink);box-shadow:0 0 0 1px var(--pink) inset;}
  .hs-pc-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13.5px;}
  .hs-pc-top .is-dificil{color:#E11D48;}
  .hs-pc-flag{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;background:var(--pink);color:#fff;border-radius:20px;padding:1px 8px;}
  .hs-pc-tipo{font-size:12px;color:var(--text-muted);}
  .hs-pc-serv{font-size:12.5px;}
  .hs-pc-chips{display:flex;flex-wrap:wrap;gap:4px;}
  .hs-pc-chips span{font-size:11px;font-weight:600;background:#EEF2FF;color:#2B3A8C;border-radius:20px;padding:1px 8px;}
  .hs-pc-badges{display:flex;gap:6px;flex-wrap:wrap;}
  .hs-pc-cal{font-size:10.5px;font-weight:700;background:#EEF2FF;color:#2B3A8C;border-radius:20px;padding:1px 8px;}
  .hs-pc-rev{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;background:var(--amber-bg);color:#7A4B05;border-radius:20px;padding:1px 8px;}
  .hs-pc-revmotivo{font-size:12px;color:#7A4B05;background:var(--amber-bg);border-radius:6px;padding:4px 7px;}
  .hs-pc-nota{font-size:12px;color:#4B5563;background:#F6F7F9;border-radius:6px;padding:4px 7px;}
  .hs-pc-btns{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px;}
  .hs-sincita{margin-top:12px;border-top:1px solid var(--border);padding-top:10px;}
  .hs-sincita summary{cursor:pointer;font-weight:700;font-size:13px;margin-bottom:8px;}
  .hs-sc{background:#FAFAFB;}
  .hs-props{display:flex;flex-direction:column;gap:6px;}
  .hs-prop{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--border);border-radius:10px;padding:9px 12px;}
  .hs-prop-info{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:13px;}
  .hs-prop-info span{color:var(--text-muted);font-size:12.5px;}
  .hs-prop-info small{color:#7A4B05;font-size:11.5px;}
  .hs-prop-ret{font-style:normal;font-size:11px;font-weight:700;background:var(--amber-bg);color:var(--amber);border-radius:20px;padding:1px 8px;margin-left:4px;}
  .hs-sin-ficha{margin:8px 0 12px;}
  .hs-chks{display:flex;flex-wrap:wrap;gap:4px 10px;padding-top:6px;}
  .hs-chk{font-size:12.5px;display:flex;align-items:center;gap:4px;cursor:pointer;}
  @media (max-width:1100px){
    .hs-cuerpo{grid-template-columns:minmax(0,1fr);}
    .hs-pend{position:static;max-height:none;}
  }
  .hs-btn-borrar.is-neutro{color:var(--text);}
  /* ---------- Ausencias y Vacaciones (bloque C) ---------- */
  .au-acciones{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
  .au-tabs{margin:4px 0 14px;}
  .au-ayuda{margin:0 0 12px;}
  .au-msg{margin:0 0 12px;min-height:0;}
  .au-msg:empty{display:none;}
  .au-table td{white-space:normal;}
  .au-table tbody tr.is-pasado td{opacity:.55;}
  .au-bt{text-align:right;white-space:nowrap !important;}
  .au-bt .cb-btn{margin-left:6px;}
  .au-nota{color:var(--text-muted);max-width:260px;}
  .au-vacio{text-align:center;color:var(--text-muted);padding:28px 16px !important;}
  .au-tag{display:inline-block;font-size:11px;font-weight:700;border-radius:999px;padding:3px 9px;white-space:nowrap;}
  .au-tag.is-amber{background:var(--amber-bg);color:#7A4B05;}
  .au-tag.is-blue{background:#EEF2FF;color:#2B3A8C;}
  .au-tag.is-green{background:var(--green-bg);color:#14532D;}
  .au-filtro{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-size:13px;color:var(--text-muted);}
  .au-filtro .serv-input{width:auto;min-width:200px;}
  .au-saldos{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin-bottom:16px;}
  .au-saldos .au-ayuda{grid-column:1 / -1;margin:0;}
  .au-saldo{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:12px 14px;}
  .au-saldo-nom{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;margin-bottom:8px;}
  .au-saldo-fila{display:flex;justify-content:space-between;font-size:12.5px;color:var(--text-muted);margin-top:6px;}
  .au-saldo-fila b{color:var(--text);}
  .au-barra{display:block;height:6px;border-radius:99px;background:#EDEEF2;overflow:hidden;margin-top:3px;}
  .au-barra i{display:block;height:100%;background:var(--pink);border-radius:99px;}
  .au-barra.is-pasado i{background:var(--red);}
  .au-afectadas{background:var(--amber-bg);border:1px solid #F3D9A8;border-radius:14px;padding:14px 16px;margin-bottom:16px;}
  .au-af-cab{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;}
  .au-af-cab p{margin:4px 0 0;max-width:640px;}
  .au-af-lista{list-style:none;margin:10px 0 0;padding:0;display:flex;flex-direction:column;gap:8px;}
  .au-af-item{display:flex;justify-content:space-between;align-items:center;gap:10px 14px;flex-wrap:wrap;background:#fff;border-radius:10px;padding:9px 12px;font-size:13.5px;}
  .au-af-sub{display:block;font-size:12.5px;color:var(--text-muted);}
  .au-af-sub em{font-style:normal;color:#7A4B05;font-weight:600;}
  .au-af-bt{display:flex;gap:8px;flex-wrap:wrap;}
  .au-check{display:flex;align-items:center;gap:8px;font-size:13px;margin:4px 0 6px;}
  .au-conf{font-size:13.5px;line-height:1.5;color:var(--text);margin:8px 0 14px;}
  .hs-pc-aus{font-size:10.5px;font-weight:700;background:var(--amber-bg);color:#7A4B05;border-radius:20px;padding:1px 8px;}
  /* bandas de festivo / ausencia en la rejilla del horario */
  .hs-banda{position:absolute;left:0;right:0;pointer-events:none;z-index:4;display:flex;align-items:flex-start;justify-content:center;overflow:hidden;
    background:repeating-linear-gradient(135deg,rgba(255,255,255,.30) 0 6px,rgba(255,255,255,.12) 6px 12px);border-top:1px solid rgba(255,255,255,.45);border-bottom:1px solid rgba(255,255,255,.45);}
  .hs-banda span{font-size:10.5px;font-weight:700;color:#3F4150;background:rgba(255,255,255,.88);border-radius:6px;padding:1px 6px;margin-top:4px;max-width:92%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .hs-banda.is-vacaciones,.hs-banda.is-libre_disposicion{background:repeating-linear-gradient(135deg,rgba(96,150,255,.42) 0 6px,rgba(96,150,255,.18) 6px 12px);}
  .hs-banda.is-ausencia{background:repeating-linear-gradient(135deg,rgba(245,158,11,.45) 0 6px,rgba(245,158,11,.18) 6px 12px);}
  #view-ausencias .agenda-fecha{min-width:70px;}
  @media (max-width:640px){ .au-bt{white-space:normal !important;} .au-filtro .serv-input{min-width:0;flex:1;} .au-acciones{width:100%;} }

  /* B8 · Traer de Calendar */
  .hs-cal-h{font-size:13px;margin:14px 0 6px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;}
  .hs-cal-lista{margin:6px 0 0;padding-left:18px;font-size:13px;line-height:1.4;}
  .hs-cal-lista li{margin:0 0 4px;}
  .hs-cal-nota{font-size:12.5px;color:var(--text-muted);}
  .hs-cal-omitidas{margin-top:14px;font-size:12.5px;}
