.app-shell{display:flex;min-height:100svh}.sidebar{width:244px;flex:none;background:linear-gradient(175deg,#f2f9f5,#fbfcfb 73%);border-right:1px solid #e3eee8;display:flex;flex-direction:column;min-height:100svh;position:sticky;top:0;max-height:100svh;z-index:20}.sidebar-brand{display:flex;align-items:center;gap:9px;padding:29px 20px 26px}.sidebar-brand-name{font-family:Georgia,serif;font-size:17px;white-space:nowrap;color:#5f9888}.sidebar-brand-name strong{font-weight:700}.sidebar-brand-name small{display:block;font:700 9px var(--font);letter-spacing:2px;color:#a1b4ac;margin-top:4px}.sidebar-divider{margin:0 20px;border-bottom:1px solid #dceae2}.sidebar-heading{font-size:9px;letter-spacing:1.8px;font-weight:850;color:#a1b5aa;margin:28px 22px 12px}.heading-secondary{margin-top:32px}#sidebar-nav{overflow:auto;flex:1;padding:0 12px 15px}.nav-link{width:100%;background:none;border:0;color:#6f8178;padding:11px 13px;margin:2px 0;border-radius:12px;display:flex;align-items:center;gap:13px;font-size:12px;font-weight:650;text-align:left;transition:background .16s,color .16s}.nav-link:hover{background:#eaf4ef;color:#4f8b79}.nav-link.active{background:#dcefe6;color:#438a73}.nav-icon{font-size:19px;width:19px;text-align:center;font-weight:400}.nav-number{margin-left:auto;font-size:10px;background:#c6e3d5;padding:3px 7px;border-radius:8px}.sidebar-bottom{margin:9px 16px 17px;padding:16px;border-radius:15px;background:#e4f2eb;color:#648f7d}.little-sparkle{font-size:16px}.sidebar-bottom p{font:italic 14px/1.35 Georgia,serif;margin:10px 0 14px}.sidebar-bottom span{font-size:10px;color:#9caf9e}.sidebar-user{border-top:1px solid #e1ece6;display:flex;gap:10px;padding:17px;align-items:center;background:#f9fcfa}.sidebar-user>div:nth-child(2){min-width:0;flex:1}.avatar,.top-avatar{width:35px;height:35px;display:grid;place-items:center;background:#e8dce9;border:2px solid #fff;color:#856f8a;border-radius:50%;font-size:11px;font-weight:800;flex:none}.sidebar-user strong{display:block;font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user small{display:block;color:#98a79f;font-size:10px;margin-top:3px}.sidebar-user button{border:0;background:transparent;color:#93a39a;font-size:20px}
.main-area{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:76px;background:#fff;border-bottom:1px solid #edf1ef;padding:0 36px;display:flex;align-items:center;justify-content:space-between;flex:none}.topbar-left,.topbar-right{display:flex;align-items:center;gap:18px}.topbar-breadcrumb{font-size:12px;color:#a1ada5}.topbar-breadcrumb strong{color:#647a6d}.breadcrumb-sep{margin:0 9px;color:#cdd7cf}.today-label{font-size:11px;color:#84998f;text-transform:capitalize}.menu-toggle{display:none;background:transparent;border:0;font-size:18px;color:#5a8b7b}.app-content{width:100%;max-width:1440px;margin:0 auto;padding:32px 36px 50px;flex:1}.app-footer{border-top:1px solid #e9eeeb;padding:17px 36px;font-size:10px;color:#a1aca6;display:flex;gap:16px;justify-content:space-between}.app-footer a{text-decoration:none;color:#6aa38f;font-weight:750}
.page-head{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:25px}.eyebrow{font-size:10px;letter-spacing:2.1px;font-weight:850;color:#7fb09d;margin-bottom:10px;display:block}.page-title{margin:0;font:400 clamp(28px,3vw,38px) Georgia,serif;color:#3b5248;letter-spacing:-.6px}.page-sub{margin:9px 0 0;color:#9aa99e;font-size:12px;line-height:1.65}.head-actions{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.welcome-banner{min-height:165px;position:relative;overflow:hidden;display:flex;align-items:center;padding:27px 33px;background:linear-gradient(115deg,#dcefe7,#ebf5ec 68%,#f7eaf0);border-radius:19px;margin-bottom:22px;border:1px solid #e5f2eb}.welcome-banner h2{font:400 31px Georgia,serif;color:#537a68;margin:8px 0}.welcome-banner h2 em{color:#a38aaa}.welcome-banner p{font-size:12px;color:#7a9987;margin:0}.banner-sparkle{position:absolute;right:50px;top:24px;width:130px;opacity:.78}.banner-sparkle:before{content:"";position:absolute;width:260px;height:260px;border:1px solid #fff;left:-69px;top:-65px;border-radius:50%;box-shadow:0 0 0 32px rgba(255,255,255,.26),0 0 0 74px rgba(255,255,255,.17)}.banner-sparkle img{position:relative;width:120px;height:130px;z-index:1}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:23px}.metric{background:#fff;border:1px solid #e7eee9;border-radius:17px;padding:21px 20px;min-height:125px;box-shadow:0 5px 18px rgba(45,95,79,.02)}.metric-label{display:flex;align-items:center;gap:10px;font-size:11px;font-weight:700;color:#8b9c90}.metric-dot{height:9px;width:9px;background:#91c3af;border-radius:50%}.metric:nth-child(2) .metric-dot{background:#e2c1d6}.metric:nth-child(3) .metric-dot{background:#f0ce9e}.metric:nth-child(4) .metric-dot{background:#b8b9e3}.metric-value{font:400 35px Georgia,serif;color:#4b6a5b;margin-top:15px}.metric-caption{font-size:10px;color:#adbaaf;margin-top:5px}
.dashboard-grid{display:grid;grid-template-columns:1.55fr 1fr;gap:18px}.panel{border:1px solid #e5eee8;background:#fff;border-radius:18px;padding:23px;box-shadow:0 8px 24px rgba(85,114,100,.035)}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:21px}.panel-title{font:400 20px Georgia,serif;color:#415b4d;margin:0}.link-button{border:0;background:transparent;color:#6da391;font-size:11px;font-weight:800}.upcoming-list{display:grid;gap:11px}.appointment-line{display:flex;gap:13px;align-items:center;padding:11px 13px;border-radius:12px;background:#f9fbf9;border:1px solid #eff3ef}.appointment-line .time-block{background:#eaf5ee;border-radius:9px;padding:10px;min-width:58px;text-align:center;color:#5b917e;font-size:12px;font-weight:800}.appointment-line .appointment-person{flex:1;min-width:0}.appointment-person strong{font-size:12px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.appointment-person small{font-size:10px;color:#a4b0a5;display:block;margin-top:4px}.quick-items{display:grid;gap:12px}.quick-item{display:flex;gap:13px;padding:15px;border:1px solid #eaf0eb;border-radius:13px;align-items:center;background:#fcfefd}.quick-symbol{width:37px;height:37px;border-radius:11px;display:grid;place-items:center;background:#e8f5eb;color:#67a18c;font-size:19px}.quick-item strong{font-size:12px;display:block}.quick-item small{font-size:10px;color:#9aaa9f;display:block;margin-top:5px}.quick-item button{margin-left:auto;border:0;background:none;color:#80af9d;font-weight:900;font-size:20px}
.agenda-toolbar{background:#fff;border:1px solid #e6eee8;border-radius:17px;padding:15px;display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:17px}.toolbar-group{display:flex;align-items:center;flex-wrap:wrap;gap:9px}.date-control{padding:8px 12px;border-radius:11px;border:1px solid #e3eae5;background:#fff;color:#5d796a;font-size:12px;max-width:180px}.view-switch{background:#f0f6f2;border-radius:12px;padding:4px;display:flex;gap:2px}.view-switch button{border:0;background:transparent;color:#80938a;border-radius:8px;font-size:11px;font-weight:700;padding:10px 13px}.view-switch button.selected{background:#fff;box-shadow:0 3px 10px rgba(44,86,68,.08);color:#4f9178}.filter-select{padding:10px;border:1px solid #e3eae5;border-radius:10px;background:#fff;color:#788e7e;font-size:11px;max-width:205px}
.agenda-panel{padding:0;overflow:hidden}.calendar-header{display:grid;grid-template-columns:66px repeat(var(--cols),minmax(170px,1fr));border-bottom:1px solid #edf2ee;min-width:610px}.calendar-header .dentist-head{padding:16px;border-left:1px solid #edf2ee}.dentist-head strong{display:block;font-size:12px;color:#507767}.dentist-head small{display:block;font-size:10px;color:#a0aca2;margin-top:4px}.calendar-scroll{overflow-x:auto}.day-body{display:grid;grid-template-columns:66px repeat(var(--cols),minmax(170px,1fr));min-width:610px}.timeline-labels{height:var(--day-height,1056px);position:relative;color:#9caea1;font-size:10px}.timeline-labels span{position:absolute;right:13px;translate:0 -50%}.day-track{height:var(--day-height,1056px);border-left:1px solid #edf0ed;position:relative;background:repeating-linear-gradient(to bottom,#fff 0px,#fff 65px,#ebf1ec 65px,#ebf1ec 66px)}.event-block{position:absolute;left:6px;right:6px;border:0;text-align:left;border-radius:10px;padding:9px 10px 8px;overflow:hidden;border-left:3px solid #95c2af;color:#517a66;background:#e8f5ed;box-shadow:0 2px 6px rgba(37,83,62,.03)}.event-block.status-pending{background:#fff3e3;border-color:#eac58b;color:#9f7a43}.event-block.status-cancelled{background:#fff0f1;border-color:#dfa1a7;color:#a27079}.event-block.status-completed{background:#ecf0fa;border-color:#b0c3e5;color:#657b9d}.event-block.status-in_progress{background:#eaf4fb;border-color:#91bfdf;color:#5885a7}.event-block:hover{filter:brightness(.98)}.event-time{font-size:10px;display:block;font-weight:850}.event-name{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:800;margin:4px 0}.event-extra{display:block;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-chip{display:inline-block;font-size:9px;font-weight:700;margin-top:6px;opacity:.82}
.week-grid,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(110px,1fr));gap:0;overflow-x:auto}.week-grid{min-width:720px}.week-day,.month-day{border-right:1px solid #edf1ee;border-bottom:1px solid #edf1ee;min-height:270px;padding:14px 9px;background:white}.week-day:nth-child(even){background:#fcfefd}.week-day-head,.month-day-head{color:#618e7a;font-weight:800;font-size:11px;margin-bottom:15px}.week-day-head small{display:block;color:#a9b6aa;font-weight:500;margin-top:4px}.week-appt,.month-appt{border:0;display:block;width:100%;background:#ecf6ef;color:#648f7b;border-radius:8px;padding:8px 7px;text-align:left;margin-bottom:6px;font-size:10px;line-height:1.3}.week-appt strong{display:block;color:#537560;font-size:10px}.month-grid{min-width:720px}.month-day{min-height:117px;padding:9px}.month-day.outside{background:#f9fbfa;opacity:.52}.month-day-head{margin-bottom:8px}.month-appt{padding:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9px}
.table-scroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;min-width:680px}.data-table th{text-align:left;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:#a2b1a5;font-weight:800;padding:14px 12px;background:#f8fbf9}.data-table td{border-bottom:1px solid #eff3ef;font-size:12px;color:#657a6d;padding:15px 12px}.data-table tr:last-child td{border:0}.data-table td strong{color:#3f6452}.patient-cell{display:flex;align-items:center;gap:9px}.patient-avatar{width:34px;height:34px;display:grid;place-items:center;background:#e6f2ec;color:#5b927b;border-radius:11px;font-size:11px;font-weight:800}.search-input{border:1px solid #e0ebe5;background:white;border-radius:11px;padding:11px 14px;width:min(100%,290px);font-size:12px;outline:none}
.reminder-layout{display:grid;grid-template-columns:1.05fr .95fr;gap:18px}.setting-row{display:flex;align-items:center;justify-content:space-between;padding:17px 0;gap:14px;border-bottom:1px solid #eef3ee}.setting-row strong{display:block;font-size:12px;color:#49665a}.setting-row small{display:block;color:#9baa9e;font-size:10px;margin-top:5px;line-height:1.5}.switch{position:relative;width:43px;height:25px;flex:none}.switch input{opacity:0;width:0;height:0}.switch span{position:absolute;inset:0;background:#d7e3db;border-radius:16px;transition:background .16s}.switch span:before{content:"";position:absolute;background:#fff;width:19px;height:19px;border-radius:50%;top:3px;left:3px;transition:transform .16s;box-shadow:0 1px 4px #0001}.switch input:checked+span{background:#83b9a3}.switch input:checked+span:before{transform:translateX(18px)}.check-days{display:flex;gap:13px;flex-wrap:wrap;margin:15px 0}.check-days label{font-size:11px;color:#6b8573;display:flex;gap:6px;align-items:center}.check-days input{accent-color:#77b29a}.reminder-preview{background:linear-gradient(150deg,#e6f5ed,#f5f6f1 54%,#faedf3);padding:25px;border-radius:18px;display:grid;justify-items:center;gap:15px}.phone-frame{width:242px;min-height:370px;border:7px solid #34473f;border-radius:30px;background:#f7f7f5;box-shadow:0 17px 35px rgba(47,87,69,.17);overflow:hidden}.phone-top{background:#508776;color:white;padding:18px 12px;font-size:12px;font-weight:800}.phone-msg{background:white;border-radius:13px;margin:25px 12px;padding:15px;font-size:12px;line-height:1.7;color:#456457;box-shadow:0 2px 9px #0001}.preview-label{text-transform:uppercase;letter-spacing:1px;font-size:10px;color:#81a190;font-weight:900}.help-note{background:#f4f9f5;padding:13px 15px;font-size:11px;line-height:1.7;color:#789084;border-radius:12px;margin-top:17px}.soon{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:10px}.soon-card{background:white;border:1px solid #e5eee8;border-radius:17px;padding:28px}.soon-card h3{font:400 23px Georgia,serif;color:#5f8673}.soon-card p{font-size:12px;color:#91a398;line-height:1.7}.soon-tag{display:inline-block;border-radius:30px;background:#f3eafa;color:#9d7da7;font-size:10px;font-weight:800;padding:8px 11px}
.modal-root{position:fixed;inset:0;background:rgba(41,61,53,.44);backdrop-filter:blur(4px);z-index:100;display:grid;place-items:center;padding:20px}.modal-card{background:white;border-radius:22px;max-width:620px;width:100%;max-height:min(90svh,850px);overflow-y:auto;padding:27px;box-shadow:var(--shadow-lg);animation:modal-in .18s ease-out}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:25px}.modal-header h2{font:400 25px Georgia,serif;color:#567d6c;margin:0}.modal-close{background:#f2f7f3;border:0;border-radius:10px;font-size:21px;width:36px;height:36px;color:#789989}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.span-two{grid-column:span 2}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:25px;flex-wrap:wrap}.toast{position:fixed;bottom:25px;right:28px;background:#435f52;color:#fff;border-radius:13px;padding:14px 20px;font-size:12px;z-index:150;box-shadow:var(--shadow);max-width:380px}.empty{border-radius:14px;text-align:center;padding:45px 15px;color:#9eaea1;font-size:12px}.loading-state{padding:80px;text-align:center;color:#80a28e}.sidebar-overlay{display:none}.hr{border:0;border-top:1px solid #e8efe8;margin:22px 0}.section-kicker{font-size:11px;color:#6a9c87;font-weight:800;margin-top:22px}
@keyframes modal-in{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}
@media(max-width:1200px){.metrics{grid-template-columns:repeat(2,1fr)}.reminder-layout{grid-template-columns:1fr}.sidebar{width:218px}.app-content{padding:25px}.topbar{padding:0 25px}}
@media(max-width:900px){.sidebar{position:fixed;left:0;top:0;bottom:0;transform:translateX(-100%);transition:transform .2s ease;max-height:100svh}.sidebar.open{transform:translateX(0)}.sidebar-overlay.open{display:block;position:fixed;inset:0;background:#172c245c;z-index:10}.menu-toggle{display:block}.dashboard-grid{grid-template-columns:1fr}.app-footer{padding:16px 25px}}
@media(max-width:650px){.app-content{padding:19px 15px 35px}.topbar{height:65px;padding:0 15px}.today-label{display:none}.page-head{align-items:stretch;flex-direction:column}.head-actions{justify-content:flex-start}.page-title{font-size:30px}.welcome-banner{padding:25px 19px}.welcome-banner h2{font-size:25px}.welcome-banner p{max-width:230px}.banner-sparkle{right:-29px;top:35px;opacity:.54}.metrics{gap:9px}.metric{padding:15px;min-height:115px}.metric-value{font-size:29px}.metric-label{font-size:10px}.panel{padding:17px}.form-grid{grid-template-columns:1fr}.span-two{grid-column:auto}.modal-card{padding:19px}.soon{grid-template-columns:1fr}.app-footer{flex-direction:column;gap:5px}}

/* Rediseño pastel compacto: tarjetas de métricas en una sola línea. */
.sidebar-user{padding:14px 12px;min-height:65px}
.sidebar-user strong{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.35;overflow-wrap:anywhere}
#sidebar-nav{padding-bottom:16px;scrollbar-width:thin;scrollbar-color:#b7c4be transparent}
.main-area:has(.welcome-banner){background:linear-gradient(128deg,#f6faf8,#f6fbf9 45%,#fbf7fa 78%,#f7faf8);background-size:240% 240%;animation:home-breathe 19s ease-in-out infinite alternate}
.welcome-banner{isolation:isolate;box-shadow:0 8px 34px rgba(93,151,135,.07)}
.welcome-banner::after{content:"";position:absolute;z-index:-1;pointer-events:none;width:340px;height:340px;border-radius:50%;right:8%;top:-180px;background:radial-gradient(circle,rgba(255,255,255,.42),rgba(255,255,255,0) 70%);animation:home-float 10s ease-in-out infinite alternate}
.banner-sparkle img{animation:tooth-float 6s ease-in-out infinite}
.metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.metric{min-height:66px;padding:16px 17px;display:flex;align-items:center;justify-content:space-between;gap:8px;box-shadow:none;border-radius:15px}
.metric:nth-child(1){background:#e8f5fc;border-color:#cce6f7}
.metric:nth-child(2){background:#e7f6ee;border-color:#bfe9d2}
.metric:nth-child(3){background:#fff2e5;border-color:#f5d5ac}
.metric:nth-child(4){background:#f8ebf8;border-color:#e9c8ee}
.metric-label{display:flex;align-items:center;min-width:0;gap:8px;color:#405b56;font-size:11px;font-weight:700;line-height:1.3}
.metric-dot{width:7px;height:7px;flex:none}
.metric-value{font:800 clamp(17px,1.7vw,24px) var(--font);margin:0;color:#233c47;flex:none;white-space:nowrap;order:2}
.metric-caption{display:none}
.quick-item{background:#f9fcfa;padding:12px;border-radius:12px}
.soon-card{padding:21px;background:linear-gradient(130deg,#f9fdfb,#fdf9fc)}
.patient-avatar{overflow:hidden;flex:none;border-radius:50%;width:38px;height:38px}
.patient-avatar img,.patient-photo-preview{width:100%;height:100%;object-fit:cover;display:block}
.patient-photo-picker{display:flex;align-items:center;gap:15px;padding:14px;background:#f5faf7;border:1px dashed #c9e2d7;border-radius:14px;min-width:0}
.patient-photo-picker>div{flex:1;min-width:0}
.patient-photo-picker input{padding:7px;width:100%;font-size:11px}
.patient-photo-picker small{display:block;margin-top:6px;color:#738d81;font-size:10px;line-height:1.5}
.patient-avatar-preview,.patient-photo-preview{width:66px;height:66px;border-radius:50%;border:2px solid white;flex:none;object-fit:cover}
.patient-avatar-preview{font-size:22px}
.calendar-integration{margin-top:18px;background:linear-gradient(140deg,#fff,#f7fbf8)}
.calendar-integration p{color:#6b8679;font-size:12px;line-height:1.7}
.calendar-integration .head-actions{margin-top:15px}
/* Pantalla de bienvenida al abrir el consultorio. */
.app-splash{position:fixed;inset:0;z-index:250;background:linear-gradient(135deg,#e8f6f1 0%,#fbfdfb 49%,#faedf4 100%);display:grid;place-items:center;overflow:hidden;transition:opacity .55s ease,visibility .55s ease}
.app-splash.splash-hidden{opacity:0;visibility:hidden;pointer-events:none}
.splash-glow{position:absolute;width:min(85vw,650px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#d3ece4 0%,#e4f3e9 41%,transparent 72%);filter:blur(18px);animation:splash-halo 5s ease-in-out infinite alternate}
.splash-center{z-index:1;text-align:center;padding:35px;animation:splash-appear .9s ease both}
.splash-logo{position:relative;display:grid;place-items:center;margin:auto;width:126px;height:126px;border-radius:38%;background:rgba(255,255,255,.63);border:1px solid rgba(255,255,255,.95);box-shadow:0 18px 60px rgba(97,152,132,.12);animation:tooth-float 4s ease-in-out infinite}
.splash-logo img{width:92px;height:92px}
.splash-sparkle{position:absolute;right:11px;top:4px;font-size:26px;color:#e5aacc;animation:splash-twinkle 2.4s ease-in-out infinite}
.splash-name{margin-top:24px;color:#5c9484;font:400 clamp(25px,4vw,35px) Georgia,serif}
.splash-subtitle{margin-top:12px;color:#93b3a7;letter-spacing:3px;font-size:9px;font-weight:800}
.splash-progress{height:3px;width:138px;border-radius:5px;margin:25px auto 0;background:#d5eae0;overflow:hidden}
.splash-progress span{display:block;height:100%;width:36%;border-radius:inherit;background:#83b9a5;animation:splash-load 1.4s ease-in-out infinite alternate}
@keyframes home-breathe{from{background-position:0% 30%}to{background-position:100% 70%}}
@keyframes home-float{from{transform:translate(-17px,-9px)}to{transform:translate(25px,30px)}}
@keyframes tooth-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes splash-halo{to{transform:scale(1.12);opacity:.75}}
@keyframes splash-twinkle{0%,100%{opacity:.5;transform:scale(.85)}50%{opacity:1;transform:scale(1.12)}}
@keyframes splash-appear{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}
@keyframes splash-load{from{transform:translateX(-110%)}to{transform:translateX(280%)}}
@media(max-width:1250px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1251px){.metrics{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:650px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.metric{min-height:63px;padding:10px 12px;gap:5px}.metric-label{font-size:10px;gap:5px}.metric-value{font-size:18px}.patient-photo-picker{gap:9px;padding:10px}.patient-avatar-preview,.patient-photo-preview{width:50px;height:50px}.calendar-integration .head-actions{display:grid;grid-template-columns:1fr}.calendar-integration .btn{width:100%}}
@media(max-width:390px){.metrics{grid-template-columns:1fr}.metric{min-height:52px}}
@media(prefers-reduced-motion:reduce){.main-area:has(.welcome-banner),.banner-sparkle img,.welcome-banner::after,.splash-glow,.splash-center,.splash-logo,.splash-sparkle,.splash-progress span{animation:none!important}.app-splash{transition:none!important}}

/* Contactos obligatorios y consentimiento en el modal de citas. */
.consent-check{display:flex;align-items:flex-start;gap:8px;color:#486d5d;font-weight:650;font-size:12px;line-height:1.45}
.consent-check input{width:auto;min-width:16px;margin-top:1px;accent-color:#83b9a5}
#appointment-form .field>small{display:block;margin-top:5px;font-size:10px;line-height:1.5}
@media(max-width:650px){#appointment-form .field input{min-height:42px}}

/* Editor de recordatorios: compacto en desktop, cómodo en móvil. */
.reminder-editor-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.reminder-editor-head label{margin:0}
.reminder-editor-head .btn{padding:9px 12px;font-size:11px}
#reminder-template{min-height:198px;resize:vertical;line-height:1.6;font:13px/1.6 var(--font);background:#fbfdfb;border:1px solid #dceae2;border-radius:14px;padding:15px;color:#415e50;width:100%}
#reminder-template:focus{outline:2px solid #b0d9ca;outline-offset:2px}
.preview-map-link{color:#3b997c;font-weight:800;text-decoration:underline;text-underline-offset:2px;word-break:break-word}
.reminder-preview .phone-msg{white-space:normal;line-height:1.7;overflow-wrap:anywhere}
.reminder-diagnostics{font-size:13px;line-height:1.7;color:#486457}
.reminder-diagnostics p{border-bottom:1px solid #e7efe9;padding:9px 0;margin:0}
@media(max-width:750px){.reminder-editor-head{align-items:flex-start}.reminder-editor-head .btn{min-height:35px}.reminder-preview .phone-frame{max-width:100%;margin-inline:auto}#reminder-template{min-height:175px}}

/* Resumen matutino: tarjeta compacta y legible en móvil/tableta. */
.daily-agenda-panel{margin-top:17px;background:linear-gradient(115deg,#ffffff,#f6fbf8 55%,#fcf7fa)}
.daily-agenda-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:20px}
.daily-agenda-grid p{font-size:12px;color:#698378;line-height:1.65;margin:8px 0}
.daily-agenda-grid strong{color:#416858}
.daily-agenda-grid .head-actions{display:flex;flex-wrap:wrap;gap:8px;margin:15px 0 12px}
.daily-agenda-grid .head-actions button{white-space:normal;min-height:42px}
.daily-agenda-grid small{display:block;line-height:1.6;font-size:11px}
.daily-agenda-history{padding:14px;background:#f4f9f6;border:1px solid #e0ece5;border-radius:13px;min-width:0;align-self:start}
.daily-agenda-history>strong{font-size:12px}
.daily-agenda-log{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:11px;color:#608176;border-bottom:1px solid #e3eee7;padding:10px 0;overflow-wrap:anywhere}
.daily-agenda-log>strong{font-size:10px;font-weight:700}
.daily-agenda-log:last-child{border-bottom:0}
@media(max-width:900px){.daily-agenda-grid{grid-template-columns:1fr}}
@media(max-width:550px){.daily-agenda-grid .head-actions{display:grid;grid-template-columns:1fr}.daily-agenda-history{padding:12px}.daily-agenda-panel .panel-head{align-items:flex-start;gap:8px;flex-wrap:wrap}}

/* PR visual: vista de WhatsApp compacta, sin estirar el teléfono a la altura del formulario. */
.reminder-layout{align-items:start}
.reminder-preview{align-self:start;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:17px;min-height:0;padding:25px 16px 29px}
.reminder-preview .phone-frame{width:min(100%,286px);height:auto;min-height:0;max-height:none;flex:none;display:flex;flex-direction:column;border:7px solid #334940;border-radius:36px;box-shadow:0 18px 34px rgba(51,78,62,.14);padding-bottom:10px;background:#f8f9f7}
.reminder-preview .phone-top{padding:18px 16px 16px;font-size:12px;line-height:1.3}
.reminder-preview .phone-msg{margin:16px 12px 13px;padding:17px 16px;font-size:12px;line-height:1.75;max-height:350px;overflow-y:auto;scrollbar-width:thin}
.phone-compose{margin:0 12px 9px;padding:8px 11px;display:flex;align-items:center;justify-content:space-between;border-radius:26px;background:#fff;border:1px solid #e5eee8;color:#9caba2;font-size:10px}
.phone-send-dot{background:#83b9a3;color:white;border-radius:50%;width:23px;height:23px;display:grid;place-items:center;font-size:10px}
.phone-home-indicator{display:block;width:74px;height:4px;border-radius:10px;background:#b1bdb7;margin:1px auto 0}
@media(max-width:650px){.reminder-preview{padding:23px 12px}.reminder-preview .phone-frame{width:min(100%,280px)}}

/* Perfil de doctora, persistido privadamente en MySQL. */
.doctor-profile-card{min-width:0}
.doctor-profile-content{display:flex;align-items:center;gap:18px;margin-top:18px}
.doctor-profile-photo{width:94px;height:94px;flex:none;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#e1f1e9,#f8eaf4);border:4px solid #fff;box-shadow:0 8px 25px rgba(68,120,96,.11);overflow:hidden}
.doctor-profile-photo img{width:100%;height:100%;object-fit:cover}
.doctor-profile-photo span{font:400 28px Georgia,serif;color:#6ba38d}
.doctor-profile-copy{min-width:0;flex:1}
.doctor-profile-copy h3{margin:0 0 7px}
.doctor-profile-copy p{margin:0 0 11px}
.doctor-profile-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:8px}
.doctor-profile-copy small{font-size:10px;color:#84998b;line-height:1.5;display:block}
.doctor-profile-actions>.btn{padding:10px 14px;font-size:11px}
.doctor-profile-actions>.btn:disabled{opacity:.55;cursor:default}

/* Sustituye el selector de archivo nativo; el input continúa accesible y abre la biblioteca del dispositivo. */
.visually-hidden-upload{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.patient-photo-picker{background:linear-gradient(115deg,#f3faf6,#fbf8fc);border:1px dashed #bddfd0;padding:18px;align-items:center;gap:16px}
.patient-photo-picker .photo-picker-details{display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.photo-picker-details>strong{display:block;max-width:100%;overflow-wrap:anywhere;color:#486d5d;font-size:12px}
.photo-picker-details>small{margin:0;color:#82978a;font-size:10px;line-height:1.5}
.photo-picker-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:7px}
.photo-pick-btn{display:inline-flex;justify-content:center;align-items:center;min-height:38px;padding:9px 14px;border-radius:11px;background:#e1f1e9;border:1px solid #c8e4d7;color:#387762;font-size:11px;font-weight:800;cursor:pointer;line-height:1.2;transition:background .15s,transform .15s}
.photo-pick-btn:hover{background:#cee9da;transform:translateY(-1px)}
.visually-hidden-upload:focus-visible~.photo-picker-actions .photo-pick-btn,.visually-hidden-upload:focus-visible + .photo-pick-btn,.photo-pick-btn:focus-visible{outline:3px solid #83b9a3;outline-offset:3px}
.photo-clear-btn{background:transparent;border:0;color:#927e88;font-weight:700;font-size:11px;cursor:pointer;padding:9px}
.photo-clear-btn[hidden]{display:none!important}
.patient-avatar-preview{display:grid;place-items:center;background:#e3f1ea;color:#6b9e8b}
@media(max-width:650px){.doctor-profile-content{align-items:flex-start;gap:11px}.doctor-profile-photo{width:70px;height:70px}.doctor-profile-photo span{font-size:20px}.doctor-profile-copy h3{font-size:19px}.doctor-profile-actions{gap:5px}.doctor-profile-actions>.btn,.photo-pick-btn{font-size:10px;padding:9px}.patient-photo-picker{gap:12px;padding:12px}.patient-photo-picker .photo-picker-details{gap:4px}}
@media(prefers-reduced-motion:reduce){.photo-pick-btn{transition:none}.photo-pick-btn:hover{transform:none}}


/* Menú móvil: ocupa la altura VISIBLE COMPLETA en Safari/iOS incluso
   cuando las barras del navegador se expanden o se ocultan.
   El contenido navega con scroll interno y el perfil permanece abajo. */
.sidebar-user-details{min-width:0;flex:1}
.sidebar-logout{
  display:inline-block;
  padding:5px 0 2px;
  margin-top:3px;
  border:0;
  border-radius:0;
  background:transparent;
  color:#628f7c;
  font-family:var(--font);
  font-size:10px;
  line-height:1.3;
  font-weight:750;
  text-align:left;
  cursor:pointer;
}
.sidebar-logout:hover{text-decoration:underline;text-underline-offset:3px;color:#438773}
.sidebar-logout:focus-visible{outline:2px solid #87bdaa;outline-offset:3px;border-radius:3px}
@media (max-width:900px){
  .sidebar{
    position:fixed;
    top:0;
    bottom:0;
    left:0;
    height:100vh; /* fallback para navegadores sin unidades de viewport dinámicas */
    height:100dvh;
    min-height:0;
    max-height:none;
    box-sizing:border-box;
    padding-bottom:env(safe-area-inset-bottom,0px);
    overflow:hidden;
    display:flex;
    flex-direction:column;
    overscroll-behavior:contain;
    box-shadow:8px 0 28px rgba(47,85,70,.08);
  }
  #sidebar-nav{
    flex:1 1 auto;
    min-height:0;
    overflow-y:auto;
    overscroll-behavior-y:contain;
    -webkit-overflow-scrolling:touch;
  }
  .sidebar-user{
    margin-top:auto;
    flex:0 0 auto;
    background:#f9fcfa;
    border-top:1px solid #e0eee5;
  }
  .sidebar-overlay.open{
    position:fixed;
    inset:0;
    height:100vh;
    height:100dvh;
    overscroll-behavior:contain;
  }
  body.mobile-sidebar-open{overflow:hidden;overscroll-behavior:none}
}
@media (prefers-reduced-motion:reduce){
  .sidebar{transition:none}
}


/* Iconografía vectorial unificada: trazos finos, sin emojis ni símbolos
   cuyo aspecto varíe entre iOS, Android y Windows. */
.sidebar .nav-icon{
  width:22px;
  height:22px;
  flex:0 0 22px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:#7d968a;
  font-size:0;
  line-height:0;
}
.sidebar .nav-svg{
  display:block;
  width:21px;
  height:21px;
  flex:none;
  stroke:currentColor;
  fill:none;
  transition:color .18s ease,transform .18s ease;
}
.sidebar .nav-link{
  gap:12px;
  min-height:45px;
  line-height:1.4;
}
.sidebar .nav-link:hover .nav-icon{color:#539480}
.sidebar .nav-link.active .nav-icon{color:#37896e}
.sidebar .nav-link:hover .nav-svg{transform:translateX(1px)}
.sidebar .nav-link:focus-visible{outline:2px solid #87bdaa;outline-offset:2px}

/* Cerrar sesión: botón de salida personalizado, pequeño y discreto.
   Mantiene la acción real de logout, en la misma tarjeta de perfil. */
.sidebar-user-details{
  position:relative;
  padding-right:43px;
  min-height:39px;
  display:flex;
  flex-direction:column;
  justify-content:center;
}
.sidebar-user .sidebar-logout{
  position:absolute;
  right:0;
  top:50%;
  transform:translateY(-50%);
  margin:0;
  padding:0;
  display:grid;
  place-items:center;
  width:37px;
  height:37px;
  min-width:37px;
  border-radius:12px;
  border:1px solid #d6e9dd;
  background:linear-gradient(145deg,#f1faf5,#e4f3eb);
  color:#5b9c83;
  box-shadow:0 2px 7px rgba(71,126,102,.04);
  cursor:pointer;
  font-size:0;
  line-height:0;
  transition:background .17s ease,color .17s ease,border-color .17s ease,box-shadow .17s ease;
}
.sidebar-user .sidebar-logout:hover{
  transform:translateY(-50%);
  color:#33795e;
  border-color:#acd8c4;
  background:#d9f0e3;
  box-shadow:0 3px 10px rgba(71,126,102,.09);
  text-decoration:none;
}
.sidebar-user .sidebar-logout:focus-visible{
  transform:translateY(-50%);
  outline:2px solid #6cae92;
  outline-offset:3px;
  border-radius:12px;
}
.sidebar-user .sidebar-logout .logout-svg{
  display:block;
  width:19px;
  height:19px;
  fill:none;
  stroke:currentColor;
}
@media (max-width:900px){
  .sidebar-user{gap:9px;padding:13px 11px}
  .sidebar-user-details{padding-right:42px}
}
@media (prefers-reduced-motion:reduce){
  .sidebar .nav-svg,.sidebar-user .sidebar-logout{transition:none}
  .sidebar .nav-link:hover .nav-svg{transform:none}
}

/* Configuración · cuenta y seguridad. Email visible sin capacidad de edición. */
.account-settings-panel{margin-top:18px;background:linear-gradient(135deg,#fff 0%,#f6fbf8 70%,#fbf6fc 100%);border:1px solid #e2ece6}
.account-head{align-items:center;gap:14px;margin-bottom:17px}
.account-head .panel-title{margin-top:13px}
.account-description{margin:9px 0 0;font-size:12px;line-height:1.6;color:#849b8d}
.account-lock{width:45px;height:45px;min-width:45px;border-radius:15px;background:#eaf6ed;color:#679c86;display:grid;place-items:center}
.account-lock svg{width:21px;height:21px}
.account-settings-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:25px;align-items:start}
.account-readonly{padding:20px 18px;border-radius:14px;background:#f2f9f5;border:1px solid #e2eee5}
.account-readonly>label{display:block;font-size:12px;font-weight:750;color:#456e60;margin-bottom:12px}
.account-email-value{display:flex;align-items:center;flex-wrap:wrap;gap:9px;min-height:47px;padding:11px 13px;background:white;border:1px solid #dae8df;border-radius:11px;color:#426a5d;font-size:13px;font-weight:750;overflow-wrap:anywhere;word-break:break-word}
.account-readonly-badge{background:#edf3f0;color:#7a9a89;font-size:10px;padding:6px 9px;border-radius:99px;white-space:nowrap;font-weight:750}
.account-readonly p{font-size:11px;color:#889f91;line-height:1.6;margin:12px 0 0}
.account-password-form{min-width:0}
.account-password-form h3{font-family:Georgia,serif;font-size:23px;font-weight:400;color:#547d6e;margin:0 0 15px}
.account-password-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.account-password-fields .field:first-child{grid-column:1/-1}
.account-password-fields .field{min-width:0}
.account-password-control{position:relative;min-width:0}
.account-password-control input{width:100%;min-width:0;min-height:46px;padding-right:83px;border:1px solid #dceae2;border-radius:11px;background:#fff}
.account-password-control>button{position:absolute;right:9px;top:50%;transform:translateY(-50%);background:#edf6f1;border:0;border-radius:8px;padding:8px 10px;color:#55917b;font-size:11px;font-weight:800;cursor:pointer}
.account-password-control>button:hover{background:#dff0e6;color:#357b64}
.account-password-control>button:focus-visible{outline:2px solid #76b99d;outline-offset:2px}
.account-password-footer{display:flex;align-items:center;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-top:18px}
.account-password-footer small{font-size:11px;line-height:1.6;color:#88a092;max-width:340px}
.account-password-footer .btn{min-height:44px;white-space:nowrap}
.account-password-footer .btn:disabled{opacity:.6;cursor:wait}
@media(max-width:1050px){.account-settings-grid{grid-template-columns:1fr}.account-readonly{padding:15px 16px}}
@media(max-width:570px){
 .account-settings-panel{padding:17px}
 .account-head{align-items:flex-start}
 .account-description{font-size:11px}
 .account-lock{width:38px;height:38px;min-width:38px}
 .account-password-fields{grid-template-columns:1fr}
 .account-password-fields .field:first-child{grid-column:auto}
 .account-password-footer{align-items:stretch}
 .account-password-footer .btn{width:100%}
}

/* Mi cuenta: acciones compactas, ordenadas en lugar del formulario permanente */
.account-management-layout{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:20px;align-items:stretch}
.account-email-panel{padding:19px 20px;border-radius:16px;background:linear-gradient(125deg,#eff8f3,#f7faf8);border:1px solid #e0eee6;min-width:0}
.account-email-panel>label{display:block;margin:0 0 10px;font-size:12px;font-weight:800;color:#476f60}
.account-email-panel .account-email-value{display:block;min-height:47px;line-height:1.65;padding:12px 14px;font-size:13px}
.account-email-panel p{font-size:11px;color:#8fa499;margin:12px 0 0;line-height:1.5}
.account-actions-panel{border:1px solid #e4eee8;border-radius:16px;padding:19px 21px;background:rgba(255,255,255,.7);display:flex;flex-direction:column;justify-content:space-between;gap:18px}
.account-actions-heading h3{font:400 22px Georgia,serif;color:#547e6f;margin:0 0 6px}
.account-actions-heading p{font-size:11px;color:#899f91;margin:0;line-height:1.6}
.account-action-buttons{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.account-action-buttons .btn{min-height:43px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:12px;white-space:nowrap}
.account-action-buttons .btn span{font-size:17px;line-height:1}
.account-action-buttons .account-create-user{color:#4f947c;border-color:#cfe6d9;background:#f5fbf7}
.account-action-buttons .account-create-user:hover{background:#e6f4eb}

/* Diálogos de credenciales: inputs amplios, etiquetas legibles y foco visible */
.modal-card:has(.security-modal-form){max-width:525px;width:100%;max-height:calc(100dvh - 30px);border:1px solid #e4eee9;padding:27px 29px;background:linear-gradient(155deg,#fff 65%,#f9fcfa);overscroll-behavior:contain}
.modal-card:has(.security-modal-form) .modal-header{margin-bottom:17px}
.security-modal-intro{margin:0 0 19px}
.security-modal-intro>p{font-size:12px;line-height:1.8;color:#7e9788;margin:0}
.security-modal-email{border-radius:12px;padding:13px 16px;background:#edf7f1;border:1px solid #dfede4;display:flex;flex-direction:column;gap:4px;overflow-wrap:anywhere}
.security-modal-email span{font-size:10px;text-transform:uppercase;letter-spacing:.7px;font-weight:800;color:#85a494}
.security-modal-email strong{font-size:13px;color:#426f5c}
.security-modal-email+p{font-size:11px;color:#899e92;line-height:1.6;margin:12px 0 0}
.security-modal-form{display:grid;gap:15px;min-width:0}
.security-modal-form>.field{min-width:0}
.security-modal-form>.field>label{display:block;font-size:12px;font-weight:800;color:#4b7060;margin-bottom:7px}
.security-modal-form input[type=email]{width:100%;min-height:47px;border-radius:11px;padding:10px 13px;background:#fff;border:1px solid #dceae2;font-size:13px}
.security-modal-form .account-password-control input{min-height:47px;font-size:13px}
.security-modal-form>.field input:focus-visible{outline:2px solid #8bc1a7;outline-offset:2px;border-color:#a8d5bf}
.security-modal-form>small{font-size:11px;line-height:1.7;color:#8ba092}
.security-modal-form .modal-actions{display:flex;margin-top:5px;gap:10px;align-items:center}
.security-modal-form .modal-actions .btn{min-height:43px;font-size:12px}
@media(max-width:1100px){.account-management-layout{grid-template-columns:1fr}}
@media(max-width:600px){
 .account-settings-panel{padding:17px}
 .account-actions-panel,.account-email-panel{padding:15px}
 .account-actions-heading h3{font-size:20px}
 .account-action-buttons{align-items:stretch}
 .account-action-buttons .btn{flex:1 1 175px;white-space:normal}
 .modal-root{padding:10px}
 .modal-card:has(.security-modal-form){padding:21px 18px;max-height:calc(100dvh - 20px);border-radius:18px}
 .security-modal-form{gap:13px}
 .security-modal-form .modal-actions{flex-wrap:nowrap}
 .security-modal-form .modal-actions .btn{flex:1;min-width:0;padding:11px 7px}
}

.account-action-buttons .btn .account-button-icon{display:block;width:17px;height:17px;flex:none;stroke:currentColor}

/* Pacientes · botón Detalles y panel lateral con citas próximas */
.patient-detail-trigger{padding:9px 13px;min-width:98px;white-space:nowrap}
.patient-drawer-root{display:flex!important;justify-content:flex-end!important;align-items:stretch!important;padding:0!important;background:rgba(37,60,49,.42)!important;backdrop-filter:blur(5px)}
.patient-drawer{height:100dvh;width:min(100%,740px);background:linear-gradient(150deg,#fff,#f8fcfa 60%,#fcf8fd);box-shadow:-18px 0 65px #34594e2e;display:flex;flex-direction:column;overflow-y:auto;animation:patient-drawer-enter .23s ease-out}
@keyframes patient-drawer-enter{from{opacity:.7;transform:translateX(25px)}to{opacity:1;transform:translateX(0)}}
.patient-drawer-header{display:flex;align-items:center;gap:19px;padding:clamp(24px,4vw,45px);padding-right:65px;position:relative;border-bottom:1px solid #e5ede8;background:linear-gradient(130deg,#eaf8f0,#fbf4f8)}
.patient-drawer-close{position:absolute;top:19px;right:21px;background:#fff;border:1px solid #e3eee9;color:#5b8a77;width:39px;height:39px;border-radius:12px;font-size:24px}
.patient-drawer-avatar{width:103px;height:103px;flex:none;border-radius:50%;background:linear-gradient(140deg,#d6efe4,#f0e4fa);border:5px solid white;box-shadow:0 0 0 1px #cce7da;display:grid;place-items:center;color:#4f8e78;font:400 28px Georgia,serif;overflow:hidden}
.patient-drawer-avatar img{width:100%;height:100%;object-fit:cover}
.patient-drawer-identity{min-width:0}.patient-drawer-identity h2{font:400 clamp(22px,3vw,30px) Georgia,serif;color:#477e68;margin:10px 0;overflow-wrap:anywhere}.patient-drawer-meta{display:flex;gap:11px;align-items:center;flex-wrap:wrap;color:#577968;font-size:12px;font-weight:750}.patient-drawer-meta span+span{border-left:1px solid #bcd7cc;padding-left:11px}.patient-drawer-hint{display:block;font-size:11px;margin-top:10px;color:#8fa69b;overflow-wrap:anywhere}
.patient-drawer-main{padding:28px clamp(21px,4vw,45px);flex:1}
.patient-drawer-section-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:18px}.patient-drawer-section-header h3{font:400 25px Georgia,serif;color:#53826f;margin:7px 0 0}
.patient-upcoming-list{display:grid;gap:12px}.patient-upcoming-card{display:flex;gap:17px;align-items:center;background:white;border:1px solid #e0eee5;border-radius:15px;padding:17px}.patient-upcoming-date{background:#eaf8f0;border-radius:11px;min-width:116px;max-width:135px;padding:12px;color:#6b977f;font-size:11px;display:grid;gap:5px;text-transform:capitalize}.patient-upcoming-date strong{color:#427d69;font-size:17px}.patient-upcoming-info{min-width:0;display:grid;align-content:center;justify-items:start;gap:6px}.patient-upcoming-info strong{font-size:13px;color:#547762;overflow-wrap:anywhere}.patient-upcoming-info small{font-size:11px;color:#9aaea1}.patient-upcoming-info .badge{font-size:10px}
.patient-upcoming-empty{padding:39px 18px;text-align:center;color:#90a89d;border-radius:14px;border:1px dashed #c8e1d2;background:#f6fbf8;font-size:12px;line-height:1.8}
.patient-drawer-footer{position:sticky;bottom:0;padding:19px clamp(21px,4vw,45px);background:rgba(255,255,255,.98);border-top:1px solid #e1eee6;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.patient-drawer-footer .muted{font-size:11px;flex:1}.patient-drawer-footer .btn{min-height:45px}
@media(max-width:660px){.patient-drawer{width:100%}.patient-drawer-header{padding:55px 18px 24px;gap:12px}.patient-drawer-avatar{height:74px;width:74px;font-size:22px;border-width:3px}.patient-drawer-identity h2{font-size:23px}.patient-drawer-main{padding:20px 14px}.patient-upcoming-card{padding:12px;gap:11px}.patient-upcoming-date{min-width:93px;font-size:10px}.patient-drawer-footer{padding:14px}.patient-drawer-footer .btn{flex:1}.patient-drawer-close{top:9px;right:13px}}
@media(prefers-reduced-motion:reduce){.patient-drawer{animation:none}}

/* Registro de paciente: dos columnas estables y ordenadas (3 datos personales / 2 de contacto). */
#patient-form .patient-demographics-grid{
 grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
 align-items:start;column-gap:clamp(16px,2.4vw,26px);row-gap:15px;min-width:0;
}
#patient-form .patient-identity-fields,
#patient-form .patient-contact-fields{
 display:flex;flex-direction:column;align-items:stretch;gap:15px;min-width:0;
}
#patient-form .patient-column-title{
 display:flex;align-items:center;gap:9px;min-height:23px;
 color:#6f9b87;font-size:10px;font-weight:850;letter-spacing:1.15px;text-transform:uppercase;
}
#patient-form .patient-column-title::before{
 content:"";display:block;width:7px;height:7px;flex:none;border-radius:50%;
 background:#a7d5c3;
}
#patient-form .patient-contact-fields .patient-column-title::before{background:#e5bfd7}
#patient-form .patient-demographics-grid .field{min-width:0}
#patient-form .patient-demographics-grid .field label{display:block;margin-bottom:8px;line-height:1.4}
#patient-form .patient-demographics-grid input{
 display:block;width:100%;min-width:0;height:44px;min-height:44px;padding-block:8px;box-sizing:border-box;
}
@media(max-width:620px){
 #patient-form .patient-demographics-grid{grid-template-columns:minmax(0,1fr);gap:21px}
 #patient-form .patient-identity-fields,#patient-form .patient-contact-fields{gap:12px}
 #patient-form .patient-demographics-grid input{height:44px;min-height:44px}
 #patient-form .patient-demographics-grid .field label{margin-bottom:6px}
 #patient-form .form-grid{gap:15px}
}

/* PR: Pruebas seguras y vistas móviles sin deslizamiento horizontal para Agenda/Pacientes. */
.nav-link[hidden]{display:none!important}
.tests-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;margin-bottom:18px}
.test-card{min-width:0;display:flex;flex-direction:column;align-items:stretch;gap:14px}
.test-card .panel-head{margin:0}.test-card p{margin:0;font-size:12px;line-height:1.65;color:#7b9586}
.test-card label{font-size:11px;font-weight:800;color:#608b76}
.test-card .filter-select{max-width:100%;width:100%;min-height:43px;min-width:0}
.test-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:auto}
.test-actions .btn{min-height:42px;font-size:11px}
.test-patient-contact{display:grid;gap:5px;padding:14px 15px;border:1px solid #dfeee5;border-radius:13px;background:linear-gradient(115deg,#f0f9f4,#fcf7fb)}
.test-patient-contact span{font-size:10px;font-weight:800;color:#88a493}.test-patient-contact strong{font-size:15px;color:#507b67}
.test-patient-contact small{font-size:10px;color:#829988}
.test-status-list{display:grid;gap:2px}.test-status-list p{margin:3px 0}.test-status-list strong{font-weight:800}
.test-ok{color:#418b70}.test-warning{color:#be8557}.tests-layout .daily-agenda-history{padding:12px 0}
.mobile-agenda-list,.mobile-agenda-week,.patient-mobile-list{display:none}
@media(max-width:960px){.tests-layout{grid-template-columns:minmax(0,1fr)}}
@media(max-width:760px){
 .agenda-panel{padding:0!important;overflow:hidden;max-width:100%}
 .calendar-scroll.calendar-day,.calendar-scroll.calendar-week{overflow-x:hidden!important;width:100%;max-width:100%}
 .calendar-day .agenda-desktop-grid,.calendar-week .agenda-desktop-grid{display:none!important}
 .mobile-agenda-list,.mobile-agenda-week{display:grid;gap:0;min-width:0;width:100%;max-width:100%}
 .mobile-agenda-list{padding:13px}
 .mobile-agenda-list-head,.mobile-week-day header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:9px 4px 13px;color:#537e6a}
 .mobile-agenda-list-head strong,.mobile-week-day header strong{font-size:13px;text-transform:capitalize}
 .mobile-agenda-list-head span,.mobile-week-day header span{font-size:10px;background:#ecf6ee;border-radius:20px;padding:6px 9px}
 .mobile-agenda-event{border:1px solid #dceee3;background:#eff8f3;color:#456e5b;border-radius:12px;width:100%;padding:13px 12px;margin-bottom:9px;display:grid;grid-template-columns:65px minmax(0,1fr);gap:5px 10px;min-width:0;text-align:left;align-items:center;box-sizing:border-box}
 .mobile-agenda-event.status-pending{border-color:#f2dfc3;background:#fff7ed}.mobile-agenda-event.status-completed{background:#f1f4fd;border-color:#e1e6f9}
 .mobile-agenda-event.status-in_progress{background:#eaf6ff;border-color:#cfe6f8}
 .mobile-agenda-time{font-size:10px;font-weight:850;white-space:normal;line-height:1.5;color:#638872}
 .mobile-agenda-main{min-width:0;display:grid;gap:4px}.mobile-agenda-main strong{font-size:12px;color:#3b6d57;overflow-wrap:anywhere}
 .mobile-agenda-main small{font-size:10px;color:#769485;line-height:1.45;overflow-wrap:anywhere}
 .mobile-agenda-badge{grid-column:2;font-size:9px;color:#8a9f91;justify-self:start}
 .mobile-agenda-event:focus-visible,.patient-mobile-row:focus-visible{outline:2px solid #78b79c;outline-offset:2px}
 .mobile-agenda-empty{margin:0;padding:18px 12px;text-align:center;font-size:11px;color:#9bafa1}
 .mobile-week-day{padding:12px 12px 3px;border-bottom:1px solid #e6f0e9;min-width:0}
 .mobile-week-day:nth-child(even){background:#f9fcfa}
 .mobile-week-day header{padding:0 2px 11px}
 .patient-desktop-table{display:none!important}
 .patient-mobile-list{display:grid;gap:0;width:100%;min-width:0}
 .patient-mobile-row{display:flex;width:100%;gap:12px;padding:12px 3px;min-width:0;align-items:center;text-align:left;border:0;border-bottom:1px solid #eaf1eb;background:transparent;color:#466b59;cursor:pointer}
 .patient-mobile-row .patient-avatar{flex:0 0 40px;height:40px;width:40px;overflow:hidden}
 .patient-mobile-info{min-width:0;flex:1;display:grid;gap:4px}
 .patient-mobile-info strong{font-size:12px;overflow-wrap:anywhere}.patient-mobile-info small{font-size:10px;color:#8ca497;overflow-wrap:anywhere}
 .patient-mobile-chevron{font-size:22px;color:#8db9a2;flex:none}
 .panel:has(.patient-mobile-list) .panel-head{flex-wrap:wrap;gap:10px}
 .panel:has(.patient-mobile-list) .panel-head .panel-title{flex:1 1 100%;margin:0}
 .panel:has(.patient-mobile-list) .search-input{max-width:100%;width:100%;flex:1 1 100%;min-width:0}
 .panel:has(.patient-mobile-list){min-width:0;overflow:hidden}
 .table-scroll.patient-desktop-table{overflow:hidden}
}
@media(max-width:460px){
 .test-actions{display:grid;grid-template-columns:1fr}.test-actions .btn{width:100%}
 .tests-layout{gap:11px}.test-card{gap:11px}
 .agenda-toolbar{gap:10px}.toolbar-group{min-width:0}
 .agenda-toolbar .date-control{max-width:160px;min-width:0;width:140px}
 .mobile-agenda-event{grid-template-columns:56px minmax(0,1fr);padding:11px 10px;gap:6px}
}

/* Mes móvil: las siete fechas caben en el ancho visible, sin reflujo horizontal. */
.mobile-month-wrap{display:none}
@media(max-width:760px){
 .calendar-scroll.calendar-month{overflow-x:hidden!important;width:100%;max-width:100%;min-width:0}
 .calendar-month .agenda-desktop-grid{display:none!important}
 .mobile-month-wrap{display:block;width:100%;min-width:0;max-width:100%;padding:12px;box-sizing:border-box}
 .mobile-month-weekdays,.mobile-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));width:100%;min-width:0}
 .mobile-month-weekdays{padding:9px 0 12px;gap:0}
 .mobile-month-weekdays span{text-align:center;font-size:10px;font-weight:850;color:#699580}
 .mobile-month-grid{border:1px solid #e5eee7;border-radius:13px;overflow:hidden;background:#fff}
 .mobile-month-cell{position:relative;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:8px;min-width:0;min-height:76px;padding:10px 2px 7px;background:#fff;color:#4f826c;border:0;border-right:1px solid #edf2ee;border-bottom:1px solid #edf2ee;cursor:pointer}
 .mobile-month-cell:nth-child(7n){border-right:0}
 .mobile-month-cell.outside{background:#fafcfb;color:#b5c7ba}
 .mobile-month-cell.is-today{background:#ecf8f2}
 .mobile-month-cell.selected{box-shadow:inset 0 0 0 2px #7cb49d;z-index:1}
 .mobile-month-date{font-size:12px;line-height:1.4;font-weight:850;font-variant-numeric:tabular-nums}
 .mobile-month-count{max-width:100%;font-size:9px;line-height:1.35;padding:3px 2px;border-radius:8px;background:#e6f4ed;color:#558d74;text-align:center;overflow-wrap:anywhere}
 .mobile-month-cell.outside .mobile-month-count{opacity:.55}
 .mobile-month-no-events{height:6px}
 .mobile-month-hint{text-align:center;font-size:10px;line-height:1.5;color:#829d8e;margin:14px 5px 6px}
 .mobile-month-cell:focus-visible{outline:2px solid #70ac92;outline-offset:-3px;z-index:2}
}
@media(max-width:390px){
 .mobile-month-wrap{padding:9px}
 .mobile-month-cell{min-height:69px;gap:7px;padding:8px 1px}
 .mobile-month-count{font-size:8px}
}


/* Pruebas: historial claro y ordenado de cada proveedor, también en teléfono. */
.tests-layout .test-card{min-width:0;display:flex;flex-direction:column;gap:11px}
.tests-layout .test-card .test-actions{margin-top:auto}
.tests-layout .test-card select{max-width:100%;min-width:0}
.test-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px}
.test-actions .test-log-button{white-space:nowrap}
.test-logs-modal{max-width:780px;width:min(94vw,780px)}
.test-logs-view{display:grid;gap:17px}
.test-logs-config{border:1px solid #dbeee4;border-radius:18px;padding:15px;background:#f6faf8}
.test-logs-config>strong{display:block;margin-bottom:11px;color:#467861}
.test-env-tags{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.test-env-tag{font-size:11px;font-weight:700;line-height:1.3;padding:6px 9px;border-radius:30px;overflow-wrap:anywhere}
.test-env-tag.ok{background:#e1f3eb;color:#477c66}
.test-env-tag.missing{background:#fff0e5;color:#975d38;border:1px solid #f2d5bc}
.test-logs-config .muted{margin:8px 0;font-size:12px;line-height:1.65}
.test-log-rows{display:grid;gap:12px}
.test-log-item{border:1px solid #e3ece7;border-radius:18px;padding:15px;background:linear-gradient(125deg,#fff,#f8fcfa 65%,#fcf8fb);overflow-wrap:anywhere}
.test-log-item>p{margin:10px 0;font-size:12px;line-height:1.6;color:#526d62}
.test-log-top{display:flex;flex-wrap:wrap;align-items:center;gap:9px;color:#718d7f;font-size:12px}
.test-log-top time{font-variant-numeric:tabular-nums}
.test-log-top small{margin-left:auto}
.test-log-status{display:inline-flex;align-items:center;padding:5px 11px;border-radius:30px;font-size:11px;font-weight:800}
.test-log-status.accepted{background:#e1f4ea;color:#367a5b}
.test-log-status.partial{background:#fdf0db;color:#98703b}
.test-log-status.failed{background:#feeaec;color:#a65564}
.test-log-diagnostic{background:#fff8f2;border:1px solid #f3e2d1;border-radius:13px;padding:11px 13px;margin-top:9px;color:#7c684c}
.test-log-diagnostic strong{font-size:12px;letter-spacing:.02em}
.test-log-diagnostic p{font-size:12px;margin:7px 0;line-height:1.6}
.test-log-diagnostic small{display:inline-block;margin-right:12px;font-weight:650}
.test-env-missing{background:#fff3eb;padding:9px;border-radius:10px;font-size:12px}
.test-logs-footer{margin-top:20px;display:flex;justify-content:flex-end}
@media(max-width:650px){
 .tests-layout .test-card{padding:16px}
 .tests-layout .test-card .panel-head{flex-wrap:wrap;align-items:flex-start}
 .test-actions{display:grid;grid-template-columns:1fr 1fr;gap:7px}
 .test-actions .btn{min-width:0;width:100%;white-space:normal;padding:10px 8px;line-height:1.4}
 .test-logs-modal{width:calc(100vw - 20px);padding:17px 13px;max-height:90svh}
 .test-log-top small{margin-left:0}
 .test-log-item{padding:11px}
 .test-env-tags{gap:5px}
 .test-env-tag{font-size:10px}
}
@media(max-width:370px){.test-actions{grid-template-columns:1fr}}

/* Acciones de paciente consistentes entre escritorio y movil. */
.patient-drawer-footer .patient-archive-btn{color:#9b454c;border-color:#e8b8bf;background:#fff7f7}
.patient-drawer-footer .patient-archive-btn:hover{background:#fce7ea}
@media(max-width:660px){.patient-drawer-footer{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.patient-drawer-footer .btn{width:100%;font-size:11px;padding-inline:7px}.patient-drawer-footer .muted{grid-column:1/-1}}
