/* ==========================================================
   Tema Clínica Dental — capa de estilos sobre Bootstrap 5
   ========================================================== */

:root {
  --cd-primary: #0f766e;
  --cd-primary-dark: #115e59;
  --cd-primary-light: #14b8a6;
  --cd-primary-soft: #ccfbf1;
  --cd-bg: #f4f7f7;
  --cd-surface: #ffffff;
  --cd-ink: #1e293b;
  --cd-ink-soft: #64748b;
  --cd-border: #e8efed;
  --cd-radius: 14px;
  --cd-shadow: 0 2px 4px rgba(15, 23, 42, .03), 0 14px 32px rgba(15, 23, 42, .07);
  --cd-shadow-lg: 0 8px 30px rgba(15, 23, 42, .12);
}

body {
  font-family: "Nunito", "Plus Jakarta Sans", "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  background:
    linear-gradient(180deg, rgba(146, 186, 173, .5) 0%, rgba(203, 226, 218, .32) 230px, rgba(244, 247, 247, 0) 520px),
    radial-gradient(1200px 400px at 80% -100px, rgba(20, 184, 166, .08), transparent),
    var(--cd-bg);
  background-attachment: fixed;
  color: var(--cd-ink);
  font-weight: 300;
  min-height: 100vh;
}
strong, b, th { font-weight: 600; }

h1, h2, h3, h4, h5, h6 { color: var(--cd-ink); letter-spacing: -.02em; font-weight: 700; }

h1.fs-1 { font-size: 1.75rem !important; font-weight: 800 !important; margin-bottom: 1.25rem; }

/* ---------- Navbar ---------- */
.navbar.bg-body-tertiary {
  background: rgba(255, 255, 255, .85) !important;
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--cd-border);
  box-shadow: 0 1px 12px rgba(15, 23, 42, .05);
  padding-top: .65rem;
  padding-bottom: .65rem;
}

.navbar-brand {
  font-weight: 800;
  color: var(--cd-primary-dark) !important;
  letter-spacing: -.02em;
  display: flex;
  align-items: center;
  gap: .55rem;
}

.navbar-brand .brand-icon {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: linear-gradient(135deg, var(--cd-primary-light), var(--cd-primary));
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  box-shadow: 0 3px 10px rgba(15, 118, 110, .35);
}

.navbar .nav-link {
  color: var(--cd-ink-soft);
  font-weight: 600;
  font-size: .925rem;
  border-radius: 10px;
  padding: .5rem .9rem !important;
  margin: 0 .1rem;
  transition: color .15s ease, background-color .15s ease;
}

.navbar .nav-link:hover { color: var(--cd-primary-dark); background: var(--cd-primary-soft); }
.navbar .nav-link.active { color: var(--cd-primary-dark); background: var(--cd-primary-soft); }
.navbar .nav-link i { margin-right: .3rem; opacity: .85; }

.cd-user-chip { color: var(--cd-ink-soft); font-weight: 600; font-size: .9rem; }
.cd-user-chip i { font-size: 1.4rem; color: var(--cd-primary); }
.cd-logout-form { margin-left:.5rem; }
.cd-logout-form button { display:grid; place-items:center; width:36px; height:36px; border:0; border-radius:10px; color:var(--cd-ink-soft); background:transparent; }
.cd-logout-form button:hover { color:#be123c; background:#fff1f2; }

/* ---------- Contenedor principal ---------- */
.container-fluid.p-4 {
  max-width: 1280px;
  margin-left: auto;
  margin-right: auto;
}

/* ---------- Tarjetas ---------- */
.card {
  border: 1px solid var(--cd-border);
  border-radius: var(--cd-radius);
  box-shadow: var(--cd-shadow);
  transition: transform .18s ease, box-shadow .18s ease;
}

.card:hover { transform: translateY(-2px); box-shadow: var(--cd-shadow-lg); }

.card .card-body { padding: 1.4rem; }
.card .card-title { font-weight: 700; }

/* Tarjetas azules del sistema → tema claro con acento */
.card.text-bg-primary {
  background: var(--cd-surface) !important;
  color: var(--cd-ink) !important;
  border-top: 4px solid var(--cd-primary-light);
}

.card.text-bg-primary .card-title { color: var(--cd-ink); }
.card.text-bg-primary .card-text { color: var(--cd-ink-soft); }

.card.text-bg-primary .btn-light {
  background: var(--cd-primary);
  border-color: var(--cd-primary);
  color: #fff;
  font-weight: 600;
}

.card.text-bg-primary .btn-light:hover {
  background: var(--cd-primary-dark);
  border-color: var(--cd-primary-dark);
  color: #fff;
}

/* Iconos de tarjetas del dashboard */
.cd-card-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.25rem;
  margin-bottom: .9rem;
  color: #fff;
  background: linear-gradient(135deg, var(--cd-primary-light), var(--cd-primary));
  box-shadow: 0 4px 12px rgba(15, 118, 110, .3);
}

.cd-card-icon.icon-amber { background: linear-gradient(135deg, #fbbf24, #d97706); box-shadow: 0 4px 12px rgba(217, 119, 6, .3); }
.cd-card-icon.icon-sky { background: linear-gradient(135deg, #38bdf8, #0284c7); box-shadow: 0 4px 12px rgba(2, 132, 199, .3); }
.cd-card-icon.icon-violet { background: linear-gradient(135deg, #a78bfa, #7c3aed); box-shadow: 0 4px 12px rgba(124, 58, 237, .3); }
.cd-card-icon.icon-rose { background: linear-gradient(135deg, #fb7185, #e11d48); box-shadow: 0 4px 12px rgba(225, 29, 72, .3); }

/* Accesos rápidos del dashboard */
.cd-shortcut {
  display: flex;
  align-items: center;
  gap: .85rem;
  padding: 1rem 1.15rem;
  background: var(--cd-surface);
  border: 1px solid var(--cd-border);
  border-radius: var(--cd-radius);
  box-shadow: var(--cd-shadow);
  color: var(--cd-ink);
  text-decoration: none;
  font-weight: 600;
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.cd-shortcut:hover {
  transform: translateY(-2px);
  box-shadow: var(--cd-shadow-lg);
  border-color: var(--cd-primary-light);
  color: var(--cd-primary-dark);
}

.cd-shortcut i {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--cd-primary-soft);
  color: var(--cd-primary-dark);
  font-size: 1rem;
  flex-shrink: 0;
}

/* ---------- Botones ---------- */
.btn { border-radius: 999px; font-weight: 500; padding: .5rem 1.1rem; }

.btn-primary {
  --bs-btn-bg: var(--cd-primary);
  --bs-btn-border-color: var(--cd-primary);
  --bs-btn-hover-bg: var(--cd-primary-dark);
  --bs-btn-hover-border-color: var(--cd-primary-dark);
  --bs-btn-active-bg: var(--cd-primary-dark);
  --bs-btn-active-border-color: var(--cd-primary-dark);
  --bs-btn-disabled-bg: var(--cd-primary);
  --bs-btn-disabled-border-color: var(--cd-primary);
  box-shadow: 0 2px 8px rgba(15, 118, 110, .25);
}

.btn-secondary {
  --bs-btn-bg: #fff;
  --bs-btn-color: var(--cd-ink);
  --bs-btn-border-color: var(--cd-border);
  --bs-btn-hover-bg: var(--cd-bg);
  --bs-btn-hover-color: var(--cd-ink);
  --bs-btn-hover-border-color: var(--cd-border);
  --bs-btn-active-bg: var(--cd-bg);
  --bs-btn-active-color: var(--cd-ink);
  --bs-btn-active-border-color: var(--cd-border);
}

.btn-success {
  --bs-btn-bg: #059669;
  --bs-btn-border-color: #059669;
  --bs-btn-hover-bg: #047857;
  --bs-btn-hover-border-color: #047857;
}

.btn-danger {
  --bs-btn-bg: #e11d48;
  --bs-btn-border-color: #e11d48;
  --bs-btn-hover-bg: #be123c;
  --bs-btn-hover-border-color: #be123c;
}

/* ---------- Tablas ---------- */
.table {
  background: var(--cd-surface);
  border-radius: var(--cd-radius);
  overflow: hidden;
  box-shadow: var(--cd-shadow);
  border: 1px solid var(--cd-border);
  border-collapse: separate;
  border-spacing: 0;
}

.table caption {
  padding: 1rem 0;
  caption-side: top;
}

.table thead th {
  background: #f8fafc;
  color: var(--cd-ink-soft);
  font-size: .75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .06em;
  border-bottom: 1px solid var(--cd-border);
  padding: .85rem 1rem;
}

.table tbody td { padding: .8rem 1rem; border-color: #f1f5f9; }

.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-bg-type: #fbfdfd; }
.table-hover > tbody > tr:hover > * { --bs-table-bg-state: var(--cd-primary-soft); }

/* ---------- Formularios ---------- */
.form-control, .form-select {
  border-radius: 10px;
  border-color: var(--cd-border);
  padding: .55rem .85rem;
}

.form-control:focus, .form-select:focus {
  border-color: var(--cd-primary-light);
  box-shadow: 0 0 0 .2rem rgba(20, 184, 166, .18);
}

.form-label { font-weight: 600; font-size: .875rem; color: var(--cd-ink); }

/* Etiquetas compactas sobre el borde de campos generados por formularios */
form .mb-3:has(> .form-control),
form .mb-3:has(> .form-select) { position:relative; padding-top:.4rem; }
form .mb-3:has(> .form-control) > .form-label,
form .mb-3:has(> .form-select) > .form-label { position:absolute; z-index:2; top:.05rem; left:.72rem; margin:0; padding:0 .32rem; color:var(--cd-ink-soft); background:#fff; font-size:.66rem; font-weight:800; line-height:1; }
form .mb-3:has(> .form-control) > .form-control,
form .mb-3:has(> .form-select) > .form-select { min-height:46px; padding:.72rem .85rem .55rem; border-width:1.5px; font-size:.82rem; }
form .mb-3:has(> .form-control:focus) > .form-label,
form .mb-3:has(> .form-select:focus) > .form-label { color:var(--cd-primary); }
form .mb-3:has(> .is-invalid) > .form-label { color:#be123c; }

.cd-login-form > div { position:relative; padding-top:.4rem; }
.cd-login-form > div > .form-label { position:absolute; z-index:3; top:.05rem; left:.72rem; margin:0; padding:0 .32rem; color:var(--cd-ink-soft); background:#fff; font-size:.66rem; font-weight:800; line-height:1; }
.cd-login-form > div:focus-within > .form-label { color:var(--cd-primary); }

/* ---------- Dropdowns ---------- */
.dropdown-menu {
  border: 1px solid var(--cd-border);
  border-radius: 12px;
  box-shadow: var(--cd-shadow-lg);
  padding: .4rem;
}

.dropdown-item {
  border-radius: 8px;
  padding: .5rem .75rem;
  font-weight: 500;
  font-size: .925rem;
}

.dropdown-item:hover { background: var(--cd-primary-soft); color: var(--cd-primary-dark); }
.dropdown-item i { margin-right: .35rem; opacity: .8; width: 1.1rem; text-align: center; }

/* ---------- Alertas / mensajes ---------- */
.alert { border-radius: var(--cd-radius); border: none; box-shadow: var(--cd-shadow); }
/* Avisos flotantes arriba a la derecha: no mueven la página. */
.cd-toasts { position:fixed; top:76px; right:16px; z-index:1080; display:grid; gap:.5rem; width:min(420px, calc(100vw - 32px)); pointer-events:none; }
.cd-toasts .alert { margin:0; pointer-events:auto; box-shadow:0 10px 30px rgba(15,23,42,.18); animation:cd-toast-entra .25s ease-out; transition:opacity .35s ease, transform .35s ease; }
.cd-toasts .alert.is-saliendo { opacity:0; transform:translateX(16px); }
@keyframes cd-toast-entra { from { opacity:0; transform:translateY(-8px); } to { opacity:1; transform:none; } }
@media (prefers-reduced-motion: reduce) { .cd-toasts .alert { animation:none; transition:none; } }

/* ---------- Badges ---------- */
.badge { border-radius: 999px; font-weight: 600; padding: .4em .75em; }

/* ---------- Inicio de sesión ---------- */
.cd-login-page { position: relative; overflow-x: hidden; background: #eef7f5; }

.cd-login-orb { position: fixed; border-radius: 50%; filter: blur(3px); pointer-events: none; z-index: 0; }
.cd-login-orb-one { width: 280px; height: 280px; right: -120px; top: -100px; background: rgba(45, 212, 191, .16); }
.cd-login-orb-two { width: 220px; height: 220px; right: 22%; bottom: -130px; background: rgba(13, 148, 136, .1); }

.cd-login-shell {
  position: relative;
  z-index: 1;
  min-height: 100vh;
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(420px, .92fr);
}

.cd-login-intro {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: clamp(2rem, 5vw, 5rem);
  color: #fff;
  background: linear-gradient(145deg, #064e4a 0%, #0f766e 55%, #14b8a6 100%);
}

.cd-login-intro::before,
.cd-login-intro::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,.18);
}

.cd-login-intro::before { width: 520px; height: 520px; right: -220px; top: -170px; }
.cd-login-intro::after { width: 320px; height: 320px; left: -150px; bottom: -150px; }

.cd-login-brand, .cd-login-mobile-brand {
  position: relative;
  display: flex;
  align-items: center;
  gap: .8rem;
  font-weight: 800;
  font-size: 1.15rem;
  letter-spacing: -.02em;
}

.cd-login-brand-icon {
  width: 46px;
  height: 46px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  color: var(--cd-primary-dark);
  background: #fff;
  box-shadow: 0 10px 24px rgba(3, 46, 43, .2);
}

.cd-login-copy { position: relative; max-width: 650px; margin: 5rem 0; }
.cd-login-kicker { display: inline-flex; align-items: center; gap: .45rem; margin-bottom: 1.1rem; font-weight: 700; color: #99f6e4; }
.cd-login-copy h1 { color: #fff; font-size: clamp(2.5rem, 4.7vw, 4.6rem); line-height: 1.03; font-weight: 800; }
.cd-login-copy p { max-width: 590px; margin: 1.5rem 0 0; color: rgba(255,255,255,.78); font-size: 1.08rem; line-height: 1.7; }
.cd-login-features { position: relative; display: flex; flex-wrap: wrap; gap: 1.5rem; color: rgba(255,255,255,.9); font-weight: 600; }
.cd-login-features i { margin-right: .45rem; color: #99f6e4; }

.cd-login-panel { display: grid; place-items: center; padding: clamp(1.5rem, 5vw, 5rem); background: rgba(255,255,255,.78); backdrop-filter: blur(18px); }
.cd-login-card { width: min(100%, 440px); padding: clamp(1.5rem, 3vw, 2.25rem); border: 1px solid rgba(255,255,255,.9); border-radius: 24px; background: rgba(255,255,255,.92); box-shadow: 0 24px 70px rgba(15, 118, 110, .12); }
.cd-login-mobile-brand { display: none; color: var(--cd-primary-dark); margin-bottom: 3rem; }
.cd-login-mobile-brand small { display: block; margin-top: .08rem; color: var(--cd-ink-soft); font-size: .68rem; font-weight: 600; letter-spacing: .02em; }
.cd-login-mobile-brand .cd-login-brand-icon { color: #fff; background: var(--cd-primary); }
.cd-login-heading { margin-bottom: 2rem; }
.cd-login-eyebrow { color: var(--cd-primary); font-weight: 700; font-size: .82rem; text-transform: uppercase; letter-spacing: .1em; }
.cd-login-heading h2 { margin: .45rem 0 .6rem; font-size: 2rem; font-weight: 800; }
.cd-login-heading p { color: var(--cd-ink-soft); margin: 0; }
.cd-login-form { display: grid; gap: 1.25rem; }
.cd-input-wrap { position: relative; }
.cd-input-wrap > i { position: absolute; left: 1rem; top: 50%; transform: translateY(-50%); color: #94a3b8; z-index: 1; }
.cd-input-wrap .form-control { min-height: 54px; padding-left: 2.8rem; background: #f8fafc; border-width: 1.5px; }
.cd-input-wrap .form-control[name="password"] { padding-right: 3rem; }
.cd-password-toggle { position: absolute; right: .75rem; top: 50%; transform: translateY(-50%); width: 36px; height: 36px; border: 0; border-radius: 9px; color: #64748b; background: transparent; }
.cd-password-toggle:hover { color: var(--cd-primary-dark); background: var(--cd-primary-soft); }
.cd-login-submit { min-height: 52px; margin-top: .35rem; display: flex; align-items: center; justify-content: center; gap: .65rem; }
.cd-login-submit i { transition: transform .2s ease; }
.cd-login-submit:hover i { transform: translateX(4px); }
.cd-login-alert { display: flex; gap: .75rem; align-items: center; padding: .85rem 1rem; margin-bottom: 1.25rem; border-radius: 10px; color: #9f1239; background: #fff1f2; font-size: .9rem; font-weight: 600; }
.cd-login-divider { display: flex; align-items: center; gap: .8rem; margin: 1.6rem 0 1rem; color: #94a3b8; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
.cd-login-divider::before, .cd-login-divider::after { content: ""; flex: 1; height: 1px; background: var(--cd-border); }
.cd-login-trust { display: flex; justify-content: center; flex-wrap: wrap; gap: .7rem 1.2rem; color: #64748b; font-size: .76rem; font-weight: 600; }
.cd-login-trust i { margin-right: .3rem; color: var(--cd-primary); }

@media (max-width: 900px) {
  .cd-login-shell { grid-template-columns: 1fr; }
  .cd-login-intro { display: none; }
  .cd-login-panel { min-height: 100vh; background: transparent; }
  .cd-login-mobile-brand { display: flex; }
}

@media (max-width: 520px) {
  .cd-login-panel { padding: 1rem; }
  .cd-login-card { padding: 1.5rem; border-radius: 20px; }
  .cd-login-mobile-brand { margin-bottom: 2.5rem; }
  .cd-login-heading h2 { font-size: 1.8rem; }
}

/* ---------- Wizard de tratamientos ---------- */
.cd-page-heading { display:flex; align-items:center; gap:1rem; margin-bottom:1.5rem; }
.cd-page-return { display:inline-flex; align-items:center; gap:.45rem; margin:0 0 1rem; padding:.55rem .75rem; border:1px solid var(--cd-border); border-radius:10px; color:var(--cd-primary-dark); background:#fff; box-shadow:0 4px 12px rgba(15,118,110,.05); text-decoration:none; font-size:.75rem; font-weight:800; transition:transform .2s ease,border-color .2s ease,background .2s ease; }
.cd-page-return:hover { transform:translateX(-2px); border-color:#99e7dc; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-page-heading h1 { margin:.15rem 0 .2rem; font-size:1.9rem; font-weight:800; }

/* ---------- Formulario compacto de pacientes ---------- */
.cd-patient-form-page { width:min(100%,920px); margin:0 auto; }
.cd-patient-form-heading { display:flex; align-items:center; gap:.9rem; margin-bottom:1rem; }
.cd-patient-form-heading > span { display:grid; place-items:center; width:52px; height:52px; flex:0 0 52px; border-radius:15px; color:#fff; background:linear-gradient(135deg,var(--cd-primary-light),var(--cd-primary)); box-shadow:0 8px 20px rgba(15,118,110,.2); }
.cd-patient-form-heading small { color:var(--cd-primary); font-size:.68rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase; }
.cd-patient-form-heading h1 { margin:.1rem 0 .18rem; font-size:1.65rem; font-weight:800; }
.cd-patient-form-heading p { margin:0; color:var(--cd-ink-soft); font-size:.78rem; }
.cd-patient-form-card { padding:1.35rem; border:1px solid var(--cd-border); border-radius:17px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-patient-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.9rem 1rem; }
.cd-patient-form-grid .mb-3 { margin-bottom:0!important; }
.cd-patient-form-grid label { margin-bottom:.35rem; font-size:.74rem; font-weight:700; }
.cd-patient-form-grid .form-control { min-height:44px; padding:.6rem .75rem; font-size:.82rem; }
.cd-floating-field { position:relative; padding-top:.38rem; }
.cd-floating-field label { position:absolute; z-index:2; top:0; left:.7rem; margin:0; padding:0 .32rem; color:var(--cd-ink-soft); background:#fff; font-size:.66rem; font-weight:800; line-height:1; }
.cd-floating-field .form-control { min-height:46px; padding:.72rem .85rem .55rem; border-width:1.5px; }
.cd-floating-field .form-control:focus + label { color:var(--cd-primary); }
.cd-floating-field.has-error label { color:#be123c; }
.cd-floating-field.has-error .form-control { border-color:#fb7185; }
.cd-floating-field .errorlist { margin:.35rem 0 0; padding-left:.9rem; color:#be123c; font-size:.7rem; }
.cd-patient-form-full { grid-column:1/-1; }
.cd-patient-form-actions { display:flex; align-items:center; justify-content:flex-end; gap:.6rem; margin-top:1.15rem; padding-top:1rem; border-top:1px solid var(--cd-border); }
.cd-patient-form-actions .btn { min-width:125px; }

/* ---------- Equipo y especialistas ---------- */
.cd-team-page,.cd-specialist-form-page,.cd-treatment-form-page { width:min(100%,980px); margin:0 auto; }
.cd-team-heading { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:1rem; }
.cd-team-heading > div > span { color:var(--cd-primary); font-size:.66rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase; }
.cd-team-heading h1 { margin:.18rem 0; font-size:1.65rem; font-weight:800; }
.cd-team-heading p { margin:0; color:var(--cd-ink-soft); font-size:.78rem; }
.cd-team-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.8rem; }
.cd-team-grid article { display:flex; align-items:center; gap:.8rem; padding:1rem; border:1px solid var(--cd-border); border-radius:14px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-team-grid article > span { display:grid; place-items:center; width:46px; height:46px; flex:0 0 46px; border-radius:13px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-size:.78rem; font-weight:800; }
.cd-team-grid h2 { margin:0 0 .15rem; font-size:.88rem; font-weight:800; }
.cd-team-grid p { margin:0 0 .25rem; color:var(--cd-ink-soft); font-size:.68rem; }
.cd-team-grid small { color:#047857; font-size:.62rem; font-weight:700; }
.cd-team-empty { grid-column:1/-1; display:grid; place-items:center; min-height:260px; padding:2rem; border:1px dashed #b9d8d4; border-radius:16px; color:var(--cd-ink-soft); background:#f8fcfb; text-align:center; }
.cd-team-empty > i { margin-bottom:.6rem; color:var(--cd-primary); font-size:2rem; }
.cd-team-empty h2 { margin:0; color:var(--cd-ink); font-size:1rem; }
.cd-team-empty p { max-width:380px; margin:.35rem 0 1rem; }
.cd-specialist-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 1rem; }
.cd-specialist-form-grid > .mb-3:nth-last-child(-n+2) { grid-column:span 1; }
.cd-treatment-form-page .cd-patient-form-card { max-width:800px; }

/* ---------- Ficha individual del paciente ---------- */
.cd-patient-detail-actions { display:flex; flex-wrap:wrap; gap:.55rem; }
.cd-patient-data-layout { display:grid; grid-template-columns:minmax(0,1.5fr) minmax(260px,.55fr); gap:1rem; }
.cd-patient-data-card,.cd-patient-quick-card { padding:1.25rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-patient-data-card .cd-owner-section-head > i { color:var(--cd-primary); font-size:1.35rem; }
.cd-patient-data-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0; margin:0; }
.cd-patient-data-grid > div { padding:1rem .25rem; border-bottom:1px solid #edf1f3; }
.cd-patient-data-grid > div:nth-last-child(-n+2) { border-bottom:0; }
.cd-patient-data-grid .full { grid-column:1/-1; }
.cd-patient-data-grid dt { margin-bottom:.3rem; color:var(--cd-ink-soft); font-size:.64rem; font-weight:800; letter-spacing:.07em; text-transform:uppercase; }
.cd-patient-data-grid dd { margin:0; color:var(--cd-ink); font-size:.86rem; font-weight:700; }
.cd-patient-quick-card > span { color:var(--cd-primary); font-size:.65rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.cd-patient-quick-card h2 { margin:.25rem 0 .8rem; font-size:1rem; font-weight:800; }
.cd-patient-quick-card > a { display:grid; grid-template-columns:36px minmax(0,1fr) auto; align-items:center; gap:.65rem; padding:.75rem 0; border-bottom:1px solid #edf1f3; color:var(--cd-ink); text-decoration:none; }
.cd-patient-quick-card > a:last-child { border-bottom:0; }
.cd-patient-quick-card > a > i:first-child { display:grid; place-items:center; width:36px; height:36px; border-radius:10px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-patient-quick-card > a > i:last-child { color:#94a3b8; font-size:.65rem; }
.cd-patient-quick-card strong,.cd-patient-quick-card small { display:block; }
.cd-patient-quick-card strong { font-size:.76rem; }
.cd-patient-quick-card small { margin-top:.12rem; color:var(--cd-ink-soft); font-size:.63rem; }
.cd-clinical-history-card { margin-top:1rem; padding:1.25rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-clinical-history-card .cd-owner-section-head { align-items:center; }
.cd-clinical-history-card .cd-owner-section-head p { margin:.15rem 0 0; color:var(--cd-ink-soft); font-size:.65rem; }
.cd-clinical-history-list { display:grid; gap:.65rem; margin-top:.85rem; }
.cd-clinical-history-list article { display:grid; grid-template-columns:76px minmax(0,1fr); overflow:hidden; border:1px solid var(--cd-border); border-radius:13px; background:#fbfdfd; }
.cd-clinical-history-date { display:grid; place-content:center; padding:.8rem; color:var(--cd-primary-dark); border-right:1px solid #d9eeeb; background:var(--cd-primary-soft); text-align:center; }
.cd-clinical-history-date strong { font-size:1.3rem; line-height:1; }
.cd-clinical-history-date span { margin-top:.15rem; font-size:.58rem; font-weight:800; text-transform:uppercase; }
.cd-clinical-history-date small { margin-top:.2rem; color:var(--cd-ink-soft); font-size:.55rem; }
.cd-clinical-history-body { padding:.8rem 1rem; }
.cd-clinical-history-title { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; }
.cd-clinical-history-title span { color:var(--cd-primary); font-size:.57rem; font-weight:800; letter-spacing:.05em; text-transform:uppercase; }
.cd-clinical-history-title h3 { margin:.12rem 0 0; font-size:.78rem; font-weight:800; }
.cd-clinical-history-title > small { color:var(--cd-ink-soft); font-size:.58rem; white-space:nowrap; }
.cd-clinical-history-body > p { margin:.45rem 0; color:var(--cd-ink-soft); font-size:.65rem; }
.cd-clinical-history-tags { display:flex; flex-wrap:wrap; gap:.35rem; }
.cd-clinical-history-tags span { display:inline-flex; align-items:center; gap:.28rem; padding:.25rem .45rem; border-radius:7px; color:#475569; background:#eef2f6; font-size:.56rem; font-weight:700; }
.cd-clinical-history-tags span.warning { color:#b45309; background:#fef3c7; }
.cd-clinical-history-empty { display:grid; place-items:center; min-height:190px; margin-top:.8rem; padding:1.5rem; border:1px dashed #b9d8d4; border-radius:13px; color:var(--cd-ink-soft); background:#f8fcfb; text-align:center; }
.cd-clinical-history-empty > i { margin-bottom:.45rem; color:var(--cd-primary); font-size:1.6rem; }
.cd-clinical-history-empty h3 { margin:0; font-size:.86rem; }
.cd-clinical-history-empty p { margin:.25rem 0 .65rem; font-size:.65rem; }
.cd-clinical-history-empty a { color:var(--cd-primary-dark); font-size:.65rem; font-weight:800; text-decoration:none; }
.cd-history-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; padding:1.4rem 0 1rem; }
.cd-history-heading h1 { margin:.15rem 0; font-size:clamp(1.45rem,3vw,2rem); }
.cd-history-heading p { margin:0; color:var(--cd-ink-soft); font-size:.78rem; }
.cd-history-summary { display:grid; grid-template-columns:repeat(4,minmax(105px,1fr)); overflow:hidden; border:1px solid var(--cd-border); border-radius:14px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-history-summary div { display:grid; gap:.12rem; padding:.75rem .9rem; border-left:1px solid var(--cd-border); }
.cd-history-summary div:first-child { border-left:0; }
.cd-history-summary span { color:var(--cd-ink-soft); font-size:.56rem; font-weight:700; }
.cd-history-summary strong { color:var(--cd-ink); font-size:.92rem; }
.cd-attention-timeline { display:grid; gap:.75rem; margin-left:.75rem; padding-left:1rem; border-left:2px solid #ccece7; }
.cd-attention-card { position:relative; display:grid; grid-template-columns:76px minmax(0,1fr); border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-attention-card::before { content:""; position:absolute; top:1.35rem; left:-1.55rem; width:10px; height:10px; border:3px solid #fff; border-radius:50%; background:var(--cd-primary); box-shadow:0 0 0 2px #94dcd2; }
.cd-attention-date { display:grid; align-content:center; justify-items:center; padding:1rem .7rem; border-right:1px solid #d9eeeb; border-radius:16px 0 0 16px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-attention-date strong { font-size:1.55rem; line-height:1; }
.cd-attention-date span { margin-top:.18rem; font-size:.66rem; font-weight:900; text-transform:uppercase; }
.cd-attention-date small { color:var(--cd-ink-soft); font-size:.58rem; }
.cd-attention-main { min-width:0; padding:1rem 1.1rem; }
.cd-attention-main > header { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; }
.cd-attention-main > header > div > span { color:var(--cd-primary); font-size:.57rem; font-weight:900; letter-spacing:.06em; text-transform:uppercase; }
.cd-attention-main h2 { margin:.15rem 0 0; font-size:1rem; }
.cd-attention-meta { display:flex; flex-wrap:wrap; gap:.45rem 1rem; margin-top:.6rem; color:var(--cd-ink-soft); font-size:.64rem; }
.cd-attention-meta span { display:inline-flex; align-items:center; gap:.32rem; }
.cd-attention-meta i { color:var(--cd-primary); }
.cd-attention-notes { margin:.65rem 0 0; padding:.55rem .7rem; border-radius:9px; color:#475569; background:#f5f8fa; font-size:.66rem; }
.cd-attention-diagnosis { display:flex; gap:.5rem; margin:.55rem 0 0; color:#475569; font-size:.65rem; }
.cd-attention-diagnosis > i { margin-top:.12rem; color:var(--cd-primary); }
.cd-attention-diagnosis span { display:grid; gap:.12rem; }
.cd-attention-details { margin-top:.65rem; border-top:1px solid var(--cd-border); }
.cd-attention-details summary { display:flex; align-items:center; gap:.4rem; padding:.65rem 0 0; color:var(--cd-primary-dark); cursor:pointer; font-size:.64rem; font-weight:800; list-style:none; }
.cd-attention-details summary span { margin-left:auto; color:var(--cd-ink-soft); font-size:.56rem; }
.cd-attention-measurements { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.4rem; padding-top:.6rem; }
.cd-attention-measurements div { display:grid; padding:.55rem .65rem; border:1px solid var(--cd-border); border-radius:9px; background:#fbfdfd; }
.cd-attention-measurements strong { font-size:.62rem; }
.cd-attention-measurements span,.cd-attention-measurements small { color:var(--cd-ink-soft); font-size:.57rem; }
.cd-history-empty { margin-top:.5rem; }

@media (max-width:650px) {
  .cd-patient-form-grid { grid-template-columns:1fr; }
  .cd-patient-form-full { grid-column:auto; }
  .cd-patient-form-card { padding:1rem; }
  .cd-patient-form-actions { align-items:stretch; flex-direction:column-reverse; }
  .cd-patient-form-actions .btn { width:100%; }
  .cd-team-heading { align-items:flex-start; flex-direction:column; }
  .cd-team-heading .btn { width:100%; }
  .cd-team-grid,.cd-specialist-form-grid { grid-template-columns:1fr; }
  .cd-team-empty { grid-column:auto; }
}

@media (max-width:850px) {
  .cd-patient-data-layout { grid-template-columns:1fr; }
  .cd-patient-detail-actions { width:100%; }
  .cd-patient-detail-actions .btn { flex:1; }
}

@media (max-width:520px) {
  .cd-patient-data-grid { grid-template-columns:1fr; }
  .cd-patient-data-grid .full { grid-column:auto; }
  .cd-patient-data-grid > div { border-bottom:1px solid #edf1f3!important; }
  .cd-patient-data-grid > div:last-child { border-bottom:0!important; }
  .cd-clinical-history-list article { grid-template-columns:1fr; }
  .cd-clinical-history-date { display:flex; align-items:center; justify-content:center; gap:.35rem; border-right:0; border-bottom:1px solid #d9eeeb; }
  .cd-clinical-history-title { flex-direction:column; gap:.3rem; }
  .cd-history-heading { align-items:stretch; flex-direction:column; }
  .cd-history-summary { grid-template-columns:repeat(2,1fr); }
  .cd-history-summary div:nth-child(3) { border-left:0; border-top:1px solid var(--cd-border); }
  .cd-history-summary div:nth-child(4) { border-top:1px solid var(--cd-border); }
  .cd-attention-card { grid-template-columns:1fr; }
  .cd-attention-date { display:flex; align-items:center; justify-content:flex-start; gap:.35rem; border-right:0; border-bottom:1px solid #d9eeeb; border-radius:16px 16px 0 0; }
  .cd-attention-measurements { grid-template-columns:1fr; }
}
.cd-page-heading p { margin:0; color:var(--cd-ink-soft); }
.cd-page-eyebrow { color:var(--cd-primary); font-size:.76rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.cd-page-icon { display:grid; place-items:center; width:54px; height:54px; flex:0 0 54px; border-radius:15px; color:#fff; background:linear-gradient(135deg,var(--cd-primary-light),var(--cd-primary)); box-shadow:0 7px 18px rgba(15,118,110,.22); }

.cd-wizard-progress { display:grid; grid-template-columns:repeat(4,1fr); gap:.65rem; max-width:920px; margin-bottom:1.25rem; }
.cd-wizard-step { display:flex; align-items:center; gap:.6rem; width:100%; padding:.75rem .9rem; border:1px solid var(--cd-border); border-radius:12px; color:var(--cd-ink-soft); background:#fff; font:600 .85rem/1.2 inherit; text-align:left; transition:border-color .18s ease,background .18s ease,transform .18s ease,box-shadow .18s ease; }
.cd-wizard-step:disabled { opacity:1; }
.cd-wizard-step.available,.cd-wizard-step.complete { cursor:pointer; }
.cd-wizard-step.available:hover,.cd-wizard-step.complete:hover { border-color:#63d5c5; background:#f2fdfa; transform:translateY(-1px); box-shadow:0 5px 14px rgba(16,113,104,.08); }
.cd-wizard-step.locked { color:#9ca9b9; background:#f8fafb; }
.cd-wizard-progress b { display:grid; place-items:center; width:28px; height:28px; flex:0 0 28px; border-radius:9px; color:var(--cd-ink-soft); background:#eef2f4; font-size:.75rem; }
.cd-wizard-step.active { color:var(--cd-primary-dark); border-color:#99e7dc; background:#edfcf9; }
.cd-wizard-step.active b,.cd-wizard-step.complete b { color:#fff; background:var(--cd-primary); }
.cd-wizard-step.complete { color:var(--cd-primary-dark); }

.cd-wizard-card { max-width:920px; padding:clamp(1.25rem,3vw,2rem); border:1px solid var(--cd-border); border-radius:18px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-step-heading { display:flex; align-items:center; gap:.85rem; margin-bottom:1.5rem; }
.cd-step-heading > div:first-child { display:grid; place-items:center; width:42px; height:42px; flex:0 0 42px; border-radius:12px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-step-heading h2 { margin:0 0 .2rem; font-size:1.25rem; font-weight:700; }
.cd-step-heading p { margin:0; color:var(--cd-ink-soft); font-size:.88rem; }
.cd-step-heading h2 small { display:inline-flex; margin-left:.35rem; padding:.18rem .42rem; border-radius:999px; color:#475569; background:#e9eef3; font-size:.58rem; font-weight:800; vertical-align:middle; }
.cd-clinical-optional-note { display:flex; align-items:flex-start; gap:.65rem; margin-bottom:.85rem; padding:.75rem .85rem; border:1px solid #b8e7e1; border-radius:12px; color:var(--cd-primary-dark); background:#f0fcfa; }
.cd-clinical-optional-note > i { margin-top:.1rem; color:var(--cd-primary); }
.cd-clinical-optional-note div { display:grid; gap:.1rem; }
.cd-clinical-optional-note strong { font-size:.7rem; }
.cd-clinical-optional-note span { color:var(--cd-ink-soft); font-size:.62rem; }
.cd-wizard-actions { display:flex; justify-content:flex-end; gap:.7rem; padding-top:1.4rem; margin-top:1.4rem; border-top:1px solid var(--cd-border); }

.cd-wizard-card.cd-teeth-step { max-width:1200px; }
.cd-treatment-odontogram { padding:1rem; border:1px solid var(--cd-border); border-radius:15px; background:#fbfdfd; }
.cd-treatment-arch-scroll { overflow-x:auto; padding:.25rem 0 .5rem; scrollbar-width:thin; scrollbar-color:#b7d5d1 transparent; }
.cd-treatment-arch { display:grid; grid-template-columns:repeat(16,minmax(0,38px)); gap:.12rem; justify-content:center; min-width:640px; }
.cd-treatment-tooth { position:relative; min-width:0; }
.cd-treatment-tooth-input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.cd-treatment-tooth-figure { position:relative; display:flex; flex-direction:column; align-items:center; gap:.12rem; padding:.22rem .1rem; border:1.5px solid transparent; border-radius:10px; transition:background-color .15s ease,border-color .15s ease; }
.cd-treatment-tooth-input:checked + .cd-treatment-tooth-figure { border-color:var(--cd-primary); background:#f0fdfa; }
.cd-treatment-tooth-number { display:grid; place-items:center; min-width:20px; height:16px; padding:0 .22rem; border:0; border-radius:5px; color:var(--cd-ink-soft); background:#f1f5f9; font-size:.55rem; font-weight:800; cursor:pointer; transition:color .15s ease,background-color .15s ease; }
.cd-treatment-tooth-number:hover { color:var(--cd-primary-dark); background:#ccfbf1; }
.cd-treatment-tooth-number:focus-visible { outline:2px solid var(--cd-primary); outline-offset:1px; }
.cd-treatment-tooth-input:checked + .cd-treatment-tooth-figure .cd-treatment-tooth-number { color:#fff; background:var(--cd-primary-dark); }

/* Esquema odontológico: raíces + corona con sus cinco caras */
.cd-tooth-glyph { display:block; width:100%; height:auto; overflow:visible; }
.cd-treatment-lower .cd-tooth-glyph { transform:scaleY(-1); }
.cd-tooth-root { fill:#fff; stroke:#94a3b8; stroke-width:1.5; stroke-linejoin:round; transition:fill .15s ease,stroke .15s ease; }
.cd-tooth-face { fill:#fff; stroke:#94a3b8; stroke-width:1.3; stroke-linejoin:round; cursor:pointer; transition:fill .15s ease,stroke .15s ease; }
.cd-tooth-face:hover { fill:#ccfbf1; stroke:var(--cd-primary); }
.cd-tooth-face.is-selected { fill:var(--cd-primary); stroke:var(--cd-primary-dark); }
.cd-tooth-face.is-selected:hover { fill:var(--cd-primary-dark); }
.cd-treatment-tooth-input:checked + .cd-treatment-tooth-figure .cd-tooth-root { fill:#ccfbf1; stroke:var(--cd-primary-dark); }

/* Curvatura suave de la arcada */
.cd-treatment-upper .cd-treatment-tooth:nth-child(1),.cd-treatment-upper .cd-treatment-tooth:nth-child(16) { transform:translateY(-7px); }
.cd-treatment-upper .cd-treatment-tooth:nth-child(2),.cd-treatment-upper .cd-treatment-tooth:nth-child(15) { transform:translateY(-5px); }
.cd-treatment-upper .cd-treatment-tooth:nth-child(3),.cd-treatment-upper .cd-treatment-tooth:nth-child(14) { transform:translateY(-3px); }
.cd-treatment-upper .cd-treatment-tooth:nth-child(4),.cd-treatment-upper .cd-treatment-tooth:nth-child(13) { transform:translateY(-1.5px); }
.cd-treatment-lower .cd-treatment-tooth:nth-child(1),.cd-treatment-lower .cd-treatment-tooth:nth-child(16) { transform:translateY(7px); }
.cd-treatment-lower .cd-treatment-tooth:nth-child(2),.cd-treatment-lower .cd-treatment-tooth:nth-child(15) { transform:translateY(5px); }
.cd-treatment-lower .cd-treatment-tooth:nth-child(3),.cd-treatment-lower .cd-treatment-tooth:nth-child(14) { transform:translateY(3px); }
.cd-treatment-lower .cd-treatment-tooth:nth-child(4),.cd-treatment-lower .cd-treatment-tooth:nth-child(13) { transform:translateY(1.5px); }
.cd-treatment-arch-label { display:flex; align-items:center; gap:.7rem; margin:.35rem 0; color:var(--cd-ink-soft); font-size:.62rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.cd-treatment-arch-label i { flex:1; height:1px; background:var(--cd-border); }
.cd-treatment-midline { display:flex; align-items:center; gap:.6rem; margin:.55rem 0; color:#94a3b8; font-size:.58rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.cd-treatment-midline::before,.cd-treatment-midline::after { content:""; flex:1; border-top:1px dashed #cbd5e1; }
.cd-treatment-tooth-hint { margin:.8rem 0 0; color:var(--cd-ink-soft); font-size:.68rem; text-align:center; }
.cd-treatment-tooth-hint i { margin-right:.25rem; color:var(--cd-primary); }

.cd-odontometry-panel { margin-top:1rem; padding:1rem; border:1px solid #bfdbfe; border-radius:15px; background:#f8fbff; }
.cd-odontometry-panel > header { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding-bottom:.85rem; border-bottom:1px solid #dbeafe; }
.cd-odontometry-panel > header > div { display:flex; align-items:center; gap:.75rem; }
.cd-odontometry-panel > header > div > span { display:grid; place-items:center; width:40px; height:40px; flex:0 0 40px; border-radius:11px; color:#1d4ed8; background:#dbeafe; }
.cd-odontometry-panel header small { color:#2563eb; font-size:.6rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.cd-odontometry-panel header h2 { margin:.1rem 0; font-size:1rem; font-weight:800; }
.cd-odontometry-panel header p { margin:0; color:var(--cd-ink-soft); font-size:.68rem; }
.cd-odontometry-panel header > strong { padding:.35rem .6rem; border-radius:999px; color:#1e40af; background:#dbeafe; font-size:.64rem; white-space:nowrap; }
.cd-odontometry-empty { display:grid; place-items:center; min-height:130px; color:#94a3b8; text-align:center; }
.cd-odontometry-empty[hidden] { display:none; }
.cd-odontometry-empty i { margin-bottom:.35rem; font-size:1.5rem; }
.cd-odontometry-empty p { margin:0; font-size:.72rem; }
.cd-odontometry-cards { display:grid; gap:.7rem; padding-top:.75rem; }
.cd-odontometry-card { padding:.85rem; border:1px solid #dbeafe; border-radius:12px; background:#fff; }
.cd-odontometry-card-head { display:flex; align-items:center; justify-content:space-between; gap:.7rem; margin-bottom:.7rem; }
.cd-odontometry-card-head > div { display:flex; align-items:center; gap:.55rem; }
.cd-odontometry-card-head > div > span { display:grid; place-items:center; width:31px; height:31px; border-radius:9px; color:#1e40af; background:#dbeafe; font-size:.68rem; font-weight:800; }
.cd-odontometry-card-head h3 { margin:0; font-size:.78rem; font-weight:800; }
.cd-odontometry-card-head p { margin:.05rem 0 0; color:var(--cd-ink-soft); font-size:.6rem; }
.cd-odontometry-card-head button { display:inline-flex; align-items:center; gap:.3rem; padding:.4rem .55rem; border:1px solid #bfdbfe; border-radius:8px; color:#1d4ed8; background:#eff6ff; font-size:.62rem; font-weight:800; }
.cd-odontometry-rows { display:grid; gap:.55rem; }
.cd-odontometry-row { display:grid; grid-template-columns:minmax(100px,.8fr) minmax(105px,.75fr) minmax(110px,.8fr) minmax(160px,1.35fr) 30px; align-items:end; gap:.5rem; padding:.6rem; border-radius:10px; background:#f8fafc; }
.cd-odontometry-row label { display:block; margin-bottom:.28rem; color:var(--cd-ink-soft); font-size:.58rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.cd-odontometry-row .form-control,.cd-odontometry-row .form-select { min-height:38px; padding:.45rem .55rem; border-radius:8px; font-size:.7rem; }
.cd-mm-input { position:relative; }
.cd-mm-input .form-control { padding-right:2rem; }
.cd-mm-input span { position:absolute; right:.55rem; top:50%; transform:translateY(-50%); color:#94a3b8; font-size:.6rem; font-weight:800; pointer-events:none; }
.cd-remove-canal { display:grid; place-items:center; width:30px; height:30px; margin-bottom:.25rem; border:0; border-radius:8px; color:#be123c; background:#fff1f2; }
.cd-remove-canal:hover { background:#ffe4e6; }

.cd-clinical-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.8rem; }
.cd-clinical-section { padding:1rem; border:1px solid var(--cd-border); border-radius:14px; background:#fbfdfd; }
.cd-clinical-section.full { grid-column:1/-1; }
.cd-clinical-section > header,.cd-clinical-section > summary { display:flex; align-items:center; gap:.65rem; margin-bottom:.85rem; padding-bottom:.7rem; border-bottom:1px solid #eaf0f1; }
.cd-clinical-section > summary { cursor:pointer; list-style:none; user-select:none; }
.cd-clinical-section > summary::-webkit-details-marker { display:none; }
.cd-clinical-section:not([open]) > summary { margin-bottom:0; padding-bottom:0; border-bottom:0; }
.cd-clinical-section > header > span,.cd-clinical-section > summary > span { display:grid; place-items:center; width:30px; height:30px; flex:0 0 30px; border-radius:9px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-size:.68rem; font-weight:800; }
.cd-clinical-section > header h3,.cd-clinical-section > summary h3 { margin:0; font-size:.82rem; font-weight:800; }
.cd-clinical-section > header p,.cd-clinical-section > summary p { margin:.08rem 0 0; color:var(--cd-ink-soft); font-size:.62rem; }
.cd-clinical-caret { margin-left:auto; color:var(--cd-ink-soft); font-size:.7rem; transition:transform .18s ease; }
.cd-clinical-section[open] > summary .cd-clinical-caret { transform:rotate(180deg); }
.cd-clinical-section > summary:hover .cd-clinical-caret { color:var(--cd-primary-dark); }
.cd-clinical-fields { display:grid; gap:.7rem; }
.cd-clinical-fields.two { grid-template-columns:repeat(2,minmax(0,1fr)); }
.cd-clinical-fields.three { grid-template-columns:.65fr 1.2fr 1.2fr; margin-top:.8rem; }
.cd-clinical-fields.diagnosis { grid-template-columns:1.4fr .45fr .55fr; }
.cd-clinical-fields.diagnosis > label:nth-child(n+4) { grid-column:span 1; }
.cd-clinical-field { position:relative; display:block; margin:0; }
.cd-clinical-field.mt { margin-top:.8rem; }
.cd-clinical-field > span { display:block; margin-bottom:.32rem; color:var(--cd-ink-soft); font-size:.59rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.cd-clinical-field .form-control,.cd-clinical-field .form-select { min-height:40px; border-color:#dbe4ea; border-radius:9px; font-size:.7rem; }
.cd-clinical-field textarea.form-control { min-height:72px; resize:vertical; }
.cd-clinical-field .form-control:focus,.cd-clinical-field .form-select:focus { border-color:#5eead4; box-shadow:0 0 0 3px rgba(20,184,166,.1); }
.cd-clinical-field > small { position:absolute; right:.55rem; bottom:.62rem; color:#94a3b8; font-size:.55rem; font-weight:700; pointer-events:none; }
.cd-clinical-field > small + .errorlist { position:static; }
.cd-clinical-field .errorlist,.cd-clinical-section > .errorlist { margin:.25rem 0 0; padding:0; color:#be123c; font-size:.58rem; list-style:none; }
.cd-clinical-checks { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:.45rem; }
.cd-clinical-checks.compact { grid-template-columns:repeat(3,minmax(0,1fr)); }
.cd-clinical-checks label { position:relative; display:flex; align-items:center; min-height:39px; margin:0; cursor:pointer; }
.cd-clinical-checks input { position:absolute; width:1px; height:1px; opacity:0; }
.cd-clinical-checks label > span { display:flex; align-items:center; width:100%; min-height:39px; padding:.48rem .55rem; border:1px solid #dbe4ea; border-radius:9px; color:var(--cd-ink-soft); background:#fff; font-size:.6rem; font-weight:700; transition:border-color .15s ease,background-color .15s ease,color .15s ease; }
.cd-clinical-checks label > span::before { content:""; width:15px; height:15px; flex:0 0 15px; margin-right:.4rem; border:1.5px solid #cbd5e1; border-radius:5px; background:#fff; box-shadow:inset 0 0 0 3px #fff; }
.cd-clinical-checks input:checked + span { color:var(--cd-primary-dark); border-color:#5eead4; background:#ecfdf9; }
.cd-clinical-checks input:checked + span::before { border-color:var(--cd-primary); background:var(--cd-primary); }
.cd-vital-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.65rem; }

@media (max-width:600px) {
  .cd-wizard-progress { gap:.35rem; }
  .cd-wizard-step { justify-content:center; padding:.6rem .35rem; font-size:.72rem; }
  .cd-wizard-progress b { display:none; }
  .cd-treatment-odontogram { padding:.7rem; }
  .cd-odontometry-panel > header { align-items:flex-start; flex-direction:column; }
  .cd-odontometry-row { grid-template-columns:1fr; }
  .cd-remove-canal { width:100%; margin:0; }
  .cd-wizard-actions .btn { flex:1; }
  .cd-clinical-form-grid,.cd-clinical-fields.two,.cd-clinical-fields.three,.cd-clinical-fields.diagnosis,.cd-vital-grid { grid-template-columns:1fr; }
  .cd-clinical-section.full,.cd-clinical-fields.diagnosis > label:nth-child(n+4) { grid-column:auto; }
  .cd-clinical-checks,.cd-clinical-checks.compact { grid-template-columns:1fr; }
}

@media (min-width:601px) and (max-width:980px) {
  .cd-odontometry-row { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .cd-remove-canal { grid-column:2; justify-self:end; }
  .cd-clinical-checks { grid-template-columns:repeat(2,minmax(0,1fr)); }
}

/* ---------- Directorio de pacientes ---------- */
.cd-patients-page { display:grid; gap:1.15rem; }
.cd-patients-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; }
.cd-patients-heading > div > span { color:var(--cd-primary); font-size:.72rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.cd-patients-heading h1 { margin:.15rem 0 .25rem; font-size:1.8rem; font-weight:800; }
.cd-patients-heading p { margin:0; color:var(--cd-ink-soft); font-size:.86rem; }
.cd-patient-list-metrics { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.8rem; }
.cd-patient-list-metrics article { display:flex; align-items:center; gap:.8rem; padding:1rem; border:1px solid var(--cd-border); border-radius:14px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-patient-list-metrics article > span { display:grid; place-items:center; width:42px; height:42px; flex:0 0 42px; border-radius:12px; }
.cd-patient-list-metrics article > span.teal { color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-patient-list-metrics article > span.amber { color:#b45309; background:#fef3c7; }
.cd-patient-list-metrics article > span.violet { color:#6d28d9; background:#ede9fe; }
.cd-patient-list-metrics small { display:block; color:var(--cd-ink-soft); font-size:.65rem; font-weight:700; }
.cd-patient-list-metrics strong { display:block; margin:.05rem 0; font-size:1.2rem; font-weight:800; }
.cd-patient-list-metrics p { margin:0; color:#94a3b8; font-size:.62rem; }
.cd-patient-list-card { overflow:hidden; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-patient-list-card > header { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:1rem 1.15rem; border-bottom:1px solid var(--cd-border); }
.cd-patient-list-card > header h2 { margin:0; font-size:1rem; font-weight:800; }
.cd-patient-list-card > header p { margin:.12rem 0 0; color:var(--cd-ink-soft); font-size:.68rem; }
.cd-patient-search { display:flex; align-items:center; gap:.5rem; width:min(340px,100%); padding:.58rem .75rem; border:1px solid var(--cd-border); border-radius:10px; color:#94a3b8; background:#f8fafc; }
.cd-patient-search:focus-within { border-color:#5eead4; box-shadow:0 0 0 3px rgba(20,184,166,.1); }
.cd-patient-search input { width:100%; border:0; outline:0; color:var(--cd-ink); background:transparent; font-size:.72rem; }
.cd-patient-list-table-wrap { overflow-x:auto; }
.cd-patient-list-table { width:100%; min-width:1080px; border-collapse:collapse; }
.cd-patient-list-table th { padding:.72rem 1rem; color:var(--cd-ink-soft); background:#f8fafc; font-size:.62rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.cd-patient-list-table td { padding:.85rem 1rem; border-top:1px solid #eef2f5; vertical-align:middle; }
.cd-patient-list-table tbody tr { transition:background-color .15s ease; }
.cd-patient-list-table tbody tr:hover { background:#fbfefd; }
.cd-patient-list-table td > small,.cd-patient-list-table td > strong { display:block; }
.cd-patient-list-table td > small { margin-top:.28rem; color:var(--cd-ink-soft); font-size:.62rem; }
.cd-patient-list-person { display:flex; align-items:center; gap:.65rem; min-width:205px; color:inherit; text-decoration:none; }
.cd-patient-list-person > span { display:grid; place-items:center; width:38px; height:38px; flex:0 0 38px; border-radius:11px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-size:.68rem; font-weight:800; }
.cd-patient-list-person strong { display:block; color:var(--cd-ink); font-size:.75rem; font-weight:800; }
.cd-patient-list-person small { display:block; margin-top:.12rem; color:var(--cd-ink-soft); font-size:.59rem; }
.cd-patient-contact { font-size:.7rem; }
.cd-patient-next-treatment { display:block; max-width:210px; margin-top:.3rem; overflow:hidden; color:var(--cd-ink-soft); font-size:.6rem; text-overflow:ellipsis; white-space:nowrap; }
.cd-list-status { display:inline-flex; align-items:center; gap:.28rem; padding:.25rem .48rem; border-radius:999px; font-size:.58rem; font-weight:800; white-space:nowrap; }
.cd-list-status i { width:6px; height:6px; border-radius:50%; background:currentColor; }
.cd-list-status.success { color:#047857; background:#d1fae5; }
.cd-list-status.warning { color:#b45309; background:#fef3c7; }
.cd-list-status.danger { color:#be123c; background:#ffe4e6; }
.cd-patient-account { display:flex; align-items:center; gap:.45rem; }
.cd-patient-account > strong { font-size:.78rem; font-weight:800; }
.cd-patient-list-actions { display:flex; align-items:center; gap:.4rem; }
.cd-patient-list-actions > .btn { padding:.45rem .65rem; font-size:.65rem; white-space:nowrap; }
.cd-patient-list-actions .dropdown .btn { padding:.45rem .6rem; font-size:.65rem; }
.cd-patient-list-empty { padding:2.5rem 1rem; color:var(--cd-ink-soft); text-align:center; }
.cd-patient-list-empty i { margin-bottom:.55rem; color:var(--cd-primary); font-size:1.5rem; }
.cd-patient-list-empty h3 { margin:0 0 .25rem; font-size:.9rem; }
.cd-patient-list-empty p { margin:0; font-size:.7rem; }
.cd-patient-filter-empty { padding:1.25rem; color:var(--cd-ink-soft); text-align:center; font-size:.72rem; }
.cd-patient-filter-empty[hidden] { display:none; }

@media (max-width:850px) {
  .cd-patients-heading,.cd-patient-list-card > header { align-items:stretch; flex-direction:column; }
  .cd-patients-heading .btn { align-self:flex-start; }
  .cd-patient-list-metrics { grid-template-columns:1fr; }
  .cd-patient-search { width:100%; }
}

/* ---------- Expediente y odontograma ---------- */
.cd-patient-record { border:1px solid var(--cd-border); border-radius:20px; overflow:hidden; background:#fff; box-shadow:var(--cd-shadow-lg); }
.cd-patient-header { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:1.25rem 1.5rem; color:#fff; background:linear-gradient(115deg,var(--cd-primary-dark),var(--cd-primary)); }
.cd-patient-identity { display:flex; align-items:center; gap:1rem; min-width:0; }
.cd-patient-avatar { display:grid; place-items:center; width:58px; height:58px; flex:0 0 58px; border:3px solid rgba(255,255,255,.5); border-radius:50%; color:var(--cd-primary-dark); background:#fff; font-weight:800; box-shadow:0 7px 18px rgba(0,0,0,.15); }
.cd-record-label { display:block; margin-bottom:.1rem; color:#99f6e4; font-size:.7rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.cd-patient-identity h1 { margin:0 0 .15rem; color:#fff; font-size:1.35rem; font-weight:800; }
.cd-patient-identity p { margin:0; color:rgba(255,255,255,.72); font-size:.8rem; }
.cd-patient-switcher { min-width:260px; }
.cd-patient-switcher label { display:block; margin-bottom:.35rem; color:rgba(255,255,255,.75); font-size:.7rem; font-weight:700; }
.cd-patient-switcher > div { display:flex; gap:.45rem; }
.cd-patient-switcher .form-select { border:0; background-color:#fff; }
.cd-patient-switcher .btn { box-shadow:none; }

.cd-record-tabs { display:flex; gap:.2rem; overflow-x:auto; padding:0 1.25rem; border-bottom:1px solid var(--cd-border); background:#fff; }
.cd-record-tabs a,.cd-record-tabs span { display:flex; align-items:center; gap:.42rem; padding:.9rem 1rem .75rem; border-bottom:3px solid transparent; color:var(--cd-ink-soft); text-decoration:none; white-space:nowrap; font-size:.78rem; font-weight:600; }
.cd-record-tabs a:hover { color:var(--cd-primary-dark); }
.cd-record-tabs .active { color:var(--cd-primary-dark); border-bottom-color:var(--cd-primary); background:#f5fcfa; }

.cd-record-layout { display:grid; grid-template-columns:270px minmax(0,1fr); min-height:610px; }
.cd-record-sidebar { padding:1.35rem; border-right:1px solid var(--cd-border); background:#f8fafc; }
.cd-summary-title { display:flex; align-items:center; gap:.7rem; padding-bottom:1rem; border-bottom:1px solid var(--cd-border); }
.cd-summary-title > span { display:grid; place-items:center; width:38px; height:38px; border-radius:11px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-summary-title h2 { margin:0 0 .1rem; font-size:.98rem; font-weight:700; }
.cd-summary-title p { margin:0; color:var(--cd-ink-soft); font-size:.7rem; }
.cd-patient-facts { display:grid; gap:0; margin:1rem 0; }
.cd-patient-facts > div { padding:.7rem 0; border-bottom:1px solid #edf1f3; }
.cd-patient-facts dt { margin-bottom:.25rem; color:var(--cd-ink-soft); font-size:.66rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
.cd-patient-facts dd { margin:0; color:var(--cd-ink); font-size:.82rem; font-weight:600; overflow-wrap:anywhere; }
.cd-clinical-metrics { display:grid; gap:.55rem; padding:1rem; border:1px solid #bdebe4; border-radius:12px; background:#edfcf9; }
.cd-clinical-metrics div { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.cd-clinical-metrics span { color:var(--cd-ink-soft); font-size:.72rem; }
.cd-clinical-metrics strong { color:var(--cd-primary-dark); font-size:.88rem; }
.cd-treatment-preview { margin-top:1.25rem; }
.cd-treatment-preview h3 { margin-bottom:.7rem; font-size:.8rem; font-weight:700; }
.cd-treatment-preview > div { display:flex; justify-content:space-between; gap:.5rem; padding:.55rem 0; border-bottom:1px solid var(--cd-border); font-size:.72rem; }
.cd-treatment-preview > div span { color:var(--cd-ink); font-weight:600; }
.cd-treatment-preview > div small,.cd-treatment-preview > p { color:var(--cd-ink-soft); font-size:.68rem; }
.cd-empty-patient { display:grid; justify-items:center; gap:.8rem; padding:2rem .5rem; text-align:center; color:var(--cd-ink-soft); }
.cd-empty-patient > i { font-size:2rem; color:var(--cd-primary); }

.cd-odontogram-panel { min-width:0; padding:1.35rem 1.5rem; background:#fff; }
.cd-odontogram-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; margin-bottom:1.5rem; }
.cd-section-kicker { color:var(--cd-primary); font-size:.68rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.cd-odontogram-heading h2 { margin:.15rem 0 .15rem; font-size:1.25rem; font-weight:800; }
.cd-odontogram-heading p { margin:0; color:var(--cd-ink-soft); font-size:.78rem; }
.cd-odontogram-actions { display:flex; gap:.45rem; }
.cd-odo-titulo { flex:1; min-width:0; }
.cd-odo-vistas { display:grid; }
.cd-odo-vistas > div { grid-area:1 / 1; }
.cd-odo-vistas > .is-oculto { visibility:hidden; }

.cd-arch-label { display:flex; align-items:center; gap:.75rem; margin:.4rem 0 .6rem; color:var(--cd-ink-soft); font-size:.66rem; font-weight:700; letter-spacing:.07em; text-transform:uppercase; }
.cd-arch-label i { flex:1; height:1px; background:var(--cd-border); }
.cd-dental-arch { display:grid; grid-template-columns:repeat(16,minmax(48px,1fr)); gap:.3rem; min-width:840px; }
.cd-tooth-unit { display:grid; justify-items:center; gap:.28rem; min-width:0; padding:.5rem .18rem; border:1px solid transparent; border-radius:10px; color:var(--cd-ink); background:transparent; transition:background-color .15s ease,border-color .15s ease,transform .15s ease; }
.cd-tooth-unit:hover,.cd-tooth-unit:focus { transform:translateY(-2px); border-color:var(--cd-primary-light); background:var(--cd-primary-soft); outline:none; }
.cd-tooth-number { display:grid; place-items:center; min-width:25px; height:22px; padding:0 .25rem; border-radius:7px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-size:.65rem; font-weight:700; }
.cd-tooth-image { display:grid; place-items:center; width:46px; height:62px; color:#b6c4c8; }
.cd-tooth-image img { max-width:46px; max-height:62px; object-fit:contain; filter:drop-shadow(0 2px 2px rgba(15,23,42,.1)); }
.cd-tooth-image i { font-size:2rem; }
.cd-tooth-unit small { width:100%; overflow:hidden; color:var(--cd-ink-soft); font-size:.58rem; text-overflow:ellipsis; white-space:nowrap; }
.cd-dental-upper .cd-tooth-image { align-items:end; }
.cd-dental-lower .cd-tooth-image { align-items:start; }
.cd-dental-midline { display:flex; align-items:center; justify-content:center; margin:.7rem 0; }
.cd-dental-midline::before,.cd-dental-midline::after { content:""; width:28%; height:1px; background:linear-gradient(90deg,transparent,var(--cd-border)); }
.cd-dental-midline::after { background:linear-gradient(90deg,var(--cd-border),transparent); }
.cd-dental-midline span { padding:0 .65rem; color:#94a3b8; font-size:.6rem; text-transform:uppercase; }
.cd-odontogram-panel { overflow-x:auto; }
.cd-odontogram-legend { display:flex; align-items:center; flex-wrap:wrap; gap:1rem; min-width:840px; padding-top:1rem; margin-top:1rem; border-top:1px solid var(--cd-border); color:var(--cd-ink-soft); font-size:.68rem; }
.cd-odontogram-legend > span { display:flex; align-items:center; gap:.4rem; }
.cd-odontogram-legend > span i { width:10px; height:10px; border-radius:3px; background:var(--cd-primary-soft); border:1px solid var(--cd-primary); }
.cd-odontogram-legend > span i.selected { background:var(--cd-primary); }
.cd-odontogram-legend small { margin-left:auto; }

@media (max-width:900px) {
  .cd-record-layout { grid-template-columns:1fr; }
  .cd-record-sidebar { border-right:0; border-bottom:1px solid var(--cd-border); }
  .cd-patient-facts { grid-template-columns:repeat(3,1fr); gap:1rem; }
  .cd-patient-facts > div { border-bottom:0; }
}

@media (max-width:650px) {
  .cd-patient-header { align-items:stretch; flex-direction:column; }
  .cd-patient-switcher { min-width:0; }
  .cd-record-tabs { padding:0 .5rem; }
  .cd-patient-facts { grid-template-columns:1fr; gap:0; }
  .cd-patient-facts > div { border-bottom:1px solid var(--cd-border); }
  .cd-odontogram-heading { flex-direction:column; }
  .cd-odontogram-actions { width:100%; }
  .cd-odontogram-actions .btn:first-child { flex:1; }
}

/* ---------- Panel del propietario ---------- */
.cd-owner-dashboard { display:grid; gap:1.2rem; }
.cd-owner-hero { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:1.6rem 1.75rem; border-radius:20px; color:#fff; background:linear-gradient(115deg,var(--cd-primary-dark),var(--cd-primary)); box-shadow:0 12px 30px rgba(15,118,110,.2); }
.cd-owner-kicker { display:flex; align-items:center; gap:.45rem; margin-bottom:.45rem; color:#99f6e4; font-size:.7rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.cd-owner-hero h1 { margin:0 0 .35rem; font-size:1.8rem; font-weight:700; }
.cd-owner-hero p { margin:0; color:rgba(255,255,255,.72); font-size:.86rem; }
.cd-owner-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:.55rem; }
.cd-owner-actions .btn-light { color:var(--cd-primary-dark); }

.cd-care-flow { padding:.9rem 1rem; border:1px solid var(--cd-border); border-radius:18px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-care-flow-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-bottom:.65rem; }
.cd-care-flow-head > div:first-child > span { color:var(--cd-primary); font-size:.66rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.cd-care-flow-head h2 { margin:.15rem 0; font-size:1rem; font-weight:800; }
.cd-care-flow-head p { margin:0; color:var(--cd-ink-soft); font-size:.78rem; }
.cd-care-flow-patient { display:flex; align-items:center; gap:.5rem; padding:.45rem .65rem; border-radius:12px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-care-flow-patient > i { display:grid; place-items:center; width:30px; height:30px; border-radius:9px; color:#fff; background:var(--cd-primary); }
.cd-care-flow-patient span { color:var(--cd-ink-soft); font-size:.65rem; }
.cd-care-flow-patient strong { display:block; color:var(--cd-ink); font-size:.76rem; }
.cd-care-flow-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.55rem; }
.cd-care-flow-grid article { position:relative; display:flex; flex-direction:column; min-height:0; padding:.7rem .8rem; overflow:hidden; border:1px solid var(--cd-border); border-radius:14px; background:#fbfdfd; transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease; }
.cd-care-flow-grid article:not(.is-locked):hover { transform:translateY(-2px); border-color:#99e7dc; box-shadow:0 10px 24px rgba(15,118,110,.08); }
.cd-care-flow-grid article.is-current { border-color:#5eead4; background:linear-gradient(145deg,#f0fdfa,#fff); }
.cd-care-flow-grid article.is-complete .cd-care-flow-number { color:#fff; background:var(--cd-primary); }
.cd-care-flow-grid article.is-locked { opacity:.58; background:#f8fafc; }
.cd-care-flow-number { position:absolute; top:.55rem; right:.55rem; display:grid; place-items:center; width:21px; height:21px; border-radius:8px; color:var(--cd-ink-soft); background:#e9eff1; font-size:.68rem; font-weight:800; }
.cd-care-flow-icon { display:grid; place-items:center; width:30px; height:30px; margin-bottom:.45rem; border-radius:9px; font-size:.8rem; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-care-flow-grid small { color:var(--cd-primary); font-size:.62rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.cd-care-flow-grid h3 { margin:.15rem 0 .2rem; font-size:.8rem; font-weight:800; }
.cd-care-flow-grid p { margin:0 0 .5rem; color:var(--cd-ink-soft); font-size:.66rem; line-height:1.4; }
.cd-care-flow-grid a,.cd-care-flow-disabled { display:flex; align-items:center; gap:.35rem; margin-top:auto; color:var(--cd-primary-dark); text-decoration:none; font-size:.7rem; font-weight:800; }
.cd-care-flow-grid a i { transition:transform .2s ease; }
.cd-care-flow-grid a:hover i { transform:translateX(3px); }
.cd-care-flow-disabled { color:#94a3b8; }

.cd-owner-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.85rem; }
.cd-owner-metrics article { display:flex; align-items:flex-start; gap:.8rem; min-width:0; padding:1.15rem; border:1px solid var(--cd-border); border-radius:15px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-owner-metric-icon { display:grid; place-items:center; width:40px; height:40px; flex:0 0 40px; border-radius:11px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-owner-metric-icon.sky { color:#0369a1; background:#e0f2fe; }
.cd-owner-metric-icon.violet { color:#6d28d9; background:#ede9fe; }
.cd-owner-metric-icon.amber { color:#b45309; background:#fef3c7; }
.cd-owner-metrics small { display:block; margin-bottom:.18rem; color:var(--cd-ink-soft); font-size:.67rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.cd-owner-metrics strong { display:block; overflow:hidden; color:var(--cd-ink); font-size:1.35rem; line-height:1.2; text-overflow:ellipsis; white-space:nowrap; }
.cd-owner-metrics p { margin:.25rem 0 0; color:#94a3b8; font-size:.67rem; }

.cd-owner-grid { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(280px,.75fr); gap:1rem; }
.cd-owner-section { padding:1.25rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-owner-section-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding-bottom:1rem; border-bottom:1px solid var(--cd-border); }
.cd-owner-section-head span { display:block; margin-bottom:.2rem; color:var(--cd-primary); font-size:.65rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.cd-owner-section-head h2 { margin:0; font-size:1rem; font-weight:700; }
.cd-owner-section-head > a { color:var(--cd-primary-dark); text-decoration:none; font-size:.72rem; font-weight:700; }

.cd-agenda-list article { display:grid; grid-template-columns:48px minmax(0,1fr) auto; align-items:center; gap:.8rem; padding:.8rem 0; border-bottom:1px solid #edf1f3; }
.cd-agenda-list article:last-child { border-bottom:0; }
.cd-agenda-list time { display:grid; place-items:center; padding:.4rem; border-radius:10px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-agenda-list time strong { font-size:1rem; line-height:1; }
.cd-agenda-list time span { margin-top:.2rem; font-size:.58rem; font-weight:700; text-transform:uppercase; }
.cd-agenda-list h3 { margin:0 0 .2rem; font-size:.84rem; font-weight:700; }
.cd-agenda-list p { margin:0; color:var(--cd-ink-soft); font-size:.7rem; }
.cd-status-dot { padding:.3rem .55rem; border-radius:999px; color:#92400e; background:#fef3c7; font-size:.62rem; font-weight:700; }
.cd-status-dot.status-ap { color:#047857; background:#d1fae5; }
.cd-status-dot.status-cd { color:#1d4ed8; background:#dbeafe; }
.cd-owner-empty { display:grid; place-items:center; gap:.5rem; min-height:150px; color:#94a3b8; text-align:center; }
.cd-owner-empty i { font-size:1.6rem; }
.cd-owner-empty p { margin:0; font-size:.75rem; }

.cd-owner-finance { display:flex; flex-direction:column; }
.cd-collection-ring { position:relative; display:grid; place-items:center; width:132px; height:132px; margin:1.4rem auto; border-radius:50%; background:conic-gradient(var(--cd-primary) calc(var(--collection) * 1%),#e7efee 0); }
.cd-collection-ring::before { content:""; position:absolute; width:98px; height:98px; border-radius:50%; background:#fff; }
.cd-collection-ring > div { position:relative; z-index:1; display:grid; text-align:center; }
.cd-collection-ring strong { color:var(--cd-ink); font-size:1.3rem; }
.cd-collection-ring span { color:var(--cd-ink-soft); font-size:.65rem; }
.cd-finance-breakdown { display:grid; gap:.65rem; margin-bottom:1rem; }
.cd-finance-breakdown div { display:flex; align-items:center; justify-content:space-between; gap:.8rem; font-size:.72rem; }
.cd-finance-breakdown span { display:flex; align-items:center; gap:.4rem; color:var(--cd-ink-soft); }
.cd-finance-breakdown i { width:9px; height:9px; border-radius:3px; background:var(--cd-primary); }
.cd-finance-breakdown i.pending { background:#d9e3e2; }

.cd-recent-patients > div { display:grid; grid-template-columns:38px minmax(0,1fr) 28px; align-items:center; gap:.7rem; padding:.65rem 0; border-bottom:1px solid #edf1f3; }
.cd-recent-patients > div:last-child { border-bottom:0; }
.cd-recent-patients > div > span { display:grid; place-items:center; width:38px; height:38px; border-radius:50%; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-size:.7rem; font-weight:800; }
.cd-recent-patients strong,.cd-recent-patients small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cd-recent-patients strong { font-size:.78rem; }
.cd-recent-patients small { margin-top:.15rem; color:var(--cd-ink-soft); font-size:.65rem; }
.cd-recent-patients a { display:grid; place-items:center; width:28px; height:28px; border-radius:8px; color:var(--cd-primary-dark); text-decoration:none; background:#f4f8f7; }

.cd-owner-tool-list { display:grid; }
.cd-owner-tool-list a { display:grid; grid-template-columns:34px minmax(0,1fr) auto; align-items:center; gap:.7rem; padding:.75rem 0; border-bottom:1px solid #edf1f3; color:var(--cd-ink); text-decoration:none; }
.cd-owner-tool-list a:last-child { border-bottom:0; }
.cd-owner-tool-list a > i:first-child { display:grid; place-items:center; width:34px; height:34px; border-radius:9px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-owner-tool-list a > i:last-child { color:#94a3b8; font-size:.65rem; }
.cd-owner-tool-list strong,.cd-owner-tool-list small { display:block; }
.cd-owner-tool-list strong { font-size:.76rem; }
.cd-owner-tool-list small { margin-top:.15rem; color:var(--cd-ink-soft); font-size:.63rem; }

@media (max-width:1050px) {
  .cd-care-flow-grid { grid-template-columns:repeat(2,1fr); }
  .cd-owner-metrics { grid-template-columns:repeat(2,1fr); }
}

@media (max-width:780px) {
  .cd-owner-hero { align-items:flex-start; flex-direction:column; }
  .cd-owner-actions { width:100%; justify-content:flex-start; }
  .cd-owner-actions .btn { flex:1; }
  .cd-owner-grid { grid-template-columns:1fr; }
}

@media (max-width:520px) {
  .cd-care-flow-head { align-items:flex-start; flex-direction:column; }
  .cd-care-flow-patient { width:100%; }
  .cd-care-flow-grid { grid-template-columns:1fr; }
  .cd-care-flow-grid article { min-height:0; }
  .cd-owner-metrics { grid-template-columns:1fr; }
  .cd-owner-hero { padding:1.25rem; }
  .cd-owner-actions { flex-direction:column; }
  .cd-agenda-list article { grid-template-columns:46px minmax(0,1fr); }
  .cd-status-dot { grid-column:2; justify-self:start; }
}

/* ---------- Registro de propietarios ---------- */
.cd-register-prompt { margin:1.25rem 0 0; color:var(--cd-ink-soft); text-align:center; font-size:.8rem; }
.cd-register-prompt a { color:var(--cd-primary-dark); font-weight:700; }
.cd-register-page { background:#eef5f4; }
.cd-register-errors { display:flex; gap:.9rem; padding:1rem 1.1rem; border:1px solid #fecdd3; border-radius:14px; color:#881337; background:#fff1f2; outline:none; }
.cd-register-errors-icon { display:grid; place-items:center; width:38px; height:38px; flex:0 0 38px; border-radius:11px; color:#fff; background:#e11d48; }
.cd-register-errors h3 { margin:0 0 .2rem; color:#881337; font-size:1rem; font-weight:800; }
.cd-register-errors p { margin:0 0 .35rem; font-size:.86rem; }
.cd-register-errors ul { margin:0; padding-left:1.1rem; font-size:.86rem; }
.cd-register-shell { min-height:100vh; display:grid; grid-template-columns:minmax(300px,.72fr) minmax(0,1.28fr); }
.cd-register-aside { position:sticky; top:0; height:100vh; display:flex; flex-direction:column; justify-content:space-between; overflow:hidden; padding:clamp(2rem,4vw,4.5rem); color:#fff; background:linear-gradient(150deg,#0b3e3a,#0f766e); }
.cd-register-aside::after { content:""; position:absolute; width:420px; height:420px; right:-230px; bottom:-210px; border:70px solid rgba(255,255,255,.06); border-radius:50%; }
.cd-register-brand { position:relative; display:flex; align-items:center; gap:.7rem; color:#fff; text-decoration:none; font-weight:800; }
.cd-register-brand span { display:grid; place-items:center; width:42px; height:42px; border-radius:12px; color:var(--cd-primary-dark); background:#fff; }
.cd-register-aside > div { position:relative; max-width:470px; }
.cd-register-kicker { display:block; margin-bottom:.7rem; color:#99f6e4; font-size:.7rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.cd-register-aside h1 { margin:0 0 1rem; color:#fff; font-size:clamp(2rem,3.5vw,3.8rem); font-weight:800; line-height:1.05; }
.cd-register-aside p { margin:0; color:rgba(255,255,255,.7); line-height:1.65; }
.cd-register-aside ul { position:relative; display:grid; gap:.7rem; padding:0; margin:0; list-style:none; color:rgba(255,255,255,.85); font-size:.8rem; font-weight:600; }
.cd-register-aside li i { margin-right:.5rem; color:#99f6e4; }

.cd-register-panel { padding:clamp(1.5rem,5vw,4.5rem); background:#fff; }
.cd-register-heading { max-width:760px; margin:0 auto 2rem; }
.cd-register-heading > a { color:var(--cd-primary-dark); text-decoration:none; font-size:.8rem; font-weight:700; }
.cd-register-heading > span { display:block; margin:2rem 0 .45rem; color:var(--cd-primary); font-size:.68rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.cd-register-heading h2 { margin:0 0 .45rem; font-size:1.8rem; font-weight:800; }
.cd-register-heading p { margin:0; color:var(--cd-ink-soft); }
.cd-register-form { display:grid; gap:1.1rem; max-width:760px; margin:0 auto; }
.cd-register-form fieldset { padding:1.25rem; border:1px solid var(--cd-border); border-radius:15px; background:#fbfdfd; }
.cd-register-form legend { float:none; width:auto; padding:0; margin:0 0 1rem; color:var(--cd-ink); font-size:.82rem; font-weight:700; }
.cd-register-form legend span { display:inline-grid; place-items:center; width:27px; height:27px; margin-right:.4rem; border-radius:8px; color:#fff; background:var(--cd-primary); font-size:.68rem; }
.cd-register-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.2rem 1rem; }
.cd-register-grid > div:nth-child(5) { grid-column:1/-1; }
.cd-register-full { grid-column:1/-1; }
.cd-register-form .helptext,.cd-register-form .form-text { color:#84939b; font-size:.65rem; }
.cd-register-submit { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding-top:.4rem; }
.cd-register-submit p { margin:0; color:var(--cd-ink-soft); font-size:.72rem; }
.cd-register-submit p i { color:var(--cd-primary); }
.cd-password-field { min-width:0; }
.cd-password-meter { display:grid; grid-template-columns:repeat(4,1fr); gap:.35rem; margin:-.15rem 0 .8rem; }
.cd-password-meter i { height:4px; border-radius:999px; background:#e2e8f0; transition:background-color .2s ease,transform .2s ease; }
.cd-password-meter i.is-valid { transform:scaleY(1.35); background:#10b981; }
.cd-password-rules { display:grid; gap:.42rem; padding:0; margin:0; list-style:none; }
.cd-password-rules li,.cd-password-match { display:flex; align-items:flex-start; gap:.42rem; margin:0; color:#84939b; font-size:.68rem; transition:color .2s ease; }
.cd-password-rules li i,.cd-password-match i { width:14px; margin-top:.1rem; flex:0 0 14px; }
.cd-password-rules li.is-valid,.cd-password-match.is-valid { color:#047857; font-weight:600; }
.cd-password-rules li.is-valid i,.cd-password-match.is-valid i { color:#10b981; }

@media (max-width:820px) {
  .cd-register-shell { grid-template-columns:1fr; }
  .cd-register-aside { position:relative; height:auto; min-height:290px; gap:2.5rem; padding:2rem; }
  .cd-register-aside ul { display:none; }
  .cd-register-panel { padding:2rem 1.25rem; }
}

@media (max-width:560px) {
  .cd-register-grid { grid-template-columns:1fr; }
  .cd-register-grid > div:nth-child(5),.cd-register-full { grid-column:auto; }
  .cd-register-submit { align-items:stretch; flex-direction:column; }
}

/* ---------- Superadministración de plataforma ---------- */
.cd-platform-dashboard { display:grid; gap:1.15rem; }
.cd-platform-hero { display:flex; align-items:center; justify-content:space-between; gap:1.5rem; padding:1.6rem 1.75rem; border-radius:18px; color:#fff; background:linear-gradient(115deg,#102f46,#174f65); box-shadow:0 12px 30px rgba(15,47,68,.22); }
.cd-platform-hero > div:first-child > span { display:flex; align-items:center; gap:.45rem; margin-bottom:.4rem; color:#a5d9df; font-size:.7rem; font-weight:700; letter-spacing:.1em; text-transform:uppercase; }
.cd-platform-hero h1 { margin:0 0 .3rem; color:#fff; font-size:1.8rem; font-weight:800; }
.cd-platform-hero p { margin:0; color:rgba(255,255,255,.7); font-size:.84rem; }
.cd-platform-hero > div:last-child { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:.55rem; }
.cd-platform-hero .btn-light { color:#123a4d; }

.cd-platform-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.85rem; }
.cd-platform-metrics article { display:flex; align-items:flex-start; gap:.8rem; padding:1.1rem; border:1px solid var(--cd-border); border-radius:14px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-platform-metrics article > i { display:grid; place-items:center; width:40px; height:40px; flex:0 0 40px; border-radius:10px; color:#174f65; background:#e2f1f4; }
.cd-platform-metrics span,.cd-platform-metrics strong,.cd-platform-metrics small { display:block; }
.cd-platform-metrics span { margin-bottom:.18rem; color:var(--cd-ink-soft); font-size:.65rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase; }
.cd-platform-metrics strong { color:var(--cd-ink); font-size:1.28rem; line-height:1.2; }
.cd-platform-metrics small { margin-top:.2rem; color:#94a3b8; font-size:.65rem; }

.cd-platform-section { min-width:0; padding:1.25rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-platform-section-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding-bottom:1rem; border-bottom:1px solid var(--cd-border); }
.cd-platform-section-head span { display:block; margin-bottom:.2rem; color:#19708a; font-size:.64rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.cd-platform-section-head h2 { margin:0 0 .2rem; font-size:1rem; font-weight:700; }
.cd-platform-section-head p { margin:0; color:var(--cd-ink-soft); font-size:.7rem; }
.cd-clinic-table-wrap { overflow-x:auto; }
.cd-clinic-table { width:100%; min-width:1050px; border-collapse:collapse; }
.cd-clinic-table th { padding:.75rem .65rem; border-bottom:1px solid var(--cd-border); color:var(--cd-ink-soft); font-size:.62rem; font-weight:700; letter-spacing:.06em; text-align:left; text-transform:uppercase; }
.cd-clinic-table td { padding:.85rem .65rem; border-bottom:1px solid #edf1f3; color:var(--cd-ink); font-size:.72rem; vertical-align:middle; }
.cd-clinic-table tbody tr:hover { background:#f8fbfc; }
.cd-clinic-table td > strong,.cd-clinic-table td > small { display:block; }
.cd-clinic-table td > small { margin-top:.2rem; color:var(--cd-ink-soft); font-size:.63rem; }
.cd-clinic-table td:last-child a { display:grid; place-items:center; width:28px; height:28px; border-radius:8px; color:#174f65; background:#eaf3f5; text-decoration:none; }
.cd-clinic-name { display:flex; align-items:center; gap:.65rem; }
.cd-clinic-name > span { display:grid; place-items:center; width:36px; height:36px; flex:0 0 36px; border-radius:10px; color:#fff; background:linear-gradient(135deg,#226a7f,#123c52); font-weight:800; }
.cd-clinic-name strong,.cd-clinic-name small { display:block; }
.cd-clinic-name small { margin-top:.15rem; color:var(--cd-ink-soft); font-size:.61rem; }
.cd-plan-badge { display:inline-flex; padding:.3rem .55rem; border-radius:999px; color:#155e75; background:#cffafe; font-size:.62rem; font-weight:700; }
.cd-clinic-status { display:inline-flex; align-items:center; gap:.4rem; color:#9f1239; font-size:.65rem; font-weight:700; }
.cd-clinic-status i { width:7px; height:7px; border-radius:50%; background:#fb7185; }
.cd-clinic-status.active { color:#047857; }
.cd-clinic-status.active i { background:#10b981; box-shadow:0 0 0 3px #d1fae5; }
.cd-platform-empty { display:grid; place-items:center; gap:.7rem; min-height:190px; color:#94a3b8; }
.cd-platform-empty > i { font-size:1.8rem; }
.cd-platform-empty p { margin:0; }

.cd-platform-bottom { display:grid; grid-template-columns:1fr 1fr; gap:1rem; }
.cd-platform-health { display:grid; gap:.15rem; padding-top:.65rem; }
.cd-platform-health div { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.65rem 0; border-bottom:1px solid #edf1f3; font-size:.72rem; }
.cd-platform-health div:last-child { border-bottom:0; }
.cd-platform-health span { color:var(--cd-ink-soft); }
.cd-platform-health span i { width:18px; color:#0f766e; }
.cd-platform-health strong { color:#047857; font-size:.68rem; }
.cd-platform-links { display:grid; }
.cd-platform-links a { display:grid; grid-template-columns:34px minmax(0,1fr) auto; align-items:center; gap:.7rem; padding:.7rem 0; border-bottom:1px solid #edf1f3; color:var(--cd-ink); text-decoration:none; }
.cd-platform-links a:last-child { border-bottom:0; }
.cd-platform-links a > i:first-child { display:grid; place-items:center; width:34px; height:34px; border-radius:9px; color:#174f65; background:#e2f1f4; }
.cd-platform-links a > i:last-child { color:#94a3b8; font-size:.65rem; }
.cd-platform-links strong,.cd-platform-links small { display:block; }
.cd-platform-links strong { font-size:.75rem; }
.cd-platform-links small { margin-top:.15rem; color:var(--cd-ink-soft); font-size:.62rem; }

@media (max-width:1050px) {
  .cd-platform-metrics { grid-template-columns:repeat(2,1fr); }
}

@media (max-width:750px) {
  .cd-platform-hero { align-items:flex-start; flex-direction:column; }
  .cd-platform-hero > div:last-child { width:100%; justify-content:flex-start; }
  .cd-platform-hero .btn { flex:1; }
  .cd-platform-bottom { grid-template-columns:1fr; }
}

@media (max-width:520px) {
  .cd-platform-metrics { grid-template-columns:1fr; }
  .cd-platform-hero { padding:1.25rem; }
  .cd-platform-hero > div:last-child { flex-direction:column; }
}

/* ===== Recetas medicas ===== */
.cd-prescription-page, .cd-rx-print-page { display:grid; gap:1rem; }
.cd-rx-heading h1 { margin:.15rem 0 .2rem; font-size:1.5rem; }
.cd-rx-heading p { margin:0; color:var(--cd-ink-soft); font-size:.85rem; }
.cd-rx-form { display:grid; gap:1rem; }
.cd-rx-card { padding:1.1rem 1.2rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-rx-card h2 { display:flex; align-items:center; gap:.5rem; margin:0 0 .9rem; font-size:1rem; color:var(--cd-primary-dark); }
.cd-rx-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:.8rem; }
.cd-rx-card label { display:grid; gap:.3rem; font-size:.72rem; font-weight:700; color:var(--cd-ink-soft); text-transform:uppercase; letter-spacing:.03em; }
.cd-rx-full { margin-top:.8rem; }
.cd-rx-error { font-weight:600; color:#b42318; text-transform:none; letter-spacing:0; }

.cd-rx-item { position:relative; margin-bottom:.8rem; padding:.9rem 1rem; border:1px solid #d9eeeb; border-radius:14px; background:var(--cd-primary-soft); }
.cd-rx-item.is-removed { display:none; }
.cd-rx-item-head { display:flex; align-items:center; justify-content:space-between; margin-bottom:.6rem; }
.cd-rx-number { display:grid; place-items:center; width:26px; height:26px; border-radius:50%; color:#fff; font-size:.8rem; font-weight:800; background:var(--cd-primary); }
.cd-rx-remove { border:0; border-radius:8px; padding:.25rem .5rem; color:#b42318; background:transparent; cursor:pointer; }
.cd-rx-remove:hover { background:#fee4e2; }
.cd-rx-item-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:.7rem; }
.cd-rx-item-grid .span-2 { grid-column:span 2; }
.cd-rx-delete { display:flex; align-items:center; gap:.4rem; margin-top:.6rem; font-size:.7rem; color:var(--cd-ink-soft); }
.cd-rx-actions { display:flex; justify-content:flex-end; gap:.6rem; }
.cd-rx-previous { margin:0; padding:0; list-style:none; display:grid; gap:.5rem; }
.cd-rx-previous li { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.6rem .8rem; border:1px solid var(--cd-border); border-radius:12px; }
.cd-rx-previous span { display:block; color:var(--cd-ink-soft); font-size:.8rem; }

/* Hoja imprimible */
.cd-rx-toolbar { display:flex; justify-content:space-between; gap:.6rem; }
.cd-rx-sheet { position:relative; overflow:hidden; max-width:780px; margin:0 auto; padding:2.4rem 2.6rem 2rem; border:1px solid var(--cd-border); border-radius:18px; background:#fff; box-shadow:var(--cd-shadow-lg); }
.cd-rx-sheet::after { content:""; position:absolute; inset:10px; border:1px solid #e6f2f0; border-radius:12px; pointer-events:none; }
.cd-rx-watermark { position:absolute; right:-1rem; bottom:-3rem; font-family:Georgia,'Times New Roman',serif; font-size:22rem; line-height:1; color:var(--cd-primary); opacity:.045; pointer-events:none; user-select:none; }
.cd-rx-sheet > *:not(.cd-rx-watermark) { position:relative; }

.cd-rx-sheet-head { display:flex; align-items:flex-start; justify-content:space-between; gap:1.5rem; padding-bottom:1.1rem; border-bottom:3px double var(--cd-primary); }
.cd-rx-brand { display:flex; align-items:flex-start; gap:.85rem; }
.cd-rx-logo { display:grid; place-items:center; width:52px; height:52px; border-radius:14px; color:#fff; font-size:1.4rem; background:linear-gradient(135deg,var(--cd-primary) 0%,var(--cd-primary-dark) 100%); box-shadow:0 4px 10px rgba(15,118,110,.28); }
.cd-rx-clinic h1 { margin:0; font-family:Georgia,'Times New Roman',serif; font-size:1.55rem; letter-spacing:.01em; color:var(--cd-primary-dark); }
.cd-rx-clinic-tag { margin:.05rem 0 .4rem; font-size:.68rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--cd-primary); }
.cd-rx-clinic-contact { display:flex; flex-wrap:wrap; gap:.35rem 1rem; margin:0; color:var(--cd-ink-soft); font-size:.74rem; }
.cd-rx-clinic-contact i { margin-right:.25rem; color:var(--cd-primary); font-size:.7rem; }
.cd-rx-stamp { display:grid; justify-items:center; gap:.1rem; padding:.65rem 1rem .55rem; border:1.5px solid var(--cd-primary); border-radius:12px; background:var(--cd-primary-soft); text-align:center; }
.cd-rx-stamp span { font-size:.6rem; font-weight:900; letter-spacing:.14em; text-transform:uppercase; color:var(--cd-primary-dark); }
.cd-rx-stamp strong { font-size:1.15rem; letter-spacing:.02em; color:var(--cd-ink); }
.cd-rx-stamp small { color:var(--cd-ink-soft); font-size:.68rem; }

.cd-rx-patient { display:grid; grid-template-columns:repeat(4,1fr); gap:.9rem 1.4rem; padding:1.1rem 0 1.2rem; border-bottom:1px solid var(--cd-border); }
.cd-rx-field-wide { grid-column:span 2; }
.cd-rx-field-full { grid-column:1 / -1; }
.cd-rx-field span { display:block; margin-bottom:.1rem; font-size:.58rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase; color:var(--cd-ink-soft); }
.cd-rx-field strong { display:block; padding-bottom:.25rem; border-bottom:1px dotted #b9d6d1; font-size:.92rem; font-weight:600; color:var(--cd-ink); }

.cd-rx-body { display:grid; grid-template-columns:70px 1fr; gap:1rem; padding:1.4rem 0 1.2rem; }
.cd-rx-symbol { font-family:Georgia,'Times New Roman',serif; font-size:3.4rem; line-height:.9; color:var(--cd-primary); }
.cd-rx-list { margin:0; padding:0 0 0 1.25rem; display:grid; gap:1.05rem; counter-reset:med; }
.cd-rx-list li { padding-bottom:.85rem; border-bottom:1px dashed #d5e6e3; }
.cd-rx-list li:last-child { border-bottom:0; padding-bottom:0; }
.cd-rx-list li::marker { font-weight:800; color:var(--cd-primary); }
.cd-rx-med { display:flex; flex-wrap:wrap; align-items:baseline; gap:.55rem; }
.cd-rx-med strong { font-size:1.05rem; letter-spacing:.01em; }
.cd-rx-med span { color:var(--cd-ink-soft); font-size:.85rem; }
.cd-rx-med em { margin-left:auto; padding:.14rem .6rem; border:1px solid #cfe9e4; border-radius:999px; background:var(--cd-primary-soft); color:var(--cd-primary-dark); font-size:.7rem; font-style:normal; font-weight:700; white-space:nowrap; }
.cd-rx-posology { display:flex; flex-wrap:wrap; align-items:center; gap:.55rem; margin-top:.3rem; font-size:.9rem; font-weight:600; color:var(--cd-ink); }
.cd-rx-dot { width:5px; height:5px; border-radius:50%; background:var(--cd-primary-light); }
.cd-rx-dot:first-child { display:none; }
.cd-rx-note { margin-top:.3rem; color:var(--cd-ink-soft); font-size:.8rem; }
.cd-rx-note i { margin-right:.3rem; color:var(--cd-primary); }

.cd-rx-instructions { margin-bottom:1.2rem; padding:.85rem 1rem; border-left:3px solid var(--cd-primary); border-radius:0 12px 12px 0; background:#f4faf9; }
.cd-rx-instructions h3 { margin:0 0 .3rem; font-size:.72rem; font-weight:800; letter-spacing:.09em; text-transform:uppercase; color:var(--cd-primary-dark); }
.cd-rx-instructions h3 i { margin-right:.35rem; }
.cd-rx-instructions p { margin:0; font-size:.88rem; }

.cd-rx-foot { display:flex; align-items:flex-end; justify-content:space-between; gap:2rem; margin-top:2.6rem; padding-top:1rem; border-top:1px solid var(--cd-border); }
.cd-rx-next { margin:0 0 .35rem; font-size:.85rem; }
.cd-rx-next i { margin-right:.3rem; color:var(--cd-primary); }
.cd-rx-legal { margin:0; color:var(--cd-ink-soft); font-size:.68rem; font-style:italic; }
.cd-rx-line { padding-top:.45rem; min-width:250px; border-top:1.5px solid var(--cd-ink); text-align:center; }
.cd-rx-line span { display:block; font-weight:700; font-size:.92rem; }
.cd-rx-line small { color:var(--cd-ink-soft); font-size:.68rem; }

@media print {
  .no-print, .cd-sidebar, .cd-topbar, nav, header.cd-patient-header, .cd-record-tabs { display:none !important; }
  body, .container-fluid, main { margin:0 !important; padding:0 !important; background:#fff !important; }
  .cd-rx-sheet { max-width:none; border:0; border-radius:0; box-shadow:none; padding:.5cm .2cm; }
  .cd-rx-sheet::after { display:none; }
  .cd-rx-watermark, .cd-rx-logo, .cd-rx-stamp, .cd-rx-instructions, .cd-rx-med em { print-color-adjust:exact; -webkit-print-color-adjust:exact; }
  @page { margin:1.4cm; }
}

@media (max-width:720px) {
  .cd-rx-item-grid .span-2 { grid-column:span 1; }
  .cd-rx-sheet { padding:1.3rem 1.1rem; }
  .cd-rx-sheet-head { flex-direction:column; }
  .cd-rx-stamp { justify-self:start; }
  .cd-rx-patient { grid-template-columns:1fr 1fr; }
  .cd-rx-body { grid-template-columns:1fr; gap:.3rem; }
  .cd-rx-symbol { font-size:2.4rem; }
  .cd-rx-foot { flex-direction:column; align-items:stretch; }
  .cd-rx-line { min-width:0; }
}

/* Recetas dentro de la tarjeta de atencion */
.cd-attention-rx { margin:.5rem 0 0; padding:0; list-style:none; display:grid; gap:.4rem; }
.cd-attention-rx li { display:flex; align-items:center; justify-content:space-between; gap:.8rem; padding:.5rem .7rem; border:1px solid var(--cd-border); border-radius:10px; }
.cd-attention-rx span { display:block; color:var(--cd-ink-soft); font-size:.78rem; }
.cd-attention-rx a { font-size:.78rem; font-weight:700; color:var(--cd-primary-dark); text-decoration:none; white-space:nowrap; }
.cd-attention-rx a:hover { text-decoration:underline; }
.cd-attention-actions { margin-top:.7rem; display:flex; gap:.5rem; }
.cd-attention-rx-btn { display:inline-flex; align-items:center; gap:.4rem; padding:.4rem .8rem; border:1px solid #cfe9e4; border-radius:999px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-size:.78rem; font-weight:700; text-decoration:none; }
.cd-attention-rx-btn:hover { color:#fff; background:var(--cd-primary); }

/* Autocompletado de medicamentos */
.cd-rx-suggest { position:absolute; z-index:1200; margin:0; padding:.25rem; max-height:260px; overflow-y:auto; list-style:none; border:1px solid var(--cd-border); border-radius:12px; background:#fff; box-shadow:0 12px 28px rgba(16,42,38,.16); }
.cd-rx-suggest li { display:grid; gap:.05rem; padding:.45rem .6rem; border-radius:8px; cursor:pointer; }
.cd-rx-suggest li:hover, .cd-rx-suggest li.is-active { background:var(--cd-primary-soft); }
.cd-rx-suggest strong { font-size:.85rem; color:var(--cd-ink); }
.cd-rx-suggest span { font-size:.75rem; color:var(--cd-ink-soft); }
.cd-rx-suggest em { font-size:.7rem; font-style:normal; color:var(--cd-primary); }

/* ===== Agenda de citas ===== */
.cd-agenda-page { display:grid; gap:1rem; }
.cd-agenda-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; }
.cd-agenda-heading h1 { margin:.15rem 0 .2rem; font-size:1.5rem; }
.cd-agenda-heading p { margin:0; color:var(--cd-ink-soft); font-size:.85rem; }
.cd-agenda-bar { display:flex; flex-wrap:wrap; align-items:center; gap:.7rem; padding:.7rem .9rem; border:1px solid var(--cd-border); border-radius:14px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-agenda-nav { display:flex; align-items:center; gap:.4rem; }
.cd-agenda-arrow, .cd-agenda-today { display:grid; place-items:center; min-width:36px; height:36px; padding:0 .7rem; border:1px solid var(--cd-border); border-radius:10px; color:var(--cd-ink); font-size:.8rem; font-weight:700; text-decoration:none; background:#fff; }
.cd-agenda-arrow:hover, .cd-agenda-today:hover { border-color:var(--cd-primary); color:var(--cd-primary-dark); }
.cd-agenda-today.is-current { color:#fff; background:var(--cd-primary); border-color:var(--cd-primary); }
.cd-agenda-date { width:auto; }
.cd-agenda-doctor { max-width:230px; }
.cd-agenda-block { margin-left:auto; }

.cd-agenda-empty { display:grid; justify-items:center; gap:.4rem; padding:2.6rem 1rem; border:1px dashed #bcd8d3; border-radius:16px; background:#fff; text-align:center; }
.cd-agenda-empty > i { font-size:1.8rem; color:var(--cd-primary); }
.cd-agenda-empty h3 { margin:.2rem 0 0; font-size:1.05rem; }
.cd-agenda-empty p { margin:0 0 .6rem; color:var(--cd-ink-soft); font-size:.85rem; }

.cd-agenda-grid { display:grid; gap:.55rem; }
.cd-slot { display:flex; align-items:center; gap:.9rem; border:1px solid var(--cd-border); border-radius:14px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-slot-time { display:grid; justify-items:center; min-width:64px; padding:.6rem .5rem; border-right:1px solid #e2efec; color:var(--cd-primary-dark); font-weight:800; font-size:.95rem; }
.cd-slot-time small { color:var(--cd-ink-soft); font-weight:600; font-size:.66rem; }

.cd-slot.is-free { flex-direction:column; align-items:stretch; gap:0; }
.cd-slot.is-free summary { display:flex; align-items:center; gap:.9rem; cursor:pointer; list-style:none; }
.cd-slot.is-free summary::-webkit-details-marker { display:none; }
.cd-slot-free-label { color:var(--cd-primary); font-size:.82rem; font-weight:700; }
.cd-slot.is-free:hover { border-color:#9fd6cd; }
.cd-slot.is-past summary { opacity:.5; }
.cd-slot-form { display:grid; gap:.6rem; padding: .4rem .9rem .9rem calc(64px + .9rem); }
.cd-slot-form label { display:grid; gap:.25rem; font-size:.7rem; font-weight:700; color:var(--cd-ink-soft); text-transform:uppercase; letter-spacing:.04em; }
.cd-slot-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:.6rem; }
.cd-slot-form .btn { justify-self:start; }

.cd-slot.is-busy { padding-right:.8rem; }
.cd-slot-body { display:grid; gap:.1rem; padding:.55rem 0; }
.cd-slot-body strong { font-size:.92rem; }
.cd-slot-body > span { color:var(--cd-ink-soft); font-size:.78rem; }
.cd-slot-meta { display:flex; flex-wrap:wrap; gap:.7rem; margin-top:.15rem; font-size:.72rem; color:var(--cd-ink-soft); }
.cd-slot-status { padding:.08rem .55rem; border-radius:999px; font-weight:800; font-size:.66rem; text-transform:uppercase; letter-spacing:.04em; }
.status-co .cd-slot-status { color:#115e59; background:#ccfbf1; }
.status-rq .cd-slot-status { color:#92400e; background:#fef3c7; }
.status-at .cd-slot-status { color:#1e40af; background:#dbeafe; }
.status-na .cd-slot-status { color:#b42318; background:#fee4e2; }
.cd-slot-actions { display:flex; align-items:center; gap:.35rem; margin-left:auto; }
.cd-slot-actions form { display:flex; gap:.35rem; }
.cd-slot-btn { display:grid; place-items:center; width:32px; height:32px; border:1px solid var(--cd-border); border-radius:9px; color:var(--cd-ink-soft); background:#fff; cursor:pointer; }
.cd-slot-btn:hover { border-color:var(--cd-primary); color:var(--cd-primary-dark); }
.cd-slot-btn.is-danger:hover { border-color:#b42318; color:#b42318; background:#fee4e2; }
.cd-slot-wa { display:grid; place-items:center; width:32px; height:32px; border-radius:9px; color:#fff; font-size:1rem; text-decoration:none; background:#25d366; }
.cd-slot-wa:hover { background:#1ebe5b; color:#fff; }

/* Configuracion de horario */
.cd-schedule-card { display:grid; gap:1rem; padding:1.2rem 1.3rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-schedule-slot { display:flex; align-items:center; gap:.8rem; }
.cd-schedule-slot label { font-size:.8rem; font-weight:700; color:var(--cd-ink-soft); }
.cd-schedule-slot select { width:auto; }
.cd-schedule-table { display:grid; gap:.4rem; }
.cd-schedule-row { display:grid; grid-template-columns:230px 1fr 1fr; gap:.8rem; align-items:center; padding:.55rem .7rem; border:1px solid var(--cd-border); border-radius:12px; }
.cd-schedule-head { border:0; padding-bottom:0; font-size:.66rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--cd-ink-soft); }
.cd-schedule-row:not(.cd-schedule-head):not(.is-on) .cd-schedule-range { opacity:.4; pointer-events:none; }
.cd-schedule-row.is-on { border-color:#9fd6cd; background:#f6fbfa; }
.cd-schedule-day { display:flex; align-items:center; gap:.6rem; cursor:pointer; }
.cd-schedule-day input { position:absolute; opacity:0; }
.cd-schedule-switch { position:relative; width:38px; height:22px; border-radius:999px; background:#d7e3e1; transition:background .15s; }
.cd-schedule-switch::after { content:""; position:absolute; top:3px; left:3px; width:16px; height:16px; border-radius:50%; background:#fff; transition:left .15s; }
.cd-schedule-day input:checked + .cd-schedule-switch { background:var(--cd-primary); }
.cd-schedule-day input:checked + .cd-schedule-switch::after { left:19px; }
.cd-schedule-range { display:flex; align-items:center; gap:.45rem; }
.cd-schedule-range span { color:var(--cd-ink-soft); font-size:.75rem; }
.cd-schedule-actions { display:flex; justify-content:flex-end; gap:.6rem; }

@media (max-width:720px) {
  .cd-schedule-row { grid-template-columns:1fr; }
  .cd-slot-form-grid { grid-template-columns:1fr; }
  .cd-slot-form { padding-left:.9rem; }
  .cd-agenda-block { margin-left:0; }
}

/* Calendario semanal tipo Teams */
.cd-view-toggle { display:inline-flex; padding:.2rem; gap:.15rem; border:1px solid var(--cd-border); border-radius:11px; background:#fff; }
.cd-view-toggle a, .cd-view-toggle .is-current { display:inline-flex; align-items:center; gap:.35rem; padding:.35rem .75rem; border-radius:8px; font-size:.78rem; font-weight:700; text-decoration:none; color:var(--cd-ink-soft); }
.cd-view-toggle a:hover { color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-view-toggle .is-current { color:#fff; background:var(--cd-primary); }
.cd-agenda-tools { display:flex; align-items:center; gap:.6rem; }

.cd-week-wrap { overflow-x:auto; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-week-grid { display:grid; grid-template-columns:52px repeat(7, minmax(108px, 1fr)); min-width:820px; }
.cd-week-gutter-head { border-bottom:1px solid var(--cd-border); }
.cd-week-head { display:grid; justify-items:center; gap:.05rem; padding:.55rem 0 .5rem; border-bottom:1px solid var(--cd-border); border-left:1px solid #eef4f3; text-decoration:none; color:var(--cd-ink-soft); }
.cd-week-head span { font-size:.64rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.cd-week-head strong { display:grid; place-items:center; width:30px; height:30px; border-radius:50%; color:var(--cd-ink); font-size:.95rem; }
.cd-week-head:hover strong { background:var(--cd-primary-soft); }
.cd-week-head.is-today strong { color:#fff; background:var(--cd-primary); }

.cd-week-gutter { position:relative; height:620px; }
.cd-week-gutter span { position:absolute; right:.5rem; transform:translateY(-50%); color:var(--cd-ink-soft); font-size:.64rem; font-weight:600; }
.cd-week-col { position:relative; display:block; height:620px; border-left:1px solid #eef4f3; background:#fafcfc; text-decoration:none; overflow:hidden; }
.cd-week-col:hover { background:#f4faf9; }
.cd-week-col.is-today { background:#f2fbf9; }
.cd-week-line { position:absolute; left:0; right:0; border-top:1px solid #edf3f2; }
.cd-week-open { position:absolute; left:0; right:0; background:#fff; box-shadow:inset 3px 0 0 #b9e5de; }
.cd-week-col.is-today .cd-week-open { background:#fff; }
.cd-week-blocked { position:absolute; inset:0; display:grid; place-content:center; gap:.2rem; padding:.5rem; background:repeating-linear-gradient(-45deg,#f6f8f8 0 10px,#eef1f1 10px 20px); color:var(--cd-ink-soft); font-size:.68rem; font-weight:700; text-align:center; z-index:2; }

.cd-week-event { position:absolute; left:4px; right:4px; display:grid; align-content:start; gap:.05rem; padding:.28rem .45rem; border-radius:8px; border-left:3px solid; overflow:hidden; z-index:3; }
.cd-week-event strong { font-size:.68rem; line-height:1.15; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cd-week-event em { font-size:.62rem; font-style:normal; opacity:.8; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cd-week-event.status-co { color:#115e59; background:#ccfbf1; border-color:#0f766e; }
.cd-week-event.status-rq { color:#92400e; background:#fef3c7; border-color:#d97706; }
.cd-week-event.status-at { color:#1e40af; background:#dbeafe; border-color:#2563eb; }
.cd-week-event.status-na { color:#b42318; background:#fee4e2; border-color:#d92d20; }
.cd-week-event:hover { filter:brightness(.97); }

.cd-week-now { position:absolute; left:0; right:0; border-top:2px solid #ef4444; z-index:4; }
.cd-week-now::before { content:""; position:absolute; left:-1px; top:-5px; width:8px; height:8px; border-radius:50%; background:#ef4444; }

@media (max-width:720px) {
  .cd-agenda-heading { flex-direction:column; align-items:stretch; }
}

/* Recuperacion de contrasena */
.cd-auth-shell { display:grid; place-items:center; min-height:100vh; padding:1.5rem; }
.cd-auth-card { width:min(430px, 100%); display:grid; gap:1.1rem; }
.cd-auth-brand { justify-content:center; }
.cd-auth-status { display:grid; justify-items:center; gap:.45rem; text-align:center; }
.cd-auth-status-icon { display:grid; place-items:center; width:56px; height:56px; border-radius:50%; color:var(--cd-primary-dark); font-size:1.4rem; background:var(--cd-primary-soft); }
.cd-auth-status-icon.is-error { color:#b42318; background:#fee4e2; }
.cd-auth-status h2 { margin:0; font-size:1.25rem; }
.cd-auth-status p { margin:0; color:var(--cd-ink-soft); font-size:.88rem; }
.cd-auth-hint { margin:0; padding:.6rem .75rem; border-radius:10px; background:var(--cd-primary-soft); color:var(--cd-primary-dark); font-size:.75rem; }
.cd-auth-change-card { display:grid; gap:.9rem; max-width:480px; padding:1.2rem 1.3rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-auth-change-card label { display:grid; gap:.3rem; font-size:.72rem; font-weight:700; color:var(--cd-ink-soft); text-transform:uppercase; letter-spacing:.04em; }

.cd-recovery-card { display:grid; gap:.8rem; max-width:640px; padding:1.2rem 1.3rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-recovery-card h2 { display:flex; align-items:center; gap:.5rem; margin:0; font-size:1rem; color:var(--cd-primary-dark); }
.cd-recovery-card > p { margin:0; color:var(--cd-ink-soft); font-size:.85rem; }
.cd-recovery-link { display:flex; gap:.5rem; }
.cd-recovery-link input { font-size:.78rem; color:var(--cd-ink-soft); }
.cd-recovery-actions { display:flex; align-items:center; gap:.8rem; }
.cd-recovery-nophone { color:var(--cd-ink-soft); font-size:.8rem; }
.cd-recovery-note { margin:.2rem 0 0; padding:.6rem .75rem; border-radius:10px; background:#f4faf9; color:var(--cd-ink-soft); font-size:.75rem; }
.cd-forgot-link { margin:.4rem 0 0; text-align:center; font-size:.8rem; }
.cd-forgot-link a { color:var(--cd-primary-dark); font-weight:600; text-decoration:none; }
.cd-forgot-link a:hover { text-decoration:underline; }
.cd-team-recovery { margin-left:auto; }

/* Asistente de agenda (voz y texto) */
.cd-assist { position:fixed; right:1.4rem; bottom:1.4rem; z-index:1300; display:grid; justify-items:end; gap:.6rem; }
.cd-assist-fab { display:grid; place-items:center; width:52px; height:52px; border:0; border-radius:50%; color:#fff; font-size:1.15rem; cursor:pointer; background:linear-gradient(135deg,var(--cd-primary) 0%,var(--cd-primary-dark) 100%); box-shadow:0 8px 22px rgba(15,118,110,.4); }
.cd-assist-fab:hover { transform:scale(1.06); }
.cd-assist-panel { width:min(360px, calc(100vw - 2.8rem)); border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow-lg); overflow:hidden; }
.cd-assist-panel > header { display:flex; align-items:center; justify-content:space-between; padding:.6rem .9rem; color:#fff; background:var(--cd-primary); font-size:.85rem; font-weight:700; }
.cd-assist-panel > header button { border:0; background:transparent; color:#fff; cursor:pointer; font-size:1rem; }
.cd-assist-log { display:grid; gap:.45rem; max-height:260px; overflow-y:auto; padding:.8rem .9rem; }
.cd-assist-msg { margin:0; padding:.5rem .7rem; border-radius:12px; font-size:.8rem; line-height:1.35; }
.cd-assist-msg.is-bot { justify-self:start; background:var(--cd-primary-soft); color:var(--cd-primary-dark); border-bottom-left-radius:4px; }
.cd-assist-msg.is-yo { justify-self:end; background:#eef2f1; color:var(--cd-ink); border-bottom-right-radius:4px; }
.cd-assist-msg.is-error { background:#fee4e2; color:#b42318; }
#assist-form { display:flex; gap:.4rem; padding:.6rem .7rem; border-top:1px solid var(--cd-border); }
#assist-text { flex:1; border:1px solid var(--cd-border); border-radius:10px; padding:.45rem .6rem; font-size:.82rem; }
#assist-form button { display:grid; place-items:center; width:36px; height:36px; border:1px solid var(--cd-border); border-radius:10px; background:#fff; color:var(--cd-primary-dark); cursor:pointer; }
#assist-form button[type=submit] { background:var(--cd-primary); border-color:var(--cd-primary); color:#fff; }
#assist-mic.is-live { color:#fff; background:#ef4444; border-color:#ef4444; animation:cd-pulso 1.1s infinite; }
#assist-mic:disabled { opacity:.4; cursor:not-allowed; }
@keyframes cd-pulso { 0%,100% { box-shadow:0 0 0 0 rgba(239,68,68,.5); } 50% { box-shadow:0 0 0 8px rgba(239,68,68,0); } }

/* Flujo diario ultracompacto: barra de accesos */
.cd-care-flow-head > div:first-child > p { display:none; }
.cd-care-flow-grid article { flex-direction:row; align-items:center; gap:.55rem; padding:.5rem .65rem; }
.cd-care-flow-grid article p, .cd-care-flow-grid article small { display:none; }
.cd-care-flow-icon { width:28px; height:28px; margin-bottom:0; flex:none; }
.cd-care-flow-number { position:static; order:-1; width:20px; height:20px; flex:none; font-size:.62rem; }
.cd-care-flow-grid h3 { margin:0; font-size:.78rem; line-height:1.2; }
.cd-care-flow-grid a, .cd-care-flow-disabled { margin:0 0 0 auto; font-size:0; }
.cd-care-flow-grid a i, .cd-care-flow-disabled i { font-size:.8rem; }

/* ===== Estilo "banca": menta suave, tarjetas aireadas ===== */
.cd-owner-hero { color:var(--cd-ink); background:linear-gradient(150deg,#cfe6de 0%,#e6f2ee 55%,#f2f8f6 100%); border:1px solid rgba(255,255,255,.7); box-shadow:0 14px 34px rgba(45,90,80,.14); }
.cd-owner-hero h1 { color:var(--cd-ink); }
.cd-owner-hero p { color:#4a635c; }
.cd-owner-kicker { color:var(--cd-primary-dark) !important; }
.cd-agenda-bar, .cd-care-flow, .cd-rx-card, .cd-schedule-card, .cd-recovery-card, .cd-auth-change-card, .cd-week-wrap { border-radius:20px; }
.cd-slot, .cd-attention-card { border-radius:16px; }

/* Foto del odontologo en el saludo */
.cd-hero-identity { display:flex; align-items:center; gap:1rem; }
.cd-hero-avatar { display:grid; place-items:center; flex:none; width:72px; height:72px; border-radius:50%; overflow:hidden; border:3px solid #fff; box-shadow:0 6px 18px rgba(45,90,80,.25); text-decoration:none; }
.cd-hero-avatar img { width:100%; height:100%; object-fit:cover; }
.cd-hero-avatar.is-empty { gap:.1rem; border:2px dashed #8fbcb0; background:rgba(255,255,255,.55); color:var(--cd-primary-dark); }
.cd-hero-avatar.is-empty i { font-size:1rem; }
.cd-hero-avatar.is-empty span { font-size:.55rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
.cd-hero-avatar.is-empty:hover { background:#fff; border-style:solid; }
@media (max-width:720px) { .cd-hero-avatar { width:56px; height:56px; } }

/* Recortador de fotografia de perfil */
#div_id_photo { display:none; }
.cd-photo-block { display:flex; align-items:center; gap:1.1rem; margin-bottom:1.1rem; padding:1rem 1.1rem; border:1px solid var(--cd-border); border-radius:16px; background:#fbfdfd; }
.cd-photo-preview { display:grid; place-items:center; flex:none; width:84px; height:84px; border-radius:50%; overflow:hidden; border:3px solid #fff; background:var(--cd-primary-soft); color:var(--cd-primary-dark); font-size:1.3rem; box-shadow:0 6px 16px rgba(45,90,80,.18); }
.cd-photo-preview img { width:100%; height:100%; object-fit:cover; }
.cd-photo-buttons strong { display:block; font-size:.85rem; }
.cd-photo-buttons p { margin:.15rem 0 .55rem; color:var(--cd-ink-soft); font-size:.75rem; }
.cd-photo-buttons > div { display:flex; gap:.5rem; }

.cd-crop-modal { position:fixed; inset:0; z-index:1500; display:grid; place-items:center; padding:1rem; background:rgba(15,42,38,.55); backdrop-filter:blur(4px); }
.cd-crop-card { display:grid; gap:.9rem; padding:1.2rem 1.3rem 1.1rem; border-radius:18px; background:#fff; box-shadow:var(--cd-shadow-lg); }
.cd-crop-card h2 { margin:0; font-size:1rem; color:var(--cd-primary-dark); }
.cd-crop-viewport { position:relative; width:280px; height:280px; margin:0 auto; overflow:hidden; border-radius:14px; background:#0f2a26; touch-action:none; cursor:grab; }
.cd-crop-viewport:active { cursor:grabbing; }
.cd-crop-viewport img { position:absolute; max-width:none; user-select:none; pointer-events:none; }
.cd-crop-mask { position:absolute; inset:0; border-radius:50%; box-shadow:0 0 0 400px rgba(15,42,38,.55); pointer-events:none; }
.cd-crop-zoom { display:flex; align-items:center; gap:.7rem; color:var(--cd-ink-soft); }
.cd-crop-zoom input { flex:1; accent-color:var(--cd-primary); }
.cd-crop-actions { display:flex; justify-content:flex-end; gap:.6rem; }

/* Trazo fino estilo banca: los numeros grandes en semibold, no black */
.cd-owner-metrics strong { font-weight:650; }
.cd-owner-metrics small, .cd-owner-metrics p { font-weight:400; }

/* Widgets personalizables del panel */
.cd-widgets-modal { position:fixed; inset:0; z-index:1500; display:grid; place-items:center; padding:1rem; background:rgba(15,42,38,.5); backdrop-filter:blur(4px); }
.cd-widgets-card { display:grid; gap:.7rem; width:min(400px,100%); padding:1.2rem 1.3rem; border-radius:18px; background:#fff; box-shadow:var(--cd-shadow-lg); }
.cd-widgets-card h2 { margin:0; font-size:1rem; color:var(--cd-primary-dark); }
.cd-widgets-card > p { margin:0; color:var(--cd-ink-soft); font-size:.8rem; }
.cd-widgets-list { display:grid; gap:.35rem; }
.cd-widget-row { display:flex; align-items:center; gap:.6rem; padding:.5rem .65rem; border:1px solid var(--cd-border); border-radius:12px; cursor:pointer; }
.cd-widget-row:hover { background:#f6fbfa; }
.cd-widget-row input { position:absolute; opacity:0; }
.cd-widget-row strong { font-size:.82rem; font-weight:600; }
.cd-widget-row input:checked ~ strong { color:var(--cd-primary-dark); }
.cd-widgets-actions { display:flex; justify-content:flex-end; gap:.6rem; }

/* Chips de estado en el widget de citas */
.status-chip-co { color:#115e59; background:#ccfbf1; }
.status-chip-rq { color:#92400e; background:#fef3c7; }
.status-chip-at { color:#1e40af; background:#dbeafe; }
.status-chip-na { color:#b42318; background:#fee4e2; }
.cd-widget-row input:checked + .cd-schedule-switch { background:var(--cd-primary); }
.cd-widget-row input:checked + .cd-schedule-switch::after { left:19px; }

/* Saludo del hero: "Buenas tardes," arriba y el nombre grande abajo */
.cd-owner-hero h1 { display:grid; gap:.05rem; }
.cd-hero-saludo { font-size:.95rem; font-weight:400; color:#4a635c; letter-spacing:0; }
.cd-hero-nombre { font-size:1.75rem; font-weight:700; line-height:1.15; }

/* ===== Tablero de widgets estilo iPhone ===== */
.cd-widget-board { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.85rem; align-items:stretch; }
.cd-widget { position:relative; min-width:0; grid-column:span 2; display:flex; flex-direction:column; }
.cd-widget.size-s { grid-column:span 1; }
.cd-widget.size-l { grid-column:1 / -1; }
.cd-widget > section, .cd-widget > aside, .cd-widget > div:not(.cd-widget-tools) { flex:1; height:auto; }
/* El contenido interior se reparte para llenar la altura de la fila */
.cd-widget .cd-owner-section { display:flex; flex-direction:column; }
.cd-widget .cd-owner-section .cd-agenda-list,
.cd-widget .cd-owner-section .cd-recent-patients,
.cd-widget .cd-owner-section .cd-owner-tool-list { flex:1; }
.cd-widget .cd-owner-empty { display:grid; place-content:center; height:100%; }
.cd-widget .cd-care-flow { display:flex; flex-direction:column; }
.cd-widget .cd-care-flow-grid { flex:1; align-content:start; }

/* Ajustes internos segun el tamano elegido */
.cd-widget.size-m .cd-care-flow-grid { grid-template-columns:repeat(2,1fr); }
.cd-widget.size-s .cd-care-flow-grid { grid-template-columns:1fr; }
.cd-widget.size-m .cd-owner-metrics { grid-template-columns:repeat(2,1fr); }
.cd-widget.size-s .cd-owner-metrics { grid-template-columns:1fr; }
.cd-widget.size-s .cd-owner-section-head { flex-direction:column; align-items:flex-start; gap:.2rem; }
.cd-widget.size-s .cd-care-flow-head { flex-direction:column; align-items:flex-start; }

/* Bandeja de widgets ocultos */
.cd-widget-tray { display:flex; flex-wrap:wrap; align-items:center; gap:.6rem; padding:.7rem .9rem; border:1px dashed #9fd6cd; border-radius:14px; background:rgba(255,255,255,.65); }
.cd-widget-tray > span { color:var(--cd-primary-dark); font-size:.78rem; font-weight:700; }
.cd-widget-tray em { color:var(--cd-ink-soft); font-size:.75rem; }
#tray-chips { display:flex; flex-wrap:wrap; gap:.4rem; }
.cd-tray-chip { display:inline-flex; align-items:center; gap:.35rem; padding:.35rem .75rem; border:1px solid var(--cd-border); border-radius:999px; background:#fff; color:var(--cd-ink); font-size:.75rem; font-weight:600; cursor:pointer; }
.cd-tray-chip:hover { border-color:var(--cd-primary); color:var(--cd-primary-dark); background:var(--cd-primary-soft); }

/* Herramientas de edicion sobre cada widget */
.cd-widget-tools { position:absolute; inset:0; z-index:5; display:none; pointer-events:none; border-radius:18px; outline:2px dashed #8fd0c5; outline-offset:4px; }
.is-editing .cd-widget-tools { display:block; }
.cd-wtool-quitar { position:absolute; top:-9px; left:-9px; display:grid; place-items:center; width:26px; height:26px; border:0; border-radius:50%; color:#fff; background:#64748b; font-size:.7rem; cursor:pointer; pointer-events:auto; box-shadow:0 3px 8px rgba(15,23,42,.3); }
.cd-wtool-quitar:hover { background:#b42318; }
.cd-widget-sizes { position:absolute; bottom:-11px; left:50%; transform:translateX(-50%); display:flex; gap:.25rem; padding:.2rem; border-radius:999px; background:#fff; box-shadow:0 4px 12px rgba(15,23,42,.18); pointer-events:auto; }
.cd-widget-sizes button { width:26px; height:22px; border:0; border-radius:999px; background:transparent; color:var(--cd-ink-soft); font-size:.66rem; font-weight:800; cursor:pointer; }
.cd-widget-sizes button.is-active { color:#fff; background:var(--cd-primary); }

/* Modo edicion: tembleque iPhone */
.is-editing .cd-widget { cursor:grab; }
.is-editing .cd-widget:nth-child(odd) { animation:cd-tiembla 0.32s infinite ease-in-out; }
.is-editing .cd-widget:nth-child(even) { animation:cd-tiembla 0.32s infinite ease-in-out reverse; animation-delay:-.16s; }
.cd-widget.is-dragging { opacity:.45; animation:none !important; }
@keyframes cd-tiembla { 0%,100% { transform:rotate(-.25deg); } 50% { transform:rotate(.25deg); } }
@media (prefers-reduced-motion: reduce) { .is-editing .cd-widget { animation:none !important; } }

@media (max-width:980px) {
  .cd-widget-board { grid-template-columns:repeat(2,1fr); }
  .cd-widget, .cd-widget.size-l { grid-column:span 2; }
  .cd-widget.size-s { grid-column:span 1; }
}
@media (max-width:640px) {
  .cd-widget-board { grid-template-columns:1fr; }
  .cd-widget, .cd-widget.size-s, .cd-widget.size-l { grid-column:span 1; }
}
.cd-wtool-mover { color:var(--cd-primary-dark) !important; }
.cd-wtool-mover:hover { background:var(--cd-primary-soft) !important; }
.cd-wtool-sep { width:1px; height:14px; margin:auto .1rem; background:var(--cd-border); }

/* Recordatorios */
.cd-remind-btn { position:relative; }
.cd-remind-badge { display:inline-grid; place-items:center; min-width:18px; height:18px; margin-left:.4rem; padding:0 .3rem; border-radius:999px; color:#fff; background:#d97706; font-size:.64rem; font-weight:800; }
.cd-remind-wa { width:auto !important; padding:0 .7rem; gap:.35rem; display:inline-flex !important; align-items:center; font-size:.76rem; font-weight:700; }
.cd-remind-nophone { color:var(--cd-ink-soft); font-size:.74rem; }
.cd-slot-btn.is-go { color:#fff; background:var(--cd-primary); border-color:var(--cd-primary); }
.cd-slot-btn.is-go:hover { background:var(--cd-primary-dark); color:#fff; }

/* ===== Receta formato oficial (talonario MSP) ===== */
.cd-rxo { max-width:800px; margin:0 auto; padding:1.6rem 1.9rem 1.2rem; border:1.5px solid #7c9a94; border-radius:14px; background:#fff; box-shadow:var(--cd-shadow-lg); color:#243b36; font-size:.82rem; }
.cd-rxo b { font-weight:600; border-bottom:1px solid #9db8b2; padding:0 .35rem; min-width:2.2rem; display:inline-block; }
.cd-rxo-head { display:flex; justify-content:space-between; gap:1.2rem; }
.cd-rxo-brand { display:flex; gap:.7rem; }
.cd-rxo-logo { display:grid; place-items:center; width:46px; height:46px; border-radius:12px; color:#fff; font-size:1.3rem; background:linear-gradient(135deg,var(--cd-primary),var(--cd-primary-dark)); }
.cd-rxo-brand h1 { margin:0; font-size:1.35rem; font-weight:800; color:var(--cd-primary-dark); letter-spacing:.02em; }
.cd-rxo-doctor { margin:.05rem 0 0; font-family:"Dancing Script","Snell Roundhand",cursive; font-size:1.45rem; font-weight:700; line-height:1.1; color:#2c4a44; }
.cd-rxo-title { margin:0; font-size:.68rem; font-weight:800; letter-spacing:.12em; }
.cd-rxo-numfecha { text-align:right; }
.cd-rxo-num { margin:0 0 .4rem; font-size:.8rem; }
.cd-rxo-num strong { color:#c0392b; font-size:1.05rem; letter-spacing:.05em; }
.cd-rxo-fecha { display:flex; align-items:center; gap:.45rem; justify-content:flex-end; font-size:.72rem; }
.cd-rxo-fecha b { border:1px solid #9db8b2; border-radius:5px; padding:.1rem .35rem; min-width:2rem; text-align:center; }
.cd-rxo-contacto { display:flex; flex-wrap:wrap; gap:.3rem 1.1rem; margin:.5rem 0 0; padding-bottom:.6rem; border-bottom:2px solid var(--cd-primary); color:#4a635c; font-size:.72rem; }
.cd-rxo-contacto i { color:var(--cd-primary); margin-right:.25rem; }

.cd-rxo-paciente { display:grid; gap:.55rem; padding:.8rem 0; border-bottom:1px solid #cfe0dc; }
.cd-rxo-fila { display:flex; flex-wrap:wrap; gap:.5rem 1.4rem; }
.cd-rxo-fila label { font-size:.76rem; }
.cd-rxo-fila label.grande { flex:1; }
.cd-rxo-fila label.grande b { min-width:12rem; }
.cd-rxo-sexo .caja { display:inline-grid; place-items:center; width:15px; height:15px; margin:0 .5rem 0 .2rem; border:1px solid #7c9a94; border-radius:3px; vertical-align:-2px; font-size:.7rem; font-weight:800; line-height:1; }
.chico { min-width:1.6rem !important; }

.cd-rxo-tabla { width:100%; margin:.9rem 0 .4rem; border-collapse:collapse; }
.cd-rxo-tabla th { padding:.4rem .55rem; border:1px solid #7c9a94; background:#eef6f4; font-size:.66rem; font-weight:800; text-transform:uppercase; letter-spacing:.03em; text-align:left; }
.cd-rxo-tabla th:last-child { width:32%; }
.cd-rxo-tabla td { padding:.4rem .55rem; border:1px solid #9db8b2; font-size:.8rem; }
.cd-rxo-tabla tr.vacia td { height:1.5rem; }

.cd-rxo-indicaciones { padding:.4rem 0 .6rem; }
.cd-rxo-indicaciones h2 { margin:0 0 .3rem; font-size:.78rem; font-weight:800; text-transform:uppercase; letter-spacing:.04em; }
.cd-rxo-indicaciones ol { margin:0; padding-left:1.2rem; display:grid; gap:.3rem; font-size:.8rem; }

.cd-rxo-pie { display:grid; grid-template-columns:1fr 1fr; gap:1.2rem; margin-top:1.6rem; }
.cd-rxo-firma { border:1px solid #9db8b2; border-radius:8px; padding:.45rem .6rem 0; min-height:78px; }
.cd-rxo-firma label { font-size:.62rem; font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:#4a635c; }
.cd-rxo-firma p { margin:1.4rem 0 .3rem; text-align:center; font-weight:600; }
.cd-rxo-espacio-firma { min-height:1.6rem; }
.cd-rxo-legal { margin:.8rem 0 0; padding-top:.5rem; border-top:1px dashed #9db8b2; color:#4a635c; font-size:.66rem; font-style:italic; text-align:center; }

@media print {
  .cd-rxo { max-width:none; border-radius:0; box-shadow:none; }
  .cd-rxo-logo, .cd-rxo-tabla th { print-color-adjust:exact; -webkit-print-color-adjust:exact; }
}
@media (max-width:720px) {
  .cd-rxo { padding:1rem; }
  .cd-rxo-head { flex-direction:column; }
  .cd-rxo-numfecha { text-align:left; }
  .cd-rxo-fecha { justify-content:flex-start; }
  .cd-rxo-pie { grid-template-columns:1fr; }
}

/* Panel de datos del paciente en la emision de receta */
.cd-rx-paciente-card { background:#f6fbfa; border-color:#cfe9e4; }
.cd-rx-paciente-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:.7rem 1rem; }
.cd-rx-paciente-grid > div > span { display:block; font-size:.6rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--cd-ink-soft); margin-bottom:.15rem; }
.cd-rx-paciente-grid strong { font-size:.88rem; }
@media (max-width:720px) { .cd-rx-paciente-grid { grid-template-columns:1fr; } }

/* ===== Financiamiento: cotizador y cuotas ===== */
.cd-fin-card { display:grid; gap:.9rem; padding:1.1rem 1.2rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-fin-title { display:flex; align-items:center; gap:.5rem; margin:0; font-size:.95rem; color:var(--cd-primary-dark); }
.cd-fin-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:.8rem; }
.cd-fin-grid label { display:grid; gap:.3rem; font-size:.72rem; font-weight:700; color:var(--cd-ink-soft); text-transform:uppercase; letter-spacing:.04em; }
.cd-fin-grid .span-2 { grid-column:span 3; }
.cd-fin-resumen { display:grid; grid-template-columns:repeat(4,1fr); gap:.7rem; }
.cd-fin-resumen > div { padding:.6rem .75rem; border:1px solid var(--cd-border); border-radius:12px; }
.cd-fin-resumen span { display:block; font-size:.62rem; font-weight:800; text-transform:uppercase; letter-spacing:.05em; color:var(--cd-ink-soft); }
.cd-fin-resumen strong { font-size:1rem; }
.cd-fin-resumen .destacado { border-color:var(--cd-primary); background:var(--cd-primary-soft); }
.cd-fin-resumen .destacado strong { color:var(--cd-primary-dark); font-size:1.2rem; }
.cd-fin-tabla-wrap summary { cursor:pointer; font-size:.8rem; font-weight:700; color:var(--cd-primary-dark); }
.cd-fin-tabla { width:100%; margin-top:.6rem; border-collapse:collapse; font-size:.78rem; }
.cd-fin-tabla th { padding:.35rem .5rem; background:#eef6f4; text-align:left; font-size:.64rem; text-transform:uppercase; }
.cd-fin-tabla td { padding:.35rem .5rem; border-bottom:1px solid #eef3f2; }
.cd-fin-guardar { display:flex; justify-content:flex-end; }

.cd-fin-lista { display:grid; gap:.7rem; }
.cd-fin-item { display:grid; gap:.55rem; padding:.9rem 1.1rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; box-shadow:var(--cd-shadow); }
.cd-fin-item.is-done { background:#f6fbf8; }
.cd-fin-item-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.cd-fin-item-head strong { display:block; font-size:.95rem; }
.cd-fin-item-head span { color:var(--cd-ink-soft); font-size:.8rem; }
.cd-fin-item-head small { display:block; color:var(--cd-ink-soft); font-size:.72rem; }
.cd-fin-chip.is-done { display:inline-flex; align-items:center; gap:.35rem; padding:.3rem .7rem; border-radius:999px; color:#047857; background:#d1fae5; font-size:.72rem; font-weight:800; }
.cd-fin-barra { height:8px; border-radius:999px; background:#e8f0ee; overflow:hidden; }
.cd-fin-barra i { display:block; height:100%; border-radius:999px; background:linear-gradient(90deg,var(--cd-primary-light),var(--cd-primary)); }
.cd-fin-item-meta { display:flex; flex-wrap:wrap; gap:.4rem 1.3rem; font-size:.76rem; color:var(--cd-ink-soft); }
.cd-fin-abonos summary { cursor:pointer; font-size:.74rem; font-weight:700; color:var(--cd-primary-dark); }
.cd-fin-abonos ul { margin:.4rem 0 0; padding:0; list-style:none; display:grid; gap:.25rem; }
.cd-fin-abonos li { display:flex; justify-content:space-between; padding:.3rem .5rem; border-bottom:1px dashed #e2ecea; font-size:.76rem; }
@media (max-width:720px) { .cd-fin-grid, .cd-fin-resumen { grid-template-columns:1fr 1fr; } .cd-fin-grid .span-2 { grid-column:span 2; } }

/* Mi horario: que quepa en cualquier ancho (antes desbordaba entre ~720 y ~1000px) */
.cd-schedule-row { grid-template-columns:230px 1fr 1fr; }
.cd-schedule-range input { flex:1; min-width:0; padding-left:.45rem; padding-right:.25rem; }
@media (max-width:1000px) {
  .cd-schedule-head { display:none; }
  .cd-schedule-row { grid-template-columns:1fr; gap:.5rem; }
  .cd-schedule-range { position:relative; padding-left:4.4rem; }
  .cd-schedule-range::before { position:absolute; left:.2rem; top:50%; transform:translateY(-50%); font-size:.6rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--cd-ink-soft); }
  .cd-schedule-row > .cd-schedule-range:nth-of-type(1)::before { content:"Mañana"; }
  .cd-schedule-row > .cd-schedule-range:nth-of-type(2)::before { content:"Tarde"; }
}

/* Agenda en celular: la barra de botones no debe ensanchar la pagina */
@media (max-width:720px) {
  .cd-agenda-tools { flex-wrap:wrap; }
  .cd-agenda-bar, .cd-agenda-nav { flex-wrap:wrap; }
  .cd-agenda-date { flex:1; min-width:0; }
  .cd-slot { min-width:0; }
  .cd-slot-body { min-width:0; }
  .cd-slot-actions { flex-wrap:wrap; justify-content:flex-end; }
}

/* ===== Alergias: siempre en rojo ===== */
.cd-clinical-checks label:has(input[value$="_allergy"]) { border-color:#fecaca; }
.cd-clinical-checks label:has(input[value$="_allergy"]) span { color:#b42318; font-weight:700; }
.cd-clinical-checks label:has(input[value$="_allergy"]:checked) { background:#fee4e2; border-color:#d92d20; box-shadow:0 0 0 2px rgba(217,45,32,.15); }
.cd-clinical-checks input[value$="_allergy"] { accent-color:#d92d20; }
.cd-allergy-box { margin:.7rem 0; padding:.7rem .85rem; border:1.5px solid #d92d20; border-radius:12px; background:#fff5f4; }
.cd-allergy-box span { color:#b42318 !important; font-weight:800; }
.cd-allergy-box input { border-color:#f4a39a !important; }
.cd-allergy-box input:focus { box-shadow:0 0 0 3px rgba(217,45,32,.18) !important; border-color:#d92d20 !important; }
.cd-allergy-alert { display:flex; align-items:center; gap:.55rem; padding:.6rem .8rem; border-radius:12px; background:#fee4e2; border:1.5px solid #d92d20; color:#b42318; font-size:.82rem; font-weight:800; }
.cd-allergy-alert i { font-size:1rem; }
.cd-allergy-alert span { font-weight:400; color:#7a271a; }
.cd-rx-alergia strong, .cd-rxo-alergia b { color:#b42318 !important; border-color:#d92d20 !important; }
.cd-rxo-alergia b { print-color-adjust:exact; -webkit-print-color-adjust:exact; }

/* ===== Odontograma con historia por pieza ===== */
.cd-odontogram-panel { min-width:0; overflow-x:auto; }
.cd-dental-arch { grid-template-columns:repeat(16,minmax(34px,1fr)); min-width:620px; gap:.2rem; }
.cd-odontogram-legend { min-width:0; }
.cd-odo-tooth { padding:.35rem .1rem; cursor:pointer; }
.cd-odo-tooth .cd-tooth-glyph { width:100%; max-width:40px; }
.cd-odo-tooth.is-lower .cd-tooth-glyph { transform:scaleY(-1); }
.cd-odo-tooth .cd-tooth-face { cursor:pointer; }
.cd-odo-tooth .cd-tooth-face:hover { fill:#fff; stroke:#94a3b8; }
.cd-tooth-face.is-done { fill:#3b82f6 !important; stroke:#1d4ed8 !important; }
.cd-tooth-face.is-pending { fill:#ef4444 !important; stroke:#b91c1c !important; }
.cd-odo-tooth.has-history .cd-tooth-number { color:#fff; background:#1d4ed8; }
.cd-odo-tooth.has-history.is-pending .cd-tooth-number { background:#b91c1c; }
.cd-odo-tooth.is-active { border-color:var(--cd-primary); background:var(--cd-primary-soft); box-shadow:0 0 0 2px rgba(15,118,110,.25); }
.cd-odontogram-legend > span i.done { background:#3b82f6; border-color:#1d4ed8; }
.cd-odontogram-legend > span i.pending { background:#ef4444; border-color:#b91c1c; }
.cd-odo-detail { margin-top:1rem; padding:1rem 1.1rem; border:1px solid var(--cd-border); border-radius:16px; background:#fbfdfd; min-height:70px; }
.cd-odo-detail h3 { display:flex; align-items:center; gap:.55rem; margin:0 0 .7rem; font-size:1rem; }
.cd-odo-num { display:grid; place-items:center; min-width:30px; height:30px; border-radius:9px; color:#fff; background:var(--cd-primary); font-size:.85rem; }
.cd-odo-empty { margin:0; color:var(--cd-ink-soft); font-size:.85rem; }
.cd-odo-row { display:flex; align-items:center; gap:.8rem; padding:.6rem 0; border-top:1px dashed var(--cd-border); }
.cd-odo-row > i { width:12px; height:12px; flex:none; border-radius:4px; background:#3b82f6; }
.cd-odo-row.is-pending > i { background:#ef4444; }
.cd-odo-row div { flex:1; min-width:0; }
.cd-odo-row strong { display:block; font-size:.88rem; }
.cd-odo-row span { color:var(--cd-ink-soft); font-size:.76rem; }
.cd-odo-row small { text-align:right; color:var(--cd-ink-soft); font-size:.72rem; }
.cd-odo-whole { margin-top:.8rem; padding:.9rem 1.1rem; border:1px solid var(--cd-border); border-radius:16px; }
.cd-odo-whole h3 { margin:0 0 .5rem; font-size:.9rem; }
.cd-odo-whole div { display:flex; justify-content:space-between; padding:.35rem 0; font-size:.82rem; border-top:1px dashed var(--cd-border); }
.cd-odo-whole span { color:var(--cd-ink-soft); }
/* Formulario 033: símbolos de pieza completa y registro de hallazgos */
.cd-033-rojo { color:#b91c1c; }
.cd-033-azul { color:#1d4ed8; }
.cd-033-symbol { fill:none; stroke-width:3.2; stroke-linecap:round; stroke-linejoin:round; pointer-events:none; }
.cd-033-symbol.is-pending { stroke:#dc2626; }
.cd-033-symbol.is-done { stroke:#2563eb; }
.cd-033-mini { width:14px; height:14px; fill:none; stroke:var(--cd-ink-soft); stroke-width:2; stroke-linecap:round; }
.cd-odo-row form.cd-odo-quitar { display:flex; align-items:center; gap:.35rem; margin:0; }
.cd-odo-quitar button { display:grid; place-items:center; width:28px; height:28px; border:1px solid var(--cd-border); border-radius:999px; color:var(--cd-ink-soft); background:#fff; cursor:pointer; }
.cd-odo-quitar button:hover { color:#b91c1c; border-color:#fca5a5; background:#fef2f2; }
.cd-odo-finding-form { margin-top:1rem; padding-top:1rem; border-top:1px solid var(--cd-border); display:grid; gap:.75rem; }
.cd-odo-finding-form h4 { margin:0; font-size:.92rem; font-weight:700; }
.cd-odo-finding-form label { display:grid; gap:.3rem; font-size:.78rem; color:var(--cd-ink-soft); }
.cd-odo-form-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(0,1fr); gap:.75rem; }
.cd-odo-faces { display:flex; flex-wrap:wrap; gap:.4rem; margin:0; padding:0; border:0; min-width:0; }
.cd-odo-faces[hidden] { display:none; }
.cd-odo-faces legend { width:100%; margin-bottom:.3rem; font-size:.78rem; color:var(--cd-ink-soft); }
.cd-odo-faces label { display:inline-flex; cursor:pointer; }
.cd-odo-faces input { position:absolute; opacity:0; pointer-events:none; }
.cd-odo-faces span { padding:.4rem .8rem; border:1px solid var(--cd-border); border-radius:999px; background:#fff; color:var(--cd-ink); font-size:.78rem; }
.cd-odo-faces input:checked + span { color:#fff; background:var(--cd-primary); border-color:var(--cd-primary); }
.cd-odo-faces input:focus-visible + span { outline:2px solid var(--cd-primary); outline-offset:2px; }
.cd-odo-hint { margin:0; font-size:.78rem; color:var(--cd-ink-soft); }
.cd-odo-tooth .cd-tooth-face.is-picked { fill:var(--cd-primary) !important; stroke:var(--cd-primary-dark) !important; stroke-width:1.6; }
.cd-odo-tooth.is-active .cd-tooth-face:hover { fill:var(--cd-primary-soft); stroke:var(--cd-primary); }
.cd-odo-faces legend small { font-size:.72rem; }
.cd-033-symbol.forma-asterisco { stroke-width:2.6; }
.cd-033-symbol.forma-fija, .cd-033-symbol.forma-removible, .cd-033-symbol.forma-total { stroke-linecap:butt; }
.cd-odo-tooth { position:relative; }
.cd-odo-grades { position:absolute; top:2px; right:2px; display:flex; flex-direction:column; gap:2px; }
.cd-odo-tooth.is-lower .cd-odo-grades { top:auto; bottom:2px; }
.cd-odo-grades b, .cd-odo-grade-chip { display:inline-block; padding:0 .25rem; border-radius:5px; color:#b91c1c; background:#fef2f2; border:1px solid #fecaca; font-size:.6rem; font-weight:800; line-height:1.4; }
.cd-odo-grade[hidden] { display:none; }
.cd-cpod { margin-top:1rem; padding:.85rem 1rem; border:1px solid var(--cd-border); border-radius:16px; background:#fbfdfd; }
.cd-cpod h3 { margin:0 0 .6rem; font-size:.85rem; font-weight:700; }
.cd-cpod > div { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.4rem; }
.cd-cpod span { display:grid; gap:.1rem; text-align:center; padding:.45rem .2rem; border-radius:12px; background:#fff; border:1px solid var(--cd-border); }
.cd-cpod small { color:var(--cd-ink-soft); font-size:.58rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cd-cpod > div { gap:.3rem; }
.cd-cpod strong { font-size:1.05rem; font-weight:650; }
.cd-cpod .is-total { background:var(--cd-primary-soft); border-color:var(--cd-primary); }
.cd-odo-color { display:flex; flex-wrap:wrap; gap:.5rem; }
.cd-odo-color[hidden] { display:none; }
.cd-odo-color label { display:inline-flex; cursor:pointer; }
.cd-odo-color input { position:absolute; opacity:0; pointer-events:none; }
.cd-odo-color span { display:inline-flex; align-items:center; gap:.45rem; padding:.45rem .9rem; border:1.5px solid var(--cd-border); border-radius:999px; background:#fff; color:var(--cd-ink); font-size:.8rem; font-weight:600; }
.cd-odo-color span i { width:12px; height:12px; border-radius:50%; }
.cd-odo-color .is-rojo span i { background:#ef4444; }
.cd-odo-color .is-azul span i { background:#3b82f6; }
.cd-odo-color .is-rojo input:checked + span { color:#fff; background:#dc2626; border-color:#b91c1c; }
.cd-odo-color .is-azul input:checked + span { color:#fff; background:#2563eb; border-color:#1d4ed8; }
.cd-odo-color input:checked + span i { background:#fff; }
.cd-odo-color input:focus-visible + span { outline:2px solid var(--cd-primary); outline-offset:2px; }
.cd-odo-color .is-off { cursor:not-allowed; }
.cd-odo-color .is-off span { opacity:.4; text-decoration:line-through; }
.cd-odo-row.is-annulled { opacity:.55; }
.cd-odo-row.is-annulled strong { text-decoration:line-through; }
.cd-odo-row.is-annulled > i { background:#cbd5e1 !important; }
@keyframes cd-odo-pulso { 0%,100% { box-shadow:0 0 0 0 rgba(15,118,110,0); } 40% { box-shadow:0 0 0 6px rgba(15,118,110,.35); } }
.cd-odo-tooth.is-just-saved { animation:cd-odo-pulso 1.1s ease-in-out 2; border-color:var(--cd-primary); }
@media (prefers-reduced-motion:reduce) { .cd-odo-tooth.is-just-saved { animation:none; background:var(--cd-primary-soft); } }
.cd-odo-finding-form .btn { justify-self:start; }
@media (max-width:560px) { .cd-odo-form-grid { grid-template-columns:1fr; } .cd-odo-finding-form .btn { justify-self:stretch; } }

.cd-record-sidebar .cd-allergy-alert { margin-bottom:.8rem; }

/* Google Calendar */
.cd-gcal-pasos { margin:.2rem 0 0; padding-left:1.2rem; display:grid; gap:.35rem; font-size:.85rem; }
.cd-gcal-pasos a { color:var(--cd-primary-dark); font-weight:700; }
.cd-gcal-opcion { display:grid; gap:.3rem; padding:.75rem .85rem; border:1px solid var(--cd-border); border-radius:12px; }
.cd-gcal-opcion label { display:flex; align-items:center; gap:.55rem; font-size:.85rem; cursor:pointer; }
.cd-gcal-opcion input { width:18px; height:18px; accent-color:var(--cd-primary); }
.cd-gcal-opcion small, .cd-gcal-nota { color:var(--cd-ink-soft); font-size:.75rem; }
.cd-gcal-nota { margin-left:.6rem; }
.cd-slot-gcal { display:grid; place-items:center; width:32px; height:32px; border:1px solid var(--cd-border); border-radius:9px; color:#1a73e8; background:#fff; text-decoration:none; }
.cd-slot-gcal:hover { border-color:#1a73e8; background:#e8f0fe; color:#1a73e8; }
.cd-recovery-link .btn { white-space:nowrap; display:inline-flex; align-items:center; gap:.4rem; flex-shrink:0; }

/* Iconos dentro de botones de estados vacios: color y tamano del boton */
.cd-odontometry-empty .btn i, .cd-patient-list-empty .btn i, .cd-owner-empty .btn i { margin:0; font-size:inherit; color:inherit; }

/* Duracion libre del turno */
.cd-slot-input { display:flex; align-items:center; gap:.5rem; }
.cd-slot-input input { max-width:110px; font-weight:650; text-align:center; }
.cd-slot-input span { color:var(--cd-ink-soft); font-size:.85rem; }
.cd-slot-chips { display:flex; flex-wrap:wrap; gap:.4rem; margin-top:.55rem; }
.cd-slot-chips button { border:1px solid var(--cd-border); background:#fff; color:var(--cd-ink); border-radius:999px; padding:.3rem .75rem; font-size:.78rem; font-weight:600; }
.cd-slot-chips button:hover { border-color:var(--cd-primary-light); }
.cd-slot-chips button.is-on { background:var(--cd-primary); border-color:var(--cd-primary); color:#fff; }
.cd-field-error { color:#dc2626; font-size:.8rem; margin-top:.35rem; }

/* Nueva cita a cualquier hora (como "Crear" de Google Calendar) */
.cd-new-cita { margin:0 0 .8rem; background:#fff; border:1px solid var(--cd-border); border-radius:16px; box-shadow:var(--cd-shadow); }
.cd-new-cita > summary { list-style:none; cursor:pointer; padding:.75rem 1rem; font-weight:700; color:var(--cd-primary-dark); display:flex; align-items:center; gap:.5rem; }
.cd-new-cita > summary::-webkit-details-marker { display:none; }
.cd-new-cita > summary i { display:grid; place-items:center; width:28px; height:28px; border-radius:50%; background:var(--cd-primary); color:#fff; font-size:.8rem; }
.cd-new-cita[open] > summary { border-bottom:1px solid var(--cd-border); }
.cd-new-cita .cd-slot-form { padding:.9rem 1rem 1rem; }
.cd-cita-horas input[type=time] { font-weight:650; }

/* Turnos que ya pasaron: solo lectura */
div.cd-slot.is-free.is-past { flex-direction:row; align-items:center; gap:.9rem; opacity:.5; cursor:default; }

/* Calendario de dias de atencion */
.cd-cal { margin-bottom:1.2rem; }
.cd-cal-head { display:flex; justify-content:space-between; align-items:flex-start; gap:1rem; flex-wrap:wrap; margin-bottom:.9rem; }
.cd-cal-head h2 { font-size:1.05rem; margin:0; display:flex; align-items:center; gap:.5rem; }
.cd-cal-head p { margin:.2rem 0 0; color:var(--cd-ink-soft); font-size:.82rem; }
.cd-cal-nav { display:flex; align-items:center; gap:.6rem; }
.cd-cal-nav strong { min-width:130px; text-align:center; font-weight:700; }
.cd-cal-nav a { display:grid; place-items:center; width:32px; height:32px; border-radius:50%; border:1px solid var(--cd-border); color:var(--cd-ink); text-decoration:none; background:#fff; }
.cd-cal-grid { display:grid; grid-template-columns:repeat(7, minmax(0,1fr)); gap:.35rem; }
.cd-cal-dow { text-align:center; font-size:.7rem; font-weight:700; color:var(--cd-ink-soft); padding:.2rem 0; }
.cd-cal-day { min-height:62px; border:1px solid var(--cd-border); border-radius:12px; background:#fff; padding:.35rem .4rem; text-align:left; display:flex; flex-direction:column; gap:.15rem; cursor:pointer; transition:transform .12s, box-shadow .12s; font-family:inherit; }
.cd-cal-day:hover:not([disabled]) { transform:translateY(-1px); box-shadow:var(--cd-shadow); }
.cd-cal-num { font-weight:700; font-size:.9rem; }
.cd-cal-day small { font-size:.62rem; line-height:1.2; color:inherit; opacity:.85; }
.cd-cal-day.is-semanal { background:#e6f7f3; border-color:#b7e4da; color:#115e59; }
.cd-cal-day.is-especifica { background:#0f766e; border-color:#0f766e; color:#fff; }
.cd-cal-day.is-bloqueado { background:#fee2e2; border-color:#fecaca; color:#b91c1c; }
.cd-cal-day.is-out { opacity:.45; }
.cd-cal-day.is-past { opacity:.35; cursor:not-allowed; }
.cd-cal-day.is-today .cd-cal-num { text-decoration:underline; text-underline-offset:3px; }
.cd-cal-day.is-selected { opacity:1; outline:3px solid #f59e0b; outline-offset:1px; background:#fef3c7; border-color:#f59e0b; color:#92400e; }
.cd-cal-legend { display:flex; flex-wrap:wrap; gap:.9rem; margin:.7rem 0 0; font-size:.75rem; color:var(--cd-ink-soft); }
.cd-cal-legend i { display:inline-block; width:12px; height:12px; border-radius:4px; vertical-align:-1px; margin-right:.3rem; border:1px solid var(--cd-border); background:#fff; }
.cd-cal-legend i.is-especifica { background:#0f766e; border-color:#0f766e; }
.cd-cal-legend i.is-semanal { background:#e6f7f3; border-color:#b7e4da; }
.cd-cal-legend i.is-bloqueado { background:#fee2e2; border-color:#fecaca; }
.cd-cal-form { margin-top:1rem; padding-top:1rem; border-top:1px solid var(--cd-border); display:grid; gap:.6rem; }
.cd-cal-picked { margin:0; font-size:.85rem; color:var(--cd-ink-soft); }
.cd-cal-picked.has-dates { color:#92400e; font-weight:600; }
.cd-cal-form-row { display:flex; flex-wrap:wrap; align-items:flex-end; gap:.7rem; }
.cd-cal-form-row label { display:grid; gap:.25rem; font-size:.7rem; font-weight:700; color:var(--cd-ink-soft); text-transform:uppercase; letter-spacing:.04em; }
.cd-cal-form-row input[type=time] { min-width:130px; }
.cd-cal-note { color:var(--cd-ink-soft); font-size:.75rem; }
.cd-cal-list { margin-top:1rem; display:grid; gap:.4rem; }
.cd-cal-list h3 { font-size:.85rem; margin:0 0 .2rem; }
.cd-cal-item { display:flex; justify-content:space-between; align-items:center; gap:.6rem; padding:.5rem .75rem; border:1px solid var(--cd-border); border-radius:12px; font-size:.85rem; }
.cd-cal-item button { border:0; background:transparent; color:#b91c1c; width:28px; height:28px; border-radius:50%; }
.cd-cal-item button:hover { background:#fee2e2; }
.cd-schedule-subtitle { font-size:1.05rem; margin:.4rem 0 .7rem; display:flex; align-items:center; gap:.5rem; }
.cd-schedule-subtitle small { font-weight:400; color:var(--cd-ink-soft); font-size:.8rem; }
@media (max-width: 600px) {
  .cd-cal-day { min-height:48px; padding:.25rem; }
  .cd-cal-day small { display:none; }
}

/* Confirmacion en linea (reemplaza confirm() del navegador) */
.cd-confirm { display:inline-flex; align-items:center; gap:.4rem; flex-wrap:wrap; font-size:.82rem; }
.cd-confirm-text { font-weight:600; color:#b91c1c; }
.cd-confirm button { border:1px solid var(--cd-border); border-radius:999px; padding:.2rem .75rem; font-weight:700; background:#fff; font-size:.78rem; width:auto !important; height:auto !important; }
.cd-confirm .cd-confirm-si { background:#dc2626; border-color:#dc2626; color:#fff !important; }
.cd-confirm .cd-confirm-si:hover { background:#b91c1c !important; }
.cd-confirm .cd-confirm-no { color:var(--cd-ink) !important; background:#fff !important; }

/* Mi horario: acceso a las citas del dia */
.cd-cal-top { display:flex; justify-content:space-between; align-items:center; }
.cd-cal-ver { display:grid; place-items:center; width:22px; height:22px; border-radius:50%; color:inherit; opacity:.55; text-decoration:none; font-size:.72rem; }
.cd-cal-ver:hover { opacity:1; background:rgba(255,255,255,.6); }
.cd-cal-day.is-past .cd-cal-ver { pointer-events:auto; }
.cd-cal-day.is-past { pointer-events:none; }
.cd-cal-day.is-past .cd-cal-top { pointer-events:auto; }
.cd-cal-citas { font-weight:800 !important; opacity:1 !important; }
.cd-cal-day.is-especifica .cd-cal-ver:hover { background:rgba(255,255,255,.2); }

/* Agenda: vista Mes */
.cd-month { display:grid; grid-template-columns:repeat(7, minmax(0,1fr)); gap:.4rem; background:#fff; border-radius:18px; padding:.8rem; box-shadow:var(--cd-shadow); border:1px solid var(--cd-border); }
.cd-month-dow { text-align:center; font-size:.72rem; font-weight:700; color:var(--cd-ink-soft); padding:.2rem 0 .3rem; }
.cd-month-day { min-height:104px; border:1px solid var(--cd-border); border-radius:12px; padding:.4rem; display:flex; flex-direction:column; gap:.2rem; text-decoration:none; color:var(--cd-ink); background:#fff; transition:transform .12s, box-shadow .12s; min-width:0; }
.cd-month-day:hover { transform:translateY(-1px); box-shadow:var(--cd-shadow); color:var(--cd-ink); }
.cd-month-day.is-semanal { background:#f3fbf9; border-color:#cfeae3; }
.cd-month-day.is-especifica { background:#e6f7f3; border-color:#0f766e; }
.cd-month-day.is-bloqueado { background:#fef2f2; border-color:#fecaca; }
.cd-month-day.is-out { opacity:.45; }
.cd-month-day.is-past { opacity:.6; }
.cd-month-day.is-today .cd-month-num { background:var(--cd-primary); color:#fff; border-radius:50%; width:24px; height:24px; display:grid; place-items:center; }
.cd-month-top { display:flex; justify-content:space-between; align-items:center; gap:.3rem; }
.cd-month-num { font-weight:700; font-size:.9rem; }
.cd-month-count { background:var(--cd-primary); color:#fff; border-radius:999px; font-size:.62rem; font-weight:700; padding:.1rem .45rem; white-space:nowrap; }
.cd-month-hours { font-size:.62rem; color:var(--cd-ink-soft); }
.cd-month-cita { font-size:.68rem; background:#fff; border-left:3px solid var(--cd-primary); border-radius:6px; padding:.1rem .3rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; box-shadow:0 1px 2px rgba(15,23,42,.06); }
.cd-month-cita.status-rq { border-left-color:#f59e0b; }
.cd-month-cita.status-at { border-left-color:#3b82f6; }
.cd-month-more { font-size:.65rem; color:var(--cd-ink-soft); font-weight:700; }
@media (max-width: 700px) {
  .cd-month { padding:.4rem; gap:.25rem; }
  .cd-month-day { min-height:64px; padding:.25rem; }
  .cd-month-cita, .cd-month-hours { display:none; }
  .cd-month-count { font-size:.58rem; padding:.05rem .3rem; }
}

/* Selector de profesional (propietario gestiona el horario de su equipo) */
.cd-prof-select { display:grid; gap:.25rem; min-width:240px; }
.cd-prof-select span { font-size:.7rem; font-weight:700; color:var(--cd-ink-soft); text-transform:uppercase; letter-spacing:.04em; }
.cd-prof-select select { border-radius:999px; font-weight:600; }

/* Agenda del dia tipo Google Calendar */
.cd-daygrid-wrap { display:grid; grid-template-columns:minmax(0,1fr) 340px; gap:1rem; align-items:start; }
.cd-daygrid { position:relative; background:#fff; border:1px solid var(--cd-border); border-radius:18px; box-shadow:var(--cd-shadow); margin-left:0; cursor:pointer; overflow:hidden; padding-left:58px; }
.cd-dg-hour { position:absolute; left:0; right:0; border-top:1px solid #edf2f1; pointer-events:none; }
.cd-dg-hour span { position:absolute; left:10px; top:4px; font-size:.72rem; font-weight:700; color:var(--cd-ink-soft); }
.cd-dg-hour:first-child { border-top:0; }
.cd-dg-franja { position:absolute; left:58px; right:0; background:rgba(20,184,166,.07); border-left:3px solid rgba(15,118,110,.35); pointer-events:none; }
.cd-dg-now { position:absolute; left:52px; right:0; border-top:2px solid #ef4444; z-index:3; pointer-events:none; }
.cd-dg-now::before { content:""; position:absolute; left:-5px; top:-6px; width:10px; height:10px; border-radius:50%; background:#ef4444; }
.cd-dg-cita { position:absolute; left:64px; right:8px; z-index:2; border:0; border-left:4px solid var(--cd-primary); border-radius:10px; background:#d9f2ec; color:#0b3f3b; text-align:left; padding:.3rem .6rem; display:flex; flex-direction:column; gap:.05rem; overflow:hidden; font-family:inherit; box-shadow:0 1px 3px rgba(15,23,42,.08); transition:box-shadow .12s, transform .12s; }
.cd-dg-cita:hover, .cd-dg-cita.is-active { box-shadow:0 6px 18px rgba(15,118,110,.25); transform:translateX(2px); }
.cd-dg-cita strong { font-size:.85rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cd-dg-cita span { font-size:.72rem; opacity:.85; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cd-dg-cita.is-short { flex-direction:row; align-items:center; gap:.5rem; padding:.1rem .6rem; }
.cd-dg-cita.status-rq { background:#fef3c7; border-left-color:#f59e0b; color:#78350f; }
.cd-dg-cita.status-at { background:#dbeafe; border-left-color:#3b82f6; color:#1e3a8a; }
.cd-dg-cita.status-na { background:#f1f5f9; border-left-color:#94a3b8; color:#475569; }
.cd-dg-ghost { position:absolute; left:64px; right:8px; z-index:2; border:2px dashed var(--cd-primary); border-radius:10px; background:rgba(15,118,110,.12); color:var(--cd-primary-dark); font-weight:700; font-size:.8rem; padding:.3rem .6rem; pointer-events:none; }
.cd-dg-toast { position:absolute; left:50%; transform:translate(-50%, -50%); z-index:4; background:#1e293b; color:#fff; font-size:.78rem; font-weight:600; padding:.35rem .8rem; border-radius:999px; pointer-events:none; white-space:nowrap; }
.cd-dg-panel { position:sticky; top:84px; background:#fff; border:1px solid var(--cd-border); border-radius:18px; box-shadow:var(--cd-shadow); padding:1rem; display:grid; gap:.6rem; }
.cd-dg-panel header { display:flex; justify-content:space-between; align-items:center; gap:.5rem; }
.cd-dg-panel h3 { font-size:1.05rem; margin:0; }
.cd-dg-close { border:0; background:#f1f5f9; width:30px; height:30px; border-radius:50%; color:var(--cd-ink-soft); }
.cd-dg-hint { text-align:center; display:grid; gap:.5rem; justify-items:center; padding:.8rem .2rem; color:var(--cd-ink-soft); }
.cd-dg-hint > i { font-size:1.6rem; color:var(--cd-primary); }
.cd-dg-hint p { margin:0; font-size:.88rem; }
.cd-dg-form, .cd-dg-detail { display:grid; gap:.6rem; }
.cd-dg-form[hidden], .cd-dg-detail[hidden], .cd-dg-hint[hidden] { display:none; }
.cd-dg-form label { display:grid; gap:.25rem; font-size:.7rem; font-weight:700; color:var(--cd-ink-soft); text-transform:uppercase; letter-spacing:.04em; }
.cd-dg-with { margin:0; font-size:.8rem; color:var(--cd-primary-dark); font-weight:600; }
.cd-dg-dur { display:flex; flex-wrap:wrap; gap:.35rem; }
.cd-dg-dur button { border:1px solid var(--cd-border); background:#fff; border-radius:999px; padding:.28rem .7rem; font-size:.76rem; font-weight:700; color:var(--cd-ink); }
.cd-dg-dur button.is-on { background:var(--cd-primary); border-color:var(--cd-primary); color:#fff; }
.cd-dg-dur button:disabled { opacity:.35; cursor:not-allowed; }
.cd-dg-detail p { margin:0; font-size:.88rem; display:flex; gap:.5rem; align-items:center; }
.cd-dg-detail p i { color:var(--cd-primary); width:16px; }
.cd-dg-when { font-weight:700; }
.cd-dg-detail .cd-slot-status { justify-self:start; }
.cd-dg-detail .cd-slot-actions { flex-wrap:wrap; justify-content:flex-start; }
@media (max-width: 900px) {
  .cd-daygrid-wrap { grid-template-columns:1fr; }
  .cd-dg-panel { position:static; }
}

/* Copiar horario entre dias */
.cd-copy { position:relative; }
.cd-copy-btn { border:1px solid var(--cd-border); background:#fff; border-radius:999px; padding:.3rem .7rem; font-size:.75rem; font-weight:700; color:var(--cd-primary-dark); white-space:nowrap; }
.cd-copy-btn:hover { border-color:var(--cd-primary-light); }
.cd-schedule-row:not(.is-on) .cd-copy { opacity:.4; }
.cd-copy-menu { position:absolute; right:0; top:calc(100% + 6px); z-index:20; background:#fff; border:1px solid var(--cd-border); border-radius:12px; box-shadow:var(--cd-shadow-lg); padding:.3rem; display:grid; min-width:180px; }
.cd-copy-menu[hidden] { display:none; }
.cd-copy-menu button { border:0; background:transparent; text-align:left; padding:.45rem .6rem; border-radius:8px; font-size:.82rem; font-weight:600; color:var(--cd-ink); }
.cd-copy-menu button:hover { background:#e6f7f3; }
.cd-schedule-row.is-copied { box-shadow:0 0 0 3px rgba(20,184,166,.35); transition:box-shadow .3s; }
.cd-schedule-daycell { display:flex; align-items:center; justify-content:space-between; gap:.5rem; }
.cd-copy-pick { border-top:1px solid var(--cd-border); margin-top:.25rem; padding:.45rem .4rem .2rem; display:grid; gap:.4rem; }
.cd-copy-pick > span { font-size:.72rem; font-weight:700; color:var(--cd-ink-soft); }
.cd-copy-days { display:flex; gap:.25rem; }
.cd-copy-menu .cd-copy-days button { width:28px; height:28px; padding:0; border-radius:50%; border:1px solid var(--cd-border); text-align:center; font-size:.75rem; font-weight:800; }
.cd-copy-menu .cd-copy-days button.is-on { background:var(--cd-primary); border-color:var(--cd-primary); color:#fff; }
.cd-copy-menu .cd-copy-days button:disabled { opacity:.3; cursor:not-allowed; }
.cd-copy-menu .cd-copy-apply { background:var(--cd-primary); color:#fff; text-align:center; border-radius:999px; }
.cd-copy-menu .cd-copy-apply:hover { background:var(--cd-primary-dark); }
.cd-copy-menu .cd-copy-apply:disabled { opacity:.4; background:var(--cd-primary); cursor:not-allowed; }
.cd-copy-menu { min-width:230px; }
.cd-team-links { display:flex; gap:.4rem; margin-top:.5rem; flex-wrap:wrap; }
.cd-team-links .btn { padding:.25rem .7rem; font-size:.75rem; font-weight:700; }

/* Configuracion inicial de la clinica */
.cd-setup { max-width:820px; margin:0 auto; }
.cd-setup-head h1 { margin:.2rem 0; }
.cd-setup-head p { color:var(--cd-ink-soft); }
.cd-setup-steps { list-style:none; padding:0; margin:1.2rem 0; display:grid; gap:.8rem; }
.cd-setup-step { display:grid; grid-template-columns:44px 1fr; gap:1rem; background:#fff; border:1px solid var(--cd-border); border-radius:18px; padding:1.1rem; box-shadow:var(--cd-shadow); }
.cd-setup-step.is-current { border-color:var(--cd-primary); box-shadow:0 0 0 3px rgba(20,184,166,.15), var(--cd-shadow); }
.cd-setup-step.is-locked { opacity:.5; }
.cd-setup-num { width:40px; height:40px; border-radius:50%; display:grid; place-items:center; font-weight:800; background:#e6f7f3; color:var(--cd-primary-dark); }
.cd-setup-step.is-done .cd-setup-num { background:var(--cd-primary); color:#fff; }
.cd-setup-body h2 { font-size:1.05rem; margin:.45rem 0 .3rem; }
.cd-setup-body h2 small { font-weight:400; color:var(--cd-ink-soft); font-size:.8rem; }
.cd-setup-body p { color:var(--cd-ink-soft); font-size:.88rem; margin:0 0 .7rem; }
.cd-setup-ok { color:var(--cd-ink) !important; font-size:.95rem !important; }
.cd-setup-options { display:grid; grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); gap:.6rem; }
.cd-setup-option, .cd-setup-option button { display:grid; gap:.25rem; text-align:left; text-decoration:none; color:var(--cd-ink); }
.cd-setup-option { border:1px solid var(--cd-border); border-radius:14px; padding:.9rem; background:#fbfdfd; transition:border-color .12s, box-shadow .12s; }
.cd-setup-option button { border:0; background:transparent; padding:0; width:100%; font-family:inherit; }
.cd-setup-option:hover { border-color:var(--cd-primary-light); box-shadow:var(--cd-shadow); color:var(--cd-ink); }
.cd-setup-option i { color:var(--cd-primary); font-size:1.2rem; }
.cd-setup-option small { color:var(--cd-ink-soft); }
.cd-setup-pick select { margin:.3rem 0; }
.cd-setup-team { list-style:none; padding:0; margin:0 0 .7rem; display:grid; gap:.3rem; font-size:.9rem; }
.cd-setup-team i { color:var(--cd-primary); }
.cd-setup-change summary { cursor:pointer; color:var(--cd-primary-dark); font-weight:700; font-size:.85rem; margin-bottom:.6rem; }
.cd-setup-foot { display:flex; justify-content:flex-end; align-items:center; gap:1rem; flex-wrap:wrap; }
.cd-setup-foot p { margin:0; color:var(--cd-primary-dark); font-weight:700; }
.cd-dg-form input.is-auto { background:#f1f8f6; color:var(--cd-primary-dark); font-weight:600; }
/* Semana: citas cortas en una linea y visibles al pasar el mouse */
.cd-week-event.is-short { display:flex; align-items:center; gap:.3rem; padding:.05rem .4rem; }
.cd-week-event.is-short em { display:none; }
.cd-week-event:hover { z-index:5; min-height:fit-content; box-shadow:0 4px 12px rgba(15,23,42,.15); }

/* Google Calendar al instante */
.cd-gcal-api { margin-bottom:1rem; }
.cd-gcal-acciones { display:flex; flex-wrap:wrap; gap:.5rem; margin-top:.8rem; }
.cd-gcal-acciones form { margin:0; }
.cd-gcal-error { margin:.6rem 0; padding:.6rem .8rem; border:1px solid #fecaca; border-radius:12px; background:#fef2f2; color:#b91c1c; font-size:.85rem; }
.cd-gcal-alt { margin:0 0 .8rem; font-size:.9rem; font-weight:700; color:var(--cd-ink-soft); }
.cd-gcal-setup-link { margin:.9rem 0 0; font-size:.82rem; }
.cd-gsetup-ok { border-color:#a7f3d0; background:#f0fdf4; }
.cd-gsetup-ok code { word-break:break-all; }
.cd-gsetup-pasos { margin:1rem 0 0; padding-left:1.2rem; display:grid; gap:1.1rem; }
.cd-gsetup-pasos > li::marker { font-weight:800; color:var(--cd-primary); }
.cd-gsetup-pasos h3 { margin:0 0 .35rem; font-size:.98rem; font-weight:700; }
.cd-gsetup-pasos p, .cd-gsetup-pasos ul { margin:.3rem 0; font-size:.88rem; }
.cd-gsetup-pasos ul { padding-left:1.1rem; }
.cd-gsetup-importante { margin-left:.35rem; padding:.1rem .5rem; border-radius:999px; background:#fef3c7; color:#92400e; font-size:.68rem; font-weight:800; text-transform:uppercase; vertical-align:middle; }
.cd-gsetup-form { display:grid; gap:.7rem; max-width:560px; margin:.5rem 0; }
.cd-gsetup-form label { display:grid; gap:.3rem; font-size:.8rem; color:var(--cd-ink-soft); }
.cd-gsetup-form .btn { justify-self:start; }
.cd-gsetup-faq dt { margin-top:.8rem; font-weight:700; font-size:.88rem; }
.cd-gsetup-faq dd { margin:.25rem 0 0; font-size:.85rem; color:var(--cd-ink-soft); }

/* Alerta de alergias en todo el sistema */
.cd-record-allergy:empty { display:none; }
.cd-record-allergy { margin:.9rem 0; }
.cd-record-allergy .cd-allergy-alert { font-size:.9rem; padding:.75rem 1rem; }
.cd-allergy-chip { display:inline-flex; align-items:center; gap:.3rem; padding:.1rem .5rem; border-radius:999px; background:#fee4e2; border:1px solid #d92d20; color:#b42318; font-size:.68rem; font-weight:800; white-space:nowrap; vertical-align:middle; }
.cd-allergy-icon { color:#d92d20; }
.cd-allergy-confirm { margin:1rem 0; padding:.85rem 1rem; border:1.5px solid #d92d20; border-radius:14px; background:#fee4e2; color:#7a271a; font-size:.88rem; }
.cd-allergy-confirm p { margin:0 0 .55rem; }
.cd-allergy-confirm i { color:#d92d20; }
.cd-allergy-confirm label { display:flex; align-items:center; gap:.5rem; font-weight:700; color:#b42318; cursor:pointer; }
input.cd-rx-riesgo { border-color:#d92d20 !important; background:#fff5f4 !important; box-shadow:0 0 0 2px rgba(217,45,32,.15) !important; }
.cd-rx-riesgo-aviso { display:block; margin-top:.25rem; color:#b42318; font-size:.75rem; font-weight:700; }
.cd-rx-list-meds { display:flex; flex-wrap:wrap; gap:.3rem; }
.cd-rx-list-meds span { padding:.15rem .55rem; border-radius:999px; background:var(--cd-primary-soft); color:var(--cd-primary-dark); font-size:.75rem; font-weight:600; }
.cd-rx-list-actions { white-space:nowrap; }
.cd-rx-list-actions .btn { margin-right:.25rem; }
/* Botón por defecto del asistente (Enter = Siguiente); invisible pero presente,
   porque algunos navegadores ignoran los botones con display:none al pulsar Enter. */
.cd-wizard-enter { position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; opacity:0; }

/* ===== Odontograma con la distribución del Formulario 033 ===== */
.cd-033 { min-width:680px; margin:.4rem 0 .2rem; }
.cd-033-fila { display:grid; grid-template-columns:1fr 1fr; }
.cd-033-lado { display:grid; grid-template-columns:repeat(8,minmax(34px,1fr)); gap:.2rem; padding:.25rem .45rem; align-items:start; }
/* Línea media: vertical entre lados y horizontal entre arcadas (cruz de cuadrantes). */
.cd-033-lado.is-derecha { border-left:2px solid #64748b; }
.cd-033-fila.is-temporal-superior { border-bottom:2px solid #64748b; }
.cd-033-fila.is-temporal-superior .cd-033-lado, .cd-033-fila.is-temporal-inferior .cd-033-lado { padding-top:.4rem; padding-bottom:.4rem; }
.cd-033-fila.is-temporal-superior .cd-033-lado { align-items:end; }
.cd-033-vacia { display:block; }
.cd-odo-tooth.is-temp { padding:.2rem .1rem; }
.cd-odo-tooth.is-temp .cd-tooth-glyph { max-width:30px; }
.cd-odo-tooth.is-temp .cd-tooth-number { font-size:.62rem; }
.cd-033-casillas { display:grid; gap:2px; width:100%; max-width:34px; }
.cd-033-casilla { display:grid; place-items:center; height:15px; border:1px solid #94a3b8; border-radius:3px; background:#fff; color:#b91c1c; font-size:.62rem; font-style:normal; font-weight:800; line-height:1; }
.cd-033-casilla:empty::before { content:attr(title); color:#cbd5e1; font-size:.42rem; font-weight:700; text-transform:uppercase; overflow:hidden; max-width:100%; }
.cd-033-casilla:hover { border-color:var(--cd-primary); background:var(--cd-primary-soft); }
.cd-033-casilla.is-marcada { border-color:#ef4444; background:#fef2f2; }
b.cd-033-casilla { display:inline-grid; width:22px; }
/* Tercios de la raíz: invisibles hasta que se tocan o se pintan. */
.cd-tooth-face.cd-tooth-third { fill:transparent; stroke:#cbd5e1; stroke-width:.8; stroke-dasharray:2 2; }
.cd-odo-tooth .cd-tooth-face.cd-tooth-third:hover { fill:#e2e8f0; stroke:#94a3b8; }
.cd-odo-faces-sep { width:100%; margin-top:.2rem; color:var(--cd-ink-soft); font-size:.72rem; font-weight:700; }
.cd-cpod h3 small { font-weight:500; color:var(--cd-ink-soft); }
.cd-cpod > div + h3 { margin-top:.8rem; }
/* Asistente de consulta: mismas filas del 033 con la cruz de la línea media */
.cd-treatment-arch > .is-media { box-shadow:-3px 0 0 -1px #64748b; }
.cd-treatment-arch-scroll.is-media-h { border-bottom:2px solid #64748b; }
.cd-treatment-temp .cd-tooth-glyph { transform:scale(.8); }
.cd-treatment-temp.cd-treatment-lower .cd-tooth-glyph { transform:scale(.8,-.8); }
/* Ficha 033: etiquetas laterales, recesión/movilidad en una sola casilla partida y temporales redondos */
.cd-033-fila { grid-template-columns:74px 1fr 1fr; }
.cd-033-etiquetas { display:flex; flex-direction:column; padding:.6rem .2rem .3rem 0; color:#475569; font-size:.58rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }
.cd-033-etiquetas .is-casilla { height:15px; line-height:15px; }
.cd-033-etiquetas .is-cara { margin:auto 0; }
.cd-033-fila.is-inferior .cd-033-etiquetas { justify-content:flex-end; padding:.3rem .2rem .6rem 0; }
.cd-033-fila.is-inferior .cd-033-etiquetas .is-cara { margin:0 0 auto; padding-top:1.6rem; }
.cd-033-etiquetas .is-lingual { margin-top:auto; transform:translateY(50%); }
.cd-033-casillas { gap:0; border:1px solid #64748b; border-radius:3px; overflow:hidden; }
.cd-033-casilla { border:0; border-radius:0; }
.cd-033-casillas .cd-033-casilla + .cd-033-casilla { border-top:1px solid #94a3b8; }
.cd-033-casillas .cd-033-casilla:empty::before { content:none; }
.cd-odo-tooth.is-temp .cd-tooth-glyph { max-width:34px; overflow:visible; }
.cd-tooth-glyph.is-temporal { overflow:visible; }
/* Tercios de raíz marcados: el degradado lo pone el JS; sin contorno de selección. */
.cd-odo-tooth .cd-tooth-face.cd-tooth-third.is-picked, .cd-tooth-face.cd-tooth-third.is-done, .cd-tooth-face.cd-tooth-third.is-pending { stroke:none !important; }
.cd-field-help { display:block; margin-top:.25rem; color:var(--cd-ink-soft); font-size:.72rem; }
/* Formulario de paciente con el encabezado de la hoja 033 */
.cd-033-cabecera { display:grid; grid-template-columns:1.25fr 1.4fr 1.4fr .8fr .7fr 1fr; border:1.5px solid #475569; border-radius:12px; overflow:hidden; }
.cd-033-celda { display:flex; flex-direction:column; min-width:0; border-left:1px solid #94a3b8; }
.cd-033-celda:first-child { border-left:0; }
.cd-033-celda > span { padding:.45rem .5rem; color:#fff; background:#4b5563; font-size:.64rem; font-weight:800; letter-spacing:.05em; text-align:center; text-transform:uppercase; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.cd-033-celda > span label { margin:0; color:inherit; font:inherit; cursor:pointer; }
.cd-033-celda > div { display:flex; flex-direction:column; justify-content:center; flex:1; padding:.4rem; min-height:54px; }
.cd-033-celda .form-control { min-height:40px; border:0; border-radius:8px; background:#f8fafc; font-size:.86rem; text-align:center; }
.cd-033-celda .form-control:focus { background:#fff; box-shadow:0 0 0 2px var(--cd-primary-light); }
.cd-033-celda strong { font-size:.84rem; text-align:center; }
.cd-033-celda.is-establecimiento strong { color:var(--cd-primary-dark); }
.cd-033-celda.has-error > span { background:#be123c; }
.cd-033-celda .errorlist { margin:.25rem 0 0; padding-left:.9rem; color:#be123c; font-size:.68rem; }
.cd-033-sexo { flex-direction:row !important; align-items:center; justify-content:center; gap:.4rem; }
.cd-033-sexo label { margin:0; cursor:pointer; }
.cd-033-sexo input { position:absolute; opacity:0; pointer-events:none; }
.cd-033-sexo b { display:grid; place-items:center; width:34px; height:34px; border:1.5px solid #94a3b8; border-radius:8px; font-size:.85rem; }
.cd-033-sexo input:checked + b { color:#fff; background:var(--cd-primary); border-color:var(--cd-primary); }
.cd-033-sexo input:focus-visible + b { outline:2px solid var(--cd-primary); outline-offset:2px; }
.cd-033-ayuda { margin:.45rem 0 .8rem; }
.cd-033-edades { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); margin-bottom:1.1rem; border:1.5px solid #475569; border-radius:10px; overflow:hidden; }
.cd-033-edades span { padding:.5rem .3rem; border-left:1px solid #94a3b8; color:#64748b; font-size:.64rem; font-weight:700; text-align:center; text-transform:uppercase; }
.cd-033-edades span:first-child { border-left:0; }
.cd-033-edades span.is-activo { color:#fff; background:var(--cd-primary); }
@media (max-width:760px) {
  .cd-033-cabecera { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .cd-033-celda { border-top:1px solid #94a3b8; }
  .cd-033-celda:nth-child(even) { border-left:0; }
  .cd-033-celda.is-establecimiento { grid-column:1/-1; border-top:0; }
  .cd-033-edades { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .cd-033-edades span:nth-child(4) { border-left:0; }
  .cd-033-edades span:nth-child(n+4) { border-top:1px solid #94a3b8; }
}
.cd-033-celda > span { display:flex; align-items:center; justify-content:center; min-height:2.4rem; white-space:normal; line-height:1.15; }
/* Bienvenida de la clínica: el diente se dibuja, el nombre entra letra por
   letra (desenfoque + subida) y la pantalla se abre en círculo desde el centro. */
@property --cd-hueco { syntax:"<percentage>"; inherits:false; initial-value:0%; }
.cd-bienvenida-intro { position:fixed; inset:0; z-index:3000; display:grid; place-items:center; overflow:hidden; pointer-events:none;
  background:radial-gradient(circle at 50% 42%,#14b8a6 0%,var(--cd-primary) 38%,var(--cd-primary-dark) 100%);
  -webkit-mask:radial-gradient(circle at 50% 45%,transparent var(--cd-hueco),#000 calc(var(--cd-hueco) + 7%));
          mask:radial-gradient(circle at 50% 45%,transparent var(--cd-hueco),#000 calc(var(--cd-hueco) + 7%)); }
.cd-bienvenida-intro.is-abriendo { animation:cd-iris 1.05s cubic-bezier(.65,0,.25,1) forwards; }
/* Anillo de luz que acompaña el borde del círculo al abrirse. */
.cd-bienvenida-intro::after { content:""; position:absolute; top:45%; left:50%; width:20px; height:20px; margin:-10px 0 0 -10px; border-radius:50%; box-shadow:0 0 0 2px rgba(255,255,255,.75),0 0 40px 12px rgba(94,234,212,.55); opacity:0; }
.cd-bienvenida-intro.is-abriendo::after { animation:cd-anillo 1.05s cubic-bezier(.65,0,.25,1) forwards; }
@keyframes cd-anillo { 0% { opacity:0; transform:scale(1); } 15% { opacity:1; } 100% { opacity:0; transform:scale(190); } }
.cd-bienvenida-particulas { position:absolute; inset:0; }
.cd-bienvenida-particulas i { position:absolute; border-radius:50%; background:#fff; box-shadow:0 0 8px 2px rgba(204,251,241,.8); opacity:0; animation:cd-particula linear infinite; }
@keyframes cd-particula { 0% { opacity:0; transform:translateY(0) scale(.6); } 20% { opacity:.9; } 50% { opacity:.35; } 80% { opacity:.8; } 100% { opacity:0; transform:translateY(-140px) scale(1); } }
.cd-bienvenida-logo { position:relative; display:inline-grid; }
.cd-bienvenida-logo::before { content:""; position:absolute; inset:-18px; border-radius:50%; background:radial-gradient(circle,rgba(204,251,241,.55),transparent 65%); opacity:0; animation:cd-halo 1.2s ease-out 1s forwards; }
@keyframes cd-halo { from { opacity:0; transform:scale(.5); } to { opacity:1; transform:scale(1); } }
.cd-diente-brillo { animation:cd-brillo .9s ease-in-out 1.45s forwards; }
@keyframes cd-brillo { to { transform:translateX(100px); } }
.cd-bienvenida-destello { position:absolute; top:4px; right:2px; width:18px; height:18px; opacity:0; animation:cd-destello .7s ease-out 2.05s forwards; }
.cd-bienvenida-destello::before, .cd-bienvenida-destello::after { content:""; position:absolute; top:50%; left:50%; width:20px; height:3px; margin:-1.5px 0 0 -10px; border-radius:50%; background:#fff; box-shadow:0 0 8px #fff; }
.cd-bienvenida-destello::after { transform:rotate(90deg); }
@keyframes cd-destello { 0% { opacity:0; transform:scale(0) rotate(-25deg); } 50% { opacity:1; transform:scale(1.15) rotate(0); } 100% { opacity:0; transform:scale(.4) rotate(25deg); } }
.cd-bienvenida-linea { display:block; width:min(60vw,320px); height:2px; margin-top:.3rem; border-radius:2px; background:linear-gradient(90deg,transparent,#fff,transparent); transform:scaleX(0); animation:cd-linea .8s cubic-bezier(.2,.7,.2,1) var(--cd-fin-linea,1.8s) forwards; }
@keyframes cd-linea { to { transform:scaleX(1); } }
.cd-bienvenida-intro.is-abriendo .cd-bienvenida-logo { animation:cd-logo-sale .6s ease-in forwards; }
@keyframes cd-logo-sale { to { transform:scale(1.6); opacity:0; } }
@keyframes cd-iris { to { --cd-hueco:150%; } }
.cd-bienvenida-onda { position:absolute; top:45%; left:50%; width:160px; height:160px; margin:-80px 0 0 -80px; border:1.5px solid rgba(255,255,255,.35); border-radius:50%; animation:cd-onda 2.6s ease-out infinite; }
.cd-bienvenida-onda:nth-child(2) { animation-delay:.85s; }
.cd-bienvenida-onda:nth-child(3) { animation-delay:1.7s; }
@keyframes cd-onda { from { transform:scale(.6); opacity:.9; } to { transform:scale(4.2); opacity:0; } }
.cd-bienvenida-saludo { position:relative; display:grid; justify-items:center; gap:.5rem; padding:0 1rem; text-align:center; }
.cd-bienvenida-intro.is-abriendo .cd-bienvenida-saludo { animation:cd-saludo-sale .5s ease-in forwards; }
@keyframes cd-saludo-sale { to { opacity:0; transform:scale(1.08); filter:blur(6px); } }
.cd-bienvenida-diente { position:relative; width:86px; height:86px; margin-bottom:.4rem; filter:drop-shadow(0 8px 24px rgba(0,0,0,.2)); }
.cd-bienvenida-diente .cd-diente-trazo { fill:rgba(255,255,255,0); stroke:#fff; stroke-width:2.4; stroke-linejoin:round; stroke-dasharray:1; stroke-dashoffset:1;
  animation:cd-dibuja 1.1s ease-in-out forwards, cd-rellena .5s ease-out 1s forwards; }
@keyframes cd-dibuja { to { stroke-dashoffset:0; } }
@keyframes cd-rellena { to { fill:rgba(255,255,255,.95); } }
.cd-bienvenida-saludo small { color:#fff !important; font-size:.82rem; font-weight:700; letter-spacing:.22em; text-transform:uppercase; opacity:0; animation:cd-sube .6s ease-out .6s forwards; }
.cd-bienvenida-saludo h1 { margin:0; color:#fff !important; font-size:clamp(1.9rem,5.5vw,3.4rem); font-weight:800; letter-spacing:-.01em; text-shadow:0 4px 24px rgba(0,0,0,.18); }
.cd-bienvenida-saludo h1 span { display:inline-block; opacity:0; animation:cd-letra .6s cubic-bezier(.2,.7,.2,1) forwards; }
@keyframes cd-letra { from { opacity:0; transform:translateY(.45em); filter:blur(8px); } to { opacity:1; transform:none; filter:blur(0); } }
@keyframes cd-sube { from { opacity:0; transform:translateY(10px); } to { opacity:.9; transform:none; } }
/* La página de detrás entra con un leve acercamiento cuando se abre el círculo. */
body.cd-bienvenida-activa .cd-bienvenida { transform:scale(.94); opacity:.4; }
.cd-bienvenida { transition:transform .9s cubic-bezier(.2,.7,.2,1),opacity .9s ease; }
.cd-bienvenida { width:min(100%,640px); margin:2rem auto; text-align:center; }
.cd-bienvenida h1 { margin:.2rem 0 .5rem; font-size:2rem; font-weight:800; }
.cd-bienvenida > p { color:var(--cd-ink-soft); }
.cd-bienvenida-form { display:grid; gap:.7rem; margin-top:1.2rem; text-align:left; }
.cd-bienvenida-form > label { font-size:.78rem; font-weight:800; }
.cd-bienvenida-fila { display:grid; grid-template-columns:150px 1fr; gap:1rem; align-items:center; }
.cd-bienvenida-fila .form-control { min-height:58px; font-size:1.6rem; font-weight:800; letter-spacing:.12em; text-align:center; }
.cd-bienvenida-ejemplo { display:grid; gap:.1rem; padding:.7rem 1rem; border-radius:12px; background:var(--cd-primary-soft); }
.cd-bienvenida-ejemplo small { color:var(--cd-ink-soft); font-size:.7rem; }
.cd-bienvenida-ejemplo strong { color:var(--cd-primary-dark); font-size:1.3rem; letter-spacing:.04em; }
.cd-bienvenida-ejemplo > span { color:var(--cd-ink-soft); font-size:.78rem; }
.cd-bienvenida-form .btn { justify-self:end; }
@media (max-width:560px) { .cd-bienvenida-fila { grid-template-columns:1fr; } }
/* Grupos de edad del 033: se eligen tocando la casilla */
.cd-033-edades label { position:relative; margin:0; border-left:1px solid #94a3b8; cursor:pointer; }
.cd-033-edades label:first-child { border-left:0; }
.cd-033-edades input { position:absolute; opacity:0; pointer-events:none; }
.cd-033-edades label span { display:block; height:100%; border-left:0 !important; transition:background-color .15s ease,color .15s ease; }
.cd-033-edades label:hover span { background:var(--cd-primary-soft); color:var(--cd-primary-dark); }
.cd-033-edades input:checked + span { color:#fff; background:var(--cd-primary); }
.cd-033-edades input:focus-visible + span { outline:2px solid var(--cd-primary); outline-offset:-3px; }
@media (max-width:760px) {
  .cd-033-edades label:nth-child(4) { border-left:0; }
  .cd-033-edades label:nth-child(n+4) { border-top:1px solid #94a3b8; }
  .cd-033-edades span:nth-child(n+4) { border-top:0; }
}
/* Cédula: revisión al escribir (válida y no repetida) */
.cd-cedula-estado { display:block; min-height:1rem; margin-top:.3rem; color:var(--cd-ink-soft); font-size:.72rem; }
.cd-cedula-estado.is-ok { color:#047857; }
.cd-cedula-estado.is-error { color:#be123c; }
.cd-cedula-estado a { color:inherit; font-weight:700; }
/* Nombre tomado del catastro del SRI: visto verde dentro del campo */
.cd-033-celda .form-control.is-catastro { padding-right:1.8rem; background:#ecfdf5 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5l3 3 7-7' fill='none' stroke='%23059669' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right .55rem center / 14px; }
/* Encabezado del paciente: el N.º de historia no se corta y los botones no se
   deforman en pantallas medianas (antes "Editar datos" quedaba gigante). */
.cd-patient-identity > div { min-width:0; }
.cd-patient-identity p { white-space:nowrap; }
.cd-patient-detail-actions { align-items:center; }
.cd-patient-detail-actions > form { display:flex; margin:0; }
.cd-patient-detail-actions .btn { display:inline-flex; align-items:center; justify-content:center; gap:.4rem; white-space:nowrap; }
@media (max-width:1100px) {
  .cd-patient-header { align-items:stretch; flex-direction:column; gap:1rem; }
  .cd-patient-detail-actions { width:100%; }
  .cd-patient-detail-actions > * { flex:1 1 0; min-width:max-content; }
  .cd-patient-detail-actions > form .btn { width:100%; }
}
/* El aviso de la cédula solo ocupa espacio cuando dice algo. */
.cd-cedula-estado:empty { display:none; }
.cd-cedula-estado { min-height:0; margin-top:.25rem; }
/* Resumen clínico del odontograma, compacto: índices en tabla como la ficha 033 */
.cd-indices { margin-top:.75rem; padding:.6rem .7rem; border:1px solid var(--cd-border); border-radius:12px; background:#fbfdfd; }
.cd-indices h3 { margin:0 0 .4rem; font-size:.74rem; font-weight:800; color:var(--cd-ink); }
.cd-indices table { width:100%; border-collapse:separate; border-spacing:3px; table-layout:fixed; }
.cd-indices th { width:22px; color:var(--cd-primary-dark); font-size:.8rem; font-weight:800; text-align:center; }
.cd-indices td { padding:.2rem 0; border:1px solid var(--cd-border); border-radius:7px; background:#fff; font-size:.85rem; font-weight:700; text-align:center; line-height:1.1; }
.cd-indices td small { display:block; color:var(--cd-ink-soft); font-size:.56rem; font-weight:600; text-transform:uppercase; }
.cd-indices td.is-total { border-color:#99e2d6; background:#ecfdf8; color:var(--cd-primary-dark); }
.cd-clinical-metrics { grid-template-columns:1fr 1fr; gap:.4rem 1rem; padding:.55rem .75rem; }
.cd-clinical-metrics div { gap:.5rem; }
.cd-record-sidebar .cd-indices, .cd-record-sidebar .cd-clinical-metrics { max-width:440px; }
.cd-record-sidebar .cd-patient-facts { margin:.6rem 0; }
.cd-indices h3 small { font-weight:500; color:var(--cd-ink-soft); }
.cd-indices h3 a { float:right; font-size:.7rem; font-weight:700; }

/* Formulario 033 · cuadros 7 y 8 (diagnóstico inicial) */
.cd-033-indicadores { margin-top:1.2rem; padding:1rem 1.1rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; scroll-margin-top:80px; }
.cd-033-indicadores h2 { margin:.1rem 0 .2rem; font-size:1.05rem; font-weight:800; }
.cd-033-indicadores header p { margin:0 0 .8rem; color:var(--cd-ink-soft); font-size:.78rem; }
.cd-033-ind-grid { display:grid; grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr); gap:1rem; align-items:start; }
.cd-033-ind-grid table { width:100%; border-collapse:collapse; }
.cd-033-ind-grid th { padding:.35rem .3rem; color:#fff; background:#4b5563; font-size:.62rem; font-weight:800; text-align:center; text-transform:uppercase; letter-spacing:.03em; border:1px solid #94a3b8; }
.cd-033-ind-grid th small { display:block; font-size:.55rem; opacity:.8; }
.cd-033-ind-grid td { padding:.2rem; border:1px solid #cbd5e1; text-align:center; }
.cd-033-ihos .form-select { min-height:30px; padding:.1rem 1.4rem .1rem .45rem; font-size:.8rem; background-position:right .35rem center; }
.cd-033-pieza label { display:block; margin:0; cursor:pointer; }
.cd-033-pieza input { position:absolute; opacity:0; pointer-events:none; }
.cd-033-pieza span { display:block; padding:.25rem 0; border-radius:6px; color:#94a3b8; font-size:.82rem; font-weight:800; }
.cd-033-pieza input:checked + span { color:#fff; background:var(--cd-primary); }
.cd-033-pieza input:focus-visible + span { outline:2px solid var(--cd-primary); }
tr.is-sin-pieza td:not(.cd-033-pieza) { background:repeating-linear-gradient(-45deg,#f8fafc 0 6px,#e2e8f0 6px 7px); }
tr.is-sin-pieza select { visibility:hidden; }
.cd-033-ihos tfoot td { font-weight:800; color:var(--cd-primary-dark); background:#ecfdf8; }
.cd-033-ihos tfoot th { background:#334155; }
.cd-033-opciones { display:grid; gap:.6rem; }
.cd-033-opciones fieldset { margin:0; padding:0; border:1px solid #94a3b8; border-radius:8px; overflow:hidden; }
.cd-033-opciones legend { float:none; width:100%; margin:0; padding:.35rem; color:#fff; background:#4b5563; font-size:.62rem; font-weight:800; text-align:center; text-transform:uppercase; }
.cd-033-opciones label { display:block; margin:0; border-top:1px solid #cbd5e1; cursor:pointer; }
.cd-033-opciones input { position:absolute; opacity:0; pointer-events:none; }
.cd-033-opciones span { display:block; padding:.35rem; color:#475569; font-size:.74rem; font-weight:700; text-align:center; text-transform:uppercase; }
.cd-033-opciones input:checked + span { color:#fff; background:var(--cd-primary); }
.cd-033-cpo h3 { margin:0 0 .4rem; font-size:.8rem; font-weight:800; }
.cd-033-cpo th[rowspan] { width:26px; color:var(--cd-primary-dark); background:#f1f5f9; font-size:.95rem; text-transform:none; }
.cd-033-cpo th:not([rowspan]) { text-transform:none; font-size:.72rem; }
.cd-033-cpo .form-control { min-height:32px; padding:.1rem; border:0; font-size:.9rem; font-weight:700; text-align:center; }
.cd-033-cpo td.is-total { font-weight:800; color:var(--cd-primary-dark); background:#ecfdf8; }
.cd-033-fecha { display:grid; gap:.2rem; margin-top:.5rem; font-size:.72rem; color:var(--cd-ink-soft); }
.cd-033-indicadores footer { display:flex; justify-content:flex-end; margin-top:.9rem; }
@media (max-width:900px) { .cd-033-ind-grid { grid-template-columns:1fr 1fr; } .cd-033-ihos { grid-column:1/-1; } }
@media (max-width:560px) { .cd-033-ind-grid { grid-template-columns:1fr; } }
/* Interruptor entre el odontograma inicial y el actual (mismo gráfico) */
.cd-odo-switch { display:inline-flex; padding:3px; border:1px solid var(--cd-border); border-radius:999px; background:#f1f5f9; }
.cd-odo-switch a { display:flex; align-items:center; gap:.35rem; padding:.4rem .85rem; border-radius:999px; color:var(--cd-ink-soft); font-size:.8rem; font-weight:700; text-decoration:none; white-space:nowrap; transition:background-color .2s ease,color .2s ease,box-shadow .2s ease; }
.cd-odo-switch a small { font-size:.66rem; font-weight:500; opacity:.8; }
.cd-odo-switch a:hover { color:var(--cd-primary-dark); }
.cd-odo-switch a.is-on { color:#fff; background:var(--cd-primary); box-shadow:0 4px 12px rgba(15,118,110,.25); }
.cd-odo-en { margin-left:.3rem; color:var(--cd-primary); font-size:.72rem; font-weight:600; }
@media (max-width:640px) { .cd-odo-switch a small { display:none; } }
.cd-odontogram-heading { flex-wrap:wrap; align-items:center; }
.cd-odo-whole { transition:opacity .2s ease; }
.cd-odo-whole.is-atenuado { opacity:.35; }
.cd-odo-whole.is-atenuado h3::after { content:" · trabajo de la clínica (se ve en Actual)"; font-weight:500; font-size:.72rem; }
/* Odontograma inicial bloqueado: solo se edita con el lápiz de la esquina */
.cd-033 { position:relative; }
.cd-odo-lapiz { position:absolute; top:-.35rem; right:0; z-index:2; display:inline-flex; align-items:center; gap:.35rem; padding:.35rem .7rem; border:1px solid var(--cd-border); border-radius:999px; color:var(--cd-primary-dark); background:#fff; box-shadow:0 2px 8px rgba(15,23,42,.08); font-size:.75rem; font-weight:700; cursor:pointer; transition:background-color .2s ease,color .2s ease; }
.cd-odo-lapiz:hover { border-color:var(--cd-primary-light); background:var(--cd-primary-soft); }
.cd-odo-lapiz.is-on { color:#fff; background:var(--cd-primary); border-color:var(--cd-primary); }
.cd-odo-lapiz[hidden] { display:none; }
.cd-033.is-bloqueado .cd-tooth-face, .cd-033.is-bloqueado .cd-033-casilla { cursor:default; }
.cd-033.is-bloqueado .cd-odo-tooth .cd-tooth-face:hover { fill:#fff; stroke:#94a3b8; }
.cd-033.is-bloqueado .cd-odo-tooth .cd-tooth-face.cd-tooth-third:hover { fill:transparent; stroke:#cbd5e1; }
.cd-033.is-editando { outline:2px dashed var(--cd-primary-light); outline-offset:6px; border-radius:10px; }
.cd-odo-bloqueo { margin:.8rem 0 0; padding:.6rem .8rem; border:1px solid #fde68a; border-radius:10px; color:#92400e; background:#fffbeb; font-size:.8rem; }
.cd-033.con-lapiz { padding-top:2.4rem; } /* el espacio queda también en Actual: así el mapa no salta al cambiar */
.cd-033.con-lapiz .cd-odo-lapiz { top:.2rem; right:.2rem; }
/* Color según quién lo registró: lo que el paciente traía (inicial) va apagado;
   lo que hace el doctor (evolución y tratamientos) va vivo, "eléctrico". */
.cd-tooth-face.is-pending { fill:#ff1a3c !important; stroke:#c2001f !important; }
.cd-tooth-face.is-done { fill:#1463ff !important; stroke:#0040c9 !important; }
.cd-odo-tooth .cd-tooth-face.is-pending:not(.is-inicial), .cd-odo-tooth .cd-tooth-face.is-done:not(.is-inicial) { filter:drop-shadow(0 0 2px rgba(20,99,255,.45)); }
.cd-odo-tooth .cd-tooth-face.is-pending:not(.is-inicial) { filter:drop-shadow(0 0 2px rgba(255,26,60,.5)); }
.cd-tooth-face.is-pending.is-inicial { fill:#e8939b !important; stroke:#c46a73 !important; }
.cd-tooth-face.is-done.is-inicial { fill:#90afe3 !important; stroke:#6687c2 !important; }
.cd-033-symbol.is-pending { stroke:#ff1a3c; }
.cd-033-symbol.is-done { stroke:#1463ff; }
.cd-033-symbol.is-pending.is-inicial { stroke:#d9808a; }
.cd-033-symbol.is-done.is-inicial { stroke:#7d9fdb; }
.cd-odontogram-legend > span i.pending { background:#ff1a3c; border-color:#c2001f; }
.cd-odontogram-legend > span i.done { background:#1463ff; border-color:#0040c9; }
.cd-odontogram-legend > span i.pending.is-inicial { background:#e8939b; border-color:#c46a73; }
.cd-odontogram-legend > span i.done.is-inicial { background:#90afe3; border-color:#6687c2; }
.cd-odontogram-legend > span i + i { margin-left:-.15rem; }
/* Derivaciones a especialistas invitados (expediente del paciente) */
.cd-referrals-card { margin-top:1rem; padding:1.1rem 1.25rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; }
.cd-referral { display:flex; align-items:center; gap:.8rem; padding:.7rem 0; border-top:1px dashed var(--cd-border); }
.cd-referral > i { display:grid; place-items:center; width:36px; height:36px; flex:none; border-radius:10px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); }
.cd-referral div { flex:1; min-width:0; display:grid; gap:.1rem; }
.cd-referral strong { font-size:.88rem; }
.cd-referral span { font-size:.82rem; }
.cd-referral small { color:var(--cd-ink-soft); font-size:.72rem; }
.cd-referral form { margin:0; }
.cd-referral.is-vencida { opacity:.6; }
/* Al llegar con «Derivar a especialista»: la sección titila y el selector de
   especialista queda marcado para que se vea dónde elegirlo. */
.cd-referrals-card { scroll-margin-top:84px; }
.cd-referrals-card.is-destacada { animation:cd-derivar-titila 1s ease-in-out 3; }
.cd-referral-form .is-titila { border-color:var(--cd-primary-light); animation:cd-derivar-campo 1s ease-in-out 3; }
@keyframes cd-derivar-titila { 0%,100% { box-shadow:0 0 0 0 rgba(20,184,166,0); } 50% { box-shadow:0 0 0 6px rgba(20,184,166,.35); border-color:var(--cd-primary-light); } }
@keyframes cd-derivar-campo { 0%,100% { box-shadow:0 0 0 0 rgba(20,184,166,0); } 50% { box-shadow:0 0 0 5px rgba(20,184,166,.45); } }
@media (prefers-reduced-motion: reduce) { .cd-referrals-card.is-destacada, .cd-referral-form .is-titila { animation:none; box-shadow:0 0 0 4px rgba(20,184,166,.35); } }
.cd-referral-estado { margin-left:.3rem; padding:0 .4rem; border-radius:999px; color:var(--cd-ink-soft); background:#f1f5f9; font-size:.62rem; font-weight:700; text-transform:uppercase; }
/* Debajo de cada derivación: lo que hizo, su informe y sus accesos. */
.cd-referral-detalle { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:.6rem; margin:0 0 .6rem 2.8rem; }
.cd-referral-bloque { padding:.6rem .75rem; border:1px solid var(--cd-border); border-radius:12px; background:#f8fafc; font-size:.8rem; }
.cd-referral-bloque h4 { display:flex; align-items:center; gap:.35rem; margin:0 0 .4rem; color:var(--cd-ink); font-size:.78rem; font-weight:800; }
.cd-referral-bloque h4 > i { color:var(--cd-primary); }
.cd-referral-bloque p { margin:.15rem 0; }
.cd-referral-bloque .cd-list-status { font-size:.66rem; }
.cd-referral-nota { color:var(--cd-ink-soft); font-size:.74rem; }
.cd-referral-nuevo { padding:0 .45rem; border-radius:999px; color:#fff; background:#ef4444; font-size:.62rem; }
.cd-referral-informe { padding:.4rem .5rem; margin-bottom:.35rem; border-radius:8px; background:#fff; border:1px solid var(--cd-border); }
.cd-referral-informe.is-nuevo { border-color:#fca5a5; box-shadow:0 0 0 3px rgba(239,68,68,.12); }
.cd-referral-informe small { color:var(--cd-ink-soft); font-size:.68rem; }
.cd-referral-control { color:var(--cd-primary-dark); font-weight:700; }
.cd-referral-informe-form { display:grid; gap:.4rem; margin-top:.4rem; }
.cd-referral-informe-form label { display:grid; gap:.2rem; margin:0; color:var(--cd-ink-soft); font-size:.72rem; font-weight:700; }
.cd-referral-informe-form .cd-referral-check { display:flex; align-items:center; gap:.4rem; }
.cd-referral-link { display:inline-flex; align-items:center; gap:.3rem; margin-top:.3rem; color:var(--cd-primary-dark); font-size:.74rem; font-weight:700; text-decoration:none; }
@media (max-width:760px) { .cd-referral-detalle { margin-left:0; } }
/* Actividad de un especialista invitado (la ve el dueño). */
.cd-actividad-cifras { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:.6rem; margin:1rem 0; }
.cd-actividad-cifras > div { padding:.7rem .9rem; border:1px solid var(--cd-border); border-radius:14px; background:#fff; }
.cd-actividad-cifras small { display:block; color:var(--cd-ink-soft); font-size:.72rem; font-weight:700; }
.cd-actividad-cifras strong { font-size:1.35rem; }
.cd-actividad-bloque { margin-bottom:1rem; padding:1rem 1.15rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; overflow-x:auto; }
.cd-actividad-bloque h2 { display:flex; align-items:center; gap:.45rem; margin:0 0 .6rem; font-size:1rem; font-weight:800; }
.cd-actividad-bloque h2 > i { color:var(--cd-primary); }
.cd-actividad-bloque h3 { margin:.8rem 0 .3rem; font-size:.82rem; font-weight:800; }
.cd-actividad-tabla { width:100%; border-collapse:collapse; font-size:.8rem; }
.cd-actividad-tabla th { padding:.4rem .5rem; color:var(--cd-ink-soft); font-size:.68rem; text-align:left; text-transform:uppercase; letter-spacing:.04em; border-bottom:1px solid var(--cd-border); }
.cd-actividad-tabla td { padding:.45rem .5rem; border-bottom:1px solid #f1f5f9; vertical-align:top; }
.cd-actividad-tabla td small { display:block; color:var(--cd-ink-soft); font-size:.7rem; }
.cd-actividad-tabla a { color:var(--cd-primary-dark); font-weight:700; text-decoration:none; }
.cd-actividad-vacio, .cd-actividad-ayuda { color:var(--cd-ink-soft); font-size:.78rem; }
.cd-actividad-lista { margin:0; padding-left:1rem; font-size:.78rem; }
.cd-informes-aviso { display:flex; gap:.8rem; margin:1rem 0; padding:.85rem 1rem; border:1px solid #fca5a5; border-radius:14px; background:#fff1f2; }
.cd-informes-aviso > i { color:#e11d48; font-size:1.2rem; margin-top:.15rem; }
.cd-informes-aviso div { display:grid; gap:.2rem; }
.cd-informes-aviso strong { font-size:.88rem; }
.cd-informes-aviso a { color:var(--cd-ink); font-size:.8rem; text-decoration:none; }
.cd-informes-aviso a:hover { color:var(--cd-primary-dark); text-decoration:underline; }
.cd-referral-cita { display:inline-flex; align-items:center; gap:.3rem; width:fit-content; padding:.1rem .5rem; border-radius:999px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-size:.74rem !important; font-weight:700; }
.cd-referral-cita.is-sin { color:#b45309; background:#fef3c7; }
.cd-referral-agendar { display:flex; gap:.35rem; align-items:center; }
.cd-referral-agendar .form-control { width:auto; }
@media (max-width:760px) { .cd-referral { flex-wrap:wrap; } }
/* Día de la clínica: horas hacia abajo, una columna por sillón. */
.cd-clinica-grid { margin-top:1rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; overflow-x:auto; }
.cd-clinica-head, .cd-clinica-fila { display:grid; grid-template-columns:64px repeat(var(--cd-sillones, 1), minmax(200px, 1fr)); }
.cd-clinica-head { position:sticky; top:0; z-index:1; background:#f8fafc; border-bottom:1px solid var(--cd-border); }
.cd-clinica-sillon { display:grid; gap:.1rem; padding:.6rem .75rem; border-left:1px solid var(--cd-border); }
.cd-clinica-sillon strong { font-size:.86rem; }
.cd-clinica-sillon strong i { color:var(--cd-primary); }
.cd-clinica-sillon small { color:var(--cd-ink-soft); font-size:.72rem; }
.cd-clinica-sillon.is-off { opacity:.6; }
.cd-clinica-fila { min-height:44px; border-bottom:1px dashed #eef2f6; }
.cd-clinica-fila.is-hora { border-bottom-style:solid; border-bottom-color:var(--cd-border); }
.cd-clinica-hora { padding:.35rem .5rem; color:var(--cd-ink-soft); font-size:.72rem; font-weight:700; text-align:right; }
.cd-clinica-celda { display:grid; gap:.3rem; align-content:start; padding:.25rem .35rem; border-left:1px solid var(--cd-border); }
.cd-clinica-cita { display:grid; gap:.05rem; padding:.35rem .55rem; border-left:3px solid var(--cd-primary); border-radius:8px; background:var(--cd-primary-soft); font-size:.76rem; }
.cd-clinica-cita.is-invitado { border-left-color:#7c3aed; background:#f5f3ff; }
.cd-clinica-cita.is-at { opacity:.7; }
.cd-clinica-cita b { font-size:.7rem; color:var(--cd-ink-soft); }
.cd-clinica-cita strong a { color:var(--cd-ink); text-decoration:none; }
.cd-clinica-cita strong a:hover { text-decoration:underline; }
.cd-clinica-quien { color:var(--cd-primary-dark); font-weight:700; }
.cd-clinica-cita small { color:var(--cd-ink-soft); }
.cd-clinica-libre { width:100%; min-height:34px; border:1px dashed transparent; border-radius:8px; color:transparent; background:none; }
.cd-clinica-libre:hover, .cd-clinica-libre:focus-visible { color:var(--cd-primary); border-color:var(--cd-primary-light); background:#f0fdfa; }
.cd-clinica-dialogo { width:min(560px, calc(100vw - 32px)); padding:0; border:none; border-radius:16px; box-shadow:0 20px 50px rgba(15,23,42,.25); }
.cd-clinica-dialogo::backdrop { background:rgba(15,23,42,.35); }
.cd-clinica-form { display:grid; gap:.8rem; padding:1.1rem 1.2rem; }
.cd-clinica-form header, .cd-clinica-form footer { display:flex; align-items:center; justify-content:space-between; gap:.5rem; }
.cd-clinica-form footer { justify-content:flex-end; }
.cd-clinica-form h2 { margin:0; font-size:1.05rem; font-weight:800; }
.cd-clinica-form header button { border:none; background:none; color:var(--cd-ink-soft); font-size:1.1rem; }
.cd-clinica-campos { display:grid; grid-template-columns:repeat(3, 1fr); gap:.6rem; }
.cd-clinica-campos label { display:grid; gap:.2rem; margin:0; color:var(--cd-ink-soft); font-size:.72rem; font-weight:700; }
.cd-clinica-campos .is-ancho { grid-column:1 / -1; }
.cd-clinica-campos [data-nuevo] { grid-column:span 1; }
@media (max-width:640px) { .cd-clinica-campos { grid-template-columns:1fr; } }
/* Panel de citas: lista para elegir y acciones para moverlas. */
.cd-panel-citas { display:grid; grid-template-columns:minmax(0, 1fr) 300px; gap:1rem; align-items:start; margin-top:1rem; }
.cd-panel-lista { padding:1rem 1.15rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; }
.cd-panel-lista h3 { margin:.9rem 0 .35rem; font-size:.8rem; font-weight:800; color:var(--cd-ink-soft); text-transform:uppercase; letter-spacing:.04em; }
.cd-panel-todas { display:flex; align-items:center; gap:.4rem; font-size:.8rem; font-weight:700; }
.cd-panel-cita { display:grid; grid-template-columns:auto 52px 1fr auto; align-items:center; gap:.6rem; margin:0 0 .35rem; padding:.5rem .65rem; border:1px solid var(--cd-border); border-radius:10px; cursor:pointer; font-size:.82rem; }
.cd-panel-cita.is-elegida { border-color:var(--cd-primary-light); background:#f0fdfa; }
.cd-panel-cita span { display:grid; }
.cd-panel-cita small { color:var(--cd-ink-soft); font-size:.72rem; }
.cd-panel-cita em { color:var(--cd-ink-soft); font-size:.72rem; font-style:normal; }
.cd-panel-acciones { position:sticky; top:84px; display:grid; gap:.7rem; padding:1rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; }
.cd-panel-acciones fieldset { display:grid; gap:.35rem; margin:0; padding:0; border:0; }
.cd-panel-acciones fieldset > label { display:flex; align-items:center; gap:.4rem; margin:0; font-size:.82rem; font-weight:700; }
.cd-panel-acciones small { color:var(--cd-ink-soft); font-size:.7rem; }
.cd-panel-acciones [data-contador] { margin:0; font-size:.8rem; font-weight:700; }
.cd-panel-fecha { display:grid; grid-template-columns:1fr 110px; gap:.35rem; }
@media (max-width:860px) { .cd-panel-citas { grid-template-columns:1fr; } .cd-panel-acciones { position:static; } }
/* Consultorios */
.cd-consultorios { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:.9rem; margin-top:1rem; }
.cd-consultorio { display:grid; gap:.55rem; padding:1rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; }
.cd-consultorio.is-off { opacity:.75; background:#f8fafc; }
.cd-consultorio.is-nuevo { border-style:dashed; }
.cd-consultorio header { display:flex; align-items:center; gap:.5rem; }
.cd-consultorio header strong { flex:1; font-size:.92rem; }
.cd-consultorio-num { display:grid; place-items:center; width:30px; height:30px; border-radius:9px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-weight:800; font-size:.85rem; }
.cd-consultorio label { display:grid; gap:.2rem; margin:0; color:var(--cd-ink-soft); font-size:.72rem; font-weight:700; }
.cd-consultorio footer { display:flex; gap:.4rem; }
.cd-consultorio .cd-field-help { margin:0; }
/* Tablero de citas: una columna por médico; se arrastra la cita a otra. */
.cd-tablero { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(230px, 1fr); gap:.75rem; margin-top:1rem; padding-bottom:.5rem; overflow-x:auto; }
.cd-tablero.is-guardando { opacity:.6; pointer-events:none; }
.cd-tablero-col { display:flex; flex-direction:column; min-width:0; min-height:260px; border:1px solid var(--cd-border); border-radius:16px; background:#f8fafc; transition:border-color .15s ease, background-color .15s ease; }
.cd-tablero-col.is-destino { border-color:var(--cd-primary); background:#f0fdfa; box-shadow:0 0 0 3px rgba(20,184,166,.2); }
.cd-tablero-col > header { position:relative; display:grid; gap:.1rem; padding:.7rem .8rem; border-bottom:1px solid var(--cd-border); }
.cd-tablero-col > header strong { padding-right:2rem; font-size:.86rem; }
.cd-tablero-col > header small { color:var(--cd-ink-soft); font-size:.72rem; }
.cd-tablero-sillon { display:inline-flex; align-items:center; gap:.3rem; width:fit-content; margin-top:.15rem; padding:.05rem .45rem; border-radius:999px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-size:.68rem; font-weight:700; }
.cd-tablero-cuenta { position:absolute; top:.65rem; right:.75rem; min-width:24px; padding:0 .4rem; border-radius:999px; color:var(--cd-primary-dark); background:var(--cd-primary-soft); font-size:.72rem; font-weight:800; text-align:center; }
.cd-tablero-citas { display:grid; grid-template-columns:minmax(0, 1fr); gap:.45rem; align-content:start; flex:1; padding:.6rem; }
.cd-tablero-cita { display:grid; gap:.1rem; min-width:0; overflow-wrap:anywhere; padding:.55rem .65rem; border:1px solid var(--cd-border); border-left:3px solid var(--cd-primary); border-radius:10px; background:#fff; font-size:.8rem; cursor:grab; box-shadow:0 1px 2px rgba(15,23,42,.05); }
.cd-tablero-cita:active { cursor:grabbing; }
.cd-tablero-cita[data-movible] { touch-action:none; user-select:none; }
.cd-tablero-cita.is-arrastrando { opacity:.35; }
.cd-tablero-cita.is-fantasma { position:fixed; top:0; left:0; z-index:2000; pointer-events:none; opacity:.95; cursor:grabbing; box-shadow:0 12px 28px rgba(15,23,42,.25); }
.cd-tablero-cita.is-fija { cursor:default; opacity:.7; border-left-color:#94a3b8; }
.cd-tablero-cita b { color:var(--cd-ink-soft); font-size:.72rem; }
.cd-tablero-cita small, .cd-tablero-cita em { color:var(--cd-ink-soft); font-size:.72rem; font-style:normal; }
.cd-widget-tablero .cd-tablero { margin-top:.6rem; }
.cd-widget-tablero .cd-tablero-col { min-height:160px; }
.cd-tablero-ayuda { margin:.2rem 0 0; color:var(--cd-ink-soft); font-size:.76rem; }
.cd-tablero-cita.is-guardando { opacity:.5; }
.cd-tablero-aviso { max-height:0; margin:0; padding:0 .8rem; overflow:hidden; border-radius:10px; font-size:.8rem; font-weight:600; transition:max-height .2s ease, padding .2s ease, margin .2s ease; }
.cd-tablero-aviso.is-visible { max-height:120px; margin:.6rem 0 0; padding:.55rem .8rem; }
.cd-tablero-aviso.is-ok { color:#065f46; background:#d1fae5; }
.cd-tablero-aviso.is-error { color:#991b1b; background:#fee2e2; }
.cd-tablero-ausentes { margin:1rem 0 0; color:var(--cd-ink-soft); font-size:.78rem; }
.cd-tablero-vacia { margin:.4rem; color:var(--cd-ink-soft); font-size:.76rem; text-align:center; }
/* Columna «Prescripciones» del 033 en cada sesión del historial. */
.cd-prescripciones { display:grid; gap:.45rem; margin-top:.7rem; padding:.7rem .85rem; border:1px solid var(--cd-border); border-radius:12px; background:#f8fafc; font-size:.82rem; }
.cd-prescripciones h3 { display:flex; align-items:center; gap:.4rem; margin:0; font-size:.8rem; font-weight:800; color:var(--cd-ink); }
.cd-prescripciones h3 i { color:var(--cd-primary); }
.cd-prescripciones-indic { margin:0; padding:.35rem .55rem; border-left:3px solid var(--cd-primary-light); border-radius:6px; background:#fff; }
.cd-prescripciones-rx { display:grid; gap:.3rem; padding:.45rem .6rem; border:1px solid var(--cd-border); border-radius:10px; background:#fff; }
.cd-prescripciones-rx ul { margin:0; padding-left:1.1rem; }
.cd-prescripciones-rx em { color:var(--cd-ink-soft); }
.cd-prescripciones-num { display:inline-flex; align-items:center; gap:.35rem; width:fit-content; color:var(--cd-primary-dark); font-weight:800; text-decoration:none; }
.cd-prescripciones-num:hover { text-decoration:underline; }
.cd-prescripciones-aviso { display:inline-flex; align-items:center; gap:.35rem; width:fit-content; padding:.1rem .5rem; border-radius:999px; color:#92400e; background:#fef3c7; font-size:.72rem; font-weight:700; }
.cd-prescripciones-vacio { margin:0; color:var(--cd-ink-soft); font-size:.76rem; }
.cd-prescripciones-editar summary { color:var(--cd-primary-dark); font-size:.76rem; font-weight:700; cursor:pointer; }
.cd-prescripciones-editar form { display:grid; gap:.4rem; margin-top:.4rem; }
.cd-prescripciones-editar .btn { width:fit-content; }
.cd-referral-empty { margin:.4rem 0; color:var(--cd-ink-soft); font-size:.82rem; }
.cd-referral-form { display:grid; grid-template-columns:1.2fr 2fr 1fr .7fr auto; gap:.6rem; align-items:end; margin-top:.8rem; padding-top:.8rem; border-top:1px solid var(--cd-border); }
.cd-referral-form label { display:grid; gap:.25rem; margin:0; color:var(--cd-ink-soft); font-size:.74rem; font-weight:700; }
@media (max-width:760px) { .cd-referral-form { grid-template-columns:1fr; } }
.cd-badge-invitado { display:inline-block; margin-left:.25rem; padding:0 .4rem; border-radius:999px; color:#6d28d9; background:#ede9fe; font-size:.62rem; font-weight:800; text-transform:uppercase; letter-spacing:.03em; }

/* Agenda del especialista invitado: solo sus citas (las pone la clínica) */
.cd-invitado-citas { margin-top:1rem; padding:1.1rem 1.2rem; border:1px solid var(--cd-border); border-radius:16px; background:#fff; }
.cd-invitado-citas header h2 { margin:0; font-size:1.05rem; }
.cd-invitado-citas header p { margin:.25rem 0 .6rem; color:var(--cd-ink-soft); font-size:.82rem; }
.cd-invitado-citas h3 { margin:.9rem 0 .4rem; font-size:.85rem; color:var(--cd-ink-soft); }
.cd-invitado-citas h3 b { color:var(--cd-primary); }
.cd-invitado-cita { display:grid; grid-template-columns:52px 1fr auto; align-items:center; gap:.6rem; margin:0 0 .35rem; padding:.55rem .7rem; border:1px solid var(--cd-border); border-left:3px solid var(--cd-primary-light); border-radius:10px; font-size:.84rem; }
.cd-invitado-cita span { display:grid; }
.cd-invitado-cita small { color:var(--cd-ink-soft); font-size:.74rem; }
.cd-invitado-cita em { font-style:normal; color:var(--cd-ink-soft); font-size:.74rem; }
@media (max-width:600px) { .cd-invitado-cita { grid-template-columns:48px 1fr; } .cd-invitado-cita em { grid-column:2; } }

/* Citas de los invitados en el calendario del principal: moradas y al lado */
.cd-dg-cita.is-invitado { left:auto; right:8px; width:44%; z-index:3; border-left-color:#7c3aed; background:#f5f3ff; color:#4c1d95; }
.cd-dg-cita.is-invitado span { color:#6d28d9; }
.cd-week-event.is-invitado { left:auto; right:2px; width:52%; z-index:3; border-left-color:#7c3aed; background:#f5f3ff; color:#4c1d95; }
.cd-month-cita.is-invitado { border-left-color:#7c3aed; background:#f5f3ff; color:#5b21b6; }
.cd-cal-legend i.is-invitado { background:#f5f3ff; border-color:#7c3aed; }
