
*{box-sizing:border-box}body{margin:0;font-family:Arial,Helvetica,sans-serif;background:#f5f7fb;color:#1f2937}
a{text-decoration:none;color:inherit}
.app{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
.sidebar{background:#111827;color:#fff;padding:24px}
.brand{font-size:24px;font-weight:700;margin-bottom:24px}
.sidebar nav{display:flex;flex-direction:column;gap:10px}
.sidebar nav a{padding:10px 12px;border-radius:10px;background:rgba(255,255,255,.04)}
.sidebar nav a:hover{background:rgba(255,255,255,.1)}
.main{padding:24px}
.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}
.grid{display:grid;gap:16px}
.grid.cards{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}
.grid.two{grid-template-columns:1.2fr .8fr}
.card{background:#fff;border-radius:18px;padding:18px;box-shadow:0 10px 24px rgba(15,23,42,.06);margin-bottom:16px}
.stat-label{font-size:14px;color:#6b7280}
.stat-value{font-size:34px;font-weight:700;margin-top:6px}
table{width:100%;border-collapse:collapse}
th,td{padding:12px 10px;border-bottom:1px solid #e5e7eb;text-align:left;vertical-align:top}
th{font-size:13px;color:#6b7280}
.badge{display:inline-block;padding:6px 10px;border-radius:999px;background:#eef2ff;font-size:12px}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}
input,select,button,textarea{font:inherit}
input:not([type="checkbox"]):not([type="radio"]),select,textarea{width:100%;padding:10px 12px;border:1px solid #d1d5db;border-radius:10px;background:#fff}
input[type="checkbox"],input[type="radio"]{width:auto;padding:0;border:none;background:transparent;accent-color:#2563eb;flex:0 0 auto}
textarea{resize:vertical;min-height:120px;line-height:1.45}
.textarea-wide{display:block !important;width:100% !important;max-width:100% !important;min-width:100% !important}
.field{margin-bottom:14px}
label{display:block;font-weight:600;margin-bottom:6px}
.button{display:inline-flex;align-items:center;justify-content:center;padding:10px 14px;border:none;border-radius:10px;background:#2563eb;color:#fff;cursor:pointer}
.button.small{padding:7px 10px;font-size:13px}
.button.danger{background:#dc2626}
.button.secondary{background:#64748b}
.actions{display:flex;gap:8px;align-items:center}
.alert{padding:12px 14px;border-radius:10px;margin-bottom:16px}
.alert.success{background:#ecfdf5;color:#065f46}
.alert.error{background:#fef2f2;color:#991b1b}
.clean{padding-left:18px}
.muted{color:#6b7280}
@media (max-width: 980px){.app{grid-template-columns:1fr}.sidebar{display:none}.grid.cards,.grid.two{grid-template-columns:1fr}}

.userbox{margin:0 0 18px 0;padding:12px;border-radius:12px;background:rgba(255,255,255,.06)}
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:#f5f7fb}
.login-card{width:100%;max-width:420px;background:#fff;border-radius:18px;padding:24px;box-shadow:0 10px 24px rgba(15,23,42,.08)}

.login-flash{max-width:420px;margin:20px auto 0 auto;padding:12px 14px;border-radius:10px}
.login-flash.success{background:#ecfdf5;color:#065f46}
.login-flash.error{background:#fef2f2;color:#991b1b}

.grid.two{grid-template-columns:1.4fr .8fr}
.card h2{margin-top:0}

.mobile-menu-btn{
    position:fixed;top:14px;left:14px;z-index:1200;
    display:none;border:none;border-radius:12px;
    background:#111827;color:#fff;padding:10px 14px;cursor:pointer;
    box-shadow:0 10px 24px rgba(15,23,42,.18)
}
.mobile-overlay{
    position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:1090;
    display:none
}
.mobile-overlay.show{display:block}
@media (max-width: 980px){
    .mobile-menu-btn{display:inline-flex;align-items:center;justify-content:center}
    .app{grid-template-columns:1fr}
    .sidebar{
        display:block;
        position:fixed;
        top:0;left:0;bottom:0;
        width:280px;
        transform:translateX(-100%);
        transition:transform .25s ease;
        z-index:1100;
        overflow:auto
    }
    .sidebar.open{transform:translateX(0)}
    .main{padding:70px 16px 16px 16px}
}

.contextbox{margin:0 0 18px 0;padding:12px;border-radius:12px;background:rgba(255,255,255,.10);font-size:13px;line-height:1.4}

.field textarea{display:block !important;width:100% !important;max-width:100% !important;min-width:100% !important;}

.pagination-wrap{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:16px}
.pagination-summary{color:#6b7280;font-size:14px}
.pagination{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.page-link{display:inline-flex;align-items:center;justify-content:center;min-width:38px;padding:8px 10px;border:1px solid #d1d5db;border-radius:10px;background:#fff;color:#111827;text-decoration:none}
.page-link.active{background:#2563eb;color:#fff;border-color:#2563eb}
.page-link.ellipsis{border-color:transparent;background:transparent;min-width:auto;padding:0 4px}

.checks-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}.check-card{display:flex;align-items:center;gap:10px;border:1px solid #e5e7eb;padding:10px 12px;border-radius:10px;background:#fff;cursor:pointer}.check-card span{font-weight:500;line-height:1.3}

.pagination-per-page{display:flex;align-items:center;gap:8px}
.pagination-per-page label{font-size:14px;color:#6b7280}
.pagination-per-page select{padding:8px 10px;border:1px solid #d1d5db;border-radius:10px;background:#fff}


.field-span-2 { grid-column: span 2; }
.client-search-results {
    margin-top: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.client-result-item {
    display: grid;
    grid-template-columns: 28px 1fr;
    gap: 12px;
    align-items: center;
    border: 1px solid #d8dee9;
    border-radius: 12px;
    padding: 12px 14px;
    cursor: pointer;
    background: #fff;
}
.client-result-item.selected {
    border-color: #2563eb;
    background: #eff6ff;
}
.client-result-main { display:flex; flex-direction:column; gap:4px; }
.client-result-main small { color:#667085; }
.client-pagination { display:flex; gap:10px; align-items:center; margin-top: 12px; }
.client-pagination-info { color:#667085; font-size:14px; }
.selection-summary {
    margin-top: 12px;
    border: 1px solid #c7d7fe;
    background: #eef4ff;
    color: #15315f;
    border-radius: 12px;
    padding: 12px 14px;
}
.tabs-container {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    padding-bottom: 6px;
    margin-top: 8px;
    margin-bottom: 14px;
}
.tab-btn {
    border: 1px solid #d0d7e2;
    background: #f8fafc;
    color: #334155;
    border-radius: 999px;
    padding: 10px 14px;
    white-space: nowrap;
    cursor: pointer;
    font-weight: 600;
}
.tab-btn.active {
    background: #2563eb;
    color: #fff;
    border-color: #2563eb;
}
.horarios-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(92px, 1fr));
    gap: 10px;
}
.hora-btn {
    border: 1px solid #cbd5e1;
    background: #fff;
    border-radius: 12px;
    padding: 11px 10px;
    cursor: pointer;
    font-weight: 600;
}
.hora-btn:hover { border-color:#2563eb; color:#2563eb; }
.hora-btn.selected {
    background: #16a34a;
    color: #fff;
    border-color: #16a34a;
}
.seleccion-box {
    margin-top: 14px;
    border: 1px solid #bbf7d0;
    background: #f0fdf4;
    color: #14532d;
    border-radius: 12px;
    padding: 12px 14px;
}
.empty-state-inline {
    border: 1px dashed #cbd5e1;
    border-radius: 12px;
    padding: 16px;
    color: #64748b;
    background: #f8fafc;
}
@media (max-width: 900px) {
    .field-span-2 { grid-column: span 1; }
}


/* Citas: filtros y estados */
.toolbar > div{min-width:180px;flex:1 1 180px}
.toolbar-actions{display:flex;align-items:flex-end;gap:8px;flex:0 0 auto}
.toolbar-submit{background:#0f172a;box-shadow:0 8px 20px rgba(15,23,42,.14)}
.toolbar-submit:hover{filter:brightness(.96)}
.toolbar-clear{background:#e5e7eb;color:#111827}
.badge.state-agendada,.badge.state-activa{background:#dcfce7 !important;color:#166534 !important;font-weight:700}
.badge.state-cancelada{background:#fee2e2 !important;color:#b91c1c !important;font-weight:700}
.badge.state-reagendada{background:#fef3c7 !important;color:#92400e !important;font-weight:700}
.badge.state-completada{background:#dbeafe !important;color:#1d4ed8 !important;font-weight:700}
.badge.state-no-asistio{background:#e5e7eb !important;color:#4b5563 !important;font-weight:700}
.badge.state-default{background:#f3f4f6 !important;color:#374151 !important;font-weight:700}
.actions .muted{font-weight:600}


/* Citas: ajuste fino filtros y estados */
.status-pill{display:inline-flex;align-items:center;justify-content:center;padding:6px 12px;border-radius:999px;font-size:12px;font-weight:700;line-height:1;white-space:nowrap}
.toolbar-actions{display:flex;align-items:flex-end;gap:10px;flex:0 0 auto;padding-top:24px}
.toolbar-submit{background:#0f172a !important;color:#fff !important;border:1px solid #0f172a !important;min-width:140px;box-shadow:0 8px 18px rgba(15,23,42,.14)}
.toolbar-submit:hover{background:#111827 !important}
.toolbar-clear{background:#fff !important;color:#334155 !important;border:1px solid #cbd5e1 !important;min-width:140px}
.toolbar-clear:hover{background:#f8fafc !important}
.actions .muted{font-weight:600;color:#6b7280}


/* Citas filtros v4 */
.toolbar{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}
.toolbar > div{min-width:170px;flex:1 1 170px}
.toolbar-actions{flex:1 1 100%;display:flex;justify-content:flex-end;gap:10px;align-items:center;padding-top:0;margin-top:-2px;min-width:0}
.toolbar-submit,.toolbar-clear{min-width:0 !important;padding:10px 16px !important;white-space:nowrap}
@media (max-width: 980px){.toolbar-actions{justify-content:stretch}.toolbar-actions .button{flex:1 1 auto}}

/* Estados binarios: activo / inactivo */
.badge.status-active{background:#dcfce7 !important;color:#166534 !important;font-weight:700}
.badge.status-inactive{background:#fee2e2 !important;color:#b91c1c !important;font-weight:700}

/* Dashboard principal - Fase 1 */
.dashboard-page h1{margin:0 0 8px 0;font-size:30px;letter-spacing:-.02em;color:#0f172a}
.dashboard-page h2{margin:0 0 6px 0;color:#0f172a}
.dashboard-hero{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;background:linear-gradient(135deg,#ffffff 0%,#eef4ff 100%);border:1px solid #e0e7ff}
.dashboard-eyebrow{margin:0 0 6px 0;color:#2563eb;font-size:13px;text-transform:uppercase;letter-spacing:.08em;font-weight:800}
.dashboard-filter{min-width:240px}
.dashboard-filter label{font-size:13px;color:#475569}
.dashboard-kpis{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-bottom:18px}
.dashboard-kpi{display:flex;gap:12px;align-items:flex-start;margin-bottom:0;min-height:126px}
.dashboard-kpi .stat-value{font-size:30px;line-height:1.1}
.dashboard-kpi small{display:block;margin-top:6px;color:#64748b;line-height:1.35}
.kpi-icon{display:inline-flex;width:42px;height:42px;border-radius:14px;align-items:center;justify-content:center;background:#eff6ff;font-size:20px;flex:0 0 auto}
.dashboard-grid-main{display:grid;grid-template-columns:1.55fr .85fr;gap:16px}
.dashboard-grid-secondary{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.dashboard-chart-card{min-height:360px}
.card-head-inline{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.chart-wrap{position:relative;height:280px;margin-top:12px}
.chart-wrap.small{height:250px}
.dashboard-alerts{min-height:360px}
.dashboard-alert{border:1px solid #e5e7eb;border-radius:14px;padding:13px 14px;margin-top:12px;background:#f8fafc}
.dashboard-alert p{margin:6px 0 0 0;color:#475569;line-height:1.4}
.dashboard-alert-info{border-color:#bfdbfe;background:#eff6ff}
.dashboard-alert-success{border-color:#bbf7d0;background:#f0fdf4}
.dashboard-alert-warning{border-color:#fde68a;background:#fffbeb}
.dashboard-alert-danger{border-color:#fecaca;background:#fef2f2}
.dashboard-lists{margin-top:0}
@media (max-width: 1280px){.dashboard-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width: 980px){.dashboard-hero{align-items:stretch;flex-direction:column}.dashboard-filter{min-width:0}.dashboard-kpis,.dashboard-grid-main,.dashboard-grid-secondary{grid-template-columns:1fr}.dashboard-chart-card,.dashboard-alerts{min-height:auto}.chart-wrap,.chart-wrap.small{height:260px}}
@media (max-width: 560px){.dashboard-kpi{min-height:auto}.dashboard-page h1{font-size:24px}.dashboard-kpi .stat-value{font-size:26px}}

/* Dashboard Fase 2: filtros ligeros por periodo, sucursal y profesional */
.dashboard-filter-phase2{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:12px;min-width:min(680px,100%)}
.dashboard-filter-phase2>div{display:flex;flex-direction:column;gap:6px}
.dashboard-filter-phase2 select{width:100%}
@media (max-width: 980px){.dashboard-filter-phase2{grid-template-columns:1fr}}

/* Dashboard Fase 3: lectura inteligente y cobro por uso */
.dashboard-period-chip{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:8px 12px;border-radius:999px;background:#fff;border:1px solid #dbeafe;color:#1d4ed8;font-size:13px;font-weight:800}
.dashboard-insights-grid{display:grid;grid-template-columns:1.25fr .9fr .85fr;gap:16px;margin-bottom:16px}
.dashboard-insight-card{margin-bottom:0;border:1px solid #e5e7eb;min-height:190px}
.dashboard-insight-card h2{font-size:22px;margin:8px 0 8px 0;letter-spacing:-.01em}
.dashboard-insight-card p{margin:0;color:#475569;line-height:1.45}
.dashboard-insight-card small{display:block;margin-top:12px;color:#64748b}
.insight-label{display:inline-flex;padding:6px 10px;border-radius:999px;background:#f1f5f9;color:#334155;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em}
.insight-action{margin-top:14px;padding:12px;border-radius:12px;background:#f8fafc;border:1px solid #e2e8f0;color:#334155;display:flex;gap:6px;flex-direction:column}
.dashboard-insight-success{border-color:#bbf7d0;background:#f0fdf4}
.dashboard-insight-warning{border-color:#fde68a;background:#fffbeb}
.dashboard-insight-danger{border-color:#fecaca;background:#fef2f2}
.dashboard-insight-info{border-color:#bfdbfe;background:#eff6ff}
.mini-progress{height:10px;border-radius:999px;background:#e5e7eb;overflow:hidden;margin-top:16px}
.mini-progress span{display:block;height:100%;border-radius:999px;background:#2563eb}
@media (max-width: 1100px){.dashboard-insights-grid{grid-template-columns:1fr}}


/* AGENDA PROFESSIONAL CALENDAR V1 */
.aq-agenda-page {
  display: grid;
  gap: 1.25rem;
}

.aq-agenda-hero {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding: 1.35rem;
  border-radius: 28px;
  background: linear-gradient(135deg, #f8fbff 0%, #eef5ff 100%);
  border: 1px solid rgba(148, 163, 184, .18);
  box-shadow: 0 18px 55px rgba(15, 23, 42, .07);
}

.aq-eyebrow {
  display: inline-flex;
  margin-bottom: .35rem;
  font-size: .75rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #2563eb;
}

.aq-agenda-hero h1 {
  margin: 0;
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  font-weight: 900;
  color: #0f172a;
}

.aq-agenda-hero p {
  margin: .25rem 0 0;
  color: #64748b;
}

.aq-agenda-actions {
  display: flex;
  align-items: center;
  gap: .65rem;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.aq-day-nav {
  width: 42px;
  height: 42px;
  border-radius: 14px;
  display: grid;
  place-items: center;
  text-decoration: none;
  font-size: 1.65rem;
  font-weight: 900;
  background: #fff;
  color: #2563eb;
  box-shadow: 0 10px 26px rgba(37, 99, 235, .10);
}

.aq-date-chip {
  min-width: 142px;
  border-radius: 18px;
  background: #fff;
  padding: .55rem .85rem;
  text-align: center;
  box-shadow: 0 12px 28px rgba(15, 23, 42, .08);
}

.aq-date-chip span {
  display: block;
  font-weight: 900;
  color: #0f172a;
}

.aq-date-chip small {
  color: #64748b;
  font-weight: 700;
}

.aq-primary-action {
  border-radius: 16px !important;
  padding: .72rem 1rem !important;
  background: linear-gradient(135deg, #2563eb, #4f46e5) !important;
  color: #fff !important;
  box-shadow: 0 14px 30px rgba(37, 99, 235, .18) !important;
}

.aq-agenda-filters {
  display: grid;
  grid-template-columns: repeat(6, minmax(150px, 1fr));
  gap: .85rem;
  padding: 1rem;
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(148, 163, 184, .16);
  box-shadow: 0 15px 42px rgba(15, 23, 42, .06);
}

.aq-agenda-filters label {
  font-size: .75rem;
  font-weight: 850;
  color: #475569;
  margin-bottom: .35rem;
}

.aq-agenda-filters input,
.aq-agenda-filters select {
  width: 100%;
  border-radius: 14px;
  border: 1px solid rgba(148, 163, 184, .34);
  padding: .65rem .75rem;
  background: #f8fafc;
  outline: none;
}

.aq-filter-search {
  grid-column: span 2;
}

.aq-filter-actions {
  display: flex;
  align-items: end;
  gap: .5rem;
}

.aq-agenda-shell {
  border-radius: 28px;
  background: #fff;
  border: 1px solid rgba(148, 163, 184, .18);
  box-shadow: 0 20px 60px rgba(15, 23, 42, .08);
  overflow: hidden;
}

.aq-agenda-topbar {
  min-height: 64px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding: .9rem 1rem;
  border-bottom: 1px solid rgba(148, 163, 184, .18);
  background: linear-gradient(180deg, #ffffff, #f8fafc);
}

.aq-agenda-topbar strong {
  font-size: 1.25rem;
  color: #0f172a;
}

.aq-agenda-topbar span {
  color: #64748b;
  font-weight: 700;
}

.aq-agenda-legend {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
}

.aq-agenda-legend span {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  font-size: .8rem;
}

.aq-agenda-legend i {
  width: 10px;
  height: 10px;
  border-radius: 99px;
}

.aq-agenda-legend .active { background: #22c55e; }
.aq-agenda-legend .completed { background: #3b82f6; }
.aq-agenda-legend .cancelled { background: #ef4444; }
.aq-agenda-legend .noshow { background: #64748b; }

.aq-calendar-scroll {
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
}

.aq-calendar-grid {
  min-width: max(920px, calc(var(--agenda-professionals) * 220px + 86px));
  display: grid;
  grid-template-columns: 86px repeat(var(--agenda-professionals), minmax(210px, 1fr));
  grid-template-rows: 76px auto;
}

.aq-calendar-corner,
.aq-pro-header {
  position: sticky;
  top: 0;
  z-index: 3;
  background: #fff;
  border-bottom: 1px solid rgba(148, 163, 184, .18);
}

.aq-calendar-corner {
  left: 0;
  z-index: 5;
  display: grid;
  place-items: center;
  color: #64748b;
  font-weight: 900;
  border-right: 1px solid rgba(148, 163, 184, .18);
}

.aq-pro-header {
  padding: .85rem;
  display: grid;
  grid-template-columns: 42px 1fr;
  gap: .65rem;
  align-items: center;
  border-right: 1px solid rgba(148, 163, 184, .14);
}

.aq-pro-header span {
  width: 42px;
  height: 42px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg, rgba(37, 99, 235, .14), rgba(79, 70, 229, .12));
  color: #2563eb;
  font-weight: 900;
}

.aq-pro-header strong {
  display: block;
  color: #0f172a;
  font-size: .95rem;
  line-height: 1.15;
}

.aq-pro-header small {
  color: #64748b;
  font-weight: 700;
}

.aq-hours-col {
  position: sticky;
  left: 0;
  z-index: 2;
  background: #fff;
  border-right: 1px solid rgba(148, 163, 184, .18);
}

.aq-hour-cell {
  height: 60px;
  padding: .45rem .55rem;
  color: #64748b;
  font-size: .78rem;
  font-weight: 800;
  border-bottom: 1px solid rgba(148, 163, 184, .14);
  text-align: right;
}

.aq-pro-column {
  position: relative;
  min-height: calc(var(--agenda-hours) * 60px);
  border-right: 1px solid rgba(148, 163, 184, .14);
  background: linear-gradient(90deg, rgba(248,250,252,.65), #fff);
}

.aq-grid-slot {
  height: 60px;
  border-bottom: 1px solid rgba(148, 163, 184, .13);
}

.aq-appointment {
  position: absolute;
  left: 8px;
  right: 8px;
  z-index: 1;
  border-radius: 16px;
  padding: .55rem .65rem;
  text-decoration: none;
  overflow: hidden;
  border: 1px solid transparent;
  box-shadow: 0 12px 24px rgba(15, 23, 42, .10);
  transition: transform .16s ease, box-shadow .16s ease;
}

.aq-appointment:hover {
  transform: translateY(-1px);
  box-shadow: 0 16px 32px rgba(15, 23, 42, .14);
}

.aq-appointment strong {
  display: block;
  color: #0f172a;
  font-size: .86rem;
  line-height: 1.12;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.aq-appointment small,
.aq-appt-time {
  display: block;
  font-size: .73rem;
  font-weight: 800;
  opacity: .82;
  color: #334155;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.aq-appointment.is-active {
  background: linear-gradient(135deg, #dcfce7, #bbf7d0);
  border-color: rgba(34, 197, 94, .32);
}

.aq-appointment.is-completed {
  background: linear-gradient(135deg, #dbeafe, #bfdbfe);
  border-color: rgba(59, 130, 246, .32);
}

.aq-appointment.is-cancelled {
  background: linear-gradient(135deg, #fee2e2, #fecaca);
  border-color: rgba(239, 68, 68, .28);
}

.aq-appointment.is-rescheduled {
  background: linear-gradient(135deg, #fef3c7, #fde68a);
  border-color: rgba(245, 158, 11, .30);
}

.aq-appointment.is-noshow,
.aq-appointment.is-neutral {
  background: linear-gradient(135deg, #e5e7eb, #f1f5f9);
  border-color: rgba(100, 116, 139, .25);
}

.aq-table-backup {
  border-radius: 22px;
  background: #fff;
  border: 1px solid rgba(148, 163, 184, .18);
  overflow: hidden;
}

.aq-table-backup summary {
  cursor: pointer;
  padding: 1rem;
  font-weight: 900;
  color: #2563eb;
}

@media (max-width: 1100px) {
  .aq-agenda-filters {
    grid-template-columns: repeat(3, minmax(150px, 1fr));
  }
}

@media (max-width: 768px) {
  .aq-agenda-hero {
    align-items: flex-start;
    flex-direction: column;
    border-radius: 22px;
  }

  .aq-agenda-actions {
    width: 100%;
    justify-content: space-between;
  }

  .aq-primary-action {
    width: 100%;
    text-align: center;
  }

  .aq-agenda-filters {
    grid-template-columns: 1fr;
  }

  .aq-filter-search {
    grid-column: auto;
  }

  .aq-filter-actions {
    align-items: stretch;
  }

  .aq-filter-actions .button {
    flex: 1;
  }

  .aq-agenda-topbar {
    align-items: flex-start;
    flex-direction: column;
  }

  .aq-calendar-grid {
    min-width: 760px;
  }
}
/* END AGENDA PROFESSIONAL CALENDAR V1 */


/* AGENDA PROFESSIONAL CALENDAR V2 */
.aq-filters-panel {
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(148, 163, 184, .16);
  box-shadow: 0 14px 34px rgba(15, 23, 42, .055);
  overflow: hidden;
}

.aq-filters-panel summary {
  list-style: none;
  cursor: pointer;
  padding: .95rem 1rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  color: #0f172a;
  font-weight: 900;
}

.aq-filters-panel summary::-webkit-details-marker {
  display: none;
}

.aq-filters-panel summary span {
  display: block;
}

.aq-filters-panel summary small {
  color: #64748b;
  font-weight: 700;
}

.aq-filters-panel summary::after {
  content: '⌄';
  width: 34px;
  height: 34px;
  border-radius: 12px;
  display: grid;
  place-items: center;
  background: #eff6ff;
  color: #2563eb;
  font-size: 1.1rem;
  transition: transform .18s ease;
}

.aq-filters-panel[open] summary::after {
  transform: rotate(180deg);
}

.aq-filters-panel .aq-agenda-filters {
  box-shadow: none !important;
  border: 0 !important;
  border-top: 1px solid rgba(148, 163, 184, .14);
  border-radius: 0 !important;
}

.aq-agenda-hero {
  padding: 1.15rem 1.25rem !important;
}

.aq-agenda-shell {
  margin-top: .15rem;
}

.aq-table-backup {
  opacity: .96;
}

.aq-table-backup summary {
  background: linear-gradient(180deg, #fff, #f8fafc);
}

@media (max-width: 768px) {
  .aq-filters-panel summary {
    align-items: flex-start;
    flex-direction: column;
    position: relative;
    padding-right: 3.5rem;
  }

  .aq-filters-panel summary::after {
    position: absolute;
    right: 1rem;
    top: .8rem;
  }
}
/* END AGENDA PROFESSIONAL CALENDAR V2 */


/* AGENDA CLICKABLE SLOTS REAL V3 */
.aq-grid-slot {
  cursor: pointer;
  position: relative;
  transition: background .15s ease, box-shadow .15s ease;
}

.aq-grid-slot:hover {
  background: rgba(37, 99, 235, .075);
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .12);
}

.aq-grid-slot::after {
  content: '+';
  position: absolute;
  right: 10px;
  top: 8px;
  width: 22px;
  height: 22px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  background: #eff6ff;
  color: #2563eb;
  font-size: .95rem;
  font-weight: 900;
  opacity: 0;
  transform: scale(.92);
  transition: opacity .14s ease, transform .14s ease;
}

.aq-grid-slot:hover::after {
  opacity: 1;
  transform: scale(1);
}

.aq-agenda-hint {
  color: #64748b;
  font-size: .82rem;
  font-weight: 800;
  background: #f8fafc;
  border: 1px solid rgba(148, 163, 184, .18);
  padding: .42rem .7rem;
  border-radius: 999px;
}

@media (max-width: 768px) {
  .aq-agenda-hint {
    width: 100%;
    text-align: center;
  }
}
/* END AGENDA CLICKABLE SLOTS REAL V3 */


/* AGENDA RESPONSIVE REAL V4 */

/* Base refinements */
.aq-agenda-page {
  max-width: 100%;
}

.aq-calendar-scroll {
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-x: contain;
}

.aq-calendar-scroll.is-dragging {
  cursor: grabbing;
  user-select: none;
}

.aq-mobile-scroll-hint {
  display: none;
  padding: .65rem 1rem;
  background: #eff6ff;
  color: #2563eb;
  font-size: .82rem;
  font-weight: 850;
  text-align: center;
  border-bottom: 1px solid rgba(37, 99, 235, .12);
}

.aq-appointment {
  touch-action: manipulation;
}

.aq-grid-slot {
  touch-action: manipulation;
}

/* Tablet */
@media (max-width: 1180px) {
  .aq-agenda-hero {
    gap: .85rem;
  }

  .aq-agenda-actions {
    flex: 1 1 auto;
  }

  .aq-agenda-filters {
    grid-template-columns: repeat(2, minmax(180px, 1fr)) !important;
  }

  .aq-filter-search {
    grid-column: span 2 !important;
  }

  .aq-calendar-grid {
    min-width: max(860px, calc(var(--agenda-professionals) * 205px + 78px)) !important;
    grid-template-columns: 78px repeat(var(--agenda-professionals), minmax(200px, 1fr)) !important;
  }

  .aq-calendar-corner,
  .aq-hours-col {
    width: 78px;
  }

  .aq-pro-header {
    padding: .7rem;
  }

  .aq-pro-header span {
    width: 38px;
    height: 38px;
    border-radius: 14px;
  }
}

/* Mobile agenda shell */
@media (max-width: 768px) {
  .aq-agenda-page {
    gap: .95rem;
  }

  .aq-agenda-hero {
    padding: 1rem !important;
    border-radius: 20px !important;
  }

  .aq-agenda-hero h1 {
    font-size: 1.55rem !important;
  }

  .aq-agenda-hero p {
    font-size: .9rem;
  }

  .aq-agenda-actions {
    display: grid !important;
    width: 100%;
    grid-template-columns: 44px minmax(0, 1fr) 44px;
    gap: .5rem;
  }

  .aq-day-nav {
    width: 44px !important;
    height: 44px !important;
    border-radius: 14px !important;
  }

  .aq-date-chip {
    min-width: 0 !important;
    width: 100%;
    padding: .55rem .65rem !important;
  }

  .aq-primary-action {
    grid-column: 1 / -1;
    width: 100%;
    min-height: 44px;
    display: grid !important;
    place-items: center;
  }

  .aq-filters-panel {
    border-radius: 18px !important;
  }

  .aq-filters-panel summary {
    padding: .85rem .95rem !important;
  }

  .aq-filters-panel summary small {
    font-size: .76rem;
  }

  .aq-filters-panel .aq-agenda-filters,
  .aq-agenda-filters {
    grid-template-columns: 1fr !important;
    gap: .7rem !important;
    padding: .9rem !important;
  }

  .aq-filter-search {
    grid-column: auto !important;
  }

  .aq-filter-actions {
    display: grid !important;
    grid-template-columns: 1fr 1fr;
    gap: .55rem;
  }

  .aq-filter-actions .button {
    min-height: 42px;
    justify-content: center;
  }

  .aq-agenda-shell {
    border-radius: 20px !important;
  }

  .aq-agenda-topbar {
    padding: .85rem !important;
    gap: .75rem !important;
  }

  .aq-agenda-topbar > div:first-child {
    width: 100%;
  }

  .aq-agenda-legend {
    width: 100%;
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .45rem !important;
  }

  .aq-agenda-legend span {
    background: #f8fafc;
    border: 1px solid rgba(148, 163, 184, .16);
    border-radius: 999px;
    padding: .35rem .5rem;
    justify-content: center;
    font-size: .74rem !important;
  }

  .aq-agenda-hint {
    width: 100%;
    text-align: center;
    border-radius: 14px !important;
  }

  .aq-mobile-scroll-hint {
    display: block;
  }

  .aq-calendar-grid {
    min-width: max(720px, calc(var(--agenda-professionals) * 185px + 70px)) !important;
    grid-template-columns: 70px repeat(var(--agenda-professionals), minmax(180px, 1fr)) !important;
    grid-template-rows: 68px auto !important;
  }

  .aq-calendar-corner {
    font-size: .78rem;
  }

  .aq-hour-cell {
    height: 64px !important;
    font-size: .72rem !important;
    padding: .45rem .42rem !important;
  }

  .aq-pro-column {
    min-height: calc(var(--agenda-hours) * 64px) !important;
  }

  .aq-grid-slot {
    height: 64px !important;
  }

  .aq-pro-header {
    min-height: 68px;
    grid-template-columns: 34px 1fr !important;
    gap: .45rem !important;
    padding: .55rem !important;
  }

  .aq-pro-header span {
    width: 34px !important;
    height: 34px !important;
    border-radius: 13px !important;
    font-size: .85rem;
  }

  .aq-pro-header strong {
    font-size: .82rem !important;
  }

  .aq-pro-header small {
    font-size: .7rem !important;
  }

  .aq-appointment {
    left: 6px !important;
    right: 6px !important;
    min-height: 50px;
    border-radius: 14px !important;
    padding: .48rem .55rem !important;
  }

  .aq-appointment strong {
    font-size: .78rem !important;
  }

  .aq-appointment small,
  .aq-appt-time {
    font-size: .68rem !important;
  }

  .aq-grid-slot::after {
    width: 24px !important;
    height: 24px !important;
    right: 8px !important;
    top: 8px !important;
    opacity: .55;
  }

  .aq-table-backup {
    border-radius: 18px !important;
  }

  .aq-table-backup summary {
    text-align: center;
  }
}

/* Small phones */
@media (max-width: 420px) {
  .aq-agenda-hero {
    padding: .85rem !important;
  }

  .aq-agenda-actions {
    grid-template-columns: 40px minmax(0, 1fr) 40px;
  }

  .aq-day-nav {
    width: 40px !important;
    height: 40px !important;
  }

  .aq-date-chip span {
    font-size: .92rem;
  }

  .aq-date-chip small {
    font-size: .72rem;
  }

  .aq-agenda-legend {
    grid-template-columns: 1fr;
  }

  .aq-calendar-grid {
    min-width: max(660px, calc(var(--agenda-professionals) * 170px + 64px)) !important;
    grid-template-columns: 64px repeat(var(--agenda-professionals), minmax(165px, 1fr)) !important;
  }
}

/* Sidebar/menu hardening, compatible con layouts Bootstrap/custom */
@media (max-width: 991px) {
  body.sidebar-open {
    overflow: hidden;
  }

  .sidebar,
  .app-sidebar,
  aside.sidebar,
  nav.sidebar {
    max-width: min(86vw, 320px);
  }

  .sidebar-backdrop,
  .mobile-sidebar-backdrop {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, .42);
    backdrop-filter: blur(3px);
    z-index: 1030;
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s ease;
  }

  body.sidebar-open .sidebar-backdrop,
  body.sidebar-open .mobile-sidebar-backdrop {
    opacity: 1;
    pointer-events: auto;
  }
}
/* END AGENDA RESPONSIVE REAL V4 */


/* AGENDA CREATE PREFILL V5 */
.agenda-prefill-card {
  margin: 0 0 1rem;
  padding: 1rem;
  border-radius: 22px;
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) auto;
  align-items: center;
  gap: .85rem;
  background: linear-gradient(135deg, #eff6ff, #f8fbff);
  border: 1px solid rgba(37, 99, 235, .18);
  box-shadow: 0 14px 36px rgba(37, 99, 235, .08);
}

.agenda-prefill-icon {
  width: 46px;
  height: 46px;
  border-radius: 16px;
  display: grid;
  place-items: center;
  color: #fff;
  background: linear-gradient(135deg, #2563eb, #4f46e5);
  font-weight: 900;
}

.agenda-prefill-card strong {
  color: #0f172a;
  font-size: 1rem;
}

.agenda-prefill-card p {
  margin: .2rem 0;
  color: #334155;
  font-weight: 800;
}

.agenda-prefill-card small {
  color: #64748b;
  font-weight: 650;
}

.agenda-prefill-client-link {
  white-space: nowrap;
}

@media (max-width: 768px) {
  .agenda-prefill-card {
    grid-template-columns: 40px minmax(0, 1fr);
  }

  .agenda-prefill-client-link {
    grid-column: 1 / -1;
    text-align: center;
  }
}
/* END AGENDA CREATE PREFILL V5 */



/* AGENDA PREFILL HORA FIX V5.1 */
.agenda-prefill-selected,
#seleccionActual.agenda-prefill-selected {
  border: 1px solid rgba(37, 99, 235, .22) !important;
  background: linear-gradient(135deg, #eff6ff, #f8fbff) !important;
  border-radius: 18px !important;
  padding: .85rem 1rem !important;
  box-shadow: 0 12px 28px rgba(37, 99, 235, .08) !important;
}
/* END AGENDA PREFILL HORA FIX V5.1 */


/* AGENDA SLOTS REALES V6.1 */
.aq-calendar-grid-v61 {
  grid-template-rows: 76px auto !important;
}

.aq-calendar-grid-v61 .aq-hour-cell,
.aq-calendar-grid-v61 .aq-grid-slot {
  height: var(--slot-height) !important;
  min-height: var(--slot-height) !important;
}

.aq-calendar-grid-v61 .aq-hour-cell {
  font-size: .72rem !important;
  padding: .25rem .45rem !important;
}

.aq-calendar-grid-v61 .aq-hour-cell.is-half {
  color: #94a3b8 !important;
  font-size: .66rem !important;
}

.aq-calendar-grid-v61 .aq-pro-column {
  min-height: calc(var(--agenda-slots) * var(--slot-height)) !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-disabled {
  cursor: not-allowed !important;
  background: repeating-linear-gradient(
    135deg,
    rgba(148, 163, 184, .065),
    rgba(148, 163, 184, .065) 8px,
    rgba(248, 250, 252, .80) 8px,
    rgba(248, 250, 252, .80) 16px
  ) !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-disabled::after {
  display: none !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-available {
  cursor: pointer !important;
  background: rgba(255,255,255,.88);
}

.aq-calendar-grid-v61 .aq-grid-slot.is-available:hover {
  background: rgba(37, 99, 235, .075) !important;
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .16);
}

.aq-calendar-grid-v61 .aq-grid-slot.is-occupied {
  cursor: not-allowed !important;
  background: rgba(15, 23, 42, .035) !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-occupied::before {
  content: '';
  position: absolute;
  left: 10px;
  right: 10px;
  top: 50%;
  height: 1px;
  background: rgba(100, 116, 139, .20);
}

.aq-calendar-grid-v61 .aq-appointment {
  min-height: 32px;
}

@media (max-width: 768px) {
  .aq-calendar-grid-v61 {
    --slot-height: 38px !important;
  }
}
/* END AGENDA SLOTS REALES V6.1 */


/* AGENDA VISUAL FINAL V6.5 */

/* Debe coincidir con $agendaSlotHeight = 64 en index.php */
.aq-calendar-grid-v61 {
  --slot-height: 64px !important;
}

/* Filas uniformes */
.aq-calendar-grid-v61 .aq-hour-cell,
.aq-calendar-grid-v61 .aq-grid-slot {
  height: var(--slot-height) !important;
  min-height: var(--slot-height) !important;
  box-sizing: border-box !important;
}

/* Columna de horas */
.aq-calendar-grid-v61 .aq-hour-cell {
  display: flex !important;
  align-items: center !important;
  justify-content: flex-end !important;
  padding: 0 .7rem !important;
  color: #334155 !important;
  font-size: .86rem !important;
  font-weight: 850 !important;
  border-bottom: 1px solid rgba(148, 163, 184, .20) !important;
}

.aq-calendar-grid-v61 .aq-hour-cell.is-half {
  color: #64748b !important;
  font-size: .80rem !important;
}

/* Columnas de profesionales */
.aq-calendar-grid-v61 .aq-pro-column {
  min-height: calc(var(--agenda-slots) * var(--slot-height)) !important;
  background: #fff !important;
}

/* Slots disponibles / no disponibles */
.aq-calendar-grid-v61 .aq-grid-slot {
  border-bottom: 1px solid rgba(148, 163, 184, .16) !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-disabled {
  cursor: not-allowed !important;
  background:
    repeating-linear-gradient(
      135deg,
      rgba(148, 163, 184, .18),
      rgba(148, 163, 184, .18) 8px,
      rgba(248, 250, 252, .94) 8px,
      rgba(248, 250, 252, .94) 17px
    ) !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-disabled::after {
  display: none !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-available {
  cursor: pointer !important;
  background: rgba(255, 255, 255, .96) !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-available:hover {
  background: rgba(37, 99, 235, .075) !important;
  box-shadow: inset 0 0 0 1px rgba(37, 99, 235, .14);
}

.aq-calendar-grid-v61 .aq-grid-slot.is-occupied {
  cursor: not-allowed !important;
}

/* Citas legibles, como tarjeta dentro de la celda */
.aq-calendar-grid-v61 .aq-appointment {
  box-sizing: border-box !important;
  left: 10px !important;
  right: 10px !important;
  border-radius: 16px !important;
  padding: .62rem .78rem !important;
  min-height: 56px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  gap: 3px !important;
  overflow: hidden !important;
  box-shadow: 0 10px 22px rgba(15, 23, 42, .08) !important;
}

.aq-calendar-grid-v61 .aq-appointment .aq-appt-time {
  display: block !important;
  color: #0f172a !important;
  font-size: .82rem !important;
  font-weight: 900 !important;
  line-height: 1.05 !important;
  margin: 0 !important;
}

.aq-calendar-grid-v61 .aq-appointment strong {
  display: block !important;
  color: #0f172a !important;
  font-size: .94rem !important;
  font-weight: 900 !important;
  line-height: 1.08 !important;
  margin: 0 !important;
}

.aq-calendar-grid-v61 .aq-appointment small {
  display: block !important;
  color: #334155 !important;
  font-size: .80rem !important;
  font-weight: 760 !important;
  line-height: 1.06 !important;
  opacity: .94 !important;
  margin: 0 !important;
}

.aq-calendar-grid-v61 .aq-appointment .aq-appt-time,
.aq-calendar-grid-v61 .aq-appointment strong,
.aq-calendar-grid-v61 .aq-appointment small {
  max-width: 100% !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

/* Color de cita agendada más limpio */
.aq-calendar-grid-v61 .aq-appointment.is-active {
  background: linear-gradient(135deg, #d8fae7 0%, #c5f4d7 100%) !important;
  border: 1px solid rgba(34, 197, 94, .42) !important;
}

/* Evita que el + quede protagonista */
.aq-calendar-grid-v61 .aq-grid-slot::after {
  width: 20px !important;
  height: 20px !important;
  right: 12px !important;
  top: 10px !important;
  font-size: .82rem !important;
}

/* Responsive */
@media (max-width: 768px) {
  .aq-calendar-grid-v61 {
    --slot-height: 68px !important;
  }

  .aq-calendar-grid-v61 .aq-appointment {
    min-height: 60px !important;
    padding: .56rem .68rem !important;
  }

  .aq-calendar-grid-v61 .aq-appointment .aq-appt-time {
    font-size: .76rem !important;
  }

  .aq-calendar-grid-v61 .aq-appointment strong {
    font-size: .86rem !important;
  }

  .aq-calendar-grid-v61 .aq-appointment small {
    font-size: .72rem !important;
  }
}
/* END AGENDA VISUAL FINAL V6.5 */


/* AGENDA TEXTO CITAS FINO V6.6 */

/* Ajuste fino: no cambiar lógica ni grilla, solo legibilidad interna */
.aq-calendar-grid-v61 .aq-appointment {
  padding: .46rem .72rem .42rem !important;
  min-height: 56px !important;
  justify-content: center !important;
  gap: 1px !important;
  overflow: hidden !important;
}

.aq-calendar-grid-v61 .aq-appointment .aq-appt-time {
  font-size: .70rem !important;
  line-height: 1 !important;
  font-weight: 900 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.aq-calendar-grid-v61 .aq-appointment strong {
  font-size: .80rem !important;
  line-height: 1.03 !important;
  font-weight: 900 !important;
  margin: 0 !important;
  padding: 0 !important;
}

.aq-calendar-grid-v61 .aq-appointment small {
  font-size: .68rem !important;
  line-height: 1 !important;
  font-weight: 760 !important;
  margin: 0 !important;
  padding: 0 !important;
}

/* Evita cortes superiores provocados por line-height/fuentes */
.aq-calendar-grid-v61 .aq-appointment .aq-appt-time,
.aq-calendar-grid-v61 .aq-appointment strong,
.aq-calendar-grid-v61 .aq-appointment small {
  display: block !important;
  transform: translateY(1px);
}

/* En tarjetas muy ajustadas, conserva lo importante */
@media (max-width: 768px) {
  .aq-calendar-grid-v61 .aq-appointment {
    padding: .44rem .6rem !important;
  }

  .aq-calendar-grid-v61 .aq-appointment .aq-appt-time {
    font-size: .68rem !important;
  }

  .aq-calendar-grid-v61 .aq-appointment strong {
    font-size: .76rem !important;
  }

  .aq-calendar-grid-v61 .aq-appointment small {
    font-size: .64rem !important;
  }
}
/* END AGENDA TEXTO CITAS FINO V6.6 */



/* AGENDA INTERACCIONES PREMIUM V7 FIX */
.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"] {
  cursor: pointer !important;
}

.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"]:hover {
  transform: translateY(-1px) !important;
  box-shadow: 0 16px 34px rgba(15, 23, 42, .15) !important;
}

.aq-appt-tooltip {
  position: fixed;
  z-index: 99999;
  width: min(320px, calc(100vw - 28px));
  padding: .95rem;
  border-radius: 18px;
  background: #fff;
  border: 1px solid rgba(148, 163, 184, .22);
  box-shadow: 0 22px 60px rgba(15, 23, 42, .20);
  color: #0f172a;
  pointer-events: none;
  opacity: 0;
  transform: translateY(6px);
  transition: opacity .12s ease, transform .12s ease;
}

.aq-appt-tooltip.show {
  opacity: 1;
  transform: translateY(0);
}

.aq-appt-tooltip strong {
  display: block;
  font-size: .98rem;
  font-weight: 900;
  margin-bottom: .2rem;
}

.aq-appt-tooltip .muted-line {
  display: block;
  color: #64748b;
  font-size: .8rem;
  font-weight: 750;
  margin-bottom: .55rem;
}

.aq-appt-tooltip .row {
  display: flex;
  justify-content: space-between;
  gap: .8rem;
  padding: .28rem 0;
  border-top: 1px solid rgba(148, 163, 184, .12);
  font-size: .8rem;
}

.aq-appt-tooltip .row span:first-child {
  color: #64748b;
  font-weight: 850;
}

.aq-appt-tooltip .row span:last-child {
  color: #0f172a;
  font-weight: 850;
  text-align: right;
}

.aq-context-menu {
  position: fixed;
  z-index: 100000;
  width: 230px;
  padding: .45rem;
  border-radius: 16px;
  background: #fff;
  border: 1px solid rgba(148, 163, 184, .22);
  box-shadow: 0 22px 60px rgba(15, 23, 42, .20);
  display: none;
}

.aq-context-menu.show {
  display: block;
}

.aq-context-menu a {
  display: flex;
  align-items: center;
  gap: .5rem;
  padding: .72rem .78rem;
  border-radius: 12px;
  color: #0f172a;
  text-decoration: none;
  font-size: .86rem;
  font-weight: 850;
}

.aq-context-menu a:hover {
  background: #eff6ff;
  color: #2563eb;
}

.aq-agenda-page.is-loading::after {
  content: 'Cargando agenda...';
  position: fixed;
  top: 18px;
  right: 18px;
  z-index: 99998;
  padding: .75rem 1rem;
  border-radius: 999px;
  background: #fff;
  color: #2563eb;
  border: 1px solid rgba(37, 99, 235, .18);
  box-shadow: 0 16px 40px rgba(15, 23, 42, .14);
  font-weight: 900;
  font-size: .86rem;
}

.aq-agenda-page.is-loading .aq-agenda-shell {
  opacity: .72;
}

.aq-agenda-mini-legend {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: .75rem;
  margin-top: .9rem;
  padding: .95rem 1rem;
  border-radius: 20px;
  background: #fff;
  border: 1px solid rgba(148, 163, 184, .16);
  color: #64748b;
  font-size: .82rem;
  font-weight: 800;
  box-shadow: 0 12px 30px rgba(15, 23, 42, .055);
}

.aq-agenda-mini-legend span {
  display: flex;
  align-items: center;
  gap: .5rem;
}

.aq-agenda-mini-legend i {
  width: 16px;
  height: 16px;
  border-radius: 5px;
  display: inline-block;
  flex: 0 0 auto;
  background: #dcfce7;
  border: 1px solid rgba(34, 197, 94, .35);
}

.aq-agenda-mini-legend i.unavailable {
  background: repeating-linear-gradient(135deg, rgba(148, 163, 184, .13), rgba(148, 163, 184, .13) 5px, #f8fafc 5px, #f8fafc 10px);
  border-color: rgba(148, 163, 184, .25);
}

.aq-agenda-mini-legend i.locked {
  background: #f1f5f9;
  border-color: rgba(100, 116, 139, .25);
}

.aq-agenda-mini-legend i.duration {
  background: #eff6ff;
  border-color: rgba(37, 99, 235, .25);
}

@media (max-width: 900px) {
  .aq-agenda-mini-legend {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 560px) {
  .aq-agenda-mini-legend {
    grid-template-columns: 1fr;
  }

  .aq-appt-tooltip {
    display: none !important;
  }
}
/* END AGENDA INTERACCIONES PREMIUM V7 FIX */


/* ALERTAS CENTRADAS NO BLOQUEANTES FINAL */
.toast-container,
#toastContainer,
.app-toast-container,
.toast-message {
  display: none !important;
}

.aq-center-notice {
  position: fixed;
  inset: 0;
  z-index: 120000;
  display: grid;
  place-items: center;
  padding: 1.25rem;
  background: transparent;
  pointer-events: none;
  opacity: 0;
  transform: scale(.98);
  transition: opacity .18s ease, transform .18s ease;
}

.aq-center-notice.show {
  opacity: 1;
  transform: scale(1);
}

.aq-center-notice.is-blocking {
  pointer-events: auto;
  background: rgba(15, 23, 42, .32);
  backdrop-filter: blur(2px);
}

.aq-center-notice-card {
  width: min(420px, calc(100vw - 34px));
  min-height: 190px;
  border-radius: 30px;
  background:
    radial-gradient(circle at top left, rgba(37, 99, 235, .08), transparent 34%),
    #fff;
  border: 1px solid rgba(148, 163, 184, .20);
  box-shadow: 0 30px 90px rgba(15, 23, 42, .22);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  padding: 2rem;
  text-align: center;
  pointer-events: none;
}

.aq-center-notice-icon {
  width: 74px;
  height: 74px;
  border-radius: 999px;
  display: grid;
  place-items: center;
  color: #fff;
  background: linear-gradient(135deg, #22c55e, #16a34a);
  font-size: 2.25rem;
  font-weight: 950;
  box-shadow: 0 18px 40px rgba(34, 197, 94, .28);
}

.aq-center-notice-title {
  margin-top: .3rem;
  color: #0f172a;
  font-size: 1.35rem;
  line-height: 1.1;
  font-weight: 950;
}

.aq-center-notice-message {
  color: #64748b;
  font-size: .98rem;
  line-height: 1.35;
  font-weight: 700;
  max-width: 330px;
}

.aq-center-notice-error .aq-center-notice-icon {
  background: linear-gradient(135deg, #ef4444, #dc2626);
  box-shadow: 0 18px 40px rgba(239, 68, 68, .25);
}

.aq-center-notice-warning .aq-center-notice-icon {
  background: linear-gradient(135deg, #f59e0b, #d97706);
  box-shadow: 0 18px 40px rgba(245, 158, 11, .25);
}

.aq-center-notice-info .aq-center-notice-icon {
  background: linear-gradient(135deg, #3b82f6, #2563eb);
  box-shadow: 0 18px 40px rgba(59, 130, 246, .25);
}

@media (max-width: 560px) {
  .aq-center-notice-card {
    min-height: 170px;
    border-radius: 24px;
    padding: 1.5rem;
  }

  .aq-center-notice-icon {
    width: 62px;
    height: 62px;
    font-size: 1.85rem;
  }

  .aq-center-notice-title {
    font-size: 1.15rem;
  }

  .aq-center-notice-message {
    font-size: .9rem;
  }
}
/* END ALERTAS CENTRADAS NO BLOQUEANTES FINAL */


/* NEUTRALIZAR TOASTS VIEJOS FINAL */
#app-flash-toast-container,
#toastContainer,
.toast-container,
.app-toast-container {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

.toast-message,
.flash-message,
.alert-success,
.alert-danger,
.alert-warning {
  display: none !important;
}

/* Mantener alertas internas de formulario si no son flash global */
.card .alert,
form .alert,
.login-flash {
  display: block !important;
}
/* END NEUTRALIZAR TOASTS VIEJOS FINAL */

/* CITA DOCS PREMIUM UPLOAD */
.cita-docs-premium{border:1px solid #e5e7eb;border-radius:18px;box-shadow:0 12px 32px rgba(15,23,42,.08)}
.cita-docs-premium-head{display:flex;align-items:center;gap:16px;padding-bottom:18px;border-bottom:1px solid #e5e7eb;margin-bottom:18px}
.cita-docs-premium-icon{width:56px;height:56px;border-radius:16px;display:grid;place-items:center;color:#2563eb;background:#eff6ff;box-shadow:inset 0 0 0 1px rgba(37,99,235,.12);font-size:28px;font-weight:900;flex:0 0 auto}
.cita-docs-premium-head h3{margin:0 0 4px;color:#0f172a;font-size:22px}
.cita-docs-premium-head p{margin:0;color:#64748b}
.cita-docs-counter{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;min-width:64px;padding:7px 11px;border-radius:999px;background:#eef2ff;color:#3730a3;font-weight:800;font-size:13px}
.cita-doc-premium-field{margin-bottom:14px}
.cita-doc-premium-field label{font-weight:800;color:#0f172a}
.cita-doc-premium-field .required{color:#dc2626}
.cita-upload-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%)}
.cita-premium-upload{position:relative}
.cita-premium-drop{min-height:190px;border:1.6px dashed #93b4ff;border-radius:18px;background:linear-gradient(180deg,#fff 0%,#f8fbff 100%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:8px;padding:22px;cursor:pointer;color:#1d4ed8;transition:border-color .18s ease,box-shadow .18s ease,background .18s ease,transform .18s ease}
.cita-premium-drop:hover,.cita-premium-upload.is-dragover .cita-premium-drop{border-color:#2563eb;background:#eff6ff;box-shadow:0 16px 40px rgba(37,99,235,.13);transform:translateY(-1px)}
.cita-premium-upload.has-file .cita-premium-drop{border-color:#86efac;background:linear-gradient(180deg,#fff 0%,#f0fdf4 100%)}
.cita-premium-cloud{display:grid;place-items:center;color:#2563eb;font-size:52px;line-height:1}
.cita-premium-title{font-size:18px;line-height:1.2;font-weight:900;color:#0f172a}
.cita-premium-subtitle{color:#334155}
.cita-premium-rules{margin-top:8px;color:#64748b;font-size:14px}
.cita-premium-selected{margin-top:14px;border:1px solid #86efac;background:linear-gradient(180deg,#fff 0%,#f0fdf4 100%);border-radius:14px;padding:14px 16px;display:grid;grid-template-columns:36px 44px 1fr 38px;gap:12px;align-items:center}
.cita-premium-check{width:34px;height:34px;border-radius:999px;background:#22c55e;color:#fff;display:grid;place-items:center;font-weight:900;font-size:19px}
.cita-premium-file-icon{font-size:28px}
.cita-premium-file-info{min-width:0;display:flex;flex-direction:column;gap:3px}
.cita-premium-file-info strong{color:#0f172a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cita-premium-file-info small{color:#64748b;font-weight:700}
.cita-premium-remove{width:36px;height:36px;border:0;border-radius:999px;background:#fee2e2;color:#dc2626;font-size:24px;line-height:1;cursor:pointer;font-weight:800}
.cita-doc-premium-field textarea{width:100%;min-height:88px;resize:vertical;border:1px solid #cbd5e1;border-radius:14px;padding:13px 14px;font:inherit;color:#0f172a;background:#fff}
.cita-doc-premium-field textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.cita-doc-char-count{text-align:right;margin-top:-28px;padding-right:12px;color:#64748b;font-weight:700;pointer-events:none}
.cita-premium-info-row{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #dbeafe;background:#eff6ff;border-radius:12px;overflow:hidden;margin-top:16px}
.cita-premium-info-row span{display:flex;align-items:center;justify-content:center;gap:8px;padding:13px 10px;color:#334155;font-weight:700;text-align:center}
.cita-premium-info-row span+span{border-left:1px solid #c7d2fe}
.cita-premium-info-row strong{color:#2563eb;font-size:20px}
.cita-premium-one-file{text-align:center;color:#94a3b8;margin:12px 0 0;font-weight:700}
.cita-premium-submit-row{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;margin-top:14px}
.cita-premium-submit{min-width:260px;min-height:44px;justify-content:center}
.cita-doc-message{display:block;min-height:18px;font-weight:800}
.cita-docs-table-wrap{margin-top:18px;overflow:auto;border:1px solid #e5e7eb;border-radius:14px}
.cita-docs-table{margin:0}
.cita-docs-table th{background:#f8fafc;color:#334155}
@media (max-width:760px){.cita-docs-premium-head{align-items:flex-start}.cita-docs-counter{margin-left:0}.cita-premium-info-row{grid-template-columns:1fr}.cita-premium-info-row span+span{border-left:0;border-top:1px solid #c7d2fe}.cita-premium-selected{grid-template-columns:34px 1fr 36px}.cita-premium-file-icon{display:none}}
/* /CITA DOCS PREMIUM UPLOAD */


/* FIX AM PM INLINE */
.aq-hour-cell,
.aq-appt-time{
    white-space: nowrap !important;
}

.aq-hour-cell{
    font-size: .72rem;
    line-height: 1.05;
    min-width: 96px;
}

.aq-calendar-grid{
    grid-template-columns: 96px repeat(var(--agenda-professionals), minmax(210px, 1fr));
    min-width: max(960px, calc(var(--agenda-professionals) * 220px + 96px));
}
/* /FIX AM PM INLINE */

/* AGENDA CONTEXT BUTTONS SAFE V1 */
.aq-context-menu button.aq-context-action{
  width:100%;
  border:0;
  background:transparent;
  display:flex;
  align-items:center;
  gap:.5rem;
  padding:.72rem .78rem;
  border-radius:12px;
  color:#0f172a;
  text-decoration:none;
  font-size:.86rem;
  font-weight:850;
  cursor:pointer;
  text-align:left;
  font-family:inherit;
}
.aq-context-menu button.aq-context-action:hover{
  background:#eff6ff;
  color:#2563eb;
}
.aq-context-menu button.aq-context-cancel:hover{
  background:#fef2f2;
  color:#dc2626;
}
/* /AGENDA CONTEXT BUTTONS SAFE V1 */


/* ==========================================================
   UI_PREMIUM_BUTTONS_CHECKS_GLOBAL_FIX
   QA:
   - Solo CSS.
   - No toca PHP.
   - No toca JS.
   - No toca lógica.
   - No cambia rutas.
   - No cambia formularios.
   ========================================================== */

:root {
    --ui-premium-primary-1: #2563eb;
    --ui-premium-primary-2: #4f46e5;
    --ui-premium-danger-soft: #fff1f2;
    --ui-premium-danger-text: #be123c;
    --ui-premium-danger-border: #fecdd3;
    --ui-premium-neutral-bg: #ffffff;
    --ui-premium-neutral-text: #1f2937;
    --ui-premium-neutral-border: #dbe3ef;
    --ui-premium-shadow: 0 10px 22px rgba(15, 23, 42, .12);
    --ui-premium-shadow-hover: 0 16px 34px rgba(15, 23, 42, .18);
}

/* Botón base global */
.button,
button.button,
a.button,
input[type="submit"].button {
    border-radius: 999px !important;
    min-height: 42px;
    padding: 10px 17px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    border: 1px solid transparent;
    font-weight: 750;
    line-height: 1.1;
    text-decoration: none;
    box-shadow: var(--ui-premium-shadow);
    transition:
        transform .16s ease,
        box-shadow .16s ease,
        filter .16s ease,
        background .16s ease,
        border-color .16s ease;
    will-change: transform;
}

.button:hover,
button.button:hover,
a.button:hover,
input[type="submit"].button:hover {
    transform: translateY(-2px);
    box-shadow: var(--ui-premium-shadow-hover);
    filter: brightness(1.02);
}

.button:active,
button.button:active,
a.button:active,
input[type="submit"].button:active {
    transform: translateY(0);
    box-shadow: 0 8px 18px rgba(15, 23, 42, .14);
}

/* Primario */
.button:not(.danger):not(.secondary):not(.toolbar-clear):not(.button-light):not(.small),
button.button:not(.danger):not(.secondary):not(.toolbar-clear):not(.button-light):not(.small),
a.button:not(.danger):not(.secondary):not(.toolbar-clear):not(.button-light):not(.small) {
    background: linear-gradient(135deg, var(--ui-premium-primary-1), var(--ui-premium-primary-2));
    color: #fff;
}

/* Secundario */
.button.secondary,
.button.toolbar-clear,
.button.button-light,
a.button.secondary,
a.button.toolbar-clear,
a.button.button-light,
button.button.secondary,
button.button.toolbar-clear,
button.button.button-light {
    background: var(--ui-premium-neutral-bg);
    color: var(--ui-premium-neutral-text);
    border-color: var(--ui-premium-neutral-border);
}

/* Peligro */
.button.danger,
button.button.danger,
a.button.danger {
    background: var(--ui-premium-danger-soft);
    color: var(--ui-premium-danger-text);
    border-color: var(--ui-premium-danger-border);
    box-shadow: 0 10px 22px rgba(190, 18, 60, .10);
}

/* Botones pequeños */
.button.small,
button.button.small,
a.button.small {
    min-height: 34px;
    padding: 7px 12px;
    font-size: .86rem;
    box-shadow: 0 7px 16px rgba(15, 23, 42, .10);
}

/* Icono pequeño sin tocar HTML */
.button::before,
button.button::before,
a.button::before {
    content: "•";
    width: 21px;
    height: 21px;
    min-width: 21px;
    border-radius: 999px;
    display: inline-grid;
    place-items: center;
    background: rgba(255, 255, 255, .24);
    color: currentColor;
    font-size: 13px;
    font-weight: 900;
    line-height: 1;
}

.button.danger::before,
button.button.danger::before,
a.button.danger::before {
    content: "×";
    background: #ffe4e6;
}

.button.secondary::before,
.button.toolbar-clear::before,
.button.button-light::before,
a.button.secondary::before,
a.button.toolbar-clear::before,
a.button.button-light::before,
button.button.secondary::before,
button.button.toolbar-clear::before,
button.button.button-light::before {
    content: "←";
    background: #eef2ff;
    color: #3730a3;
}

.aq-primary-action::before {
    content: "+";
}

.toolbar-submit::before {
    content: "✓";
}

.actions .button:not(.danger)::before {
    content: "›";
}

.actions .button.danger::before {
    content: "×";
}

/* No meter iconos en flechas de agenda */
.aq-day-nav::before,
.aq-calendar-arrow::before {
    content: none !important;
}

/* Disabled */
.button:disabled,
button.button:disabled,
input[type="submit"].button:disabled,
.button.is-disabled {
    opacity: .55;
    cursor: not-allowed;
    transform: none !important;
    filter: grayscale(.15);
}

/* Checks premium */
input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 20px;
    height: 20px;
    min-width: 20px;
    border: 2px solid #b8c3d5;
    border-radius: 7px;
    background: #fff;
    display: inline-grid;
    place-content: center;
    vertical-align: middle;
    cursor: pointer;
    transition:
        background .14s ease,
        border-color .14s ease,
        box-shadow .14s ease,
        transform .14s ease;
}

input[type="checkbox"]::before {
    content: "";
    width: 10px;
    height: 10px;
    transform: scale(0);
    transition: transform .14s ease;
    background: #fff;
    clip-path: polygon(14% 44%, 0 60%, 42% 100%, 100% 18%, 84% 4%, 39% 67%);
}

input[type="checkbox"]:checked {
    background: linear-gradient(135deg, var(--ui-premium-primary-1), var(--ui-premium-primary-2));
    border-color: var(--ui-premium-primary-1);
    box-shadow: 0 6px 14px rgba(37, 99, 235, .20);
}

input[type="checkbox"]:checked::before {
    transform: scale(1);
}

input[type="checkbox"]:hover {
    transform: translateY(-1px);
    box-shadow: 0 6px 14px rgba(15, 23, 42, .12);
}

label input[type="checkbox"] {
    margin-right: 7px;
}

/* Radios: solo color nativo */
input[type="radio"] {
    accent-color: var(--ui-premium-primary-1);
}

@media (prefers-reduced-motion: reduce) {
    .button,
    button.button,
    a.button,
    input[type="submit"].button,
    input[type="checkbox"] {
        transition: none !important;
    }

    .button:hover,
    button.button:hover,
    a.button:hover,
    input[type="submit"].button:hover,
    input[type="checkbox"]:hover {
        transform: none !important;
    }
}

/* ==========================================================
   END UI_PREMIUM_BUTTONS_CHECKS_GLOBAL_FIX
   ========================================================== */


/* ==========================================================
   UI_ACTION_COLORS_DISTINCT_SYSTEM_FIX_V2
   Mantiene movimiento + sombra premium.
   Cada función usa color único.
   ========================================================== */

/* Base: asegurar que todos los botones de acciones conserven sombra y movimiento */
.actions .button,
.actions a.button,
.actions button.button {
    border-radius: 999px !important;
    box-shadow: 0 10px 22px rgba(15, 23, 42, .12) !important;
    transition:
        transform .16s ease,
        box-shadow .16s ease,
        filter .16s ease,
        background .16s ease,
        border-color .16s ease !important;
}

.actions .button:hover,
.actions a.button:hover,
.actions button.button:hover {
    transform: translateY(-2px) !important;
    box-shadow: 0 16px 34px rgba(15, 23, 42, .18) !important;
    filter: brightness(1.02);
}

.actions .button:active,
.actions a.button:active,
.actions button.button:active {
    transform: translateY(0) !important;
    box-shadow: 0 8px 18px rgba(15, 23, 42, .14) !important;
}

/* EDITAR = azul principal */
.actions .button[href*="/editar"],
.actions .button.edit,
.actions .button.action-edit {
    background: linear-gradient(135deg,#2563eb,#4f46e5) !important;
    color:#fff !important;
}

/* HORARIOS = azul turquesa */
.actions .button[href*="horarios"],
.actions .button.action-horarios,
.actions .button.horarios {
    background: linear-gradient(135deg,#0891b2,#06b6d4) !important;
    color:#fff !important;
}

/* BLOQUEOS = morado intermedio */
.actions .button[href*="bloqueos"],
.actions .button.action-bloqueos,
.actions .button.bloqueos {
    background: linear-gradient(135deg,#7c3aed,#a855f7) !important;
    color:#fff !important;
}

/* ACTIVAR = verde jade */
.actions .button[href*="activar"],
.actions .button.activar {
    background: linear-gradient(135deg,#0f766e,#14b8a6) !important;
    color:#fff !important;
}

/* INACTIVAR = rosa fuerte elegante */
.actions .button[href*="inactivar"],
.actions .button.inactivar,
.actions .button.danger {
    background: linear-gradient(135deg,#fb7185,#e11d48) !important;
    color:#fff !important;
}

/* REPORTES = cobre */
.actions .button[href*="reporte"],
.actions .button[href*="reportes"],
.actions .button.reportes,
.actions .button.action-report {
    background: linear-gradient(135deg,#b45309,#d97706) !important;
    color:#fff !important;
}

/* VISTA IMPRIMIBLE = grafito */
.actions .button[href*="imprimir"],
.actions .button[href*="print"],
.actions .button[href*="imprimible"],
.actions .button.print,
.actions .button.action-print {
    background: linear-gradient(135deg,#334155,#475569) !important;
    color:#fff !important;
}

/* EXPORTAR = verde lima premium */
.actions .button[href*="excel"],
.actions .button[href*="export"],
.actions .button.export {
    background: linear-gradient(135deg,#65a30d,#84cc16) !important;
    color:#102000 !important;
}

/* HISTORIAL = vino oscuro */
.actions .button[href*="historial"],
.actions .button.historial {
    background: linear-gradient(135deg,#7f1d1d,#b91c1c) !important;
    color:#fff !important;
}

/* VER / DETALLE = índigo suave */
.actions .button[href*="ver"],
.actions .button[href*="detalle"],
.actions .button.view {
    background: linear-gradient(135deg,#4338ca,#6366f1) !important;
    color:#fff !important;
}

/* Iconos diferenciados */
.actions .button[href*="/editar"]::before { content:"✎" !important; }
.actions .button[href*="horarios"]::before { content:"⏰" !important; }
.actions .button[href*="bloqueos"]::before { content:"◆" !important; }
.actions .button[href*="activar"]::before { content:"✓" !important; }
.actions .button[href*="inactivar"]::before { content:"×" !important; }
.actions .button[href*="reporte"]::before,
.actions .button[href*="reportes"]::before { content:"▣" !important; }
.actions .button[href*="imprimir"]::before,
.actions .button[href*="print"]::before,
.actions .button[href*="imprimible"]::before { content:"⎙" !important; }
.actions .button[href*="excel"]::before,
.actions .button[href*="export"]::before { content:"⇩" !important; }
.actions .button[href*="historial"]::before { content:"◷" !important; }
.actions .button[href*="ver"]::before,
.actions .button[href*="detalle"]::before { content:"›" !important; }

/* Excluir flechas de agenda */
.aq-day-nav::before,
.aq-calendar-arrow::before {
    content: none !important;
}

/* ==========================================================
   END UI_ACTION_COLORS_DISTINCT_SYSTEM_FIX_V2
   ========================================================== */



/* AGENDA FIX REAL V8 - escala única 30min, top por minuto, estilo aprobado */
.aq-calendar-grid-v61{
  --slot-height:56px !important;
  grid-template-columns:96px repeat(var(--agenda-professionals), minmax(230px,1fr)) !important;
  grid-template-rows:76px auto !important;
  min-width:max(980px, calc(var(--agenda-professionals) * 230px + 96px)) !important;
  background:#fff !important;
}
.aq-calendar-grid-v61 .aq-calendar-corner{height:76px !important;}
.aq-calendar-grid-v61 .aq-pro-header{
  height:76px !important;
  padding:.8rem .9rem !important;
  box-sizing:border-box !important;
}
.aq-calendar-grid-v61 .aq-hours-col{
  background:#fff !important;
  border-right:1px solid rgba(148,163,184,.18) !important;
}
.aq-calendar-grid-v61 .aq-hour-cell,
.aq-calendar-grid-v61 .aq-grid-slot{
  height:var(--slot-height) !important;
  min-height:var(--slot-height) !important;
  max-height:var(--slot-height) !important;
  box-sizing:border-box !important;
}
.aq-calendar-grid-v61 .aq-hour-cell{
  position:relative !important;
  display:flex !important;
  align-items:flex-start !important;
  justify-content:flex-end !important;
  padding:7px 11px 0 4px !important;
  line-height:1 !important;
  text-align:right !important;
  white-space:nowrap !important;
  color:#0f2747 !important;
  font-size:.78rem !important;
  font-weight:900 !important;
  border-bottom:1px solid rgba(148,163,184,.30) !important;
  background:#fff !important;
}
.aq-calendar-grid-v61 .aq-hour-cell.is-half{
  color:#536985 !important;
  font-size:.70rem !important;
  font-weight:850 !important;
  border-bottom:1px dashed rgba(148,163,184,.30) !important;
}
.aq-calendar-grid-v61 .aq-pro-column{
  position:relative !important;
  min-height:calc(var(--agenda-slots) * var(--slot-height)) !important;
  background:linear-gradient(180deg,#fff 0%,#f4f9ff 100%) !important;
  border-right:1px solid rgba(148,163,184,.18) !important;
  overflow:visible !important;
}
.aq-calendar-grid-v61 .aq-grid-slot{
  position:relative !important;
  border-bottom:1px solid rgba(148,163,184,.26) !important;
  background:rgba(255,255,255,.74) !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-half{
  border-bottom:1px dashed rgba(148,163,184,.28) !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-disabled{
  background:repeating-linear-gradient(135deg,rgba(148,163,184,.18),rgba(148,163,184,.18) 8px,rgba(248,250,252,.94) 8px,rgba(248,250,252,.94) 18px) !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-available{
  cursor:pointer !important;
  background:rgba(255,255,255,.84) !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-available:hover{
  background:rgba(14,165,233,.08) !important;
  box-shadow:inset 0 0 0 1px rgba(14,165,233,.18) !important;
}
.aq-calendar-grid-v61 .aq-grid-slot::after,
.aq-calendar-grid-v61 .aq-grid-slot.is-disabled::after,
.aq-calendar-grid-v61 .aq-grid-slot.is-occupied::before{
  display:none !important;
  content:none !important;
}
.aq-calendar-grid-v61 .aq-appointment{
  position:absolute !important;
  left:12px !important;
  right:12px !important;
  z-index:8 !important;
  box-sizing:border-box !important;
  border-radius:11px !important;
  padding:8px 12px 7px 15px !important;
  display:flex !important;
  flex-direction:column !important;
  justify-content:center !important;
  gap:2px !important;
  overflow:hidden !important;
  text-decoration:none !important;
  box-shadow:0 10px 24px rgba(15,23,42,.10) !important;
  transition:transform .14s ease, box-shadow .14s ease !important;
}
.aq-calendar-grid-v61 .aq-appointment:hover{
  transform:translateY(-1px) !important;
  box-shadow:0 16px 30px rgba(15,23,42,.16) !important;
}
.aq-calendar-grid-v61 .aq-appointment::before{
  content:'' !important;
  position:absolute !important;
  left:0 !important;
  top:0 !important;
  bottom:0 !important;
  width:6px !important;
  border-radius:11px 0 0 11px !important;
  background:rgba(34,197,94,.95) !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-time,
.aq-calendar-grid-v61 .aq-appointment strong,
.aq-calendar-grid-v61 .aq-appointment small{
  display:block !important;
  max-width:100% !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  margin:0 !important;
  padding:0 !important;
  transform:none !important;
  color:#0f172a !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-time{font-size:.72rem !important;line-height:1.05 !important;font-weight:900 !important;}
.aq-calendar-grid-v61 .aq-appointment strong{font-size:.82rem !important;line-height:1.05 !important;font-weight:950 !important;}
.aq-calendar-grid-v61 .aq-appointment small{font-size:.70rem !important;line-height:1.05 !important;font-weight:750 !important;}
.aq-calendar-grid-v61 .aq-appointment.is-active{
  background:linear-gradient(135deg,#effdf5 0%,#c9f6dc 100%) !important;
  border:1px solid rgba(34,197,94,.44) !important;
}
.aq-calendar-grid-v61 .aq-appointment.is-completed{
  background:linear-gradient(135deg,#eff6ff 0%,#cfe3ff 100%) !important;
  border:1px solid rgba(59,130,246,.50) !important;
}
.aq-calendar-grid-v61 .aq-appointment.is-completed::before{background:#3b82f6 !important;}
.aq-calendar-grid-v61 .aq-appointment.is-cancelled,
.aq-calendar-grid-v61 .aq-appointment.is-noshow,
.aq-calendar-grid-v61 .aq-appointment.is-neutral{
  background:linear-gradient(135deg,#f8fafc 0%,#e5e7eb 100%) !important;
  border:1px solid rgba(100,116,139,.30) !important;
}
.aq-calendar-grid-v61 .aq-appointment.is-cancelled::before{background:#ef4444 !important;}
.aq-calendar-grid-v61 .aq-appointment.is-noshow::before,
.aq-calendar-grid-v61 .aq-appointment.is-neutral::before{background:#64748b !important;}
.aq-calendar-grid-v61 .aq-appointment.is-rescheduled{
  background:linear-gradient(135deg,#faf5ff 0%,#eadcff 100%) !important;
  border:1px solid rgba(147,51,234,.42) !important;
}
.aq-calendar-grid-v61 .aq-appointment.is-rescheduled::before{background:#9333ea !important;}
@media (max-width:768px){
  .aq-calendar-grid-v61{--slot-height:56px !important;grid-template-columns:88px repeat(var(--agenda-professionals), minmax(220px,1fr)) !important;}
  .aq-calendar-grid-v61 .aq-hour-cell{font-size:.72rem !important;padding-right:36px !important;}
  .aq-calendar-grid-v61 .aq-hour-cell.is-half{font-size:.66rem !important;}
  .aq-calendar-grid-v61 .aq-appointment{left:8px !important;right:8px !important;padding:7px 9px 6px 13px !important;}
}
/* /AGENDA FIX REAL V8 */


/* v9: citas más legibles + área junto al cliente */
.aq-calendar-grid-v61 .aq-appointment{
  min-height:54px !important;
  padding:9px 12px 8px 16px !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-time{
  font-size:.82rem !important;
  line-height:1.08 !important;
}
.aq-calendar-grid-v61 .aq-appointment strong,
.aq-calendar-grid-v61 .aq-appointment .aq-appt-client-line,
.aq-calendar-grid-v61 .aq-appointment .aq-appt-area-inline{
  font-size:.96rem !important;
  line-height:1.08 !important;
  font-weight:950 !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-area-inline{
  display:inline !important;
  color:#0f172a !important;
}
.aq-calendar-grid-v61 .aq-appointment small{
  display:none !important;
}
.aq-context-menu{
  width:150px !important;
}
.aq-context-menu a{
  justify-content:center !important;
  font-size:.95rem !important;
}


/* v10: restaurar menu contextual completo + tipografia moderada */
.aq-calendar-grid-v61 .aq-appointment{
  min-height:50px !important;
  padding:7px 10px 7px 14px !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-time{
  font-size:.72rem !important;
  line-height:1.08 !important;
  font-weight:850 !important;
}
.aq-calendar-grid-v61 .aq-appointment strong,
.aq-calendar-grid-v61 .aq-appointment .aq-appt-client-line,
.aq-calendar-grid-v61 .aq-appointment .aq-appt-area-inline{
  font-size:.86rem !important;
  line-height:1.12 !important;
  font-weight:900 !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-area-inline{
  display:inline !important;
  color:#0f172a !important;
}
.aq-context-menu{
  width:230px !important;
}
.aq-context-menu a,
.aq-context-menu button.aq-context-action{
  justify-content:flex-start !important;
  width:100% !important;
  border:0 !important;
  background:transparent !important;
  cursor:pointer !important;
  font-size:.86rem !important;
  font-weight:850 !important;
  text-align:left !important;
}

/* AGENDA FILTERS PREMIUM SAFE PATCH V12
   Solo apariencia: no cambia nombres, IDs, formularios, JS ni comportamiento. */
.aq-filters-panel {
  border-radius: 28px !important;
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,250,252,.94)) !important;
  border: 1px solid rgba(203, 213, 225, .72) !important;
  box-shadow: 0 18px 45px rgba(15, 23, 42, .08), 0 2px 10px rgba(15, 23, 42, .04) !important;
  overflow: hidden !important;
}

.aq-filters-panel summary {
  padding: 1rem 1.15rem !important;
  background: linear-gradient(135deg, rgba(239,246,255,.9), rgba(255,255,255,.96) 48%, rgba(240,253,250,.78)) !important;
  border-bottom: 1px solid rgba(226, 232, 240, .75) !important;
}

.aq-filters-panel summary span {
  position: relative !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: .55rem !important;
  font-size: .98rem !important;
  letter-spacing: -.01em !important;
}

.aq-filters-panel summary span::before {
  content: '🔎';
  width: 34px !important;
  height: 34px !important;
  display: inline-grid !important;
  place-items: center !important;
  border-radius: 13px !important;
  background: linear-gradient(135deg, #dbeafe, #ccfbf1) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.8), 0 8px 18px rgba(37,99,235,.12) !important;
  font-size: .95rem !important;
}

.aq-filters-panel summary small {
  color: #64748b !important;
  font-size: .78rem !important;
}

.aq-filters-panel summary::after {
  width: 38px !important;
  height: 38px !important;
  border-radius: 999px !important;
  background: linear-gradient(135deg, #eff6ff, #e0f2fe) !important;
  color: #1d4ed8 !important;
  box-shadow: 0 10px 22px rgba(37,99,235,.14), inset 0 1px 0 rgba(255,255,255,.9) !important;
}

.aq-filters-panel .aq-agenda-filters,
.aq-agenda-filters {
  gap: 1rem !important;
  padding: 1.05rem !important;
  background: linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,250,252,.92)) !important;
}

.aq-agenda-filters > div {
  position: relative !important;
}

.aq-agenda-filters label {
  display: inline-flex !important;
  align-items: center !important;
  gap: .35rem !important;
  margin-bottom: .42rem !important;
  color: #334155 !important;
  font-size: .76rem !important;
  font-weight: 900 !important;
  letter-spacing: .01em !important;
}

.aq-agenda-filters input,
.aq-agenda-filters select {
  min-height: 43px !important;
  border-radius: 999px !important;
  border: 1px solid rgba(148, 163, 184, .42) !important;
  background: linear-gradient(180deg, #ffffff, #f8fafc) !important;
  color: #0f172a !important;
  font-weight: 700 !important;
  padding: .68rem .9rem !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.9), 0 8px 18px rgba(15,23,42,.045) !important;
  transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease, background .16s ease !important;
}

.aq-agenda-filters input:hover,
.aq-agenda-filters select:hover {
  border-color: rgba(59, 130, 246, .52) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.95), 0 10px 22px rgba(37,99,235,.075) !important;
}

.aq-agenda-filters input:focus,
.aq-agenda-filters select:focus {
  border-color: #38bdf8 !important;
  background: #fff !important;
  box-shadow: 0 0 0 4px rgba(14,165,233,.14), 0 12px 24px rgba(15,23,42,.06) !important;
}

.aq-filter-actions {
  align-items: end !important;
  gap: .65rem !important;
}

.aq-filter-actions .button,
.aq-agenda-filters .toolbar-submit,
.aq-agenda-filters .toolbar-clear {
  min-height: 43px !important;
  border-radius: 999px !important;
  padding: .68rem 1.05rem !important;
  font-weight: 900 !important;
  letter-spacing: -.01em !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: .5rem !important;
  transform: translateY(0) !important;
  transition: transform .16s ease, box-shadow .16s ease, filter .16s ease, background .16s ease !important;
}

.aq-agenda-filters .toolbar-submit {
  background: linear-gradient(135deg, #0ea5e9, #2563eb) !important;
  color: #fff !important;
  border: 1px solid rgba(37,99,235,.45) !important;
  box-shadow: 0 13px 28px rgba(37,99,235,.22), inset 0 1px 0 rgba(255,255,255,.28) !important;
}

.aq-agenda-filters .toolbar-submit::before {
  content: '✓';
  width: 20px !important;
  height: 20px !important;
  display: inline-grid !important;
  place-items: center !important;
  border-radius: 999px !important;
  background: rgba(255,255,255,.22) !important;
  font-size: .76rem !important;
}

.aq-agenda-filters .toolbar-clear {
  background: linear-gradient(180deg, #ffffff, #f1f5f9) !important;
  color: #334155 !important;
  border: 1px solid rgba(148,163,184,.48) !important;
  box-shadow: 0 11px 24px rgba(15,23,42,.07), inset 0 1px 0 rgba(255,255,255,.9) !important;
}

.aq-agenda-filters .toolbar-clear::before {
  content: '↺';
  font-size: .92rem !important;
  color: #64748b !important;
}

.aq-filter-actions .button:hover,
.aq-agenda-filters .toolbar-submit:hover,
.aq-agenda-filters .toolbar-clear:hover {
  transform: translateY(-1px) !important;
  filter: brightness(1.01) !important;
}

.aq-agenda-filters .toolbar-submit:hover {
  box-shadow: 0 16px 34px rgba(37,99,235,.26), inset 0 1px 0 rgba(255,255,255,.32) !important;
}

.aq-agenda-filters .toolbar-clear:hover {
  border-color: rgba(100,116,139,.45) !important;
  box-shadow: 0 14px 28px rgba(15,23,42,.09), inset 0 1px 0 rgba(255,255,255,.95) !important;
}

@media (max-width: 980px) {
  .aq-filters-panel summary {
    align-items: flex-start !important;
  }
  .aq-filters-panel summary span::before {
    width: 31px !important;
    height: 31px !important;
  }
  .aq-filter-actions .button,
  .aq-agenda-filters .toolbar-submit,
  .aq-agenda-filters .toolbar-clear {
    width: 100% !important;
  }
}
/* END AGENDA FILTERS PREMIUM SAFE PATCH V12 */

/* AGENDA FILTROS VERDE MENTA PREMIUM V15 - solo apariencia */
.aq-filters-panel {
  background: linear-gradient(135deg, #f1fff8 0%, #ffffff 48%, #eafff4 100%) !important;
  border: 1px solid rgba(16, 185, 129, .22) !important;
  box-shadow: 0 18px 42px rgba(5, 150, 105, .075) !important;
}

.aq-filters-panel summary {
  background: linear-gradient(135deg, #f5fffa 0%, #ffffff 55%, #eafff4 100%) !important;
  color: #065f46 !important;
}

.aq-filters-panel summary small {
  color: #4f8f78 !important;
}

.aq-filters-panel summary::after {
  background: linear-gradient(135deg, #d1fae5, #ecfdf5) !important;
  color: #047857 !important;
  box-shadow: 0 8px 18px rgba(5, 150, 105, .12) !important;
}

.aq-filters-panel .aq-agenda-filters,
.aq-agenda-filters {
  background: linear-gradient(135deg, #f7fffb 0%, #ffffff 58%, #effff7 100%) !important;
  border-color: rgba(16, 185, 129, .18) !important;
}

.aq-agenda-filters label {
  color: #047857 !important;
}

.aq-agenda-filters input,
.aq-agenda-filters select {
  background: rgba(241, 255, 248, .84) !important;
  border-color: rgba(16, 185, 129, .24) !important;
  color: #12372b !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.72), 0 7px 16px rgba(5, 150, 105, .045) !important;
}

.aq-agenda-filters input:focus,
.aq-agenda-filters select:focus {
  border-color: rgba(5, 150, 105, .48) !important;
  background: #fff !important;
  box-shadow: 0 0 0 4px rgba(16, 185, 129, .13), 0 10px 22px rgba(5, 150, 105, .075) !important;
}

.aq-filter-actions .button,
.aq-agenda-filters .button {
  border-radius: 999px !important;
  box-shadow: 0 10px 22px rgba(5, 150, 105, .10) !important;
}

.aq-filter-actions .button:not(.toolbar-clear),
.aq-agenda-filters .toolbar-submit {
  background: linear-gradient(135deg, #059669, #34d399) !important;
  border-color: rgba(5, 150, 105, .35) !important;
  color: #fff !important;
}

.aq-filter-actions .button:hover,
.aq-agenda-filters .button:hover {
  transform: translateY(-1px);
}

.aq-filter-actions .toolbar-clear,
.aq-agenda-filters .toolbar-clear {
  background: linear-gradient(135deg, #ffffff, #ecfdf5) !important;
  color: #047857 !important;
  border: 1px solid rgba(16, 185, 129, .28) !important;
}

.aq-agenda-hero {
  background: linear-gradient(135deg, #f5fffa 0%, #ffffff 48%, #ecfdf5 100%) !important;
  border-color: rgba(16, 185, 129, .16) !important;
  box-shadow: 0 18px 55px rgba(5, 150, 105, .055) !important;
}

.aq-eyebrow,
.aq-table-backup summary {
  color: #047857 !important;
}

.aq-primary-action {
  background: linear-gradient(135deg, #059669, #10b981) !important;
  box-shadow: 0 14px 30px rgba(5, 150, 105, .18) !important;
}
/* END AGENDA FILTROS VERDE MENTA PREMIUM V15 */

/* ==========================================================
   CITA_EDIT_ACTION_COLORS_V38
   Solo apariencia para /citas/editar: colores por función.
   No cambia formularios, nombres, rutas, JS ni lógica.
   ========================================================== */
.cita-edit-page .button,
.cita-edit-page button.button,
.cita-edit-page a.button {
    border-radius: 999px !important;
    min-height: 42px;
    box-shadow: 0 10px 22px rgba(15, 23, 42, .11) !important;
    border: 1px solid rgba(148, 163, 184, .22) !important;
}

.cita-edit-page .button:hover,
.cita-edit-page button.button:hover,
.cita-edit-page a.button:hover {
    transform: translateY(-2px) !important;
    box-shadow: 0 16px 32px rgba(15, 23, 42, .16) !important;
}

/* Siguiente cita = turquesa/agenda */
.cita-edit-page .action-next-appointment {
    background: linear-gradient(135deg, #0891b2, #06b6d4) !important;
    color: #fff !important;
}
.cita-edit-page .action-next-appointment::before { content: "↷" !important; }

/* Volver = neutro, no compite con acciones principales */
.cita-edit-page .action-back {
    background: linear-gradient(135deg, #f8fafc, #eef2f7) !important;
    color: #334155 !important;
    border-color: #dbe3ef !important;
}
.cita-edit-page .action-back::before { content: "←" !important; background:#e2e8f0 !important; color:#334155 !important; }

/* Guardar = verde éxito */
.cita-edit-page .action-save-changes {
    background: linear-gradient(135deg, #059669, #10b981) !important;
    color: #fff !important;
}
.cita-edit-page .action-save-changes::before { content: "✓" !important; }

/* Copiar = índigo suave */
.cita-edit-page .action-copy-link {
    background: linear-gradient(135deg, #eef2ff, #e0e7ff) !important;
    color: #3730a3 !important;
    border-color: #c7d2fe !important;
}
.cita-edit-page .action-copy-link::before { content: "⧉" !important; background:#c7d2fe !important; color:#312e81 !important; }

/* Correo = azul estándar */
.cita-edit-page .action-send-email {
    background: linear-gradient(135deg, #2563eb, #3b82f6) !important;
    color: #fff !important;
}
.cita-edit-page .action-send-email::before { content: "✉" !important; }

/* SMS/WhatsApp = verde comunicación */
.cita-edit-page .action-send-sms {
    background: linear-gradient(135deg, #16a34a, #22c55e) !important;
    color: #fff !important;
}
.cita-edit-page .action-send-sms::before { content: "☏" !important; }

/* Cargar documento = violeta/documentos */
.cita-edit-page .action-upload-document {
    background: linear-gradient(135deg, #7c3aed, #a855f7) !important;
    color: #fff !important;
}
.cita-edit-page .action-upload-document::before { content: "⇧" !important; }

/* Quitar = rojo peligro */
.cita-edit-page .action-remove-document,
.cita-edit-page button.action-remove-document {
    background: linear-gradient(135deg, #ef4444, #dc2626) !important;
    color: #fff !important;
    border-color: rgba(220, 38, 38, .18) !important;
}
.cita-edit-page .action-remove-document::before { content: "×" !important; background: rgba(255,255,255,.22) !important; color:#fff !important; }

/* Mantener botones pequeños compactos */
.cita-edit-page .button.small,
.cita-edit-page button.button.small,
.cita-edit-page a.button.small {
    min-height: 34px !important;
    padding: 7px 12px !important;
}
/* ==========================================================
   END CITA_EDIT_ACTION_COLORS_V38
   ========================================================== */

/* v39: buffer visual proporcional. No cambia tarjetas ni lógica de guardado. */
.aq-calendar-grid-v61 .aq-buffer-gap{
  position:absolute !important;
  left:0 !important;
  right:0 !important;
  z-index:3 !important;
  pointer-events:none !important;
  background:repeating-linear-gradient(135deg,rgba(148,163,184,.18),rgba(148,163,184,.18) 8px,rgba(248,250,252,.94) 8px,rgba(248,250,252,.94) 18px) !important;
  border-top:1px dashed rgba(148,163,184,.22) !important;
  border-bottom:1px dashed rgba(148,163,184,.18) !important;
}

/* ==========================================================
   CITA_EDIT_BUTTONS_FUNCTIONAL_COLORS_V40
   Pantalla /citas/editar: acabado profesional por función.
   Solo CSS. No toca rutas, formularios, nombres, JS ni lógica.
   ========================================================== */
.cita-edit-page .button,
.cita-edit-page button.button,
.cita-edit-page a.button {
  border-radius: 999px !important;
  min-height: 42px !important;
  padding: 10px 16px !important;
  font-weight: 800 !important;
  letter-spacing: .005em !important;
  border: 1px solid rgba(148, 163, 184, .26) !important;
  box-shadow: 0 10px 22px rgba(15, 23, 42, .105) !important;
  transition: transform .16s ease, box-shadow .16s ease, filter .16s ease, border-color .16s ease !important;
}

.cita-edit-page .button:hover,
.cita-edit-page button.button:hover,
.cita-edit-page a.button:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 16px 32px rgba(15, 23, 42, .15) !important;
  filter: brightness(1.025) !important;
}

.cita-edit-page .button:active,
.cita-edit-page button.button:active,
.cita-edit-page a.button:active {
  transform: translateY(0) !important;
  box-shadow: 0 8px 18px rgba(15, 23, 42, .13) !important;
}

/* Fallback seguro: cualquier botón nuevo de esta pantalla queda neutro, no azul genérico. */
.cita-edit-page .button:not(.action-next-appointment):not(.action-back):not(.action-save-changes):not(.action-copy-link):not(.action-send-email):not(.action-send-sms):not(.action-upload-document):not(.action-remove-document),
.cita-edit-page button.button:not(.action-next-appointment):not(.action-back):not(.action-save-changes):not(.action-copy-link):not(.action-send-email):not(.action-send-sms):not(.action-upload-document):not(.action-remove-document),
.cita-edit-page a.button:not(.action-next-appointment):not(.action-back):not(.action-save-changes):not(.action-copy-link):not(.action-send-email):not(.action-send-sms):not(.action-upload-document):not(.action-remove-document) {
  background: linear-gradient(135deg, #ffffff, #f8fafc) !important;
  color: #334155 !important;
  border-color: #dbe3ef !important;
}

/* Icono estándar consistente */
.cita-edit-page .button::before,
.cita-edit-page button.button::before,
.cita-edit-page a.button::before {
  width: 22px !important;
  height: 22px !important;
  min-width: 22px !important;
  border-radius: 999px !important;
  display: inline-grid !important;
  place-items: center !important;
  font-size: 13px !important;
  font-weight: 900 !important;
  line-height: 1 !important;
}

/* Siguiente cita = turquesa agenda/continuidad */
.cita-edit-page .action-next-appointment {
  background: linear-gradient(135deg, #0e7490, #06b6d4) !important;
  color: #ffffff !important;
  border-color: rgba(8, 145, 178, .28) !important;
  box-shadow: 0 12px 26px rgba(6, 182, 212, .20) !important;
}
.cita-edit-page .action-next-appointment::before {
  content: "↷" !important;
  background: rgba(255,255,255,.24) !important;
  color: #ffffff !important;
}

/* Volver = neutro */
.cita-edit-page .action-back {
  background: linear-gradient(135deg, #ffffff, #eef2f7) !important;
  color: #334155 !important;
  border-color: #dbe3ef !important;
  box-shadow: 0 9px 20px rgba(51, 65, 85, .10) !important;
}
.cita-edit-page .action-back::before {
  content: "←" !important;
  background: #e2e8f0 !important;
  color: #334155 !important;
}

/* Guardar = verde éxito */
.cita-edit-page .action-save-changes {
  background: linear-gradient(135deg, #047857, #10b981) !important;
  color: #ffffff !important;
  border-color: rgba(5, 150, 105, .30) !important;
  box-shadow: 0 12px 26px rgba(16, 185, 129, .22) !important;
}
.cita-edit-page .action-save-changes::before {
  content: "✓" !important;
  background: rgba(255,255,255,.24) !important;
  color: #ffffff !important;
}

/* Copiar enlace = ámbar/acción auxiliar */
.cita-edit-page .action-copy-link {
  background: linear-gradient(135deg, #fffbeb, #fde68a) !important;
  color: #92400e !important;
  border-color: #fcd34d !important;
  box-shadow: 0 10px 22px rgba(245, 158, 11, .16) !important;
}
.cita-edit-page .action-copy-link::before {
  content: "⧉" !important;
  background: #f59e0b !important;
  color: #ffffff !important;
}

/* Correo = azul comunicación */
.cita-edit-page .action-send-email {
  background: linear-gradient(135deg, #1d4ed8, #38bdf8) !important;
  color: #ffffff !important;
  border-color: rgba(37, 99, 235, .28) !important;
  box-shadow: 0 12px 26px rgba(37, 99, 235, .18) !important;
}
.cita-edit-page .action-send-email::before {
  content: "✉" !important;
  background: rgba(255,255,255,.24) !important;
  color: #ffffff !important;
}

/* SMS / WhatsApp = verde mensajería */
.cita-edit-page .action-send-sms {
  background: linear-gradient(135deg, #15803d, #22c55e) !important;
  color: #ffffff !important;
  border-color: rgba(22, 163, 74, .28) !important;
  box-shadow: 0 12px 26px rgba(34, 197, 94, .20) !important;
}
.cita-edit-page .action-send-sms::before {
  content: "☏" !important;
  background: rgba(255,255,255,.24) !important;
  color: #ffffff !important;
}

/* Documentos = violeta */
.cita-edit-page .action-upload-document {
  background: linear-gradient(135deg, #6d28d9, #a855f7) !important;
  color: #ffffff !important;
  border-color: rgba(124, 58, 237, .30) !important;
  box-shadow: 0 12px 26px rgba(124, 58, 237, .18) !important;
}
.cita-edit-page .action-upload-document::before {
  content: "⇧" !important;
  background: rgba(255,255,255,.24) !important;
  color: #ffffff !important;
}

/* Quitar / eliminar = rojo peligro */
.cita-edit-page .action-remove-document,
.cita-edit-page button.action-remove-document {
  background: linear-gradient(135deg, #dc2626, #f43f5e) !important;
  color: #ffffff !important;
  border-color: rgba(220, 38, 38, .28) !important;
  box-shadow: 0 10px 22px rgba(220, 38, 38, .18) !important;
}
.cita-edit-page .action-remove-document::before {
  content: "×" !important;
  background: rgba(255,255,255,.24) !important;
  color: #ffffff !important;
}

/* Botones pequeños de tabla: compactos y legibles */
.cita-edit-page .button.small,
.cita-edit-page button.button.small,
.cita-edit-page a.button.small {
  min-height: 34px !important;
  padding: 7px 12px !important;
  font-size: .86rem !important;
}
/* ==========================================================
   END CITA_EDIT_BUTTONS_FUNCTIONAL_COLORS_V40
   ========================================================== */


/* Buffer suave: cita permitida con advertencia por tiempo entre citas incompleto. */
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning{
    background: linear-gradient(135deg, rgba(255, 248, 219, 0.96), rgba(255, 239, 184, 0.72)) !important;
    box-shadow: inset 4px 0 0 rgba(245, 158, 11, 0.68), inset 0 0 0 1px rgba(245, 158, 11, 0.28);
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning:hover{
    background: linear-gradient(135deg, rgba(255, 244, 199, 0.98), rgba(255, 232, 153, 0.82)) !important;
}


/* v45: texto visible para horarios con tiempo entre citas incompleto. Solo UI del slot amarillo. */
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning{
    display:flex;
    align-items:center;
    padding:8px 12px;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning .aq-slot-warning-content{
    display:flex;
    flex-direction:column;
    gap:2px;
    color:#7c4a03;
    font-size:12px;
    line-height:1.25;
    pointer-events:none;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning .aq-slot-warning-content strong{
    font-size:12.5px;
    font-weight:800;
    color:#7c2d12;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning .aq-slot-warning-content span{
    font-size:11.5px;
    color:#7c4a03;
}

/* ==========================================================
   V48 - Espacios no utilizables
   Solo visual: huecos donde no cabe una cita completa se muestran
   con el mismo sombreado de no disponible/inactividad.
   ========================================================== */
.aq-calendar-grid-v61 .aq-grid-slot.is-unusable-gap,
.aq-calendar-grid-v61 .aq-grid-slot.is-disabled.is-unusable-gap{
  cursor: default !important;
  pointer-events: none !important;
  background: repeating-linear-gradient(
    135deg,
    rgba(148,163,184,.18),
    rgba(148,163,184,.18) 8px,
    rgba(248,250,252,.94) 8px,
    rgba(248,250,252,.94) 18px
  ) !important;
  box-shadow: none !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-unusable-gap .aq-slot-warning-content{
  display: none !important;
}

/* ==========================================================
   V49 - Ficha amarilla con el mismo formato de ficha verde
   Solo CSS: mantiene lógica, horarios, guardado, reagendar y disponibilidad intactos.
   ========================================================== */
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning{
  box-sizing: border-box !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  align-items: flex-start !important;
  gap: 3px !important;
  margin: 0 10px !important;
  width: auto !important;
  border-radius: 16px !important;
  padding: .62rem .78rem !important;
  min-height: 56px !important;
  overflow: hidden !important;
  cursor: pointer !important;
  background: linear-gradient(135deg, #fff7d6 0%, #fde9a8 100%) !important;
  border: 1px solid rgba(245, 158, 11, .42) !important;
  box-shadow: 0 10px 22px rgba(15, 23, 42, .08) !important;
  transition: transform .16s ease, box-shadow .16s ease, filter .16s ease !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning:hover{
  transform: translateY(-1px) !important;
  background: linear-gradient(135deg, #fff2bd 0%, #fde68a 100%) !important;
  box-shadow: 0 16px 32px rgba(15, 23, 42, .12) !important;
  filter: brightness(1.01) !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning::before{
  content: '' !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  bottom: 0 !important;
  width: 6px !important;
  border-radius: 16px 0 0 16px !important;
  background: #f59e0b !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning::after{
  display: none !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning .aq-slot-warning-content{
  display: flex !important;
  flex-direction: column !important;
  justify-content: center !important;
  gap: 3px !important;
  max-width: 100% !important;
  padding-left: 2px !important;
  pointer-events: none !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning .aq-slot-warning-content strong{
  display: block !important;
  color: #7c2d12 !important;
  font-size: .94rem !important;
  font-weight: 900 !important;
  line-height: 1.08 !important;
  margin: 0 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning .aq-slot-warning-content span{
  display: block !important;
  color: #92400e !important;
  font-size: .82rem !important;
  font-weight: 800 !important;
  line-height: 1.05 !important;
  margin: 0 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
/* ==========================================================
   END V49
   ========================================================== */


/* ==========================================================
   V50 - Ficha amarilla compacta
   Solo presentación: conserva lógica, clicks, guardado y disponibilidad.
   Texto corto, sin cortes, con proporción visual igual a las fichas disponibles.
   ========================================================== */
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning{
  box-sizing: border-box !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  margin: 0 10px !important;
  width: auto !important;
  min-height: 42px !important;
  height: calc(var(--slot-height) - 12px) !important;
  padding: 6px 10px 6px 14px !important;
  border-radius: 14px !important;
  overflow: hidden !important;
  cursor: pointer !important;
  background: linear-gradient(135deg, #fff7d6 0%, #fde9a8 100%) !important;
  border: 1px solid rgba(245, 158, 11, .42) !important;
  box-shadow: 0 8px 18px rgba(15, 23, 42, .07) !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning:hover{
  transform: translateY(-1px) !important;
  background: linear-gradient(135deg, #fff2bd 0%, #fde68a 100%) !important;
  box-shadow: 0 12px 24px rgba(15, 23, 42, .10) !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning::before{
  content: '' !important;
  position: absolute !important;
  left: 0 !important;
  top: 0 !important;
  bottom: 0 !important;
  width: 5px !important;
  border-radius: 14px 0 0 14px !important;
  background: #f59e0b !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning .aq-slot-warning-content{
  width: 100% !important;
  max-width: 100% !important;
  min-width: 0 !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  padding: 0 !important;
  margin: 0 !important;
  pointer-events: none !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning .aq-slot-warning-content strong{
  display: block !important;
  width: 100% !important;
  color: #7c2d12 !important;
  font-family: inherit !important;
  font-size: .74rem !important;
  font-weight: 800 !important;
  line-height: 1.15 !important;
  text-align: center !important;
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  word-break: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
  margin: 0 !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning .aq-slot-warning-content span{
  display: none !important;
}

/* ==========================================================
   V51 - Reglas visuales amarillo/gris
   Amarillo solo para cita que cabe con tiempo entre citas insuficiente.
   Huecos donde no cabe una cita completa se sombrean como no disponibles.
   Solo CSS de refuerzo: no toca lógica, guardado, reagendar ni cancelar.
   ========================================================== */
.aq-calendar-grid-v61 .aq-grid-slot.is-unusable-gap,
.aq-calendar-grid-v61 .aq-grid-slot.is-disabled.is-unusable-gap{
  background: repeating-linear-gradient(
    135deg,
    rgba(148,163,184,.05),
    rgba(148,163,184,.05) 8px,
    rgba(248,250,252,.94) 8px,
    rgba(248,250,252,.94) 18px
  ) !important;
  border-color: rgba(226,232,240,.8) !important;
  box-shadow: none !important;
  cursor: default !important;
  pointer-events: none !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-unusable-gap .aq-slot-warning-content{
  display:none !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning:not(.is-disabled):not(.is-unusable-gap){
  background: linear-gradient(135deg, #fff7d6 0%, #fde9a8 100%) !important;
  border: 1px solid rgba(245,158,11,.42) !important;
  box-shadow: 0 8px 18px rgba(15,23,42,.07) !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning:not(.is-disabled):not(.is-unusable-gap) .aq-slot-warning-content strong{
  font-size: .74rem !important;
  line-height: 1.15 !important;
  white-space: normal !important;
  overflow: visible !important;
  text-overflow: clip !important;
}
/* ==========================================================
   END V51
   ========================================================== */

/* ==========================================================
   V53 - Huecos muertos proporcionales
   Si el espacio libre no alcanza para una cita completa, se sombrea
   exactamente ese tramo. No cambia guardado, reagendar ni disponibilidad.
   ========================================================== */
.aq-calendar-grid-v61 .aq-unusable-gap-overlay{
  position:absolute !important;
  left:0 !important;
  right:0 !important;
  z-index:4 !important;
  pointer-events:auto !important;
  cursor:not-allowed !important;
  background:repeating-linear-gradient(
    135deg,
    rgba(148,163,184,.06),
    rgba(148,163,184,.06) 8px,
    rgba(248,250,252,.72) 8px,
    rgba(248,250,252,.72) 17px
  ) !important;
  border-top:1px dashed rgba(148,163,184,.22) !important;
  border-bottom:1px dashed rgba(148,163,184,.18) !important;
}
/* ==========================================================
   END V53
   ========================================================== */

/* ==========================================================
   V55 - Fichas amarillas en hora real
   Corrige slots dinámicos (ej. 3:15) que antes pintaban toda
   la celda de 30 min anterior. No toca guardado ni disponibilidad.
   ========================================================== */
.aq-calendar-grid-v61 .aq-dynamic-slot{
  position:absolute !important;
  left:12px !important;
  right:12px !important;
  z-index:12 !important;
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  box-sizing:border-box !important;
}
.aq-calendar-grid-v61 .aq-dynamic-slot.is-buffer-warning{
  background:linear-gradient(135deg,#fff7d6 0%,#fde9a8 100%) !important;
  border:1px solid rgba(245,158,11,.42) !important;
  border-left:6px solid #f59e0b !important;
  border-radius:12px !important;
  box-shadow:0 8px 18px rgba(15,23,42,.07) !important;
}
.aq-calendar-grid-v61 .aq-dynamic-slot .aq-slot-warning-content{
  padding:4px 8px !important;
  text-align:center !important;
  width:100% !important;
}
.aq-calendar-grid-v61 .aq-dynamic-slot .aq-slot-warning-content strong{
  display:block !important;
  font-size:.74rem !important;
  line-height:1.15 !important;
  white-space:normal !important;
  overflow:visible !important;
  text-overflow:clip !important;
}
/* ==========================================================
   END V55
   ========================================================== */

/* ==========================================================
   V60 - Estados visuales exclusivos
   El buffer visual independiente queda desactivado para evitar
   doble estado sobre el mismo espacio (amarillo + sombreado).
   Los huecos no utilizables se pintan con .aq-unusable-gap-overlay
   y los horarios agendables con separación reducida con .is-buffer-warning.
   ========================================================== */
.aq-calendar-grid-v61 .aq-buffer-gap{
  display:none !important;
}

/* ==========================================================
   V62 - Alineación visual y vistas de lectura
   - Las fichas amarillas conservan la grilla: no desplazan ni rompen filas.
   - En vistas no operativas los huecos se ven como no disponibles.
   Solo presentación; no cambia guardar, reagendar, cancelar ni payloads.
   ========================================================== */
.aq-calendar-grid-v61 .aq-grid-slot.is-buffer-warning{
  align-self: stretch !important;
  justify-self: stretch !important;
  position: relative !important;
  margin: 4px 10px !important;
  height: calc(var(--slot-height) - 8px) !important;
  min-height: 0 !important;
  max-height: calc(var(--slot-height) - 8px) !important;
  box-sizing: border-box !important;
}
.aq-calendar-grid-v61 .aq-dynamic-slot.is-buffer-warning{
  margin: 0 !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  box-sizing: border-box !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-disabled:not(.is-buffer-warning),
.aq-calendar-grid-v61 .aq-grid-slot.is-unusable-gap{
  background: repeating-linear-gradient(
    135deg,
    rgba(148,163,184,.18),
    rgba(148,163,184,.18) 8px,
    rgba(248,250,252,.94) 8px,
    rgba(248,250,252,.94) 18px
  ) !important;
}
/* ==========================================================
   END V62
   ========================================================== */

/* RESPONSIVE SWEEP V109 - ajustes quirúrgicos de adaptabilidad
   No cambia lógica de agenda, disponibilidad, estados ni acciones. */
html,
body {
  max-width: 100%;
  overflow-x: hidden;
}

body,
.app,
.main,
.card,
.grid,
.aq-agenda-page,
.aq-agenda-shell,
.aq-calendar-scroll {
  min-width: 0;
}

img,
svg,
canvas,
video,
iframe {
  max-width: 100%;
}

.card {
  max-width: 100%;
}

.card:has(table),
.table-responsive,
.cita-docs-table-wrap,
.aq-table-backup .card {
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.card > table,
.aq-table-backup table,
.cita-docs-table {
  min-width: 720px;
}

input,
select,
textarea,
button,
.button {
  max-width: 100%;
}

@media (max-width: 980px) {
  .page-head {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }

  .page-head > * {
    min-width: 0;
  }

  .page-head .button {
    width: 100%;
  }

  .grid.two,
  .dashboard-lists,
  .grid[style*="grid-template-columns"] {
    grid-template-columns: 1fr !important;
  }

  .toolbar {
    display: grid !important;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: end;
  }

  .toolbar > div {
    min-width: 0 !important;
    width: 100%;
  }

  .toolbar-actions {
    grid-column: 1 / -1 !important;
    justify-content: stretch !important;
    margin-top: 0 !important;
  }

  .toolbar-actions .button {
    flex: 1 1 0;
  }

  .form-grid,
  .filters-grid {
    grid-template-columns: 1fr !important;
  }

  .actions {
    flex-wrap: wrap;
  }
}

@media (max-width: 640px) {
  .main {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  .card {
    border-radius: 14px;
    padding: 14px;
  }

  .toolbar {
    grid-template-columns: 1fr !important;
  }

  .toolbar-actions,
  .form-actions,
  .actions {
    width: 100%;
  }

  .toolbar-actions .button,
  .form-actions .button,
  .actions .button {
    width: 100%;
    justify-content: center;
  }

  th,
  td {
    padding: 10px 8px;
  }

  .pagination-wrap {
    flex-direction: column;
    align-items: stretch;
  }

  .pagination {
    justify-content: center;
  }

  .pagination-per-page {
    justify-content: center;
  }

  .login-card {
    max-width: calc(100vw - 28px);
    margin: 14px;
  }

  .aq-calendar-scroll {
    max-width: 100%;
  }
}
/* END RESPONSIVE SWEEP V109 */

/* RESPONSIVE_SYSTEM_V116_LOCKED
   Sistema único responsive. No modifica lógica de agenda, disponibilidad, estados ni buffers.
   Reemplaza parches V110-V115 para evitar overrides acumulados. */

/* Contención global segura */
html, body { max-width: 100%; overflow-x: hidden; }
.main, .card, .page-head, .toolbar, .grid, .grid.cards, .grid.two { min-width: 0; }
.card { max-width: 100%; }
.card > * { max-width: 100%; }
img, svg, canvas, video, iframe { max-width: 100%; height: auto; }

/* Encabezados y acciones superiores */
.page-head { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; flex-wrap:wrap; }
.page-head h1, .page-head h2 { margin:0; line-height:1.15; min-width:0; }
.page-head .actions { display:flex; gap:8px; flex-wrap:wrap; align-items:center; justify-content:flex-end; margin-left:auto; }

/* Formularios y filtros */
.form-grid, .filters-grid, .responsive-inline-grid { display:grid; gap:14px; grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); }
.field, label { min-width:0; }
input:not([type="checkbox"]):not([type="radio"]), select, textarea { max-width:100%; }
textarea { width:100%; }
.toolbar { display:flex; gap:12px; align-items:flex-end; flex-wrap:wrap; }
.toolbar .field { flex:1 1 220px; margin-bottom:0; }
.toolbar .button, .toolbar button { flex:0 0 auto; }

/* Tablas: desktop con scroll, móvil con cards. */
.table-responsive, .table-wrap, .cita-docs-table-wrap, .card:has(table) { overflow-x:auto; -webkit-overflow-scrolling:touch; }
table { max-width:100%; }
table.responsive-cards { width:100%; border-collapse:collapse; }
table.responsive-cards th, table.responsive-cards td { vertical-align:middle; }

/* Acciones: sistema único, sin iconos inyectados ni botones gigantes. */
.table-actions-v116,
table.responsive-cards td[data-label="Acciones"],
table.responsive-cards td[data-label="Acción"],
table.responsive-cards td.actions {
  display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-start; gap:7px;
}
.table-actions-v116 form,
table.responsive-cards td[data-label="Acciones"] form,
table.responsive-cards td[data-label="Acción"] form,
table.responsive-cards td.actions form {
  display:inline-flex; margin:0; padding:0;
}
.table-actions-v116 .button,
table.responsive-cards td[data-label="Acciones"] .button,
table.responsive-cards td[data-label="Acción"] .button,
table.responsive-cards td.actions .button {
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
  min-width:0 !important; width:auto !important; min-height:34px !important; height:auto !important;
  padding:8px 12px !important; border-radius:10px !important;
  font-size:13px !important; font-weight:700 !important; line-height:1.1 !important;
  white-space:nowrap !important; text-align:center !important; writing-mode:horizontal-tb !important; text-orientation:mixed !important;
  transform:none; box-shadow:0 1px 2px rgba(15,23,42,.08) !important; gap:6px !important;
}
.table-actions-v116 .button::before,
table.responsive-cards td[data-label="Acciones"] .button::before,
table.responsive-cards td[data-label="Acción"] .button::before,
table.responsive-cards td.actions .button::before { content:none !important; display:none !important; }

/* Modales rápidos */
[id$="Modal"][style*="position:fixed"] > div[style*="max-width"],
#clienteQuickCreateModal > div[style*="max-width"] { max-width:min(560px,calc(100vw - 24px)) !important; }

@media (max-width: 900px) {
  .grid.two, .grid.cards { grid-template-columns:1fr !important; }
  .page-head .actions { width:100%; justify-content:flex-start; margin-left:0; }
}

@media (max-width: 760px) {
  .main { padding-left:12px !important; padding-right:12px !important; }
  .page-head { flex-direction:column; align-items:stretch; }
  .page-head .actions { display:grid; grid-template-columns:1fr; gap:8px; }
  .page-head .actions .button, .page-head > .button { width:100%; }
  .toolbar { display:grid; grid-template-columns:1fr; gap:10px; }
  .toolbar .field, .toolbar .button, .toolbar button { width:100%; }

  .card:has(table.responsive-cards) { overflow:visible !important; }
  table.responsive-cards { min-width:0 !important; width:100% !important; border-collapse:separate !important; border-spacing:0 12px !important; }
  table.responsive-cards thead { display:none !important; }
  table.responsive-cards tbody, table.responsive-cards tr, table.responsive-cards td { display:block !important; width:100% !important; }
  table.responsive-cards tr {
    background:#fff; border:1px solid #e5e7eb; border-radius:14px;
    box-shadow:0 6px 18px rgba(15,23,42,.06); padding:10px 12px; overflow:hidden;
  }
  table.responsive-cards td {
    border-bottom:0 !important; padding:7px 0 !important;
    display:grid !important; grid-template-columns:minmax(92px,34%) minmax(0,1fr) !important;
    gap:10px !important; align-items:start !important; font-size:13px !important; min-width:0 !important;
  }
  table.responsive-cards td::before {
    content:attr(data-label); color:#64748b; font-size:11px; font-weight:800;
    text-transform:uppercase; letter-spacing:.03em; line-height:1.2;
  }
  table.responsive-cards td[data-label=""], table.responsive-cards td[data-label="Acciones"], table.responsive-cards td[data-label="Acción"], table.responsive-cards td.actions {
    display:block !important; padding-top:10px !important; margin-top:4px; border-top:1px solid #e5e7eb !important;
  }
  table.responsive-cards td[data-label=""]::before { display:none !important; }
  table.responsive-cards td[data-label="Acciones"]::before, table.responsive-cards td[data-label="Acción"]::before, table.responsive-cards td.actions::before {
    display:block !important; margin-bottom:8px;
  }
  .table-actions-v116, table.responsive-cards td[data-label="Acciones"], table.responsive-cards td[data-label="Acción"], table.responsive-cards td.actions {
    display:grid !important; grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:8px !important;
  }
  .table-actions-v116 form, table.responsive-cards td[data-label="Acciones"] form, table.responsive-cards td[data-label="Acción"] form, table.responsive-cards td.actions form { display:block !important; width:100% !important; }
  .table-actions-v116 .button, table.responsive-cards td[data-label="Acciones"] .button, table.responsive-cards td[data-label="Acción"] .button, table.responsive-cards td.actions .button {
    width:100% !important; min-height:38px !important; padding:9px 8px !important; white-space:normal !important;
  }
}

@media (max-width: 390px) {
  table.responsive-cards td { grid-template-columns:1fr !important; gap:4px !important; }
  .table-actions-v116, table.responsive-cards td[data-label="Acciones"], table.responsive-cards td[data-label="Acción"], table.responsive-cards td.actions { grid-template-columns:1fr !important; }
}

/* Protección: agenda visual queda fuera del sistema de acciones/cards. */
.aq-agenda-shell table, .aq-agenda-scroll table, .agenda-grid table { min-width:initial; }
.aq-agenda-shell .button::before, .aq-agenda-scroll .button::before, .agenda-grid .button::before { content:none !important; display:none !important; }
/* END RESPONSIVE_SYSTEM_V116_LOCKED */


/* ==========================================================
   RESPONSIVE_ACTIONS_V117_CONTROLLED
   Corrección exclusiva de acciones en tablas/cards.
   No toca agenda visual, disponibilidad, estados, buffers ni formularios.
   ========================================================== */

/* Neutralizar sistema viejo de iconos/gradientes SOLO en celdas de acciones. */
.table-actions-v116 .button,
table.responsive-cards td[data-label="Acciones"] .button,
table.responsive-cards td[data-label="Acción"] .button,
table.responsive-cards td.actions .button {
    appearance: none !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    width: 86px !important;
    min-width: 86px !important;
    max-width: 86px !important;
    min-height: 30px !important;
    height: 30px !important;
    padding: 0 9px !important;
    border-radius: 9px !important;
    border: 1px solid transparent !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    line-height: 1 !important;
    letter-spacing: 0 !important;
    white-space: nowrap !important;
    text-align: center !important;
    text-decoration: none !important;
    writing-mode: horizontal-tb !important;
    text-orientation: mixed !important;
    box-shadow: 0 4px 10px rgba(15,23,42,.10) !important;
    transform: none !important;
    gap: 0 !important;
}

.table-actions-v116 .button::before,
.table-actions-v116 .button::after,
table.responsive-cards td[data-label="Acciones"] .button::before,
table.responsive-cards td[data-label="Acciones"] .button::after,
table.responsive-cards td[data-label="Acción"] .button::before,
table.responsive-cards td[data-label="Acción"] .button::after,
table.responsive-cards td.actions .button::before,
table.responsive-cards td.actions .button::after {
    content: none !important;
    display: none !important;
}

.table-actions-v116,
table.responsive-cards td[data-label="Acciones"],
table.responsive-cards td[data-label="Acción"],
table.responsive-cards td.actions {
    display: grid !important;
    grid-template-columns: repeat(2, 86px) !important;
    justify-content: start !important;
    align-items: center !important;
    gap: 7px 8px !important;
    min-width: 184px !important;
    width: max-content !important;
    max-width: 100% !important;
}

.table-actions-v116 form,
table.responsive-cards td[data-label="Acciones"] form,
table.responsive-cards td[data-label="Acción"] form,
table.responsive-cards td.actions form {
    display: block !important;
    width: 86px !important;
    min-width: 86px !important;
    margin: 0 !important;
    padding: 0 !important;
}

.table-actions-v116 .button:hover,
table.responsive-cards td[data-label="Acciones"] .button:hover,
table.responsive-cards td[data-label="Acción"] .button:hover,
table.responsive-cards td.actions .button:hover {
    transform: translateY(-1px) !important;
    box-shadow: 0 7px 15px rgba(15,23,42,.14) !important;
    filter: brightness(1.02) !important;
}

/* Colores sobrios por acción, sin iconos ni círculos falsos. */
.table-actions-v116 .button[href*="/editar"],
table.responsive-cards td.actions .button[href*="/editar"],
table.responsive-cards td[data-label="Acciones"] .button[href*="/editar"] {
    background: #2563eb !important;
    color: #fff !important;
}

.table-actions-v116 .button[href*="horarios"],
table.responsive-cards td.actions .button[href*="horarios"],
table.responsive-cards td[data-label="Acciones"] .button[href*="horarios"] {
    background: #0891b2 !important;
    color: #fff !important;
}

.table-actions-v116 .button[href*="bloqueos"],
table.responsive-cards td.actions .button[href*="bloqueos"],
table.responsive-cards td[data-label="Acciones"] .button[href*="bloqueos"] {
    background: #7c3aed !important;
    color: #fff !important;
}

.table-actions-v116 .button.danger,
.table-actions-v116 form[action*="inactivar"] .button,
table.responsive-cards td.actions .button.danger,
table.responsive-cards td.actions form[action*="inactivar"] .button,
table.responsive-cards td[data-label="Acciones"] .button.danger,
table.responsive-cards td[data-label="Acciones"] form[action*="inactivar"] .button {
    background: #e11d48 !important;
    color: #fff !important;
}

.table-actions-v116 form[action*="activar"] .button:not(.danger),
table.responsive-cards td.actions form[action*="activar"] .button:not(.danger),
table.responsive-cards td[data-label="Acciones"] form[action*="activar"] .button:not(.danger) {
    background: #16a34a !important;
    color: #fff !important;
}

.table-actions-v116 .button.secondary:not([href*="horarios"]):not([href*="bloqueos"]),
table.responsive-cards td.actions .button.secondary:not([href*="horarios"]):not([href*="bloqueos"]),
table.responsive-cards td[data-label="Acciones"] .button.secondary:not([href*="horarios"]):not([href*="bloqueos"]) {
    background: #f8fafc !important;
    color: #334155 !important;
    border-color: #cbd5e1 !important;
}

@media (max-width: 760px) {
    table.responsive-cards td[data-label="Acciones"],
    table.responsive-cards td[data-label="Acción"],
    table.responsive-cards td.actions {
        display: grid !important;
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        width: 100% !important;
        min-width: 0 !important;
        gap: 8px !important;
        padding-top: 10px !important;
    }

    table.responsive-cards td[data-label="Acciones"] .button,
    table.responsive-cards td[data-label="Acción"] .button,
    table.responsive-cards td.actions .button,
    table.responsive-cards td[data-label="Acciones"] form,
    table.responsive-cards td[data-label="Acción"] form,
    table.responsive-cards td.actions form {
        width: 100% !important;
        min-width: 0 !important;
        max-width: none !important;
    }

    table.responsive-cards td[data-label="Acciones"] .button,
    table.responsive-cards td[data-label="Acción"] .button,
    table.responsive-cards td.actions .button {
        height: 32px !important;
        min-height: 32px !important;
        font-size: 12px !important;
        padding: 0 8px !important;
        border-radius: 8px !important;
    }
}

@media (max-width: 390px) {
    table.responsive-cards td[data-label="Acciones"],
    table.responsive-cards td[data-label="Acción"],
    table.responsive-cards td.actions {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    }
}
/* END RESPONSIVE_ACTIONS_V117_CONTROLLED */

/* ==========================================================
   RESPONSIVE_MOBILE_CARDS_V118_CONTROLLED
   Pulido exclusivo de cards administrativas en móvil/ventana angosta.
   No toca agenda visual, disponibilidad, estados, buffers ni lógica.
   ========================================================== */

@media (max-width: 760px) {
    /* Contenedor: menos aire muerto y mejor lectura en navegador angosto. */
    .main {
        padding-left: 12px !important;
        padding-right: 12px !important;
    }

    .page-head {
        align-items: stretch !important;
        gap: 10px !important;
        margin-bottom: 14px !important;
    }

    .page-head h1 {
        margin-bottom: 0 !important;
        line-height: 1.15 !important;
    }

    .page-head > .button,
    .page-head > form .button {
        width: 100% !important;
        min-height: 38px !important;
        height: 38px !important;
        border-radius: 12px !important;
        padding: 0 14px !important;
        box-shadow: 0 8px 18px rgba(37,99,235,.16) !important;
    }

    .page-head > .button::before,
    .page-head > form .button::before {
        width: 16px !important;
        height: 16px !important;
        min-width: 16px !important;
        font-size: 10px !important;
    }

    .card {
        border-radius: 16px !important;
        padding: 12px !important;
        overflow: visible !important;
    }

    table.responsive-cards {
        border-spacing: 0 10px !important;
    }

    table.responsive-cards tr {
        border-radius: 13px !important;
        padding: 10px 12px !important;
        box-shadow: 0 5px 14px rgba(15,23,42,.055) !important;
    }

    table.responsive-cards td {
        padding: 5px 0 !important;
        grid-template-columns: minmax(86px, 31%) minmax(0, 1fr) !important;
        gap: 8px !important;
        line-height: 1.35 !important;
        overflow-wrap: anywhere !important;
    }

    table.responsive-cards td::before {
        font-size: 10.5px !important;
        letter-spacing: .035em !important;
        align-self: start !important;
    }

    table.responsive-cards .badge,
    table.responsive-cards td .badge {
        width: fit-content !important;
        max-width: 100% !important;
        min-height: 24px !important;
        padding: 4px 10px !important;
        display: inline-flex !important;
        align-items: center !important;
        justify-content: center !important;
        border-radius: 999px !important;
    }

    /* Corrección clave: el label ACCIONES ocupa toda la fila.
       Antes entraba como primer item del grid y desplazaba el botón Editar. */
    table.responsive-cards td[data-label="Acciones"]::before,
    table.responsive-cards td[data-label="Acción"]::before,
    table.responsive-cards td.actions::before {
        grid-column: 1 / -1 !important;
        margin: 0 0 2px 0 !important;
        padding-bottom: 2px !important;
    }

    table.responsive-cards td[data-label="Acciones"],
    table.responsive-cards td[data-label="Acción"],
    table.responsive-cards td.actions {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
        gap: 7px !important;
        padding-top: 9px !important;
        margin-top: 6px !important;
        border-top: 1px solid #e5e7eb !important;
    }

    table.responsive-cards td[data-label="Acciones"] .button,
    table.responsive-cards td[data-label="Acción"] .button,
    table.responsive-cards td.actions .button {
        height: 31px !important;
        min-height: 31px !important;
        border-radius: 8px !important;
        padding: 0 8px !important;
        font-size: 11.5px !important;
        font-weight: 800 !important;
        box-shadow: 0 4px 10px rgba(15,23,42,.10) !important;
    }

    table.responsive-cards td[data-label="Acciones"] form,
    table.responsive-cards td[data-label="Acción"] form,
    table.responsive-cards td.actions form {
        margin: 0 !important;
    }
}

@media (max-width: 420px) {
    .main {
        padding-left: 10px !important;
        padding-right: 10px !important;
    }

    .card {
        padding: 10px !important;
    }

    table.responsive-cards tr {
        padding: 9px 10px !important;
    }

    table.responsive-cards td {
        grid-template-columns: minmax(78px, 30%) minmax(0, 1fr) !important;
        gap: 7px !important;
        font-size: 12.5px !important;
    }

    table.responsive-cards td[data-label="Acciones"],
    table.responsive-cards td[data-label="Acción"],
    table.responsive-cards td.actions {
        gap: 6px !important;
    }

    table.responsive-cards td[data-label="Acciones"] .button,
    table.responsive-cards td[data-label="Acción"] .button,
    table.responsive-cards td.actions .button {
        height: 30px !important;
        min-height: 30px !important;
        font-size: 11px !important;
    }
}
/* END RESPONSIVE_MOBILE_CARDS_V118_CONTROLLED */

/* ==========================================================
   RESPONSIVE_MOBILE_POLISH_V119_CONTROLLED
   Pulido móvil global: compacta headers, toolbars, leyendas,
   cards y documentos sin cambiar estructura ni lógica.
   ========================================================== */

@media (max-width: 760px) {
  /* Base móvil: menos aire vertical, sin alterar estructura. */
  body {
    -webkit-text-size-adjust: 100%;
  }

  .mobile-menu-btn,
  .menu-toggle,
  .sidebar-toggle,
  button[aria-label="Menú"],
  a[aria-label="Menú"] {
    min-height: 36px !important;
    height: 36px !important;
    padding: 0 12px !important;
    border-radius: 10px !important;
    font-size: 13px !important;
    box-shadow: 0 8px 18px rgba(15,23,42,.18) !important;
  }

  .main h1 {
    font-size: clamp(24px, 7vw, 31px) !important;
    line-height: 1.08 !important;
    letter-spacing: -.04em !important;
    margin-top: 10px !important;
    margin-bottom: 10px !important;
  }

  .main h2,
  .card h2 {
    font-size: clamp(18px, 5.2vw, 23px) !important;
    line-height: 1.16 !important;
    margin-bottom: 10px !important;
  }

  .main h3,
  .card h3 {
    font-size: clamp(16px, 4.4vw, 20px) !important;
    line-height: 1.18 !important;
  }

  .card + .card,
  .aq-agenda-hero + .card,
  .aq-filters-panel + .card,
  .card + .aq-filters-panel {
    margin-top: 14px !important;
  }

  /* Botones generales: más sobrios y compactos, sin cambiar colores por pantalla. */
  .button:not(.small),
  button.button:not(.small),
  a.button:not(.small) {
    min-height: 38px !important;
    border-radius: 12px !important;
    padding: 0 14px !important;
    font-size: 13px !important;
    line-height: 1 !important;
    gap: 7px !important;
  }

  .button.secondary:not(.small),
  .button-light:not(.small),
  a.button.secondary:not(.small) {
    box-shadow: 0 5px 14px rgba(15,23,42,.07) !important;
  }

  /* Toolbars/filtros administrativos: apilado limpio. */
  .toolbar {
    gap: 9px !important;
    margin-bottom: 12px !important;
  }

  .toolbar > div {
    min-width: 0 !important;
    flex: 1 1 100% !important;
  }

  .toolbar label {
    margin-bottom: 5px !important;
    font-size: 12px !important;
  }

  .toolbar input,
  .toolbar select,
  .toolbar textarea,
  form input,
  form select,
  form textarea {
    min-height: 38px !important;
    border-radius: 10px !important;
    font-size: 14px !important;
  }

  .toolbar-actions {
    width: 100% !important;
    margin-top: 2px !important;
    padding-top: 0 !important;
    gap: 8px !important;
  }

  .toolbar-actions .button {
    flex: 1 1 0 !important;
    min-width: 0 !important;
  }

  /* Agenda móvil: compactar cabecera/leyenda sin tocar grilla ni slots. */
  .aq-agenda-page {
    gap: 12px !important;
  }

  .aq-agenda-hero {
    padding: 14px !important;
    border-radius: 18px !important;
  }

  .aq-agenda-hero h1 {
    font-size: 25px !important;
    margin: 5px 0 5px !important;
  }

  .aq-agenda-hero p {
    font-size: 13px !important;
    margin-bottom: 10px !important;
  }

  .aq-agenda-actions {
    gap: 8px !important;
  }

  .aq-date-pill {
    min-height: 42px !important;
    padding: 7px 10px !important;
    border-radius: 13px !important;
  }

  .aq-date-pill strong {
    font-size: 15px !important;
    line-height: 1.05 !important;
  }

  .aq-date-pill span,
  .aq-date-pill small {
    font-size: 11px !important;
  }

  .aq-date-nav,
  .aq-agenda-actions .button-light {
    min-width: 40px !important;
    width: 40px !important;
    height: 40px !important;
    min-height: 40px !important;
    border-radius: 12px !important;
    padding: 0 !important;
  }

  .aq-agenda-actions .button:not(.button-light),
  .aq-agenda-hero > .button,
  .aq-agenda-hero a.button {
    min-height: 46px !important;
    border-radius: 999px !important;
    font-size: 14px !important;
  }

  .aq-filters-panel {
    border-radius: 18px !important;
    margin-top: 12px !important;
  }

  .aq-filters-panel summary {
    padding: 12px 14px !important;
  }

  .aq-filters-panel summary span {
    font-size: 14px !important;
  }

  .aq-filters-panel summary span::before {
    width: 28px !important;
    height: 28px !important;
    border-radius: 10px !important;
    font-size: 13px !important;
  }

  .aq-filters-panel summary small {
    font-size: 11px !important;
  }

  .aq-filters-panel summary::after {
    width: 31px !important;
    height: 31px !important;
  }

  .aq-agenda-topbar {
    padding: 12px 12px 10px !important;
    gap: 9px !important;
  }

  .aq-agenda-topbar strong {
    font-size: 16px !important;
  }

  .aq-agenda-topbar span,
  .aq-agenda-topbar small {
    font-size: 11.5px !important;
  }

  .aq-agenda-legend {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 6px !important;
    padding-top: 8px !important;
  }

  .aq-agenda-legend span {
    min-height: 25px !important;
    padding: 4px 8px !important;
    border-radius: 999px !important;
    font-size: 11px !important;
    justify-content: center !important;
  }

  .aq-agenda-legend i {
    width: 8px !important;
    height: 8px !important;
  }

  .aq-agenda-hint {
    padding: 8px 10px !important;
    font-size: 12px !important;
    line-height: 1.2 !important;
  }

  /* Cards de dashboard y alertas: compactar sin rediseñar. */
  .dashboard-eyebrow {
    font-size: 11px !important;
    margin-bottom: 4px !important;
  }

  .insight-label {
    padding: 5px 8px !important;
    font-size: 10.5px !important;
  }

  .card p,
  .card small {
    line-height: 1.35 !important;
  }

  /* Formularios: solo spacing suave, no rehacer layouts. */
  form .card,
  .form-card,
  .section-card {
    border-radius: 16px !important;
  }

  form .field,
  form .form-group,
  form .input-group,
  .field,
  .form-group {
    margin-bottom: 13px !important;
  }

  form label {
    margin-bottom: 5px !important;
    font-size: 13px !important;
  }

  form textarea {
    min-height: 92px !important;
  }

  /* Editar cita/documentos: bajar peso visual del upload. */
  .cita-docs-premium {
    border-radius: 16px !important;
    box-shadow: 0 7px 20px rgba(15,23,42,.055) !important;
  }

  .cita-docs-premium-head {
    gap: 11px !important;
    padding-bottom: 12px !important;
    margin-bottom: 12px !important;
  }

  .cita-docs-premium-icon {
    width: 44px !important;
    height: 44px !important;
    border-radius: 12px !important;
    font-size: 22px !important;
  }

  .cita-docs-premium-head h3 {
    font-size: 18px !important;
    margin-bottom: 2px !important;
  }

  .cita-docs-premium-head p {
    font-size: 12.5px !important;
    line-height: 1.25 !important;
  }

  .cita-docs-counter {
    min-width: 52px !important;
    padding: 6px 9px !important;
    font-size: 12px !important;
  }

  .cita-premium-drop {
    min-height: 142px !important;
    padding: 16px 12px !important;
    border-radius: 15px !important;
    gap: 6px !important;
  }

  .cita-premium-cloud {
    font-size: 40px !important;
  }

  .cita-premium-title {
    font-size: 15px !important;
  }

  .cita-premium-subtitle,
  .cita-premium-rules {
    font-size: 12.5px !important;
  }

  .cita-premium-selected {
    margin-top: 10px !important;
    padding: 10px 12px !important;
    border-radius: 12px !important;
    gap: 8px !important;
  }

  .cita-premium-check,
  .cita-premium-remove {
    width: 30px !important;
    height: 30px !important;
    font-size: 17px !important;
  }

  .cita-premium-info-row {
    margin-top: 12px !important;
    border-radius: 10px !important;
  }

  .cita-premium-info-row span {
    padding: 10px 8px !important;
    font-size: 12.5px !important;
  }

  .cita-premium-info-row strong {
    font-size: 16px !important;
  }

  .cita-premium-one-file {
    margin-top: 9px !important;
    font-size: 12.5px !important;
  }

  .cita-premium-submit {
    min-width: 0 !important;
    width: min(100%, 260px) !important;
    min-height: 38px !important;
  }

  .cita-docs-table-wrap {
    margin-top: 14px !important;
    border-radius: 12px !important;
  }
}

@media (max-width: 420px) {
  .main h1 {
    font-size: 25px !important;
  }

  .button:not(.small),
  button.button:not(.small),
  a.button:not(.small) {
    min-height: 36px !important;
    font-size: 12.5px !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  .aq-agenda-hero {
    padding: 12px !important;
  }

  .aq-agenda-hero h1 {
    font-size: 24px !important;
  }

  .aq-agenda-actions .button:not(.button-light),
  .aq-agenda-hero > .button,
  .aq-agenda-hero a.button {
    min-height: 43px !important;
  }

  .aq-agenda-topbar {
    padding-left: 10px !important;
    padding-right: 10px !important;
  }

  .aq-agenda-legend span {
    font-size: 10.5px !important;
  }

  .cita-premium-drop {
    min-height: 132px !important;
  }
}
/* END RESPONSIVE_MOBILE_POLISH_V119_CONTROLLED */


/* RESPONSIVE_REPORTES_PASSWORD_V120_CONTROLLED
   Fix quirúrgico: resumen de reportes visible en móvil y un solo ojo por contraseña. */
.report-summary-card {
  overflow: hidden;
}

.report-summary-table {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
}

.report-summary-table th,
.report-summary-table td {
  vertical-align: middle;
  padding: 11px 8px;
}

.report-summary-table th {
  width: 62%;
  color: #475569;
  font-weight: 700;
  white-space: normal;
}

.report-summary-table td {
  width: 38%;
  text-align: right;
  color: #0f172a;
  font-weight: 800;
  white-space: normal;
  overflow-wrap: anywhere;
}

.password-toggle-wrap {
  position: relative !important;
  display: block !important;
  width: 100% !important;
}

.password-toggle-wrap input {
  width: 100% !important;
  padding-right: 46px !important;
}

.password-toggle-btn {
  position: absolute !important;
  top: 50% !important;
  right: 8px !important;
  transform: translateY(-50%) !important;
  width: 32px !important;
  height: 32px !important;
  min-width: 32px !important;
  min-height: 32px !important;
  padding: 0 !important;
  margin: 0 !important;
  border: 0 !important;
  border-radius: 999px !important;
  background: transparent !important;
  color: #64748b !important;
  box-shadow: none !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  line-height: 1 !important;
  cursor: pointer !important;
  z-index: 2 !important;
}

.password-toggle-btn svg {
  width: 18px !important;
  height: 18px !important;
  display: block !important;
}

.password-toggle-btn:hover,
.password-toggle-btn:focus-visible {
  background: #eef2ff !important;
  color: #2563eb !important;
  outline: none !important;
}

@media (max-width: 760px) {
  .report-summary-card h2 {
    margin-bottom: 10px !important;
  }

  .report-summary-table,
  .report-summary-table tbody,
  .report-summary-table tr {
    display: block;
    width: 100%;
  }

  .report-summary-table tr {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 10px;
    border-bottom: 1px solid #e5e7eb;
    padding: 8px 0;
  }

  .report-summary-table tr:last-child {
    border-bottom: 0;
  }

  .report-summary-table th,
  .report-summary-table td {
    display: block;
    width: auto !important;
    border-bottom: 0 !important;
    padding: 0 !important;
  }

  .report-summary-table th {
    min-width: 0;
    font-size: 12.5px;
    line-height: 1.25;
  }

  .report-summary-table td {
    justify-self: end;
    max-width: 46vw;
    text-align: right;
    font-size: 13px;
    line-height: 1.25;
  }
}
/* END RESPONSIVE_REPORTES_PASSWORD_V120_CONTROLLED */

/* V132_SLOTS_VENCIDOS_SIMPLE_DURO
   Regla final: todo slot con inicio vencido queda bloqueado visualmente.
   Se agrega al final para ganar a capas responsive/agenda anteriores. */
.aq-calendar-grid-v61 .aq-grid-slot.is-expired,
.aq-calendar-grid-v61 .aq-grid-slot.is-expired.is-disabled,
.aq-calendar-grid-v61 .aq-grid-slot.is-expired.is-unusable-gap,
.aq-calendar-grid-v61 .aq-grid-slot.is-expired.is-available {
  cursor: not-allowed !important;
  pointer-events: none !important;
  background: repeating-linear-gradient(
    135deg,
    rgba(148, 163, 184, .16),
    rgba(148, 163, 184, .16) 8px,
    rgba(248, 250, 252, .92) 8px,
    rgba(248, 250, 252, .92) 18px
  ) !important;
  box-shadow: inset 0 0 0 1px rgba(148, 163, 184, .24) !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-expired::after {
  content: '⊘' !important;
  display: flex !important;
  position: absolute !important;
  top: 50% !important;
  left: 50% !important;
  width: 22px !important;
  height: 22px !important;
  transform: translate(-50%, -50%) !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 999px !important;
  background: rgba(239, 68, 68, .12) !important;
  color: #dc2626 !important;
  font-size: 16px !important;
  font-weight: 900 !important;
  line-height: 1 !important;
  z-index: 2 !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-expired:hover {
  background: repeating-linear-gradient(
    135deg,
    rgba(148, 163, 184, .16),
    rgba(148, 163, 184, .16) 8px,
    rgba(248, 250, 252, .92) 8px,
    rgba(248, 250, 252, .92) 18px
  ) !important;
  box-shadow: inset 0 0 0 1px rgba(148, 163, 184, .24) !important;
}
/* END V132_SLOTS_VENCIDOS_SIMPLE_DURO */



/* V138_CITAS_VENCIDAS_VISIBLES
   El slot vencido queda bloqueado, pero una cita real debe seguir visible encima
   hasta que el cron la cambie a no_asistio según tolerancia. */
.aq-calendar-grid-v61 .aq-grid-slot.is-expired {
  z-index: 0 !important;
}
.aq-calendar-grid-v61 .aq-grid-slot.is-expired::after {
  z-index: 1 !important;
  pointer-events: none !important;
}
.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"] {
  z-index: 30 !important;
  pointer-events: auto !important;
}
/* END V138_CITAS_VENCIDAS_VISIBLES */


/* ==========================================================
   V155 - Agenda: profesionales visibles sin espacios laterales
   Parámetro: agenda_profesionales_visibles (default 5)
   Regla:
   - 1 a 5 profesionales ocupan todo el ancho disponible.
   - más de 5 mantienen 5 visibles y usan scroll horizontal.
   ========================================================== */
.aq-calendar-scroll{
  width:100% !important;
  max-width:100% !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  margin-inline:0 !important;
  border-radius:18px !important;
}
.aq-calendar-grid-v61{
  width:100% !important;
  min-width:100% !important;
  grid-template-columns:96px repeat(var(--agenda-professionals), minmax(0, 1fr)) !important;
}
.aq-calendar-grid-v61.aq-calendar-has-overflow{
  grid-template-columns:96px repeat(var(--agenda-professionals), minmax(230px, 230px)) !important;
  min-width:max(100%, calc(96px + (var(--agenda-professionals) * 230px))) !important;
  width:max(100%, calc(96px + (var(--agenda-professionals) * 230px))) !important;
}
@media (max-width: 760px){
  .aq-calendar-grid-v61.aq-calendar-has-overflow{
    grid-template-columns:82px repeat(var(--agenda-professionals), minmax(190px, 190px)) !important;
    min-width:max(100%, calc(82px + (var(--agenda-professionals) * 190px))) !important;
    width:max(100%, calc(82px + (var(--agenda-professionals) * 190px))) !important;
  }
}
/* END V155 */

/* ==========================================================
   V156 - Agenda legible: sin compresión agresiva y sin iconos rojos
   Motivo:
   - V155 comprimía columnas en móvil y rompía nombres/citas.
   - Los iconos rojos de no disponible generaban ruido visual.
   Regla final:
   - Mantener scroll horizontal.
   - Mantener columnas con ancho mínimo legible.
   - No mostrar mensaje permanente de scroll.
   - Slots vencidos/bloqueados: sombreado suave, sin círculo rojo.
   ========================================================== */
.aq-mobile-scroll-hint{
  display:none !important;
}

.aq-calendar-scroll{
  width:100% !important;
  max-width:100% !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  margin-inline:0 !important;
  -webkit-overflow-scrolling:touch !important;
}

.aq-calendar-grid-v61{
  width:max(100%, calc(96px + (var(--agenda-professionals) * 260px))) !important;
  min-width:max(100%, calc(96px + (var(--agenda-professionals) * 260px))) !important;
  grid-template-columns:96px repeat(var(--agenda-professionals), minmax(260px, 260px)) !important;
}

.aq-calendar-grid-v61.aq-calendar-has-overflow{
  width:max(100%, calc(96px + (var(--agenda-professionals) * 260px))) !important;
  min-width:max(100%, calc(96px + (var(--agenda-professionals) * 260px))) !important;
  grid-template-columns:96px repeat(var(--agenda-professionals), minmax(260px, 260px)) !important;
}

.aq-calendar-grid-v61 .aq-pro-header strong{
  white-space:normal !important;
  overflow:visible !important;
  text-overflow:clip !important;
  word-break:normal !important;
  overflow-wrap:normal !important;
  line-height:1.15 !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-expired::after,
.aq-calendar-grid-v61 .aq-grid-slot.is-disabled::after,
.aq-calendar-grid-v61 .aq-grid-slot.is-unusable-gap::after{
  content:none !important;
  display:none !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-expired,
.aq-calendar-grid-v61 .aq-grid-slot.is-expired.is-disabled,
.aq-calendar-grid-v61 .aq-grid-slot.is-expired.is-unusable-gap,
.aq-calendar-grid-v61 .aq-grid-slot.is-expired.is-available{
  cursor:not-allowed !important;
  pointer-events:none !important;
  background:repeating-linear-gradient(
    135deg,
    rgba(148, 163, 184, .13),
    rgba(148, 163, 184, .13) 8px,
    rgba(248, 250, 252, .94) 8px,
    rgba(248, 250, 252, .94) 18px
  ) !important;
  box-shadow:inset 0 0 0 1px rgba(148, 163, 184, .18) !important;
}

@media (max-width: 760px){
  .aq-calendar-grid-v61,
  .aq-calendar-grid-v61.aq-calendar-has-overflow{
    width:max(100%, calc(82px + (var(--agenda-professionals) * 240px))) !important;
    min-width:max(100%, calc(82px + (var(--agenda-professionals) * 240px))) !important;
    grid-template-columns:82px repeat(var(--agenda-professionals), minmax(240px, 240px)) !important;
  }

  .aq-calendar-grid-v61 .aq-pro-header{
    grid-template-columns:38px 1fr !important;
    gap:.55rem !important;
    padding:.7rem .65rem !important;
  }

  .aq-calendar-grid-v61 .aq-pro-header span{
    width:38px !important;
    height:38px !important;
    border-radius:14px !important;
  }

  .aq-calendar-grid-v61 .aq-appointment{
    left:8px !important;
    right:8px !important;
  }
}
/* END V156 */

/* ==========================================================
   V157 - Agenda: ancho como antes + scroll profesional sin huecos
   Corrección sobre V154/V155/V156:
   - En vista normal, si hay hasta 5 profesionales, la agenda ocupa todo el ancho.
   - Con más profesionales, mantiene ancho mínimo legible y scroll horizontal.
   - Sin columnas fantasma ni espacio blanco a la derecha.
   - Sin iconos rojos en celdas bloqueadas.
   ========================================================== */
.aq-mobile-scroll-hint{
  display:none !important;
}

.aq-calendar-scroll{
  width:100% !important;
  max-width:100% !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  margin-inline:0 !important;
  -webkit-overflow-scrolling:touch !important;
}

/* Caso normal: 1 a 5 profesionales. Como antes: ocupar todo el ancho disponible. */
.aq-calendar-grid-v61:not(.aq-calendar-has-overflow){
  width:100% !important;
  min-width:100% !important;
  grid-template-columns:96px repeat(var(--agenda-professionals), minmax(0, 1fr)) !important;
}

/* Caso escalable: más de 5 profesionales. Scroll horizontal, columnas legibles. */
.aq-calendar-grid-v61.aq-calendar-has-overflow{
  width:max(100%, calc(96px + (var(--agenda-professionals) * 260px))) !important;
  min-width:max(100%, calc(96px + (var(--agenda-professionals) * 260px))) !important;
  grid-template-columns:96px repeat(var(--agenda-professionals), minmax(260px, 1fr)) !important;
}

.aq-calendar-grid-v61 .aq-pro-header strong{
  white-space:normal !important;
  overflow:visible !important;
  text-overflow:clip !important;
  word-break:normal !important;
  overflow-wrap:normal !important;
  line-height:1.15 !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.is-expired::after,
.aq-calendar-grid-v61 .aq-grid-slot.is-disabled::after,
.aq-calendar-grid-v61 .aq-grid-slot.is-unusable-gap::after{
  content:none !important;
  display:none !important;
}

@media (max-width: 760px){
  .aq-calendar-grid-v61:not(.aq-calendar-has-overflow),
  .aq-calendar-grid-v61.aq-calendar-has-overflow{
    width:max(100%, calc(82px + (var(--agenda-professionals) * 240px))) !important;
    min-width:max(100%, calc(82px + (var(--agenda-professionals) * 240px))) !important;
    grid-template-columns:82px repeat(var(--agenda-professionals), minmax(240px, 1fr)) !important;
  }

  .aq-calendar-grid-v61 .aq-pro-header{
    grid-template-columns:38px 1fr !important;
    gap:.55rem !important;
    padding:.7rem .65rem !important;
  }

  .aq-calendar-grid-v61 .aq-pro-header span{
    width:38px !important;
    height:38px !important;
    border-radius:14px !important;
  }

  .aq-calendar-grid-v61 .aq-appointment{
    left:8px !important;
    right:8px !important;
  }
}
/* END V157 */

/* ==========================================================
   V159 - Agenda: 5 profesionales visibles reales + fecha clara
   ----------------------------------------------------------
   - El ancho de cada profesional lo calcula JS según el área visible.
   - Si hay más profesionales que el parámetro, se usa scroll horizontal.
   - Sin huecos laterales y sin comprimir nombres/citas.
   ========================================================== */
.aq-mobile-scroll-hint { display: none !important; }

.aq-calendar-scroll {
  width: 100% !important;
  max-width: 100% !important;
  overflow-x: auto !important;
  overflow-y: hidden !important;
}

.aq-calendar-grid-v61 {
  --agenda-hour-width: 96px;
  --agenda-col-width: 240px;
  grid-template-columns: var(--agenda-hour-width) repeat(var(--agenda-professionals), var(--agenda-col-width)) !important;
  width: calc(var(--agenda-hour-width) + (var(--agenda-professionals) * var(--agenda-col-width))) !important;
  min-width: calc(var(--agenda-hour-width) + (var(--agenda-professionals) * var(--agenda-col-width))) !important;
  max-width: none !important;
}

.aq-calendar-grid-v61 .aq-pro-header,
.aq-calendar-grid-v61 .aq-pro-column {
  width: var(--agenda-col-width) !important;
  min-width: var(--agenda-col-width) !important;
  max-width: var(--agenda-col-width) !important;
}

.aq-calendar-grid-v61 .aq-pro-header strong {
  white-space: normal !important;
  overflow-wrap: anywhere !important;
  line-height: 1.12 !important;
}

.aq-date-chip {
  min-width: 164px !important;
  padding: .78rem 1.05rem !important;
  border-radius: 20px !important;
  box-shadow: 0 14px 32px rgba(15,23,42,.10) !important;
}

.aq-date-chip span {
  font-size: 1.02rem !important;
  line-height: 1.05 !important;
  letter-spacing: .01em !important;
}

.aq-date-chip small {
  display: block !important;
  margin-top: .18rem !important;
  font-size: .78rem !important;
  color: #475569 !important;
}

.aq-day-nav {
  width: 46px !important;
  height: 46px !important;
  border-radius: 16px !important;
  font-size: 1.8rem !important;
}

@media (max-width: 720px) {
  .aq-calendar-grid-v61 {
    --agenda-hour-width: 72px;
    --agenda-col-width: 210px;
  }
  .aq-date-chip {
    min-width: 142px !important;
    padding: .65rem .85rem !important;
  }
  .aq-date-chip span { font-size: .94rem !important; }
  .aq-date-chip small { font-size: .72rem !important; }
  .aq-day-nav {
    width: 40px !important;
    height: 40px !important;
    font-size: 1.55rem !important;
  }
}

/* ==========================================================
   V160 - Agenda: parámetro de profesionales visibles respetado
   Regla final:
   - agenda_profesionales_visibles define cuántas columnas caben en el viewport.
   - el resto queda por scroll horizontal.
   - no se comprimen nombres ni tarjetas.
   - fecha con mejor presencia visual en desktop y móvil.
   ========================================================== */
.aq-calendar-scroll{
  width:100% !important;
  max-width:100% !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  -webkit-overflow-scrolling:touch !important;
}
.aq-calendar-grid-v61{
  grid-template-columns:var(--agenda-hour-width,96px) repeat(var(--agenda-professionals), var(--agenda-col-width,300px)) !important;
  width:auto !important;
  min-width:auto !important;
}
.aq-calendar-grid-v61 .aq-pro-header,
.aq-calendar-grid-v61 .aq-pro-column{
  width:var(--agenda-col-width,300px) !important;
  min-width:var(--agenda-col-width,300px) !important;
  max-width:var(--agenda-col-width,300px) !important;
}
.aq-calendar-grid-v61 .aq-pro-header strong{
  white-space:normal !important;
  overflow:visible !important;
  text-overflow:clip !important;
  overflow-wrap:normal !important;
  word-break:normal !important;
}
.aq-date-chip{
  min-width:176px !important;
  padding:.9rem 1.25rem !important;
  border-radius:22px !important;
  background:linear-gradient(180deg,#ffffff 0%,#f8fbff 100%) !important;
  border:1px solid rgba(203,213,225,.75) !important;
  box-shadow:0 16px 34px rgba(15,23,42,.10) !important;
}
.aq-date-chip span{
  font-size:1.14rem !important;
  line-height:1.05 !important;
  font-weight:950 !important;
  color:#0f172a !important;
}
.aq-date-chip small{
  display:block !important;
  margin-top:.24rem !important;
  font-size:.82rem !important;
  font-weight:850 !important;
  color:#475569 !important;
}
.aq-day-nav{
  width:50px !important;
  height:50px !important;
  border-radius:18px !important;
  font-size:1.9rem !important;
}
@media (max-width:720px){
  .aq-date-chip{
    min-width:150px !important;
    padding:.72rem .95rem !important;
    border-radius:18px !important;
  }
  .aq-date-chip span{font-size:1rem !important;}
  .aq-date-chip small{font-size:.75rem !important;}
  .aq-day-nav{width:42px !important;height:42px !important;font-size:1.55rem !important;}
}
/* END V160 */

/* ==========================================================
   V161 QA - motivo visible en toda celda bloqueada
   ========================================================== */
.aq-calendar-grid-v61 .aq-grid-slot.has-qa-reason,
.aq-calendar-grid-v61 .aq-unusable-gap-overlay.has-qa-reason{
  display:flex !important;
  align-items:center !important;
  justify-content:center !important;
  text-align:center !important;
  overflow:hidden !important;
  padding:3px 4px !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.has-qa-reason .aq-slot-qa-reason,
.aq-calendar-grid-v61 .aq-unusable-gap-overlay.has-qa-reason .aq-slot-qa-reason{
  display:block !important;
  max-width:100% !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  font-size:.68rem !important;
  line-height:1.05 !important;
  font-weight:700 !important;
  color:#475569 !important;
  pointer-events:none !important;
  user-select:none !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.has-qa-reason.is-half .aq-slot-qa-reason{
  font-size:.62rem !important;
}

.aq-calendar-grid-v61 .aq-grid-slot.has-qa-reason::after,
.aq-calendar-grid-v61 .aq-grid-slot.has-qa-reason::before{
  content:none !important;
  display:none !important;
}

.aq-calendar-grid-v61 .aq-unusable-gap-overlay.has-qa-reason{
  z-index:2 !important;
  pointer-events:auto !important;
}

/* ==========================================================
   V169 ESTABILIZACION - regresiones agenda
   - Oculta flechas laterales internas que invadian columna Hora.
   - Mantiene las citas dentro de su columna profesional.
   ========================================================== */
.aq-calendar-nav-shell .aq-calendar-arrow{
  display:none !important;
}
.aq-calendar-grid-v61 .aq-pro-column{
  position:relative !important;
  overflow:visible !important;
}
.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"]{
  left:10px !important;
  right:10px !important;
  max-width:calc(100% - 20px) !important;
  box-sizing:border-box !important;
}
/* END V169 */

/* ==========================================================
   V170 UX QA - flechas superiores, alertas bloqueantes y agenda segura
   ========================================================== */
.aq-center-notice.is-blocking .aq-center-notice-card{
  pointer-events:auto !important;
}
.aq-center-notice-ack{
  margin-top:1rem;
  border:0;
  border-radius:14px;
  padding:.85rem 1.35rem;
  background:linear-gradient(135deg,#2563eb,#1d4ed8);
  color:#fff;
  font-weight:950;
  cursor:pointer;
  box-shadow:0 14px 32px rgba(37,99,235,.25);
}
.aq-calendar-nav-shell{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:.65rem !important;
}
.aq-calendar-nav-shell .aq-calendar-arrow{
  display:inline-grid !important;
  position:static !important;
  transform:none !important;
  z-index:5 !important;
  place-items:center !important;
  width:clamp(48px,5.2vw,72px) !important;
  height:clamp(44px,5vw,66px) !important;
  min-width:clamp(48px,5.2vw,72px) !important;
  border:0 !important;
  border-radius:18px !important;
  background:linear-gradient(135deg,#2563eb,#06b6d4) !important;
  color:#fff !important;
  font-size:clamp(2rem,4vw,3.1rem) !important;
  line-height:1 !important;
  font-weight:950 !important;
  box-shadow:0 14px 34px rgba(37,99,235,.22) !important;
  cursor:pointer !important;
  opacity:1 !important;
}
.aq-calendar-nav-shell .aq-calendar-arrow:disabled{
  opacity:.38 !important;
  cursor:not-allowed !important;
  filter:grayscale(.2) !important;
}
.aq-calendar-nav-shell .aq-calendar-arrow.is-hidden{
  visibility:hidden !important;
}
.aq-calendar-nav-shell::before{
  content:"";
  display:block;
  grid-row:1;
}
.aq-calendar-nav-shell > .aq-calendar-arrow-left,
.aq-calendar-nav-shell > .aq-calendar-arrow-right{
  grid-row:1 !important;
}
.aq-calendar-nav-shell > .aq-calendar-arrow-left{
  justify-self:start !important;
}
.aq-calendar-nav-shell > .aq-calendar-arrow-right{
  justify-self:end !important;
  margin-top:calc(-1 * clamp(44px,5vw,66px)) !important;
}
.aq-calendar-nav-shell > .aq-calendar-scroll{
  grid-row:2 !important;
  min-width:0 !important;
}
.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"]{
  z-index:6 !important;
}
@media (max-width:720px){
  .aq-calendar-nav-shell .aq-calendar-arrow{
    width:54px !important;
    height:50px !important;
    min-width:54px !important;
    border-radius:16px !important;
    font-size:2.25rem !important;
  }
  .aq-calendar-nav-shell > .aq-calendar-arrow-right{
    margin-top:-50px !important;
  }
}
/* END V170 */

/* V170 ajuste final: controles superiores reales, nunca encima de horas */
.aq-calendar-prof-scroll-controls{
  display:flex !important;
  justify-content:space-between !important;
  align-items:center !important;
  gap:1rem !important;
  width:100% !important;
  margin:.25rem 0 .8rem !important;
  pointer-events:auto !important;
}
.aq-calendar-prof-scroll-controls .aq-calendar-arrow{
  margin:0 !important;
}
.aq-calendar-nav-shell::before{
  content:none !important;
  display:none !important;
}
.aq-calendar-nav-shell > .aq-calendar-arrow-left,
.aq-calendar-nav-shell > .aq-calendar-arrow-right{
  margin:0 !important;
}
.aq-calendar-nav-shell > .aq-calendar-scroll{
  grid-row:auto !important;
}
@media (max-width:720px){
  .aq-calendar-prof-scroll-controls{margin:.15rem 0 .65rem !important;}
}
/* END V170 ajuste final */


/* ==========================================================
   V173 - Cierre estabilización: comunicados, agenda y botones
   - Las tarjetas no invaden la columna Hora durante scroll horizontal.
   - Botones vuelven a apariencia premium también cuando usan .btn.
   ========================================================== */
.aq-calendar-grid-v61 .aq-calendar-corner,
.aq-calendar-grid-v61 .aq-hours-col {
  position: sticky !important;
  left: 0 !important;
  z-index: 60 !important;
  background: #fff !important;
  isolation: isolate !important;
}
.aq-calendar-grid-v61 .aq-calendar-corner {
  top: 0 !important;
  z-index: 80 !important;
}
.aq-calendar-grid-v61 .aq-pro-header {
  z-index: 50 !important;
}
.aq-calendar-grid-v61 .aq-pro-column {
  overflow: hidden !important;
  contain: paint !important;
}
.aq-calendar-grid-v61 .aq-appointment,
.aq-calendar-grid-v61 .aq-unusable-gap-overlay {
  max-width: calc(100% - 24px) !important;
}

.btn,
a.btn,
button.btn {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 8px !important;
  min-height: 38px !important;
  padding: 9px 15px !important;
  border-radius: 999px !important;
  border: 1px solid transparent !important;
  background: linear-gradient(135deg,#2563eb,#4f46e5) !important;
  color: #fff !important;
  font-weight: 800 !important;
  text-decoration: none !important;
  box-shadow: 0 10px 22px rgba(15,23,42,.12) !important;
  transition: transform .16s ease, box-shadow .16s ease, filter .16s ease !important;
}
.btn:hover,
a.btn:hover,
button.btn:hover {
  transform: translateY(-2px) !important;
  box-shadow: 0 16px 34px rgba(15,23,42,.18) !important;
  filter: brightness(1.02) !important;
}
.btn.secondary,
a.btn.secondary,
button.btn.secondary {
  background: #fff !important;
  color: #1f2937 !important;
  border-color: #dbe3ef !important;
}
.btn.danger,
a.btn.danger,
button.btn.danger {
  background: linear-gradient(135deg,#fb7185,#e11d48) !important;
  color: #fff !important;
}


/* AGENDA V225 - grilla profesional de 15 minutos
   Decisión funcional: la agenda trabaja en sub-bloques de 15 min para soportar
   duraciones reales distintas (15/30/45/60) sin huecos ocultos. */
.aq-calendar-grid-v61{
  --slot-height:28px !important;
}
.aq-calendar-grid-v61 .aq-hour-cell,
.aq-calendar-grid-v61 .aq-grid-slot{
  height:var(--slot-height) !important;
  min-height:var(--slot-height) !important;
  max-height:var(--slot-height) !important;
}
.aq-calendar-grid-v61 .aq-hour-cell{
  padding-top:4px !important;
  font-size:.68rem !important;
}
.aq-calendar-grid-v61 .aq-hour-cell.is-half{
  font-size:.62rem !important;
}
.aq-calendar-grid-v61 .aq-appointment{
  min-height:22px !important;
  padding:.28rem .48rem !important;
  border-radius:9px !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-time{
  font-size:.62rem !important;
}
.aq-calendar-grid-v61 .aq-appointment strong{
  font-size:.70rem !important;
  line-height:1.02 !important;
}
.aq-calendar-grid-v61 .aq-appointment small{
  display:none !important;
}
@media (max-width: 768px){
  .aq-calendar-grid-v61{--slot-height:34px !important;}
}
/* END AGENDA V225 */

/* LOGO EMPRESA EN SIDEBAR Y PERFIL */
.brand-business{margin:0 0 18px 0;padding:16px 12px;border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.045));border:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.brand-business-logo-card{width:134px;min-height:82px;padding:10px;border-radius:14px;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 24px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.85);overflow:hidden}
.brand-business-logo{display:block;max-width:100%;max-height:72px;width:auto;height:auto;object-fit:contain;filter:drop-shadow(0 1px 1px rgba(15,23,42,.45))}
.brand-business-fallback{width:74px;height:74px;border-radius:22px;display:grid;place-items:center;background:linear-gradient(135deg,#dbeafe,#eef2ff);color:#1d4ed8;font-weight:900;font-size:32px;box-shadow:0 14px 30px rgba(0,0,0,.22)}
.brand-business-name{font-size:15px;line-height:1.2;font-weight:900;color:#f8fafc;max-width:170px;overflow-wrap:anywhere}
.business-logo-card{max-width:980px;border:1px solid #dbeafe;background:linear-gradient(180deg,#fff 0%,#f8fbff 100%)}
.business-logo-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid #e5e7eb}
.business-logo-head h2{margin:0 0 4px;color:#0f172a}
.business-logo-head p{margin:0;color:#64748b;line-height:1.45}
.business-logo-status{display:inline-flex;align-items:center;padding:7px 11px;border-radius:999px;background:#dcfce7;color:#166534;font-weight:900;font-size:12px;white-space:nowrap}
.business-logo-grid{display:grid;grid-template-columns:280px 1fr;gap:18px;align-items:stretch}
.business-logo-preview-box{border:1px solid #dbeafe;border-radius:18px;background:#fff;padding:18px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;min-height:260px;box-shadow:0 12px 30px rgba(15,23,42,.06)}
.business-logo-preview-img{max-width:200px;max-height:120px;width:auto;height:auto;object-fit:contain;display:block}
.business-logo-preview-box strong{color:#0f172a;font-size:17px;line-height:1.25}
.business-logo-preview-box small{color:#64748b;font-weight:700}
.business-logo-empty{width:110px;height:110px;border-radius:30px;display:grid;place-items:center;background:linear-gradient(135deg,#dbeafe,#ecfeff);color:#2563eb;font-weight:900;font-size:48px;border:1px solid #bfdbfe}
.business-logo-drop{min-height:204px}
.business-logo-selected{grid-template-columns:36px 62px 1fr 38px}
.business-logo-thumb{width:58px;height:44px;border-radius:10px;background:#f8fafc center/contain no-repeat;border:1px solid #cbd5e1;display:block}
.business-logo-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
.business-logo-note{margin:10px 0 0}
@media(max-width:760px){.business-logo-grid{grid-template-columns:1fr}.business-logo-head{flex-direction:column}.business-logo-selected{grid-template-columns:34px 1fr 36px}.business-logo-thumb{display:none}.brand-business-logo-card{width:124px;min-height:76px}.brand-business-logo{max-height:66px}}

/* v235 - Perfil de usuario en tres secciones */
.profile-page-head{align-items:flex-start}
.profile-page-head h1{margin-bottom:4px}
.user-profile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:stretch}
.user-profile-card{border:1px solid #e5e7eb;background:linear-gradient(180deg,#fff 0%,#fbfdff 100%);display:flex;flex-direction:column;min-height:100%}
.profile-card-title{display:flex;gap:12px;align-items:flex-start;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid #e5e7eb}
.profile-card-title span{width:34px;height:34px;border-radius:12px;display:grid;place-items:center;background:#eff6ff;color:#2563eb;font-weight:900;flex:0 0 auto}
.profile-card-title h2{margin:0;color:#0f172a;font-size:20px;letter-spacing:-.01em}
.profile-card-title p{margin:4px 0 0;color:#64748b;line-height:1.35}
.user-profile-card form{display:flex;flex-direction:column;flex:1}
.user-profile-card textarea{resize:vertical;min-height:88px}
.profile-save-button{margin-top:auto;justify-content:center;min-height:42px}
.profile-password-row{display:flex;gap:8px;align-items:center}
.profile-password-row input{flex:1;min-width:0}
.profile-password-row .button{white-space:nowrap;min-height:40px}
.profile-password-note{margin:2px 0 18px}
.profile-photo-preview{height:128px;border:1px solid #dbeafe;border-radius:18px;background:linear-gradient(135deg,#eff6ff,#f8fafc);display:flex;align-items:center;justify-content:center;margin-bottom:14px;overflow:hidden}
.profile-photo-preview img{width:112px;height:112px;border-radius:999px;object-fit:cover;display:block;box-shadow:0 12px 28px rgba(15,23,42,.18);border:4px solid #fff}
.profile-photo-empty{width:112px;height:112px;border-radius:999px;display:grid;place-items:center;background:linear-gradient(135deg,#dbeafe,#ecfeff);color:#2563eb;font-size:42px;font-weight:900;border:4px solid #fff;box-shadow:0 12px 28px rgba(15,23,42,.14)}
.profile-photo-drop{min-height:170px;padding:18px}
.profile-photo-drop .cita-premium-cloud{font-size:44px}
.profile-photo-drop .cita-premium-title{font-size:16px}
.profile-photo-selected{grid-template-columns:34px 54px 1fr 36px}
.profile-photo-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:14px}
.profile-warning-card{border:1px solid #fde68a;background:#fffbeb;color:#92400e}
.profile-warning-card h2{margin-top:0;color:#92400e}
.profile-warning-card code{display:inline-block;background:#fff7ed;border:1px solid #fed7aa;border-radius:10px;padding:8px 10px;color:#9a3412;font-weight:800}
.profile-password-only .profile-password-row input{flex:1}
@media (max-width:1180px){.user-profile-grid{grid-template-columns:1fr}.user-profile-card{min-height:auto}.profile-save-button{margin-top:12px}}
@media (max-width:760px){.profile-card-title{gap:10px}.profile-card-title h2{font-size:18px}.profile-password-row{align-items:stretch}.profile-password-row .button{padding-left:12px;padding-right:12px}.profile-photo-selected{grid-template-columns:34px 1fr 36px}.profile-photo-selected .business-logo-thumb{display:none}}

/* v236 - Foto pequeña del profesional en ficha de cita */
.aq-calendar-grid-v61 .aq-appointment .aq-appt-client-line{
  display:flex !important;
  align-items:center !important;
  gap:6px !important;
  min-width:0 !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-prof-photo{
  width:22px !important;
  height:22px !important;
  min-width:22px !important;
  border-radius:999px !important;
  overflow:hidden !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:#ffffff !important;
  border:1px solid rgba(15,23,42,.12) !important;
  box-shadow:0 1px 4px rgba(15,23,42,.10) !important;
  font-size:12px !important;
  line-height:1 !important;
  color:#64748b !important;
  flex:0 0 22px !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-prof-photo img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  display:block !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-prof-photo.is-fallback{
  background:#f8fafc !important;
}
.aq-calendar-grid-v61 .aq-appointment .aq-appt-client-text{
  min-width:0 !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
  white-space:nowrap !important;
  display:block !important;
}
@media (max-width:768px){
  .aq-calendar-grid-v61 .aq-appointment .aq-appt-prof-photo{
    width:20px !important;
    height:20px !important;
    min-width:20px !important;
    flex-basis:20px !important;
  }
}

/* V237: foto del profesional desde usuarios.foto_path en encabezado de agenda */
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
  width:30px !important;
  height:30px !important;
  min-width:30px !important;
  border-radius:999px !important;
  overflow:hidden !important;
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  background:#eef2ff !important;
  color:#2563eb !important;
  font-weight:800 !important;
  font-size:14px !important;
  line-height:1 !important;
  border:1px solid rgba(37,99,235,.12) !important;
  box-shadow:0 4px 10px rgba(15,23,42,.08) !important;
  flex:0 0 30px !important;
}
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar.has-photo{
  background:#ffffff !important;
  border-color:rgba(255,255,255,.18) !important;
}
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  display:block !important;
}


/* V242 - Ajustes visuales agenda
   1) Foto profesional un poco más grande en encabezado
   2) Flechas azules de desplazamiento más pequeñas y discretas
   Nota: no toca disponibilidad, citas ni guardado.
*/
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
  width:36px !important;
  height:36px !important;
  min-width:36px !important;
  flex:0 0 36px !important;
  font-size:15px !important;
}
.aq-calendar-prof-scroll-controls .aq-calendar-arrow,
.aq-calendar-nav-shell .aq-calendar-prof-scroll-controls .aq-calendar-arrow{
  width:38px !important;
  height:34px !important;
  min-width:38px !important;
  border-radius:12px !important;
  font-size:1.55rem !important;
  line-height:1 !important;
  box-shadow:0 8px 18px rgba(37,99,235,.18) !important;
}
@media (max-width:720px){
  .aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
    width:32px !important;
    height:32px !important;
    min-width:32px !important;
    flex:0 0 32px !important;
  }
  .aq-calendar-prof-scroll-controls .aq-calendar-arrow,
  .aq-calendar-nav-shell .aq-calendar-prof-scroll-controls .aq-calendar-arrow{
    width:34px !important;
    height:30px !important;
    min-width:34px !important;
    border-radius:10px !important;
    font-size:1.35rem !important;
  }
}
/* END V242 */

/* V243 - foto profesional visible y tamaño más cómodo en encabezado */
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
  width:42px !important;
  height:42px !important;
  min-width:42px !important;
  flex:0 0 42px !important;
  font-size:16px !important;
}
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar.has-photo img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
}
@media (max-width:720px){
  .aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
    width:36px !important;
    height:36px !important;
    min-width:36px !important;
    flex:0 0 36px !important;
  }
}


/* V245 - Ajustes visuales agenda y sucursales
   - Foto del profesional más visible aprovechando menos espacio vertical de flechas.
   - Flechas superiores más compactas para acercar la grilla.
*/
.aq-calendar-prof-scroll-controls{
  margin:.05rem 0 .25rem !important;
  min-height:30px !important;
}
.aq-calendar-prof-scroll-controls .aq-calendar-arrow,
.aq-calendar-nav-shell .aq-calendar-prof-scroll-controls .aq-calendar-arrow{
  width:32px !important;
  height:28px !important;
  min-width:32px !important;
  border-radius:10px !important;
  font-size:1.2rem !important;
  box-shadow:0 6px 14px rgba(37,99,235,.16) !important;
}
.aq-calendar-grid-v61 .aq-pro-header{
  grid-template-columns:52px 1fr !important;
  gap:.65rem !important;
  padding:.68rem .82rem !important;
}
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
  width:50px !important;
  height:50px !important;
  min-width:50px !important;
  flex:0 0 50px !important;
  font-size:18px !important;
  border-radius:999px !important;
}
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar.has-photo img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
}
@media (max-width:720px){
  .aq-calendar-prof-scroll-controls{margin:.05rem 0 .2rem !important;}
  .aq-calendar-prof-scroll-controls .aq-calendar-arrow,
  .aq-calendar-nav-shell .aq-calendar-prof-scroll-controls .aq-calendar-arrow{
    width:30px !important;
    height:26px !important;
    min-width:30px !important;
    font-size:1.1rem !important;
  }
  .aq-calendar-grid-v61 .aq-pro-header{
    grid-template-columns:44px 1fr !important;
    padding:.6rem .7rem !important;
  }
  .aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
    width:42px !important;
    height:42px !important;
    min-width:42px !important;
    flex:0 0 42px !important;
  }
}
/* END V245 */


/* V246 - Ajuste controlado: foto del PROFESIONAL en agenda y flechas compactas.
   No cambia logo/sidebar ni fichas de cita. */
.aq-calendar-prof-scroll-controls{
  margin:.03rem 0 .18rem !important;
  min-height:28px !important;
}
.aq-calendar-prof-scroll-controls .aq-calendar-arrow,
.aq-calendar-nav-shell .aq-calendar-prof-scroll-controls .aq-calendar-arrow{
  width:30px !important;
  height:26px !important;
  min-width:30px !important;
  border-radius:9px !important;
  font-size:1.08rem !important;
  line-height:1 !important;
  padding:0 !important;
}
.aq-calendar-grid-v61 .aq-pro-header{
  grid-template-columns:44px minmax(0,1fr) !important;
  gap:.55rem !important;
  padding:.62rem .78rem !important;
}
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
  width:42px !important;
  height:42px !important;
  min-width:42px !important;
  flex:0 0 42px !important;
  font-size:16px !important;
}
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar.has-photo img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  display:block !important;
}
@media (max-width:720px){
  .aq-calendar-grid-v61 .aq-pro-header{
    grid-template-columns:40px minmax(0,1fr) !important;
    gap:.5rem !important;
    padding:.58rem .68rem !important;
  }
  .aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
    width:38px !important;
    height:38px !important;
    min-width:38px !important;
    flex:0 0 38px !important;
  }
}
/* END V246 */


/* v247 - carga segura de imágenes persistentes: logo y foto profesional */
.brand-business-logo-card{
  background:#ffffff !important;
  min-height:86px !important;
  width:142px !important;
  padding:10px !important;
}
.brand-business-logo{
  display:block !important;
  max-width:118px !important;
  max-height:72px !important;
  width:auto !important;
  height:auto !important;
  object-fit:contain !important;
  opacity:1 !important;
  visibility:visible !important;
}
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar{
  width:42px !important;
  height:42px !important;
  min-width:42px !important;
  flex:0 0 42px !important;
}
.aq-calendar-grid-v61 .aq-pro-header .aq-pro-avatar.has-photo img{
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
  display:block !important;
}

/* v254 - botones de acceso app como formularios inline */
.inline-action-form{
  display:inline-flex;
  margin:0;
}
.inline-action-form .button{
  white-space:nowrap;
}

/* ==========================================================
   FIX FINAL V2 - No cabe igual a Sin horario + lados blancos
   - No cabe usa el mismo sombreado de Sin horario.
   - Cuando hay ficha encima, se tapa SOLO a los lados.
   - No se tapa arriba ni abajo, para que las líneas de la grilla sigan visibles.
   - No cambia lógica, posiciones, textos ni tamaños.
   ========================================================== */
.aq-calendar-grid-v61 .aq-grid-slot.is-unusable-gap,
.aq-calendar-grid-v61 .aq-grid-slot.is-disabled.is-unusable-gap{
  cursor: default !important;
  pointer-events: none !important;
  background: repeating-linear-gradient(
    135deg,
    rgba(148, 163, 184, .18),
    rgba(148, 163, 184, .18) 8px,
    rgba(248, 250, 252, .94) 8px,
    rgba(248, 250, 252, .94) 17px
  ) !important;
  box-shadow: none !important;
}

.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"]{
  overflow: visible !important;
  box-shadow:
    -12px 0 0 0 #ffffff,
    8px 0 0 0 #ffffff,
    0 10px 22px rgba(15, 23, 42, .08) !important;
}

.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"]:hover{
  box-shadow:
    -12px 0 0 0 #ffffff,
    12px 0 0 0 #ffffff,
    0 16px 30px rgba(15, 23, 42, .14) !important;
}

.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"] .aq-appt-time,
.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"] strong,
.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"] small,
.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"] .aq-appt-client-line,
.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"] .aq-appt-area-inline{
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}
/* END FIX FINAL V2 */

/* ==========================================================
   FIX FINAL MOVIL AGENDA - columna completa sin fichas cortadas
   - En telefono: Hora + 1 profesional completo dentro del viewport.
   - El resto de profesionales queda por scroll horizontal.
   - No toca uploads ni logica PHP.
   ========================================================== */
@media (max-width: 768px){
  .aq-calendar-scroll,
  .aq-calendar-nav-shell > .aq-calendar-scroll{
    width:100% !important;
    max-width:100% !important;
    min-width:0 !important;
    overflow-x:auto !important;
    overflow-y:hidden !important;
    -webkit-overflow-scrolling:touch !important;
    scroll-snap-type:x mandatory !important;
    scrollbar-width:thin !important;
  }

  /*.aq-calendar-grid-v61{
    --agenda-hour-width-mobile:56px !important;
    --agenda-col-width-mobile:clamp(230px, calc(100vw - 92px), 280px) !important;
    grid-template-columns:var(--agenda-hour-width-mobile) repeat(var(--agenda-professionals), var(--agenda-col-width-mobile)) !important;
    width:calc(var(--agenda-hour-width-mobile) + (var(--agenda-professionals) * var(--agenda-col-width-mobile))) !important;
    min-width:calc(var(--agenda-hour-width-mobile) + (var(--agenda-professionals) * var(--agenda-col-width-mobile))) !important;
    max-width:none !important;
  }*/

  .aq-calendar-grid-v61 .aq-calendar-corner,
  .aq-calendar-grid-v61 .aq-hours-col{
    width:var(--agenda-hour-width-mobile) !important;
    min-width:var(--agenda-hour-width-mobile) !important;
    max-width:var(--agenda-hour-width-mobile) !important;
  }

  .aq-calendar-grid-v61 .aq-pro-header,
  .aq-calendar-grid-v61 .aq-pro-column{
    width:var(--agenda-col-width-mobile) !important;
    min-width:var(--agenda-col-width-mobile) !important;
    max-width:var(--agenda-col-width-mobile) !important;
    scroll-snap-align:start !important;
  }

  .aq-calendar-grid-v61 .aq-pro-column{
    overflow:hidden !important;
    contain:paint !important;
  }

  .aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"],
  .aq-calendar-grid-v61 .aq-appointment{
    left:7px !important;
    right:7px !important;
    width:auto !important;
    min-width:0 !important;
    max-width:calc(100% - 14px) !important;
    box-sizing:border-box !important;
    overflow:hidden !important;
  }

  .aq-calendar-grid-v61 .aq-appointment .aq-appt-time,
  .aq-calendar-grid-v61 .aq-appointment strong,
  .aq-calendar-grid-v61 .aq-appointment small,
  .aq-calendar-grid-v61 .aq-appointment .aq-appt-client-text,
  .aq-calendar-grid-v61 .aq-appointment .aq-appt-area-inline{
    max-width:100% !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
  }
}

@media (max-width: 360px){
  .aq-calendar-grid-v61{
    --agenda-hour-width-mobile:52px !important;
    --agenda-col-width-mobile:clamp(220px, calc(100vw - 78px), 260px) !important;
  }
  .aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"],
  .aq-calendar-grid-v61 .aq-appointment{
    left:6px !important;
    right:6px !important;
    max-width:calc(100% - 12px) !important;
  }
}
/* END FIX FINAL MOVIL AGENDA */

/* ==========================================================
   FIX REAL - Agenda móvil: alinear fichas con horas
   ----------------------------------------------------------
   La posición de las citas se calcula en PHP usando
   $agendaSlotHeight = 28px. En móvil existían reglas CSS que
   cambiaban --slot-height, provocando que la grilla creciera
   pero las fichas quedaran en otra altura.
   Este bloque fuerza el mismo alto de slot en todos los tamaños
   y permite texto legible sin mover la cita de su hora.
   ========================================================== */
.aq-calendar-grid-v61{
  --slot-height:28px !important;
}

.aq-calendar-grid-v61 .aq-hour-cell,
.aq-calendar-grid-v61 .aq-grid-slot{
  height:28px !important;
  min-height:28px !important;
}

@media (max-width: 768px){
  .aq-calendar-grid-v61{
    --slot-height:28px !important;
  }

  .aq-calendar-grid-v61 .aq-hour-cell,
  .aq-calendar-grid-v61 .aq-grid-slot{
    height:28px !important;
    min-height:28px !important;
  }

  .aq-calendar-grid-v61 .aq-pro-column{
    min-height:calc(var(--agenda-slots) * 28px) !important;
    overflow:visible !important;
    contain:none !important;
  }

  .aq-calendar-grid-v61 .aq-appointment,
  .aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"]{
    left:8px !important;
    right:8px !important;
    max-width:calc(100% - 16px) !important;
    box-sizing:border-box !important;
    overflow:hidden !important;
  }

  .aq-calendar-grid-v61 .aq-appointment .aq-appt-time{
    display:block !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
    font-size:.66rem !important;
    line-height:1 !important;
  }

  .aq-calendar-grid-v61 .aq-appointment strong,
  .aq-calendar-grid-v61 .aq-appointment .aq-appt-client-line,
  .aq-calendar-grid-v61 .aq-appointment .aq-appt-client-text{
    display:block !important;
    max-width:100% !important;
    white-space:normal !important;
    overflow:hidden !important;
    text-overflow:clip !important;
    overflow-wrap:anywhere !important;
    line-height:1.05 !important;
    font-size:.72rem !important;
  }

  .aq-calendar-grid-v61 .aq-appointment .aq-appt-area-inline{
    display:inline !important;
  }
}
/* END FIX REAL - Agenda móvil: alinear fichas con horas */


/* ==========================================================
   FIX DEFINITIVO - Agenda móvil: primera columna no queda debajo de Hora
   ----------------------------------------------------------
   La columna Hora es sticky. Al hacer scroll horizontal, el snap
   alineaba la columna profesional contra el borde izquierdo del viewport,
   quedando parte de la primera ficha debajo de la columna Hora.
   Este ajuste hace que el snap respete el ancho de Hora.
   ========================================================== */
@media (max-width: 768px){
  .aq-calendar-scroll,
  .aq-calendar-nav-shell > .aq-calendar-scroll{
    scroll-padding-left: var(--agenda-hour-width-mobile, 56px) !important;
  }

  .aq-calendar-grid-v61 .aq-pro-header,
  .aq-calendar-grid-v61 .aq-pro-column{
    scroll-snap-align: start !important;
    scroll-margin-left: var(--agenda-hour-width-mobile, 56px) !important;
  }

  .aq-calendar-grid-v61 .aq-calendar-corner,
  .aq-calendar-grid-v61 .aq-hours-col{
    position: sticky !important;
    left: 0 !important;
    z-index: 30 !important;
    background: #fff !important;
  }

  .aq-calendar-grid-v61 .aq-hours-col{
    overflow: hidden !important;
  }
}
/* END FIX DEFINITIVO - Agenda móvil: primera columna no queda debajo de Hora */


/* AGENDA FECHA ELEGIBLE SEGURA */
.aq-date-picker-form{
  margin:0;
  padding:0;
  display:block;
}
.aq-date-picker-chip{
  position:relative;
  cursor:pointer;
  user-select:none;
}
.aq-date-picker-chip:hover{
  box-shadow:0 16px 34px rgba(37,99,235,.14);
}
.aq-date-picker-input{
  position:absolute;
  inset:0;
  width:100% !important;
  height:100% !important;
  opacity:0;
  cursor:pointer;
  border:0 !important;
  padding:0 !important;
  margin:0 !important;
}
@media (max-width:768px){
  .aq-date-picker-form{
    width:100%;
  }
}
/* END AGENDA FECHA ELEGIBLE SEGURA */

/* ==========================================================
   v31 - Agenda: eliminar espacio sobrante bajo la ultima hora
   ----------------------------------------------------------
   Base oficial: agenda_version_1(1).zip / versiones posteriores
   Ajuste visual solamente:
   - La grilla termina exactamente al finalizar el ultimo slot.
   - No cambia calculo de citas, horarios, filtros ni uploads.
   - Mantiene el alto de slot sincronizado con index.php.
   ========================================================== */
.aq-calendar-grid-v61{
  --slot-height:28px !important;
  grid-template-rows:76px calc(var(--agenda-slots) * var(--slot-height)) !important;
  align-content:start !important;
}

.aq-calendar-grid-v61 .aq-hours-col,
.aq-calendar-grid-v61 .aq-pro-column{
  height:calc(var(--agenda-slots) * var(--slot-height)) !important;
  min-height:calc(var(--agenda-slots) * var(--slot-height)) !important;
  max-height:calc(var(--agenda-slots) * var(--slot-height)) !important;
}

.aq-calendar-grid-v61 .aq-hour-cell,
.aq-calendar-grid-v61 .aq-grid-slot{
  height:var(--slot-height) !important;
  min-height:var(--slot-height) !important;
  max-height:var(--slot-height) !important;
}

.aq-calendar-scroll{
  padding-bottom:0 !important;
}
/* END v31 - Agenda: eliminar espacio sobrante bajo la ultima hora */



/* CITA EDIT - RESUMEN SUPERIOR EQUILIBRADO V3 */
.cita-summary-card{
  padding:16px !important;
}

.cita-summary-grid{
  display:grid;
  grid-template-columns:repeat(6,minmax(0,1fr));
  gap:12px;
}

.cita-summary-item{
  min-width:0;
  padding:12px 13px;
  border:1px solid rgba(148,163,184,.18);
  border-radius:14px;
  background:#f8fafc;
}

.cita-summary-item strong{
  display:block;
  margin:0 0 5px;
  color:#64748b;
  font-size:12px;
  line-height:1;
  font-weight:850;
  text-transform:uppercase;
  letter-spacing:.04em;
}

.cita-summary-item span{
  display:block;
  color:#0f172a;
  font-size:14px;
  line-height:1.2;
  font-weight:800;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}

@media (max-width: 1200px){
  .cita-summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
}

@media (max-width: 720px){
  .cita-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
}

@media (max-width: 440px){
  .cita-summary-grid{grid-template-columns:1fr;}
}
/* END CITA EDIT - RESUMEN SUPERIOR EQUILIBRADO V3 */

/* ==========================================================
   Agenda v12 - Citas de 15 minutos compactas
   ----------------------------------------------------------
   Ajuste visual solamente para citas cuya duración real sea
   igual o menor al slot configurado (15 min).
   - No cambia lógica ni horarios.
   - No afecta citas de 30, 45 o 60 minutos.
   - En 15 min muestra solo hora + paciente para que quepa.
   ========================================================== */
.aq-calendar-grid-v61 .aq-appointment.is-short-15{
  min-height:0 !important;
  height:24px !important;
  padding:2px 7px !important;
  gap:0 !important;
  justify-content:center !important;
  overflow:hidden !important;
}

.aq-calendar-grid-v61 .aq-appointment.is-short-15 .aq-appt-time{
  font-size:.58rem !important;
  line-height:1 !important;
  margin:0 !important;
  padding:0 !important;
  transform:none !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}

.aq-calendar-grid-v61 .aq-appointment.is-short-15 .aq-appt-client-line,
.aq-calendar-grid-v61 .aq-appointment.is-short-15 .aq-appt-client-text{
  display:block !important;
  font-size:.66rem !important;
  line-height:1.02 !important;
  margin:0 !important;
  padding:0 !important;
  transform:none !important;
  white-space:nowrap !important;
  overflow:hidden !important;
  text-overflow:ellipsis !important;
}

.aq-calendar-grid-v61 .aq-appointment.is-short-15 .aq-appt-area-inline,
.aq-calendar-grid-v61 .aq-appointment.is-short-15 small{
  display:none !important;
}
/* END Agenda v12 - Citas de 15 minutos compactas */


/* ==========================================================
   Agenda v14 - Opción 1: grilla ligeramente más alta
   ----------------------------------------------------------
   Ajuste quirúrgico de legibilidad:
   - Cada slot de 15 minutos pasa de 28px a 32px.
   - El PHP también usa 32px para que top/height sigan alineados.
   - No cambia horarios, disponibilidad, filtros, lógica ni uploads.
   ========================================================== */
.aq-calendar-grid-v61{
  --slot-height:32px !important;
  grid-template-rows:76px calc(var(--agenda-slots) * var(--slot-height)) !important;
}

.aq-calendar-grid-v61 .aq-hours-col,
.aq-calendar-grid-v61 .aq-pro-column{
  height:calc(var(--agenda-slots) * var(--slot-height)) !important;
  min-height:calc(var(--agenda-slots) * var(--slot-height)) !important;
  max-height:calc(var(--agenda-slots) * var(--slot-height)) !important;
}

.aq-calendar-grid-v61 .aq-hour-cell,
.aq-calendar-grid-v61 .aq-grid-slot{
  height:var(--slot-height) !important;
  min-height:var(--slot-height) !important;
  max-height:var(--slot-height) !important;
}

.aq-calendar-grid-v61 .aq-appointment.is-short-15{
  height:calc(var(--slot-height) - 4px) !important;
  min-height:0 !important;
  padding:2px 7px !important;
}

.aq-calendar-grid-v61 .aq-appointment.is-short-15 .aq-appt-area-inline{
  display:inline !important;
}
/* END Agenda v14 - Opción 1: grilla ligeramente más alta */

/* ==========================================================
   Agenda v15 - Área con el mismo tamaño que el paciente
   ----------------------------------------------------------
   Ajuste visual mínimo:
   - El área entre paréntesis se mantiene visible dentro de la ficha.
   - Usa el mismo tamaño, peso y línea que el nombre del paciente.
   - No toca alturas, posiciones, horarios, lógica ni uploads.
   ========================================================== */
.aq-calendar-grid-v61 .aq-appointment .aq-appt-area-inline,
.aq-calendar-grid-v61 .aq-appointment.is-short-15 .aq-appt-area-inline,
.aq-calendar-grid-v61 .aq-appointment[data-agenda-appt="1"] .aq-appt-area-inline{
  display:inline !important;
  font-size:inherit !important;
  font-weight:inherit !important;
  line-height:inherit !important;
  opacity:1 !important;
}
/* END Agenda v15 - Área con el mismo tamaño que el paciente */


/* ==========================================================
   Agenda v16 - Sombreado bloqueado uniforme y visible
   ----------------------------------------------------------
   Ajuste visual únicamente:
   - Unifica el sombreado de Sin horario, Vencido, No cabe y bloqueados.
   - Más visible que el sombreado anterior casi blanco.
   - No toca lógica, alturas, citas, horarios, uploads, logo ni fotos.
   ========================================================== */
.aq-calendar-grid-v61 .aq-pro-column > .aq-grid-slot.is-disabled,
.aq-calendar-grid-v61 .aq-pro-column > .aq-grid-slot.is-disabled.has-qa-reason,
.aq-calendar-grid-v61 .aq-pro-column > .aq-grid-slot.is-disabled.is-unusable-gap,
.aq-calendar-grid-v61 .aq-pro-column > .aq-grid-slot.is-unusable-gap,
.aq-calendar-grid-v61 .aq-pro-column > .aq-grid-slot.is-expired,
.aq-calendar-grid-v61 .aq-pro-column > .aq-grid-slot.is-occupied,
.aq-calendar-grid-v61 .aq-pro-column > .aq-grid-slot[data-qa-blocked-reason],
.aq-calendar-grid-v61 .aq-pro-column > .aq-unusable-gap-overlay,
.aq-calendar-grid-v61 .aq-pro-column > .aq-unusable-gap-overlay.has-qa-reason,
.aq-calendar-grid-v61 .aq-pro-column > .aq-unusable-gap-overlay[data-qa-blocked-reason]{
  background-color:#fafbfd !important;
  background-image:repeating-linear-gradient(
    135deg,
    rgba(100,116,139,.04),
    rgba(100,116,139,.04) 8px,
    rgba(255,255,255,.98) 8px,
    rgba(255,255,255,.98) 16px
  ) !important;
}
/* END Agenda v16 - Sombreado bloqueado uniforme y visible */


/* VERSION 17 - Tooltip de citas limpio: sin tooltip nativo oscuro y tarjeta clara */
.aq-appt-tooltip{
  background:#ffffff !important;
  border:1px solid rgba(226,232,240,.95) !important;
  box-shadow:0 10px 24px rgba(15,23,42,.10) !important;
}
.aq-appt-tooltip .row{
  border-top:1px solid rgba(226,232,240,.95) !important;
}


/* Agenda v26 - Área del profesional en encabezado y alineación limpia */
.aq-calendar-grid-v61 .aq-pro-header > strong,
.aq-calendar-grid-v61 .aq-pro-header > .aq-pro-area,
.aq-calendar-grid-v61 .aq-pro-header > small {
  grid-column: 2 !important;
}

.aq-calendar-grid-v61 .aq-pro-header > .aq-pro-area {
  display: block !important;
  margin-top: 2px !important;
  color: #2563eb !important;
  font-size: .72rem !important;
  font-style: normal !important;
  font-weight: 850 !important;
  line-height: 1.05 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.aq-calendar-grid-v61 .aq-pro-header > small {
  margin-top: 2px !important;
}
/* END Agenda v26 - Área del profesional en encabezado */
