:root{--ink:#123f6d;--signal:#69cbe5;--paper:#f4f9ff;--line:#d8e4ef;--muted:#617b96;--white:#fff;--danger:#b4433a}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:400 14px/1.5 "DM Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit}
h1,h2,h3{margin:0;letter-spacing:-.03em;font-weight:600}
em{font-style:normal;color:var(--muted)}
button,input,select,textarea{font:inherit;color:inherit}

/* ── Acceso ── */
.system-login{display:grid;place-items:center;min-height:100vh;padding:24px}
.system-login main{width:min(390px,100%)}
.login-brand{display:flex;align-items:center;gap:9px;font-size:19px;font-weight:700;letter-spacing:.06em}
.login-brand i{width:8px;height:8px;border-radius:50%;background:var(--signal)}
.system-login small{display:block;margin:9px 0 26px;color:var(--muted);font-size:9px;letter-spacing:.16em}
.system-login h1{font-size:30px;line-height:1.1;margin-bottom:26px}
.system-login form{display:grid;gap:14px}
.system-login .error{margin:0 0 16px;padding:11px 13px;border-radius:8px;background:#f6dedb;color:var(--danger);font-size:12px}

label{display:grid;gap:6px;font-size:10px;letter-spacing:.11em;text-transform:uppercase;color:var(--muted)}
label input,label select,label textarea{padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:var(--white);font-size:14px;letter-spacing:normal;text-transform:none;color:var(--ink)}
label input:focus,label select:focus,label textarea:focus{outline:2px solid var(--signal);outline-offset:-1px}
label.check{display:flex;align-items:center;gap:9px;text-transform:none;letter-spacing:normal;font-size:13px;color:var(--ink)}
label.check input{width:auto;padding:0}

button{padding:12px 16px;border:0;border-radius:8px;background:var(--ink);color:var(--paper);font-size:12px;letter-spacing:.08em;font-weight:600;cursor:pointer;transition:transform .2s,opacity .2s}
button:hover{transform:translateY(-1px)}
button.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
button.danger{background:var(--danger)}

/* ── Estructura ── */
.system-demo{position:fixed;inset:0 0 auto;z-index:20;padding:7px;background:var(--signal);color:var(--ink);text-align:center;font-size:9px;letter-spacing:.14em;font-weight:600}
.system-body{display:grid;grid-template-columns:228px 1fr;min-height:100vh}
.system-sidebar{display:flex;flex-direction:column;padding:24px 16px;border-right:1px solid var(--line);background:#e9f3fb}
.system-brand{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:700;letter-spacing:.06em;text-decoration:none}
.system-brand i{width:7px;height:7px;border-radius:50%;background:var(--signal)}
.system-brand small{width:100%;margin-top:4px;color:var(--muted);font-size:8px;letter-spacing:.16em;font-weight:400}
.system-sidebar nav{display:grid;gap:2px;margin-top:30px}
.system-sidebar nav a{display:flex;justify-content:space-between;align-items:center;padding:10px 11px;border-radius:7px;color:var(--muted);font-size:13px;text-decoration:none;transition:background .2s,color .2s}
.system-sidebar nav a b{opacity:0;font-size:10px}
.system-sidebar nav a:hover,.system-sidebar nav a.active{background:var(--signal);color:var(--ink)}
.system-sidebar nav a.active b{opacity:.5}
.system-sidebar-foot{display:grid;gap:5px;margin-top:auto;padding-top:18px;border-top:1px solid var(--line)}
.system-sidebar-foot small{color:var(--muted);font-size:8px;letter-spacing:.13em;text-transform:uppercase}
.system-sidebar-foot strong{font-size:12px}
.system-sidebar-foot a{margin-top:8px;color:var(--muted);font-size:11px;text-decoration:none}
.system-sidebar-foot a:hover{color:var(--ink)}
.system-sidebar-foot button{margin-top:6px;padding:9px;background:transparent;border:1px solid var(--line);color:var(--muted);font-size:10px}

.system-main{display:flex;flex-direction:column;min-width:0}
.system-header{display:flex;align-items:center;gap:14px;height:70px;padding:0 28px;border-bottom:1px solid var(--line)}
.system-header span{display:block;font-size:11px;letter-spacing:.13em;font-weight:600}
.system-header small{display:block;margin-top:3px;color:var(--muted);font-size:10px}
.system-menu{display:none;padding:8px 10px;background:transparent;border:1px solid var(--line);color:var(--ink);font-size:10px}
.system-content{flex:1;padding:26px 28px 60px}

/* ── Piezas ── */
.flash{margin-bottom:18px;padding:11px 14px;border-radius:8px;font-size:13px}
.flash-ok{background:#dff5ee;color:#176b58}
.flash-error{background:#f6dedb;color:var(--danger)}

.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:24px}
.stats article{padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--white)}
.stats span{display:block;color:var(--muted);font-size:9px;letter-spacing:.13em;text-transform:uppercase}
.stats strong{display:block;margin-top:8px;font-size:26px;letter-spacing:-.04em}

.panel{margin-bottom:22px;border:1px solid var(--line);border-radius:12px;background:var(--white);overflow:hidden}
.panel>header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 18px;border-bottom:1px solid var(--line)}
.panel>header h2{font-size:14px}
.panel>header small{color:var(--muted);font-size:11px}
.panel-body{padding:18px}

table{width:100%;border-collapse:collapse;font-size:13px}
th{padding:11px 18px;border-bottom:1px solid var(--line);color:var(--muted);font-size:9px;letter-spacing:.12em;text-transform:uppercase;text-align:left;font-weight:500}
td{padding:13px 18px;border-bottom:1px solid #eae7df;vertical-align:middle}
tr:last-child td{border-bottom:0}
tbody tr:hover{background:#faf9f6}
td a{font-weight:500}
.table-scroll{overflow-x:auto}

.tag{display:inline-block;padding:3px 8px;border-radius:20px;background:#e8e5dd;font-size:10px;letter-spacing:.06em}
.tag-ok{background:#dff5ee;color:#176b58}
.tag-warn{background:#f7ecd6;color:#7a5714}
.tag-off{background:#eeeae4;color:var(--muted)}

.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}
.form-actions{display:flex;gap:10px;margin-top:16px}
.empty{padding:26px 18px;color:var(--muted);text-align:center;font-size:13px}
.hint{margin:0 0 14px;color:var(--muted);font-size:12px}
.inline-form{display:flex;gap:8px;align-items:end;flex-wrap:wrap}
.inline-form label{flex:1;min-width:130px}

/* ── Encabezados operativos ── */
.page-intro{display:grid;grid-template-columns:1.2fr .8fr;gap:40px;align-items:end;margin:0 0 26px;padding:12px 0 28px;border-bottom:1px solid var(--line)}
.page-intro>div>span{display:block;margin-bottom:10px;color:var(--muted);font-size:9px;letter-spacing:.16em}
.page-intro h1{font-size:clamp(28px,4vw,46px);line-height:1.05}
.page-intro>p{max-width:520px;margin:0;color:var(--muted);font-size:13px}
.split-workspace{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(420px,1.28fr);gap:18px;align-items:start}
.stack-form{display:grid;gap:14px}
.stack-form .form-actions a{align-self:center}
.dashboard-intro{grid-template-columns:1fr 1fr}
.quick-actions{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap}.quick-actions a{padding:9px 12px;border:1px solid var(--line);border-radius:7px;background:var(--white);font-size:11px;text-decoration:none}.quick-actions a:hover{border-color:var(--ink);background:var(--signal)}
.operation-ready{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:-12px 0 24px}.operation-ready article{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:9px;background:#f7ecd6}.operation-ready article.ready{background:#eef7f2}.operation-ready i{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--white);font-style:normal}.operation-ready strong,.operation-ready span{display:block}.operation-ready strong{font-size:11px}.operation-ready span{color:var(--muted);font-size:9px}.operation-ready a{font-size:9px}

/* ── Horario semanal ── */
.weekly-schedule{border:1px solid var(--line);border-radius:10px;overflow:hidden}
.weekly-head,.weekly-row{display:grid;grid-template-columns:150px 1fr 1fr;gap:16px;align-items:center;padding:11px 14px}
.weekly-head{background:#f3f1eb;color:var(--muted);font-size:9px;letter-spacing:.1em;text-transform:uppercase}
.weekly-head small{font-size:8px;letter-spacing:normal;text-transform:none}
.weekly-row{border-top:1px solid var(--line);background:#faf9f6;opacity:.58;transition:opacity .2s,background .2s}
.weekly-row.enabled{background:var(--white);opacity:1}
.day-toggle{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:12px;letter-spacing:normal;text-transform:none}
.day-toggle input{width:18px;height:18px;accent-color:var(--ink)}
.time-pair{display:flex;align-items:center;gap:8px}.time-pair input{min-width:0;width:100%;padding:9px;border:1px solid var(--line);border-radius:7px;background:var(--white);font-size:12px}.time-pair b{color:var(--muted);font-weight:400}
.schedule-actions{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:16px;border-top:1px solid var(--line);background:#f3f1eb}.schedule-actions p{max-width:520px;margin:0;color:var(--muted);font-size:11px}.schedule-actions button{white-space:nowrap}

/* ── Catálogo de servicios ── */
.service-admin-list{display:grid}
.service-admin-list article{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:17px 19px;border-bottom:1px solid var(--line)}
.service-admin-list article:last-child{border:0}.service-admin-list article.is-off{opacity:.52}
.service-admin-list article>div:first-child span{display:block;color:var(--muted);font-size:9px;letter-spacing:.08em;text-transform:uppercase}
.service-admin-list article strong{display:block;margin-top:4px;font-size:15px}.service-admin-list article small{display:block;margin-top:5px;color:var(--muted);font-size:11px}
.service-admin-list article>div:last-child{display:flex;align-items:center;gap:14px}.service-admin-list article a{font-size:11px}

/* ── Caja con varios conceptos ── */
.payment-total{font-size:22px;letter-spacing:-.04em}
.charge-builder{margin-top:18px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.charge-builder-head{display:flex;justify-content:space-between;align-items:center;padding:12px 14px;background:#f3f1eb}.charge-builder-head span{font-size:10px;letter-spacing:.1em;text-transform:uppercase}.charge-builder-head button{padding:8px 10px}
.charge-row{display:grid;grid-template-columns:1fr 100px 150px 38px;gap:10px;align-items:end;padding:13px 14px;border-top:1px solid var(--line)}
.charge-row:first-child{border-top:0}.charge-remove{display:grid;place-items:center;width:38px;height:38px;padding:0;font-size:18px}
.module-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}.module-cards article{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:10px;background:#fafbf9}.module-cards strong,.module-cards small{display:block}.module-cards strong{font-size:13px}.module-cards small{margin-top:4px;color:var(--muted);font-size:10px}.module-cards form{grid-column:1/-1}.module-cards button{width:100%}
.row-actions{display:flex;gap:9px;margin-top:7px;flex-wrap:wrap}.row-actions a{color:var(--ink);font-size:10px;font-weight:600;text-decoration:underline;text-decoration-color:var(--signal);text-underline-offset:3px}.reschedule-card{margin:18px 0;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--white)}.reschedule-card summary{cursor:pointer;font-weight:700}.reschedule-card form{margin-top:16px}
.internal-layout{display:grid;grid-template-columns:340px minmax(0,1fr);gap:22px;align-items:start}.internal-compose{position:sticky;top:82px}.internal-compose label{display:grid;gap:6px;margin-bottom:14px;color:var(--muted);font-size:10px}.internal-compose input,.internal-compose select,.internal-compose textarea{width:100%;padding:10px;border:1px solid var(--line);border-radius:7px;background:var(--white);color:var(--ink)}.internal-messages{display:grid;gap:12px;padding:18px;background:#f5f7f5}.internal-messages article{max-width:82%;padding:14px 16px;border:1px solid var(--line);border-radius:4px 14px 14px;background:var(--white);box-shadow:0 5px 18px rgba(16,44,42,.05)}.internal-messages article.mine{margin-left:auto;border-radius:14px 4px 14px 14px;background:color-mix(in srgb,var(--signal) 22%,white)}.internal-messages article>div{display:flex;justify-content:space-between;gap:12px}.internal-messages strong{font-size:11px}.internal-messages small{color:var(--muted);font-size:9px}.internal-messages p{margin:10px 0 0;font-size:13px;line-height:1.55}.internal-messages a{display:inline-block;margin-top:9px;font-size:10px;font-weight:700}
.payment-concepts{display:grid;gap:5px}.payment-concepts span{display:flex;justify-content:space-between;gap:12px}.payment-concepts b{font-weight:500}.payment-concepts small{color:var(--muted);white-space:nowrap}

/* ── Perfil médico y expediente ── */
.doctor-photo-field{display:flex;align-items:center;gap:16px;margin-top:18px;padding:14px;border:1px solid var(--line);border-radius:10px;background:#faf9f6}
.doctor-photo-field img{width:88px;height:106px;border-radius:8px;object-fit:cover;object-position:center top;box-shadow:0 7px 20px rgba(20,32,29,.12)}
.doctor-photo-field label{flex:1}.doctor-photo-field small{color:var(--muted);font-size:10px;letter-spacing:normal;text-transform:none}
.clinical-prescriptions>header{background:linear-gradient(90deg,#eef7f2,var(--white))}
.prescription-timeline{display:grid}
.prescription-timeline article{display:grid;grid-template-columns:130px minmax(0,1fr) auto;gap:18px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--line)}
.prescription-timeline article:last-child{border-bottom:0}.prescription-timeline time{color:var(--muted);font-size:10px;letter-spacing:.06em}.prescription-timeline strong,.prescription-timeline span{display:block}.prescription-timeline strong{font-size:13px}.prescription-timeline span{margin-top:4px;color:var(--muted);font-size:11px}.prescription-timeline a{font-size:11px;font-weight:600;white-space:nowrap}
.prescription-clinical{margin:18px 0;padding:18px;border:1px solid var(--line);border-radius:10px;background:#f7f9f6}
.prescription-clinical>header{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px}.prescription-clinical>header strong,.prescription-clinical>header small{display:block}.prescription-clinical>header strong{font-size:13px}.prescription-clinical>header small{margin-top:3px;color:var(--muted);font-size:10px}.vital-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-top:12px}

.search-bar{display:flex;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.search-bar input,.search-bar select{flex:1;min-width:170px;padding:11px 13px;border:1px solid var(--line);border-radius:8px;background:var(--white)}

/* ── Calendario administrativo ── */
.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.calendar .dow{padding:6px;color:var(--muted);font-size:9px;letter-spacing:.1em;text-align:center;text-transform:uppercase}
.calendar .day{min-height:76px;padding:7px;border:1px solid var(--line);border-radius:7px;background:var(--white);font-size:11px}
.calendar .day.blank{border:0;background:transparent}
.calendar .day.today{border-color:var(--ink)}
.calendar .day b{display:block;margin-bottom:5px;font-size:12px}
.calendar .day a{display:block;margin-bottom:2px;padding:3px 5px;border-radius:4px;background:var(--signal);color:var(--ink);font-size:10px;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.calendar-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.calendar-head a{padding:7px 11px;border:1px solid var(--line);border-radius:7px;font-size:11px;text-decoration:none;background:var(--white)}

@media(max-width:900px){
    .system-body{grid-template-columns:1fr}
    .system-sidebar{position:fixed;inset:0 auto 0 0;z-index:15;width:230px;transform:translateX(-100%);transition:transform .25s}
    body.nav-open .system-sidebar{transform:none}
    .system-menu{display:block}
    .system-content,.system-header{padding-left:18px;padding-right:18px}
    .calendar{font-size:10px}
    .calendar .day{min-height:58px}
    .page-intro,.split-workspace{grid-template-columns:1fr}
    .dashboard-intro{grid-template-columns:1fr}.quick-actions{justify-content:flex-start}.operation-ready{grid-template-columns:1fr}
    .weekly-head{display:none}
    .weekly-row{grid-template-columns:130px 1fr 1fr}
}

@media(max-width:650px){
    .weekly-row{grid-template-columns:1fr;padding:14px}.time-pair{padding-left:28px}
    .schedule-actions{align-items:stretch;flex-direction:column}.schedule-actions button{width:100%}
    .service-admin-list article{align-items:flex-start;flex-direction:column}.service-admin-list article>div:last-child{width:100%;justify-content:space-between}
    .charge-row{grid-template-columns:1fr 90px 1fr 38px}.charge-row label:first-child{grid-column:1/-1}
    .internal-layout{grid-template-columns:1fr}.internal-compose{position:static}.internal-messages article{max-width:92%}
    .doctor-photo-field{align-items:flex-start;flex-direction:column}.prescription-timeline article{grid-template-columns:1fr;gap:7px}.prescription-clinical>header{align-items:flex-start;flex-direction:column}
}

/* ── Pestañas de especialidad ── */
.section-tabs{display:flex;gap:7px;flex-wrap:wrap}
.section-tabs a{padding:9px 14px;border:1px solid var(--line);border-radius:22px;background:var(--white);font-size:12px;text-decoration:none;color:var(--muted);transition:background .2s,color .2s}
.section-tabs a:hover{color:var(--ink)}
.section-tabs a.active{background:var(--signal);border-color:var(--ink);color:var(--ink);font-weight:600}

/* ── Minigráfica de evolución ── */
.spark{width:130px;height:32px;overflow:visible}

/* ── Odontograma ── */
.odonto-palette{display:flex;gap:7px;flex-wrap:wrap}
.odonto-chip{display:flex;align-items:center;gap:7px;padding:8px 12px;border:1px solid var(--line);border-radius:20px;background:var(--white);color:var(--muted);font-size:11px;cursor:pointer;transition:border-color .2s,color .2s}
.odonto-chip i{width:12px;height:12px;border-radius:3px;border:1px solid #8b9391}
.odonto-chip:hover{color:var(--ink)}
.odonto-chip.active{border-color:var(--ink);color:var(--ink);font-weight:600;box-shadow:inset 0 0 0 1px var(--ink)}

.odonto-arches{display:grid;gap:22px;margin:20px 0;padding:20px 12px;border:1px solid var(--line);border-radius:12px;background:#faf9f6;overflow-x:auto}
.odonto-row{display:flex;justify-content:center;gap:26px;min-width:max-content}
.odonto-quadrant{display:flex;gap:4px}
.tooth{display:flex;flex-direction:column;align-items:center;gap:3px}
.tooth b{font-size:9px;color:var(--muted);font-weight:500}
.tooth-svg{width:34px;height:34px;cursor:pointer;transition:transform .15s}
.tooth-svg:hover{transform:scale(1.14)}
.tooth-svg polygon,.tooth-svg rect{cursor:pointer}
.odonto-lower .tooth{flex-direction:column-reverse}

@media(max-width:700px){
    .odonto-row{gap:14px}
    .tooth-svg{width:27px;height:27px}
    .tooth b{font-size:8px}
}

/* ── Hilo de conversación ── */
.thread{display:grid;gap:10px;max-height:420px;overflow-y:auto;padding:4px}
.thread-message{max-width:78%;padding:12px 15px;border:1px solid var(--line);border-radius:11px;background:var(--white)}
.thread-message p{margin:0;font-size:14px;line-height:1.5;white-space:pre-wrap}
.thread-message small{display:block;margin-top:7px;color:var(--muted);font-size:10px}
.thread-outgoing{justify-self:end;background:var(--signal);border-color:var(--ink)}
.thread-draft{justify-self:end;background:#f7ecd6;border-style:dashed}
.thread-draft small{color:#7a5714}

/* ── Agenda operativa profesional ── */
.agenda-pro{--agenda-blue:#176bb2;--agenda-cyan:#52bdd9;--agenda-soft:#edf7fc;--agenda-off:#e8edf1;margin:-8px 0 0;border:1px solid #d9e4ec;border-radius:18px;background:#fff;box-shadow:0 18px 55px rgba(20,66,105,.08);overflow:hidden}
.agenda-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;padding:24px 26px 20px;background:linear-gradient(135deg,#f7fbff 0%,#edf8fc 55%,#fff 100%);border-bottom:1px solid #dce8ef}
.agenda-toolbar span,.modal-kicker{display:block;margin-bottom:7px;color:#4283aa;font-size:9px;font-weight:700;letter-spacing:.18em}
.agenda-toolbar h1{font-size:clamp(25px,3.4vw,40px);line-height:1}.agenda-toolbar p{margin:9px 0 0;color:#6d8595;font-size:12px}
.agenda-new{padding:12px 18px;border-radius:24px;background:linear-gradient(135deg,var(--ink),#176bb2);box-shadow:0 8px 22px rgba(18,74,120,.18);white-space:nowrap}
.agenda-controls{display:grid;grid-template-columns:minmax(210px,1fr) auto auto;gap:14px;align-items:end;padding:14px 20px;border-bottom:1px solid #dce8ef;background:#fbfdff}
.agenda-doctor label{max-width:300px}.agenda-doctor select{padding:9px 36px 9px 11px;background:#fff}
.agenda-navigation,.agenda-views{display:flex;align-items:center;padding:3px;border:1px solid #d3e0e8;border-radius:10px;background:#fff}
.agenda-navigation a,.agenda-views a{display:grid;place-items:center;min-height:34px;padding:0 11px;border-radius:7px;text-decoration:none;font-size:11px;font-weight:600;color:#557082}
.agenda-navigation a:hover,.agenda-views a:hover{background:#edf6fb;color:var(--ink)}.agenda-navigation .today{border-inline:1px solid #e2eaf0;border-radius:0}
.agenda-views a.active{background:var(--ink);color:#fff;box-shadow:0 3px 10px rgba(18,63,109,.18)}
.agenda-empty-state{padding:70px 24px;text-align:center;background:#f8fbfd}.agenda-empty-state strong{font-size:20px}.agenda-empty-state p{color:var(--muted)}.agenda-empty-state a{font-weight:700}

.agenda-timeline-wrap{overflow:auto;background:#fff;scrollbar-color:#9eb7c7 #edf2f5}
.agenda-timeline-head,.agenda-timeline{display:grid;grid-template-columns:64px repeat(7,minmax(140px,1fr));min-width:1044px}
.agenda-view-day .agenda-timeline-head,.agenda-view-day .agenda-timeline{grid-template-columns:64px minmax(520px,1fr);min-width:620px}
.agenda-timeline-head{position:sticky;top:0;z-index:6;border-bottom:1px solid #dbe6ed;background:rgba(255,255,255,.96);backdrop-filter:blur(12px)}
.agenda-timeline-head>span{border-right:1px solid #e0e8ed}.agenda-timeline-head>div{display:flex;justify-content:center;align-items:center;gap:8px;min-height:62px;border-right:1px solid #e3ebf0;text-align:center}
.agenda-timeline-head small{color:#738b9a;font-size:9px;letter-spacing:.12em;text-transform:uppercase}.agenda-timeline-head strong{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;font-size:15px}
.agenda-timeline-head .today strong{background:var(--agenda-blue);color:#fff}.agenda-timeline{height:var(--agenda-height);background:#fff}
.agenda-timeline aside{position:relative;border-right:1px solid #dce5eb;background:#f8fafb}.agenda-timeline aside time{position:absolute;right:9px;transform:translateY(-50%);color:#708490;font-size:9px;font-variant-numeric:tabular-nums}
.agenda-day-column{position:relative;border-right:1px solid #dfe7ec;background:repeating-linear-gradient(to bottom,var(--agenda-off) 0,var(--agenda-off) calc(100% / 13 - 1px),#cfd9df calc(100% / 13 - 1px),#cfd9df calc(100% / 13));overflow:hidden}
.agenda-day-column>.hour-line{position:absolute;z-index:1;left:0;right:0;height:1px;background:rgba(119,144,158,.2);pointer-events:none}
.agenda-available{position:absolute;z-index:2;left:0;right:0;width:100%;padding:0;border:0;border-radius:0;background:linear-gradient(135deg,#fff 0%,#f4fbff 100%);box-shadow:inset 0 0 0 1px rgba(94,171,210,.12);color:transparent}
.agenda-available:hover{z-index:3;transform:none;background:#e3f5fc;box-shadow:inset 0 0 0 2px #77c7e2}.agenda-available:hover::after{content:'+ Agendar';position:absolute;inset:8px auto auto 8px;color:#176394;font-size:10px;font-weight:700;letter-spacing:.04em}
.agenda-appointment{position:absolute;z-index:4;left:5px;right:5px;width:calc(100% - 10px);display:flex;flex-direction:column;align-items:flex-start;gap:1px;padding:7px 8px;border:1px solid #77bddd;border-left:4px solid var(--agenda-blue);border-radius:8px;background:#e5f4fc;color:#123f6d;text-align:left;overflow:hidden;box-shadow:0 4px 12px rgba(29,91,131,.12)}
.agenda-appointment:hover{z-index:5;transform:translateY(-1px) scale(1.015);box-shadow:0 7px 18px rgba(29,91,131,.2)}.agenda-appointment time{font-size:9px;font-weight:800}.agenda-appointment strong{max-width:100%;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.agenda-appointment span{max-width:100%;font-size:9px;opacity:.72;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agenda-appointment.status-arrived,.month-appointment.status-arrived{border-color:#56a873;background:#e3f7ea;color:#17643a}.agenda-appointment.status-completed,.month-appointment.status-completed{border-color:#8aa0ad;background:#edf1f3;color:#55656f}.agenda-appointment.status-no_show,.agenda-appointment.status-cancelled,.month-appointment.status-no_show,.month-appointment.status-cancelled{border-color:#b7bec3;background:#eceff1;color:#77848b;text-decoration:line-through;opacity:.7}
.agenda-legend{display:flex;gap:18px;align-items:center;flex-wrap:wrap;padding:12px 20px;border-top:1px solid #dce6ec;background:#f9fbfc;color:#657b89;font-size:10px}.agenda-legend span{display:flex;align-items:center;gap:6px}.agenda-legend i{width:10px;height:10px;border-radius:3px;background:#e5f4fc;border:1px solid #77bddd}.agenda-legend i.unavailable{background:var(--agenda-off);border-color:#cfd9df}.agenda-legend i.scheduled{border-left:4px solid var(--agenda-blue)}.agenda-legend i.arrived{background:#e3f7ea;border-color:#56a873}

.agenda-month{overflow:auto}.agenda-month-weekdays,.agenda-month-grid{display:grid;grid-template-columns:repeat(7,minmax(132px,1fr));min-width:924px}.agenda-month-weekdays{border-bottom:1px solid #dde7ed;background:#f8fbfd}.agenda-month-weekdays span{padding:10px;text-align:center;color:#738a98;font-size:9px;letter-spacing:.12em;text-transform:uppercase}.month-day{min-height:142px;padding:9px;border-right:1px solid #e1e9ee;border-bottom:1px solid #e1e9ee;background:#fff}.month-day.blank{background:#f3f6f8}.month-day.today{background:#f1f9fd;box-shadow:inset 0 0 0 2px #6abbdc}.month-day header{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.month-day header b{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;font-size:12px}.month-day.today header b{background:var(--agenda-blue);color:#fff}.month-day header button{display:grid;place-items:center;width:25px;height:25px;padding:0;border-radius:50%;background:transparent;color:#7590a0;font-size:17px}.month-day header button:hover{background:#dff3fc;color:#145c8d}.month-day>div{display:grid;gap:4px}.month-appointment{display:grid;grid-template-columns:36px minmax(0,1fr);gap:5px;width:100%;padding:5px 6px;border:1px solid #9dcee4;border-radius:6px;background:#eaf6fc;color:#174d75;text-align:left}.month-appointment:hover{transform:none;border-color:#176bb2}.month-appointment time{font-size:9px;font-weight:800}.month-appointment span{overflow:hidden;font-size:9px;white-space:nowrap;text-overflow:ellipsis}.month-day>div>small{color:#607987;font-size:9px}

body.agenda-modal-open{overflow:hidden}.agenda-modal[hidden]{display:none}.agenda-modal{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:20px;background:rgba(10,38,58,.55);backdrop-filter:blur(8px);animation:agenda-fade .18s ease-out}.agenda-modal-card{position:relative;width:min(760px,100%);max-height:min(88vh,850px);padding:28px;border-radius:18px;background:#fff;box-shadow:0 24px 80px rgba(4,29,47,.3);overflow:auto;animation:agenda-rise .22s ease-out}.agenda-modal-close{position:absolute;z-index:2;top:15px;right:15px;display:grid;place-items:center;width:34px;height:34px;padding:0;border-radius:50%;background:#edf3f6;color:#3f5969;font-size:22px}.agenda-modal-card h2{margin:0 44px 22px 0;font-size:29px}.agenda-modal-card label{margin-top:14px}.agenda-modal-card label small{margin-top:4px;color:#608093;font-size:10px;letter-spacing:0;text-transform:none}.agenda-modal-card button:disabled{cursor:not-allowed;opacity:.45;transform:none}
.appointment-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-bottom:18px}.appointment-summary>div{padding:13px;border:1px solid #dce7ed;border-radius:10px;background:#f7fbfd}.appointment-summary small{display:block;margin-bottom:4px;color:#718998;font-size:8px;letter-spacing:.13em}.appointment-summary strong{display:block;font-size:12px;line-height:1.4}
.appointment-modal-actions{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;margin-bottom:18px;padding:14px;border-radius:12px;background:#edf7fc}.appointment-modal-actions form{display:flex;gap:7px;flex-wrap:wrap}.appointment-modal-actions button{padding:9px 11px;font-size:10px}.appointment-modal-actions .quiet{border:1px solid #cddbe3;background:#fff;color:#486372}.appointment-modal-actions>a{padding:10px 13px;border-radius:8px;background:var(--signal);font-size:11px;font-weight:800;text-decoration:none;white-space:nowrap}.agenda-modal details{border-top:1px solid #dde7ed}.agenda-modal summary{padding:16px 2px;cursor:pointer;font-size:12px;font-weight:700}.agenda-modal details form{padding:0 2px 18px}.agenda-modal textarea{resize:vertical}
@keyframes agenda-fade{from{opacity:0}to{opacity:1}}@keyframes agenda-rise{from{opacity:0;transform:translateY(12px) scale(.985)}to{opacity:1;transform:none}}

@media(max-width:900px){
    .agenda-toolbar{align-items:flex-start}.agenda-controls{grid-template-columns:1fr auto}.agenda-views{grid-column:1/-1;justify-self:start}.agenda-timeline-head,.agenda-timeline{grid-template-columns:58px repeat(7,minmax(132px,1fr));min-width:982px}.agenda-view-day .agenda-timeline-head,.agenda-view-day .agenda-timeline{grid-template-columns:58px minmax(460px,1fr);min-width:560px}
}
@media(max-width:650px){
    .agenda-pro{margin:0 -12px;border-radius:13px}.agenda-toolbar{flex-direction:column;padding:20px}.agenda-new{width:100%}.agenda-controls{grid-template-columns:1fr;padding:12px}.agenda-doctor label{max-width:none}.agenda-navigation,.agenda-views{justify-self:stretch;justify-content:center}.agenda-navigation a,.agenda-views a{flex:1}.agenda-modal{align-items:end;padding:0}.agenda-modal-card{width:100%;max-height:93vh;padding:24px 18px;border-radius:20px 20px 0 0}.appointment-summary{grid-template-columns:1fr}.appointment-modal-actions{grid-template-columns:1fr}.appointment-modal-actions form{display:grid;grid-template-columns:1fr 1fr}.appointment-modal-actions>a{text-align:center}.agenda-legend{gap:11px;padding:11px 14px}
}

/* Agenda v2: selección directa y color por tipo de consulta. */
.agenda-day-column{background:#e1e7eb;border-right-color:#c8d3da}
.agenda-day-column>.hour-line{background:#c8d3da}.agenda-day-column>.hour-line.full{background:#aab9c3}
.agenda-available{padding:0 8px;background:#fff;box-shadow:inset 0 0 0 1px #d8e5ec;color:#7897a9;text-align:left}
.agenda-available span{opacity:.38;font-size:9px;font-weight:800;transition:opacity .15s}
.agenda-available:hover,.agenda-available:focus-visible{z-index:3;transform:none;outline:0;background:#e2f5fc;box-shadow:inset 0 0 0 2px #43afd8;color:#145f91}
.agenda-available:hover::after{content:none}.agenda-available:hover span,.agenda-available:focus-visible span{opacity:1}
.agenda-appointment{left:4px;right:4px;width:calc(100% - 8px);padding:6px 7px;border-color:#1459d9;border-left-color:#0b3eaa;background:#2868e8;color:#fff;box-shadow:0 4px 12px rgba(20,62,150,.2)}
.agenda-appointment.visit-subsequent,.month-appointment.visit-subsequent{border-color:#078246;border-left-color:#075e36;background:#10a35b;color:#fff}
.agenda-appointment.visit-first.status-arrived,.month-appointment.visit-first.status-arrived{border-color:#1459d9;background:#2868e8;color:#fff;box-shadow:inset 0 0 0 3px #ffd24b,0 4px 14px rgba(20,65,92,.22)}.agenda-appointment.visit-subsequent.status-arrived,.month-appointment.visit-subsequent.status-arrived{border-color:#078246;background:#10a35b;color:#fff;box-shadow:inset 0 0 0 3px #ffd24b,0 4px 14px rgba(20,65,92,.22)}
.agenda-appointment.status-completed,.month-appointment.status-completed{border-color:#182536;background:#182536;color:#fff}
.agenda-appointment.status-no_show,.agenda-appointment.status-cancelled,.month-appointment.status-no_show,.month-appointment.status-cancelled{border-color:#aab3ba;background:#d5dade;color:#68747b;opacity:.78}
.agenda-legend i{background:#fff;border-color:#b9cbd6}.agenda-legend i.unavailable{background:#dfe5e9;border-color:#bcc8cf}.agenda-legend i.first{background:#2868e8;border-color:#1459d9}.agenda-legend i.subsequent{background:#10a35b;border-color:#078246}.agenda-legend i.arrived{background:#ffd24b;border-color:#dba900}
.month-appointment{border-color:#1459d9;border-left:4px solid #0b3eaa;background:#2868e8;color:#fff}.month-appointment:hover{filter:brightness(.96)}
.admin-danger-zone{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:24px;padding:16px;border:1px solid #efc5c0;border-radius:10px;background:#fff7f6}.admin-danger-zone strong,.admin-danger-zone small{display:block}.admin-danger-zone strong{font-size:12px;color:var(--danger)}.admin-danger-zone small{margin-top:3px;color:var(--muted);font-size:10px}.admin-danger-zone button{white-space:nowrap}
@media(max-width:650px){.admin-danger-zone{align-items:flex-start;flex-direction:column}.admin-danger-zone button{width:100%}}
.finance-expense,.finance-negative{color:#b4433a}.finance-positive{color:#16845d}.finance-voided{opacity:.5;text-decoration:line-through}.table-danger{padding:6px 8px;border:1px solid #e6b6b0;background:#fff;color:#a13c34;font-size:9px;white-space:nowrap}.table-note{display:block;margin-top:3px;color:var(--muted);font-size:9px}.expense-panel>header{background:linear-gradient(90deg,#fff8f5,#fff)}

/* Estado de WhatsApp visible sin exponer credenciales técnicas. */
.connection-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.connection-summary>div{padding:14px;border:1px solid var(--line);border-radius:9px;background:#f8fbfd}.connection-summary small{display:block;margin-bottom:7px;color:var(--muted);font-size:9px;letter-spacing:.1em}.connection-summary strong{display:block;font-size:12px}.client-phone{font-size:17px!important;letter-spacing:.04em}.connection-diagnostic{margin-top:13px;padding:13px;border:1px solid var(--line);border-radius:8px}.connection-diagnostic.error{background:#fff3f1;border-color:#efc5c0;color:#8d342e}.connection-diagnostic p{margin:6px 0 0;font-size:11px;line-height:1.5}.connection-test-actions{display:flex;align-items:end;gap:10px;flex-wrap:wrap;margin-top:16px}.connection-test-actions form{display:flex;align-items:end;gap:9px;margin:0}.connection-test-actions label{min-width:220px;margin:0}.connection-test-actions button{white-space:nowrap}.managed-connection-note{margin:0 0 20px;padding:13px;border:1px solid #b9ddeb;border-radius:8px;background:#eef9fd;color:#315f76;font-size:11px;line-height:1.55}
@media(max-width:650px){.connection-summary{grid-template-columns:1fr}.connection-test-actions,.connection-test-actions form{align-items:stretch;flex-direction:column}.connection-test-actions form,.connection-test-actions label,.connection-test-actions button{width:100%}}
.chat-live-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.chat-live-status{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;border-radius:999px;background:#e8f7ef;color:#147447;font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.chat-live-status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px rgba(20,116,71,.12)}.chat-live-status[data-state="error"]{background:#fff1eb;color:#b94b2f}.chat-live-status[data-state="error"]::before{box-shadow:0 0 0 3px rgba(185,75,47,.12)}

/* Bot de menú configurable por cada consultorio. */
.menu-bot-layout{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(300px,.9fr);gap:18px;margin-bottom:22px}.menu-bot-layout>.panel{margin:0}.menu-bot-preview{background:linear-gradient(145deg,var(--ink),#176bb2);color:#fff}.menu-bot-preview>header{border-bottom-color:rgba(255,255,255,.17)}.menu-bot-preview>header small{color:#91e6f5}.menu-bot-preview pre{min-height:210px;margin:0;padding:18px;border:1px solid rgba(255,255,255,.18);border-radius:10px;background:rgba(255,255,255,.08);color:#fff;font:500 13px/1.7 inherit;white-space:pre-wrap}.menu-options-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px;margin-top:16px}.menu-option-card{display:grid;gap:10px;padding:16px;border:1px solid var(--line);border-radius:10px;background:#fbfdff}.menu-option-card label{margin:0}.menu-option-new{border-style:dashed;background:#f2faff}.menu-option-key{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--ink)}.menu-option-key input{width:30px;padding:0;border:0;background:transparent;color:#fff;text-align:center;font-weight:800;text-transform:uppercase}.menu-option-actions{display:flex;gap:8px;align-items:center;margin-top:auto;padding-top:4px}.menu-option-actions button{flex:1}
@media(max-width:850px){.menu-bot-layout{grid-template-columns:1fr}}@media(max-width:650px){.menu-options-grid{grid-template-columns:1fr}.menu-option-actions{align-items:stretch;flex-direction:column}.menu-option-actions button{width:100%}}
