*{margin:0;padding:0;box-sizing:border-box}

/* ══ COMPORTAMIENTO TÁCTIL — evita zoom por doble-tap y flash gris al tocar ══ */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
*{-webkit-tap-highlight-color:transparent}
button,a,label,select,input,textarea,summary,
.btn,.btn-sm,.btn-ghost,.btn-login,.btn-logout,.menu-item,.menu-toggle,
.chip,.tab,.citas-view-tab,.nav-quick-item,.bn-item,.dia-item,.atendido-item,
.agenda-slot,.doc-card,.stat-card,.sa-kpi,.sa-quick-btn,.sa-agenda-item,
.sa-rec-item,.icon-opt,.theme-toggle,.modal-close-btn,.admin-item-card,
.patient-name-cell,.actions-cell button,[onclick]{touch-action:manipulation}

:root{
  --primary:#2563EB;--primary-dark:#1D4ED8;--primary-light:#EFF6FF;
  --accent:#06B6D4;--success:#10B981;--warning:#F59E0B;--danger:#EF4444;
  --sidebar-bg:#0F172A;--sidebar-text:#94A3B8;
  --bg:#F5F7FA;--card:#fff;--text:#0F172A;--text-light:#64748B;
  --border:#E8ECF2;--shadow:0 1px 3px rgba(0,0,0,.04),0 8px 20px rgba(0,0,0,.06);--radius:16px;
}
body.dark{
  --primary:#38BDF8;--primary-dark:#0EA5E9;--primary-light:rgba(56,189,248,.12);
  --accent:#22D3EE;--sidebar-bg:#0A0F1E;--sidebar-text:#94A3B8;
  --bg:#0F172A;--card:#1E293B;--text:#F1F5F9;--text-light:#94A3B8;
  --border:#334155;--shadow:0 4px 24px rgba(0,0,0,.35);
}
body.dark .topbar{background:var(--card);border-color:var(--border)}
body.dark .loading-overlay{background:rgba(15,23,42,.92)}
body.dark .modal{background:var(--card);border-color:var(--border)}
body.dark .form-group input,body.dark .form-group select,body.dark .form-group textarea{background:#0F172A;border-color:var(--border);color:var(--text)}
body.dark .tag-blue{background:rgba(37,99,235,.2);color:#93C5FD}
body.dark .tag-green{background:rgba(16,185,129,.15);color:#6EE7B7}
body.dark .tag-orange{background:rgba(245,158,11,.15);color:#FCD34D}
body.dark .tag-red{background:rgba(239,68,68,.15);color:#FCA5A5}
body.dark .tag-gray{background:rgba(148,163,184,.1);color:#94A3B8}
body.dark .tag-cyan{background:rgba(6,182,212,.15);color:#67E8F9}
body.dark tbody tr:hover td{background:rgba(255,255,255,.04)}
body.dark .cita-item,body.dark .atendido-item,body.dark .dia-item,body.dark .med-item,body.dark .timeline-content{background:#0F172A;border-color:var(--border)}
body.dark .rc-section,body.dark .rc-nota{background:#0F172A;border-color:var(--border)}
body.dark .export-box{border-color:var(--border)}
body.dark .chip{background:#1E293B;border-color:var(--border);color:var(--text-light)}
body.dark .vital-card{background:linear-gradient(135deg,#0F2A1A,#0A2518);border-color:#166534}

/* TOGGLE DÍA/NOCHE */
.theme-toggle{width:44px;height:24px;border-radius:12px;background:var(--border);border:none;cursor:pointer;position:relative;transition:background .3s;flex-shrink:0;padding:0}
.theme-toggle::after{content:'';position:absolute;width:18px;height:18px;border-radius:50%;background:#fff;top:3px;left:3px;transition:transform .3s,background .3s;box-shadow:0 1px 4px rgba(0,0,0,.2)}
body.dark .theme-toggle{background:linear-gradient(90deg,#00d4ff,#7c4dff)}
body.dark .theme-toggle::after{transform:translateX(20px)}
.theme-toggle-wrap{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--text-light)}

body{font-family:'Inter',system-ui,sans-serif;background:var(--bg);color:var(--text);transition:background .3s,color .3s}

/* LOADING */
.loading-overlay{position:fixed;inset:0;background:rgba(255,255,255,.88);z-index:9998;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);flex-direction:column;gap:14px}
.loading-overlay.show{display:flex}
/* Spinner de operaciones: arco degradado con los colores de la marca */
.spinner{width:42px;height:42px;border-radius:50%;background:conic-gradient(from 0deg,transparent 12%,var(--primary) 65%,#06B6D4 100%);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3.5px));mask:radial-gradient(farthest-side,transparent calc(100% - 4px),#000 calc(100% - 3.5px));animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.loading-text{color:var(--text-light);font-size:13px;font-weight:500}

/* Modo boot: pantalla completa de marca (arranque y login) */
.loading-overlay .load-brand{display:none}
.loading-overlay.boot,body.dark .loading-overlay.boot{background:#080c18;backdrop-filter:none}
.loading-overlay.boot .spinner,.loading-overlay.boot .load-text-op{display:none}
.loading-overlay.boot .load-brand{display:flex;flex-direction:column;align-items:center;animation:bootIn .5s ease;position:relative;z-index:1}
.loading-overlay.boot::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 45% at 50% 42%,rgba(124,77,255,.14),transparent 70%),radial-gradient(ellipse 45% 35% at 50% 55%,rgba(0,212,255,.08),transparent 70%)}
@keyframes bootIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
.load-mark{width:84px;height:84px;margin-bottom:20px}
.load-mark .lm-ring{animation-duration:1.6s}
.load-mark .lm-inner{width:52px;height:52px}
.load-mark .lm-cross{width:20px;height:20px}
.load-letters{font-size:34px;font-weight:700;letter-spacing:.14em;background:linear-gradient(90deg,#00d4ff,#7c4dff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-family:'Outfit',sans-serif;line-height:1}
.load-sub{font-size:9.5px;font-weight:300;letter-spacing:.24em;color:rgba(255,255,255,.35);text-transform:uppercase;margin-top:8px;font-family:'Outfit',sans-serif}
.load-bar{width:170px;height:3px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden;margin-top:30px}
.load-bar-fill{height:100%;width:45%;border-radius:99px;background:linear-gradient(90deg,#00d4ff,#7c4dff);animation:loadSlide 1.15s ease-in-out infinite}
@keyframes loadSlide{0%{transform:translateX(-110%)}100%{transform:translateX(260%)}}
.load-text-boot{color:rgba(255,255,255,.42);margin-top:14px;font-size:12px;letter-spacing:.04em}
.load-dots::after{content:'';animation:loadDots 1.4s steps(4,end) infinite}
@keyframes loadDots{0%{content:''}25%{content:'.'}50%{content:'..'}75%{content:'...'}}

/* LOGIN */
#login-screen{position:fixed;inset:0;z-index:9999;background:#080c18;display:none;align-items:center;justify-content:center;overflow:hidden}
#login-screen::before{content:'';position:fixed;inset:0;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.03'/%3E%3C/svg%3E");pointer-events:none;z-index:0}
.login-card{position:relative;z-index:1;width:340px;display:flex;flex-direction:column;align-items:center;gap:2rem}
.lm-mark{width:60px;height:60px;position:relative;display:flex;align-items:center;justify-content:center}
.lm-ring{position:absolute;inset:0;border-radius:50%;border:1.5px solid transparent;background:linear-gradient(135deg,#00d4ff,#7c4dff) border-box;-webkit-mask:linear-gradient(#fff 0 0) padding-box,linear-gradient(#fff 0 0);-webkit-mask-composite:destination-out;mask-composite:exclude;animation:lmSpin 8s linear infinite}
@keyframes lmSpin{to{transform:rotate(360deg)}}
.lm-inner{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#00b8d9,#6c3fd4);display:flex;align-items:center;justify-content:center}
.lm-cross{position:relative;width:14px;height:14px}
.lm-cross::before,.lm-cross::after{content:'';position:absolute;background:rgba(255,255,255,.92);border-radius:1px}
.lm-cross::before{width:2px;height:100%;left:50%;transform:translateX(-50%)}
.lm-cross::after{height:2px;width:100%;top:50%;transform:translateY(-50%)}
.lm-wordmark{text-align:center;line-height:1;margin-top:.25rem}
.lm-letters{font-size:30px;font-weight:700;letter-spacing:.14em;background:linear-gradient(90deg,#00d4ff,#7c4dff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-family:'Outfit',sans-serif}
.lm-sub{font-size:9px;font-weight:300;letter-spacing:.22em;color:rgba(255,255,255,.3);text-transform:uppercase;margin-top:5px;font-family:'Outfit',sans-serif}
.lm-divider{width:100%;height:.5px;background:rgba(255,255,255,.07)}
.lm-form{width:100%;display:flex;flex-direction:column;gap:12px}
.lm-field{position:relative}
.lm-field svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);width:16px;height:16px;stroke:rgba(255,255,255,.25);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.lm-field input{width:100%;background:rgba(255,255,255,.04);border:.5px solid rgba(255,255,255,.1);border-radius:8px;padding:12px 14px 12px 38px;font-size:14px;font-family:'Outfit',sans-serif;color:rgba(255,255,255,.85);outline:none;transition:border-color .2s,background .2s}
.lm-field input::placeholder{color:rgba(255,255,255,.22)}
.lm-field input:focus{border-color:rgba(0,212,255,.4);background:rgba(0,212,255,.04)}
.btn-login{width:100%;padding:13px;border:none;border-radius:8px;background:linear-gradient(90deg,#00b8d9,#6c3fd4);color:#fff;font-size:14px;font-weight:600;font-family:'Outfit',sans-serif;letter-spacing:.06em;cursor:pointer;margin-top:4px;transition:opacity .2s,transform .1s}
.btn-login:hover{opacity:.85}
.btn-login:active{transform:scale(.98)}
.lm-footer{font-size:12px;color:rgba(255,255,255,.2);letter-spacing:.03em;text-align:center;font-family:'Outfit',sans-serif}

/* APP */
#app{display:none;min-height:100vh}
#app.visible{display:flex}

/* SIDEBAR */
.sidebar{width:260px;height:100vh;height:100dvh;background:var(--sidebar-bg);display:flex;flex-direction:column;position:fixed;top:0;left:0;z-index:100;transition:transform .3s;overflow:hidden}
.sidebar-logo{padding:24px 20px 20px;border-bottom:1px solid rgba(255,255,255,.07);display:flex;align-items:center;gap:12px}
.logo-icon-s{width:40px;height:40px;background:linear-gradient(135deg,#2563EB,#06B6D4);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:20px}
.sidebar-logo h2{color:#fff;font-size:17px;font-weight:700}
.sidebar-logo span{color:var(--sidebar-text);font-size:11px}
.sidebar-menu{flex:1;min-height:0;padding:12px 0;overflow-y:scroll;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.menu-section{padding:12px 20px 4px;font-size:10px;text-transform:uppercase;letter-spacing:1px;color:rgba(255,255,255,.25)}
.menu-item{display:flex;align-items:center;gap:12px;padding:11px 20px;cursor:pointer;color:var(--sidebar-text);transition:all .2s;border-left:3px solid transparent;font-size:14px;user-select:none}
.menu-item:hover{background:rgba(255,255,255,.05);color:#fff}
.menu-item.active{background:rgba(37,99,235,.15);color:#fff;border-left-color:var(--primary)}
.menu-item .icon{font-size:17px;width:22px;text-align:center;flex-shrink:0}
.menu-item .badge{margin-left:auto;background:var(--primary);color:#fff;font-size:10px;padding:2px 7px;border-radius:10px;font-weight:700}
.sidebar-footer{padding:14px 20px 18px;border-top:1px solid rgba(255,255,255,.07);flex-shrink:0}
.sf-user{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sf-avatar{width:38px;height:38px;background:linear-gradient(135deg,#2563EB,#06B6D4);border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:14px;flex-shrink:0}
.sf-info{flex:1;min-width:0}
.sf-info p{color:#fff;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sf-info span{color:var(--sidebar-text);font-size:11px}
.btn-logout{width:100%;padding:10px 14px;background:rgba(239,68,68,.12);border:1.5px solid rgba(239,68,68,.2);color:#FCA5A5;border-radius:10px;cursor:pointer;font-size:13px;font-weight:600;letter-spacing:.02em;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:8px}
.btn-logout:hover,.btn-logout:active{background:rgba(239,68,68,.28);border-color:rgba(239,68,68,.45);color:#fff}

/* MAIN */
.main{margin-left:260px;flex:1;display:flex;flex-direction:column;min-height:100vh}
.topbar{background:var(--card);border-bottom:1px solid var(--border);padding:14px 28px;display:flex;align-items:center;gap:14px;position:sticky;top:0;z-index:90}
.topbar h1{font-size:18px;font-weight:700;flex:1}
.topbar-search{display:flex;align-items:center;background:var(--bg);border:1.5px solid var(--border);border-radius:10px;padding:8px 14px;gap:8px;min-width:240px;transition:border .2s}
.topbar-search:focus-within{border-color:var(--primary)}
.topbar-search input{border:none;background:transparent;outline:none;font-size:14px;width:100%;color:var(--text);font-family:inherit}
.topbar-date{font-size:12px;color:var(--text-light);white-space:nowrap;background:var(--bg);padding:8px 14px;border-radius:10px;border:1px solid var(--border)}
.db-status{display:flex;align-items:center;gap:6px;font-size:11px;padding:6px 12px;border-radius:20px;border:1px solid var(--border);background:var(--bg);white-space:nowrap}
.db-dot{width:7px;height:7px;border-radius:50%;background:#CBD5E1}
.db-dot.connected{background:var(--success);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border:none;border-radius:10px;cursor:pointer;font-size:13px;font-weight:600;transition:all .2s;text-decoration:none;font-family:inherit}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;box-shadow:0 1px 3px rgba(37,99,235,.2),0 4px 12px rgba(37,99,235,.2)}
.btn-primary:hover{box-shadow:0 2px 6px rgba(37,99,235,.25),0 8px 24px rgba(37,99,235,.35);transform:translateY(-1px)}
.btn-secondary{background:var(--bg);color:var(--text);border:1.5px solid var(--border)}
.btn-secondary:hover{border-color:var(--primary);color:var(--primary)}
.btn-danger{background:linear-gradient(135deg,#EF4444,#DC2626);color:#fff}
.btn-danger:hover{box-shadow:0 4px 12px rgba(239,68,68,.35);transform:translateY(-1px)}
.btn-sm{padding:6px 12px;font-size:12px;border-radius:8px}
.btn-ghost{background:transparent;border:1.5px solid var(--border);color:var(--text-light);padding:7px 10px;border-radius:8px;cursor:pointer;transition:all .2s;font-size:14px}
.btn-ghost:hover{background:var(--bg);color:var(--text)}

/* CONTENT */
.content{padding:28px 32px;flex:1}
.view{display:none;animation:fadeUp .3s ease}
.view.active{display:block}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

/* STATS */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-bottom:24px}
.stat-card{background:var(--card);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);display:flex;align-items:center;gap:16px;border:1px solid var(--border);transition:all .25s;position:relative;overflow:hidden}
.stat-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--primary),var(--accent))}
.stat-card:hover{transform:translateY(-2px);box-shadow:0 4px 6px rgba(0,0,0,.04),0 16px 36px rgba(0,0,0,.09)}
.stat-icon{width:50px;height:50px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}
.si-blue{background:#EFF6FF}
.si-green{background:#F0FDF4}
.si-orange{background:#FFFBEB}
.si-cyan{background:#ECFEFF}
.si-red{background:linear-gradient(135deg,#FEF2F2,#FEE2E2)}
.si-purple{background:#F5F3FF}
body.dark .si-blue{background:rgba(37,99,235,.18)}
body.dark .si-green{background:rgba(16,185,129,.18)}
body.dark .si-orange{background:rgba(245,158,11,.18)}
body.dark .si-cyan{background:rgba(6,182,212,.18)}
body.dark .si-red{background:rgba(239,68,68,.18)}
body.dark .si-purple{background:rgba(124,58,237,.18)}
.stat-info h3{font-size:28px;font-weight:800;color:var(--text);line-height:1;letter-spacing:-.5px}
.stat-info p{font-size:11.5px;color:var(--text-light);margin-top:5px;font-weight:500}

.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:900px){.grid-2{grid-template-columns:1fr}}
.card{background:var(--card);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);border:1px solid var(--border)}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}
.card-header h3{font-size:15px;font-weight:700;display:flex;align-items:center;gap:7px}

/* TABLE */
.table-wrap{overflow-x:auto;border-radius:10px}
table{width:100%;border-collapse:collapse}
thead th{background:transparent;padding:9px 14px 12px;text-align:left;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.7px;color:var(--text-light);white-space:nowrap;border-bottom:1.5px solid var(--border)}
thead th:first-child{border-radius:0}
thead th:last-child{border-radius:0}
tbody td{padding:13px 14px;border-bottom:1px solid var(--border);font-size:13px;vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr{transition:background .15s}
tbody tr:hover td{background:var(--bg)}

/* TAGS */
.tag{display:inline-block;padding:3px 10px;border-radius:20px;font-size:11px;font-weight:600}
.tag-blue{background:#EFF6FF;color:#1D4ED8}
.tag-green{background:#F0FDF4;color:#15803D}
.tag-orange{background:#FFFBEB;color:#B45309}
.tag-red{background:#FEF2F2;color:#B91C1C}
.tag-gray{background:#F1F5F9;color:#475569}
.tag-cyan{background:#ECFEFF;color:#0E7490}
.tag-emerald{background:#ECFDF5;color:#065F46}
body.dark .tag-emerald{background:rgba(16,185,129,.15);color:#6EE7B7}

/* FINANZAS */
.fact-items-header{display:flex;gap:8px;align-items:center;padding:6px 0;border-bottom:1.5px solid var(--border);margin-bottom:8px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-light)}
.fact-item-row{display:flex;gap:8px;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}
.fact-item-row input,.fact-item-row select{padding:7px 10px;border:1.5px solid var(--border);border-radius:8px;font-size:13px;background:var(--card);color:var(--text);outline:none;font-family:inherit}
.fact-item-row input:focus,.fact-item-row select:focus{border-color:var(--primary)}
.fact-item-sub{width:90px;text-align:right;font-weight:700;font-size:13px;flex-shrink:0;color:var(--text)}
.fact-totals-box{background:var(--bg);border-radius:12px;padding:16px 20px;border:1.5px solid var(--border);max-width:360px;margin-left:auto;margin-top:12px}
.fact-total-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;font-size:13px;color:var(--text-light);border-bottom:1px solid var(--border)}
.fact-total-row:last-child{border-bottom:none}
.fact-total-final{font-size:17px;font-weight:800;color:var(--text);margin-top:4px}
body.dark .fact-item-row input,body.dark .fact-item-row select{background:#0F172A;border-color:var(--border)}

/* AVATAR */
.patient-avatar{width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:12px;flex-shrink:0}
.patient-name-cell{display:flex;align-items:center;gap:10px}

/* CALENDAR */
.cal-wrap{user-select:none}
.cal-nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.cal-nav h4{font-size:15px;font-weight:800;letter-spacing:.01em}
.cal-nav-btns{display:flex;gap:4px}
.cal-nav-btns .btn-ghost{padding:5px 9px;border-radius:8px;font-size:15px;font-weight:700}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-dow{text-align:center;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;color:var(--text-light);padding:7px 0 5px;border-bottom:1px solid var(--border);margin-bottom:2px}
.cal-dow.weekend-dow{color:var(--accent)}
.cal-day{min-height:42px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .18s cubic-bezier(.34,1.56,.64,1);position:relative;color:var(--text);gap:3px;padding:4px 0}
.cal-day:hover:not(.empty):not(.today){background:var(--primary-light);color:var(--primary);transform:scale(1.1)}
.cal-day.other-month{color:var(--border);font-weight:400}
.cal-day.weekend:not(.today):not(.selected){color:var(--accent);font-weight:600}
.cal-day.has-event .cal-dots{display:flex;gap:2px;align-items:center}
.cal-dots{height:5px;display:flex;gap:2px;align-items:center}
.cal-dot-pip{width:4px;height:4px;border-radius:50%;background:var(--accent);flex-shrink:0}
.cal-day.today .cal-dot-pip{background:rgba(255,255,255,.8)}
.cal-day.today{background:linear-gradient(135deg,var(--primary),var(--accent));color:#fff;font-weight:800;box-shadow:0 6px 18px rgba(37,99,235,.4);transform:scale(1.08);z-index:1}
.cal-day.selected:not(.today){background:var(--primary-light);color:var(--primary);font-weight:800;box-shadow:0 0 0 2px var(--primary) inset;transform:scale(1.05)}
.cal-day.empty{cursor:default;pointer-events:none}
.cal-legend{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:11px;color:var(--text-light)}
.cal-legend-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);flex-shrink:0}

/* CITA ITEMS */
.cita-item{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--bg);border-radius:10px;margin-bottom:8px;border-left:3px solid var(--primary);transition:all .2s}
.cita-item:hover{background:var(--primary-light);transform:translateX(3px)}
.cita-item.completada{border-left-color:var(--success)}
.cita-item.cancelada{border-left-color:var(--danger);opacity:.6}
.cita-item.confirmada{border-left-color:var(--accent)}
.cita-time{font-size:13px;font-weight:700;color:var(--primary);min-width:48px}
.cita-item.completada .cita-time{color:var(--success)}
.cita-item.cancelada .cita-time{color:var(--danger)}
.cita-info{flex:1}
.cita-paciente{font-weight:600;font-size:13px}
.cita-motivo{font-size:11px;color:var(--text-light);margin-top:2px}

/* DETALLE */
.patient-detail-header{display:flex;align-items:center;gap:18px;margin-bottom:24px;padding:22px;background:linear-gradient(135deg,#0F172A,#1E3A5F);border-radius:var(--radius);color:#fff;box-shadow:0 8px 32px rgba(0,0,0,.2)}
.patient-detail-avatar{width:68px;height:68px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:700;flex-shrink:0;border:3px solid rgba(255,255,255,.2)}
.patient-detail-info h2{font-size:20px;font-weight:800}
.patient-detail-info .meta{display:flex;gap:14px;margin-top:6px;font-size:12px;opacity:.8;flex-wrap:wrap}

/* TABS */
.tabs{display:flex;gap:2px;background:var(--bg);padding:4px;border-radius:14px;margin-bottom:22px;border:1px solid var(--border)}
.tab{padding:8px 18px;border:none;background:transparent;border-radius:11px;cursor:pointer;font-size:13px;font-weight:500;color:var(--text-light);transition:all .2s;font-family:inherit}
.tab.active{background:var(--card);color:var(--primary);font-weight:700;box-shadow:0 1px 4px rgba(0,0,0,.06),0 2px 10px rgba(0,0,0,.07)}

/* TIMELINE */
.timeline{position:relative;padding-left:26px}
.timeline::before{content:'';position:absolute;left:7px;top:0;bottom:0;width:2px;background:linear-gradient(to bottom,var(--primary),var(--accent));border-radius:2px}
.timeline-item{position:relative;margin-bottom:18px}
.timeline-item::before{content:'';position:absolute;left:-23px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--primary);border:2px solid var(--card);box-shadow:0 0 0 2px var(--primary)}
.timeline-date{font-size:11px;color:var(--text-light);font-weight:600;margin-bottom:5px}
.timeline-content{background:var(--bg);border-radius:10px;padding:12px 14px;font-size:13px;border:1px solid var(--border)}

/* MED ITEM */
.med-item{display:flex;align-items:flex-start;gap:12px;padding:14px;background:var(--bg);border-radius:10px;margin-bottom:10px;border:1px solid var(--border);transition:border-color .2s}
.med-item:hover{border-color:var(--primary)}
.med-info h4{font-size:14px;font-weight:700}
.med-info p{font-size:12px;color:var(--text-light);margin-top:3px}
.med-dosis{font-size:12px;color:var(--primary);font-weight:600;margin-top:4px}

/* EMPTY */
.empty-state{text-align:center;padding:56px 20px;color:var(--text-light)}
.empty-state .empty-icon{font-size:48px;margin-bottom:14px;opacity:.28;display:block}
.empty-state p{font-size:14px;color:var(--text-light);font-weight:500}

/* SEARCH DROP */
.search-result-item{padding:10px 14px;border-radius:8px;cursor:pointer;display:flex;align-items:center;gap:10px;transition:background .15s}
.search-result-item:hover{background:var(--primary-light)}

/* EXPORT */
.export-box{border:2px dashed var(--border);border-radius:14px;padding:28px;text-align:center;transition:all .2s}
.export-box:hover{border-color:var(--primary);background:var(--primary-light)}
.export-box .export-icon{font-size:40px;margin-bottom:10px}
.export-box h3{font-size:16px;font-weight:700;margin-bottom:6px}
.export-box p{color:var(--text-light);font-size:13px;margin-bottom:16px}

/* MODAL */
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(15,23,42,.6);z-index:200;align-items:center;justify-content:center;backdrop-filter:blur(6px)}
.modal-overlay.open{display:flex}
.modal{background:var(--card);border-radius:20px;padding:32px;width:90%;max-width:580px;max-height:90vh;overflow-y:auto;box-shadow:0 8px 32px rgba(0,0,0,.1),0 32px 80px rgba(0,0,0,.18);animation:modalIn .25s cubic-bezier(.34,1.56,.64,1);border:1px solid var(--border)}
.modal-lg{max-width:760px}
@keyframes modalIn{from{opacity:0;transform:scale(.94) translateY(12px)}to{opacity:1;transform:none}}
.modal h2{font-size:18px;font-weight:800;margin-bottom:22px;display:flex;align-items:center;gap:8px}
.modal-footer{display:flex;gap:10px;justify-content:flex-end;margin-top:22px;padding-top:18px;border-top:1px solid var(--border)}

/* FORM */
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.form-grid.cols-1{grid-template-columns:1fr}
@media(max-width:500px){.form-grid{grid-template-columns:1fr}}
.form-group{display:flex;flex-direction:column;gap:6px}
.form-group.full{grid-column:1/-1}
.form-group label{font-size:11px;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:.6px}
.form-group input,.form-group select,.form-group textarea{padding:10px 14px;border:1.5px solid var(--border);border-radius:12px;font-size:14px;font-family:inherit;color:var(--text);background:var(--card);outline:none;transition:all .2s}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(37,99,235,.08)}
.form-group textarea{resize:vertical;min-height:90px}

/* TOAST */
.toast-container{position:fixed;bottom:22px;right:22px;z-index:9999;display:flex;flex-direction:column;gap:8px}
.toast{background:#0F172A;color:#fff;padding:11px 14px 18px;border-radius:12px;font-size:13px;display:flex;align-items:flex-start;gap:10px;box-shadow:0 8px 32px rgba(0,0,0,.3);animation:toastIn .35s cubic-bezier(.34,1.56,.64,1);min-width:260px;max-width:340px;border:1px solid rgba(255,255,255,.08);position:relative;overflow:hidden}
@keyframes toastIn{from{opacity:0;transform:translateX(32px) scale(.96)}to{opacity:1;transform:none}}
.toast.success{background:#064E3B;border-color:rgba(16,185,129,.3)}
.toast.error{background:#7F1D1D;border-color:rgba(239,68,68,.3)}
.toast.info{background:#1E3A5F;border-color:rgba(37,99,235,.3)}
.toast.warning{background:#451A03;border-color:rgba(245,158,11,.3)}
.t-icon{font-size:17px;flex-shrink:0;margin-top:1px}
.t-msg{flex:1;line-height:1.45}
.t-close{background:none;border:none;color:rgba(255,255,255,.35);cursor:pointer;font-size:14px;padding:0;line-height:1;flex-shrink:0;margin-top:-1px;transition:color .15s}
.t-close:hover{color:#fff}
.t-bar{position:absolute;bottom:0;left:0;right:0;height:3px;transform-origin:left;animation:toastProg 3.8s linear forwards}
.toast.success .t-bar{background:rgba(16,185,129,.55)}
.toast.error   .t-bar{background:rgba(239,68,68,.55)}
.toast.info    .t-bar{background:rgba(59,130,246,.55)}
.toast.warning .t-bar{background:rgba(245,158,11,.55)}
@keyframes toastProg{from{transform:scaleX(1)}to{transform:scaleX(0)}}
/* MODAL CONFIRM */
.mc-box{max-width:420px;text-align:center;padding:32px 28px 24px}
#mc-icon{font-size:52px;line-height:1;margin-bottom:14px}
.mc-box h2{font-size:18px;font-weight:700;margin-bottom:8px}
.mc-box .mc-msg{color:var(--text-light);font-size:14px;line-height:1.65;margin-bottom:28px}
.mc-actions{display:flex;gap:10px;justify-content:center}

/* LOGIN USER CARDS */
.login-select-title{color:#94A3B8;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;margin-bottom:14px;text-align:center}
.login-users-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-bottom:4px}
.login-user-card{background:rgba(255,255,255,.06);border:1.5px solid rgba(255,255,255,.1);border-radius:16px;padding:20px 10px 16px;text-align:center;cursor:pointer;transition:all .2s;user-select:none}
.login-user-card:hover,.login-user-card:active{background:rgba(37,99,235,.25);border-color:rgba(37,99,235,.5);transform:translateY(-3px);box-shadow:0 8px 24px rgba(37,99,235,.25)}
.luc-icon{font-size:34px;margin-bottom:8px;line-height:1}
.luc-name{color:#fff;font-size:13px;font-weight:700;margin-bottom:2px}
.luc-role{color:#64748B;font-size:10px;font-weight:500}
.login-selected-box{display:flex;align-items:center;gap:12px;background:rgba(37,99,235,.15);border:1.5px solid rgba(37,99,235,.35);border-radius:12px;padding:12px 16px;margin-bottom:18px}
.lsb-icon{font-size:28px;flex-shrink:0}
.lsb-name{color:#fff;font-size:15px;font-weight:700}
.lsb-role{color:#93C5FD;font-size:11px;margin-top:2px}
.btn-back{background:transparent;border:none;color:#475569;font-size:12px;cursor:pointer;font-family:inherit;padding:0 0 14px;display:flex;align-items:center;gap:5px;transition:color .2s}
.btn-back:hover{color:#94A3B8}

/* FOTO PACIENTE */
.foto-circle{width:88px;height:88px;border-radius:50%;background:var(--bg);border:3px solid var(--border);overflow:hidden;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.foto-circle img{width:100%;height:100%;object-fit:cover}

/* EXPEDIENTE VITALES */
.vitales-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-bottom:16px}
.vital-card{background:linear-gradient(135deg,#F0FDF4,#DCFCE7);border:1px solid #BBF7D0;border-radius:12px;padding:14px;text-align:center}
.vital-card .v-val{font-size:22px;font-weight:800;color:#166534;line-height:1}
.vital-card .v-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:#15803D;margin-top:4px}
.exp-section{margin-bottom:16px}
.exp-section-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.6px;color:var(--text-light);margin-bottom:10px;display:flex;align-items:center;gap:6px}

/* CONFIGURACIÓN */
.config-logo-box{width:100px;height:100px;border-radius:16px;background:linear-gradient(135deg,var(--primary),var(--accent));display:flex;align-items:center;justify-content:center;font-size:36px;overflow:hidden;flex-shrink:0}
.config-logo-box img{width:100%;height:100%;object-fit:contain;border-radius:16px}

/* MISC */
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:#CBD5E1;border-radius:3px}
::-webkit-scrollbar-thumb:hover{background:#94A3B8}
.divider{height:1px;background:var(--border);margin:18px 0}
.text-light{color:var(--text-light);font-size:12px}
.actions-cell{display:flex;gap:5px}
.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-16{margin-top:16px}
@media(max-width:768px){
  .sidebar{transform:translateX(-100%);height:100vh;height:100dvh;overflow:hidden}
  .sidebar.open{transform:none}
  .sidebar-menu{
    overflow-y:scroll;
    -webkit-overflow-scrolling:touch;
    overscroll-behavior:contain;
    min-height:0;
  }
  .main{margin-left:0}
  .topbar{padding:12px 16px}
  .content{padding:16px}
  .stats-grid{grid-template-columns:1fr 1fr}
  .topbar-search{min-width:140px}
  .topbar-date{display:none}
}
.menu-toggle{display:none;background:none;border:none;font-size:22px;cursor:pointer;padding:4px}
@media(max-width:768px){.menu-toggle{display:block}}

/* SIDEBAR OVERLAY */
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:97;backdrop-filter:blur(2px)}
.sidebar-overlay.show{display:block}

/* INLINE SEARCH BAR */
.search-bar{display:flex;gap:10px;align-items:center;margin-bottom:18px;flex-wrap:wrap}
.search-bar-input{flex:1;display:flex;align-items:center;background:var(--bg);border:1.5px solid var(--border);border-radius:10px;padding:9px 14px;gap:8px;min-width:200px;transition:border .2s}
.search-bar-input:focus-within{border-color:var(--primary);background:#fff}
.search-bar-input input{border:none;background:transparent;outline:none;font-size:14px;width:100%;font-family:inherit;color:var(--text)}
.filter-chips{display:flex;gap:6px;flex-wrap:wrap}
.chip{padding:5px 14px;border-radius:20px;font-size:12px;font-weight:600;border:1.5px solid var(--border);background:var(--bg);color:var(--text-light);cursor:pointer;transition:all .2s;user-select:none}
.chip.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.chip:hover:not(.active){border-color:var(--primary);color:var(--primary)}

/* PACIENTES DEL DÍA */
.dia-item{display:flex;align-items:center;gap:12px;padding:11px 14px;background:var(--bg);border-radius:10px;margin-bottom:8px;cursor:pointer;transition:all .2s;border:1px solid transparent}
.dia-item:hover{border-color:var(--primary);background:var(--primary-light);transform:translateX(2px)}
.dia-time{font-size:13px;font-weight:800;color:var(--primary);min-width:46px}
.dia-info{flex:1;min-width:0}
.dia-name{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dia-sub{font-size:11px;color:var(--text-light);margin-top:2px}

/* ACCESOS RÁPIDOS DASHBOARD */
.nav-quick-grid{display:none}
@media(max-width:768px){
  .nav-quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}
}
@media(max-width:380px){
  .nav-quick-grid{grid-template-columns:repeat(2,1fr);gap:8px}
}
.nav-quick-item{display:flex;flex-direction:column;align-items:center;gap:6px;padding:16px 8px 14px;background:var(--card);border:1px solid var(--border);border-radius:14px;cursor:pointer;transition:all .18s;user-select:none;-webkit-tap-highlight-color:transparent;min-height:72px;justify-content:center}
.nav-quick-item:active{transform:scale(.94);background:var(--primary-light)}
.nav-quick-item .nq-icon{font-size:26px;line-height:1}
.nav-quick-item .nq-label{font-size:10px;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:.3px;text-align:center;line-height:1.2}
.nav-quick-item.nq-active{background:var(--primary-light);border-color:var(--primary)}
.nav-quick-item.nq-active .nq-label{color:var(--primary)}

/* BOTTOM NAV (obsoleto — se mantiene por si acaso) */
.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--sidebar-bg);border-top:1px solid rgba(255,255,255,.1);z-index:100;padding:6px 0 env(safe-area-inset-bottom,6px)}
.bottom-nav-items{display:flex;justify-content:space-around;align-items:center}
.bn-item{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 10px;cursor:pointer;color:var(--sidebar-text);transition:color .2s;border:none;background:none;font-family:inherit;flex:1;position:relative}
.bn-item.active{color:#93C5FD}
.bn-item .bn-icon{font-size:21px;line-height:1}
.bn-item .bn-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.3px}
.bn-badge{position:absolute;top:4px;right:12px;background:var(--primary);color:#fff;font-size:9px;font-weight:700;padding:1px 5px;border-radius:10px;min-width:16px;text-align:center}

/* STAT TREND */
.stat-trend{font-size:11px;margin-top:5px;font-weight:600;display:inline-flex;align-items:center;gap:3px}
.stat-trend.warn{color:var(--warning)}
.stat-trend.ok{color:var(--success)}

/* ATENDIDOS POR DÍA */
.atendido-item{display:flex;align-items:center;gap:12px;padding:13px 16px;background:var(--bg);border-radius:10px;margin-bottom:8px;border-left:3px solid var(--primary);transition:all .2s}
.atendido-item.completada{border-left-color:var(--success)}
.atendido-item.cancelada{border-left-color:var(--danger);opacity:.65}
.atendido-item.pendiente,.atendido-item.confirmada{border-left-color:var(--warning)}
.atendido-item:hover{background:var(--primary-light);transform:translateX(2px)}
.atendido-time{font-size:14px;font-weight:800;color:var(--primary);min-width:50px}
.atendido-item.completada .atendido-time{color:var(--success)}
.atendido-info{flex:1;min-width:0}
.atendido-name{font-weight:700;font-size:14px}
.atendido-sub{font-size:11px;color:var(--text-light);margin-top:3px}

/* RESUMEN / HOJA DE CONSULTA */
.rc-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px;border-bottom:2px solid var(--border);margin-bottom:18px}
.rc-logo{font-size:15px;font-weight:800;color:var(--primary);display:flex;align-items:center;gap:6px}
.rc-date-gen{font-size:11px;color:var(--text-light)}
.rc-patient{display:flex;gap:16px;align-items:flex-start;background:linear-gradient(135deg,#0F172A,#1E3A5F);border-radius:var(--radius);padding:20px;margin-bottom:18px;color:#fff}
.rc-patient-info h2{font-size:19px;font-weight:800;margin-bottom:6px}
.rc-meta{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;opacity:.85}
.rc-alergias{margin-top:8px;background:rgba(239,68,68,.2);border:1px solid rgba(239,68,68,.3);border-radius:8px;padding:6px 10px;font-size:12px;color:#FCA5A5}
.rc-section{background:var(--bg);border-radius:12px;padding:18px;margin-bottom:14px;border:1px solid var(--border)}
.rc-section-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;color:var(--text-light);margin-bottom:12px}
.rc-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rc-field{display:flex;flex-direction:column;gap:3px}
.rc-field.full{grid-column:1/-1}
.rc-field span{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-light)}
.rc-field strong{font-size:14px;font-weight:700;color:var(--text);line-height:1.4}
.rc-med-item{padding:10px 14px;background:var(--card);border-radius:8px;border-left:3px solid var(--success);margin-bottom:8px;font-size:13px;font-weight:600}
.rc-nota{background:var(--card);border-radius:10px;padding:14px;margin-bottom:10px;border:1px solid var(--border)}
.rc-footer{text-align:center;padding-top:14px;border-top:1px solid var(--border);color:var(--text-light);font-size:11px;margin-top:6px}

@media print{
  #login-screen,#loading-overlay,.toast-container,.bottom-nav,.sidebar-overlay{display:none!important}
  #app{display:block!important}
  .sidebar,.topbar,.content{display:none!important}
  .modal-overlay{position:static!important;background:none!important;padding:0!important;display:block!important}
  .modal{box-shadow:none!important;border:none!important;max-height:none!important;animation:none!important;border-radius:0!important}
  .modal-footer{display:none!important}
  .rc-patient{color:#000!important;background:#f0f4f8!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .rc-alergias{color:#c00!important;background:#ffe0e0!important;border-color:#faa!important}
}

/* ══════════ RESPONSIVE TABLET (max 1024px) ══════════ */
@media(max-width:1024px){
  .sidebar{width:220px}
  .main{margin-left:220px}
  .topbar-search{min-width:180px}
  .content{padding:18px}
  /* Stats grid: 3 columnas en tablet */
  .stats-grid{grid-template-columns:repeat(3,1fr)}
  /* Super admin KPIs: 3 columnas */
  .sa-kpi-row{grid-template-columns:repeat(3,1fr)}
  .sa-cols{grid-template-columns:1fr 1fr}
  /* Admin stats */
  .admin-stat-row{grid-template-columns:repeat(3,1fr)}
  /* Farmacia ya cubierto en clases propias */
}

/* ══════════ RESPONSIVE MÓVIL / TABLET PEQUEÑA (max 768px) ══════════ */
@media(max-width:768px){
  /* Sidebar */
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:none}
  .main{margin-left:0}

  /* Bottom nav eliminado — navegación desde dashboard */
  .bottom-nav{display:none!important}
  .content{padding:12px}

  /* Topbar */
  .topbar{padding:10px 14px;gap:10px}
  .topbar h1{font-size:15px}
  .topbar-search{min-width:100px;padding:7px 10px}
  .db-status,.topbar-date{display:none}

  /* Modales — salen desde abajo en móvil */
  .modal{border-radius:20px 20px 0 0;position:fixed;bottom:0;left:0;right:0;width:100%;max-width:100%!important;max-height:92vh;animation:slideUp .3s cubic-bezier(.34,1.2,.64,1);padding:22px 16px}
  @keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
  .modal-overlay{align-items:flex-end;padding:0}
  .modal h2{font-size:16px;margin-bottom:16px}

  /* Stats dashboard */
  .stats-grid{grid-template-columns:1fr 1fr;gap:10px}
  .stat-card{padding:12px 10px;border-radius:14px}
  .stat-icon{width:38px;height:38px;font-size:17px}
  .stat-info h3{font-size:20px}
  .stat-info p{font-size:11px;margin-top:2px}
  .grid-2{grid-template-columns:1fr;gap:12px}

  /* Dashboard cards apiladas */
  #view-dashboard .card{border-radius:16px}
  #view-dashboard .card-header{padding-bottom:10px}
  #agenda-hoy{max-height:260px;overflow-y:auto}

  /* Actividad reciente — tabs caben en una fila */
  #view-dashboard .tabs{gap:4px}
  #view-dashboard .tab{padding:7px 10px;font-size:12px}

  /* Admin stats row */
  .admin-stat-row{grid-template-columns:1fr 1fr}

  /* Agendas — stack vertical en móvil */
  #view-agendas>div{grid-template-columns:1fr!important;gap:12px!important}
  #agendas-right-panel>div:last-child{grid-template-columns:1fr!important}

  /* Inventario */
  #inv-panel-productos .search-bar{flex-direction:column;align-items:stretch}
  .filter-chips{flex-wrap:wrap}
  #inv-panel-movimientos>div>div{flex-direction:column;align-items:flex-start;gap:8px}

  /* Examen visual — stack OD/OI */
  #modal-examen-visual [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important;gap:8px!important}

  /* Tablas — ocultar columnas menos importantes */
  thead th:nth-child(n+4){display:none}
  tbody td:nth-child(n+4){display:none}
  thead th:last-child{display:table-cell}
  tbody td:last-child{display:table-cell}

  /* Calendarios */
  .cal-day{min-height:34px;font-size:12px}
  .cal-nav h4{font-size:13px}

  /* Formularios */
  .form-grid{grid-template-columns:1fr}
  .form-group.full{grid-column:1}

  /* Botones en card-header */
  .card-header{flex-wrap:wrap;gap:8px}

  /* Paciente detalle */
  .patient-detail-header{flex-direction:column;gap:12px;align-items:flex-start}
  .tabs{overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}
  .tab{white-space:nowrap;flex-shrink:0}

  /* Vitales */
  .vitales-grid{grid-template-columns:repeat(3,1fr)}

  /* Topbar search */
  .topbar-search input{font-size:13px}

  /* ── FARMACIA módulo (layout via clases .farma-*) ── */
  #farma-panel-alertas .grid-2{grid-template-columns:1fr!important}
  #farma-est-periodo-chips{flex-wrap:wrap}
  #modal-seleccion-inv .modal{padding:16px 12px}
  #sinv-lista{max-height:280px}

  /* ── FARMACIA dashboard (renderDashboardFarmacia) ── */
  #view-dashboard .stats-grid{grid-template-columns:1fr 1fr}
  #view-dashboard .stat-info h3{font-size:15px!important;word-break:break-all}
  #view-dashboard .grid-2{grid-template-columns:1fr!important}

  /* ── FINANZAS ── */
  #view-finanzas .tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;padding-bottom:4px}
  #view-finanzas .tab{white-space:nowrap;flex-shrink:0;font-size:12px}
  #fin-periodo-chips{flex-wrap:wrap;gap:4px}
  #fin-panel-resumen .grid-2{grid-template-columns:1fr!important}

  /* ── INVENTARIO ── */
  #view-inventario .tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;padding-bottom:4px}
  #view-inventario .tab{white-space:nowrap;flex-shrink:0;font-size:12px}
  #inv-stats-row{grid-template-columns:1fr 1fr!important}

  /* ── ESTADÍSTICAS ── */
  #view-estadisticas .tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;padding-bottom:4px}
  #view-estadisticas .tab{white-space:nowrap;flex-shrink:0;font-size:12px}

  /* ── PACIENTES / EXPEDIENTES ── */
  #view-pacientes .search-bar{flex-direction:column;align-items:stretch}
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  /* Ocultar col Identificación (pacientes) y Dosis (medicaciones) para que quepan las acciones */
  #view-pacientes .table-wrap thead th:nth-child(3),
  #view-pacientes .table-wrap tbody td:nth-child(3){display:none}
  #view-medicaciones .table-wrap thead th:nth-child(3),
  #view-medicaciones .table-wrap tbody td:nth-child(3){display:none}
  /* Botón Acudió: solo emoji en móvil */
  .acudio-text{display:none}
  /* Acciones compactas, sin wrap */
  #view-pacientes .actions-cell{gap:3px;flex-wrap:nowrap}
  #view-pacientes .actions-cell .btn-sm{padding:5px 7px}

  /* ── CITAS / AGENDAS ── */
  #view-citas .card-header{flex-wrap:wrap;gap:8px}

  /* ── MODALES — botones footer ── */
  .modal-footer{flex-wrap:wrap}
  .modal-footer .btn{flex:1;min-width:120px;justify-content:center}

  /* ── CARD HEADERS con acciones ── */
  .card-header{gap:8px}
  .card-header>div{flex-wrap:wrap;gap:6px}

  /* ── TABS globales con scroll ── */
  .tabs{overflow-x:auto;-webkit-overflow-scrolling:touch}

  /* ── GENERAL: grids inline con columnas fijas → 1fr ── */
  [style*="grid-template-columns:1fr 360px"]{grid-template-columns:1fr!important}
  [style*="grid-template-columns:270px 1fr"]{grid-template-columns:1fr!important}
  [style*="grid-template-columns:1fr 1fr;gap:18px"]{grid-template-columns:1fr!important}
  [style*="grid-template-columns:1fr 3fr"]{grid-template-columns:1fr!important}
  [style*="grid-template-columns:repeat(4,1fr)"]{grid-template-columns:repeat(2,1fr)!important}
  [style*="grid-template-columns:1fr 1fr 1fr 1fr"]{grid-template-columns:repeat(2,1fr)!important}

  /* ── Overflow seguro en texto de card-header ── */
  .card-header h3,.card-header h4{min-width:0;flex:1}
  .card-header .btn,.card-header button{flex-shrink:0}

  /* ── Finanzas: período chips y buscador facturas ── */
  #fin-panel-facturas .search-bar{flex-direction:column;align-items:stretch}
  #fin-panel-facturas .search-bar-input{min-width:0}
  #view-finanzas .card-header{flex-wrap:wrap;gap:8px}
}

/* ══════════ RESPONSIVE MÓVIL PEQUEÑO (max 480px) ══════════ */
@media(max-width:480px){
  /* Stats 1 columna en pantallas muy pequeñas */
  .stats-grid{grid-template-columns:1fr 1fr}
  .stat-card{padding:10px 8px}
  .stat-info h3{font-size:18px}
  .stat-info p{font-size:11px}
  .stat-icon{width:34px;height:34px;font-size:15px}

  /* Admin */
  .admin-stat-row{grid-template-columns:1fr 1fr}
  .admin-stat-val{font-size:18px}

  /* Topbar */
  .topbar{padding:8px 10px;gap:6px}
  .topbar h1{font-size:13px}
  .topbar-search{min-width:80px}
  .theme-toggle-wrap span{display:none}

  /* Contenido — sin bottom-nav: padding normal + safe-area del notch inferior */
  .content{padding:10px 10px calc(20px + env(safe-area-inset-bottom,0px))}

  /* Cards */
  .card{padding:14px 12px}
  .card-header h3{font-size:13px}

  /* Botones */
  .btn{padding:7px 11px;font-size:12px}
  .btn-sm{padding:5px 8px;font-size:11px}

  /* Modal visual exam muy pequeño */
  #modal-examen-visual .modal{padding:14px 12px}
  #modal-examen-visual h2{font-size:15px}

  /* Login */
  .login-card{width:300px;padding:0 8px}
  .lm-letters{font-size:26px}

  /* Calendarios compactos */
  .cal-day{min-height:30px;font-size:11px;border-radius:7px}
  .cal-dot-pip{width:3px;height:3px}
  .cal-nav h4{font-size:12px}
  .cal-dow{font-size:8.5px;padding:5px 0}

  /* Paciente nombre en tabla */
  .patient-name-cell{gap:6px}
  .patient-avatar{width:26px;height:26px;font-size:9px}

  /* Tabs más pequeños */
  .tab{padding:6px 11px;font-size:12px}

  /* Vitales */
  .vitales-grid{grid-template-columns:repeat(2,1fr)}
  .vital-card .v-val{font-size:18px}

  /* Buscadores — columna en 480px */
  .search-bar{flex-direction:column;align-items:stretch;gap:8px}
  .search-bar-input{min-width:0}

  /* Grids inline de 2 o 3 columnas → 1 columna */
  [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
  [style*="grid-template-columns:1fr 1fr 1fr"]{grid-template-columns:1fr!important}
  [style*="grid-template-columns:repeat(3,1fr)"]{grid-template-columns:1fr!important}

  /* Card headers: alinear arriba para no romper al wrappear */
  .card-header{align-items:flex-start}

  /* Modal footer más compacto */
  .modal-footer{gap:6px}
  .modal-footer .btn{min-width:0}

  /* Finanzas: buscador de facturas */
  #fin-panel-facturas .filter-chips{gap:4px}
  #fin-panel-facturas .chip{font-size:11px;padding:4px 10px}
}

/* ══════════ RESPONSIVE MUY PEQUEÑO (max 360px) ══════════ */
@media(max-width:360px){
  /* Layout general */
  .content{padding:8px}
  .card{padding:12px 10px}
  .card-header{gap:6px}
  .card-header h3{font-size:12px!important}
  .card-header h4{font-size:11px!important}

  /* Topbar: ocultar search bar, el título ya se oculta */
  .topbar h1{display:none}
  .topbar-search{display:none}

  /* Botones más pequeños */
  .btn{font-size:11px;padding:6px 9px}
  .btn-sm{font-size:10px;padding:4px 7px}

  /* Tabs muy compactos */
  .tab{padding:5px 9px;font-size:11px}
  .citas-view-tab{padding:7px 12px;font-size:12px}

  /* Chips más pequeños */
  .chip{font-size:10px;padding:3px 9px}
  .filter-chips{gap:4px}

  /* Buscadores en columna */
  .search-bar{flex-direction:column;align-items:stretch;gap:6px}
  .search-bar-input{min-width:0}

  /* Stats: 1 columna */
  .stats-grid{grid-template-columns:1fr}
  .stat-card{padding:10px}

  /* Admin: 1 columna */
  .admin-stat-row{grid-template-columns:1fr!important}

  /* Super Admin KPIs: 2 columnas */
  .sa-kpi-row{grid-template-columns:repeat(2,1fr)!important}

  /* Vitales: 2 columnas mínimo */
  .vitales-grid{grid-template-columns:repeat(2,1fr)}
  .vital-card .v-val{font-size:16px}

  /* Calendarios */
  .cal-day{min-height:26px;font-size:10px}
  .cal-nav h4{font-size:11px}

  /* Modales */
  .modal{padding:14px 12px}
  .modal h2{font-size:15px}
  .modal-footer .btn{min-width:0;font-size:11px}

  /* Tablas: mostrar solo 2 cols + acciones */
  thead th:nth-child(n+3){display:none}
  tbody td:nth-child(n+3){display:none}
  thead th:last-child{display:table-cell}
  tbody td:last-child{display:table-cell}

  /* Grids inline 2+ columnas → 1 columna */
  [style*="grid-template-columns:1fr 1fr"]{grid-template-columns:1fr!important}
  [style*="grid-template-columns:1fr 1fr 1fr"]{grid-template-columns:1fr!important}
  [style*="grid-template-columns:repeat(3,1fr)"]{grid-template-columns:1fr!important}
  [style*="grid-template-columns:repeat(4,1fr)"]{grid-template-columns:1fr 1fr!important}

  /* Ítems de lista: compactar */
  .dia-time{min-width:40px;font-size:12px}
  .atendido-time{min-width:44px;font-size:12px}
  .sa-agenda-time{min-width:36px;font-size:11px}
  .patient-detail-header{gap:8px}

  /* Pacientes 360px: ocultar N° Expediente también, solo Paciente + Acciones */
  #view-pacientes .table-wrap thead th:nth-child(2),
  #view-pacientes .table-wrap tbody td:nth-child(2){display:none}

  /* Login */
  .login-card{width:92vw;padding:0 4px}
  .lm-letters{font-size:22px}

  /* Clinica detail en admin */
  .clinica-detail-grid{grid-template-columns:1fr!important}
}

/* AGENDAS */
.doc-card{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;cursor:pointer;transition:all .18s;border:1.5px solid transparent;margin-bottom:6px;user-select:none}
.doc-card:hover{background:var(--primary-light);border-color:var(--primary)}
.doc-card.selected{background:var(--primary-light);border-color:var(--primary);box-shadow:0 2px 8px rgba(37,99,235,.15)}
.doc-emoji{font-size:26px;width:42px;height:42px;display:flex;align-items:center;justify-content:center;background:var(--card);border-radius:10px;flex-shrink:0;border:1px solid var(--border)}
.doc-name{font-size:13px;font-weight:700;color:var(--text);line-height:1.2}
.doc-role-lbl{font-size:11px;color:var(--text-light);margin-top:2px}
.agenda-slot{display:flex;align-items:center;gap:12px;padding:11px 14px;background:var(--bg);border-radius:10px;margin-bottom:7px;border-left:3px solid var(--primary);transition:all .18s;cursor:pointer}
.agenda-slot:hover{background:var(--primary-light);transform:translateX(2px)}
.agenda-slot.completada{border-left-color:var(--success)}
.agenda-slot.cancelada{border-left-color:var(--danger);opacity:.6}
.agenda-slot.confirmada{border-left-color:var(--accent)}

/* INVENTARIO */
.inv-stock-ok{color:var(--success);font-weight:700}
.inv-stock-low{color:var(--warning);font-weight:700}
.inv-stock-out{color:var(--danger);font-weight:700}
.mov-entrada{border-left-color:var(--success)!important}
.mov-salida{border-left-color:var(--danger)!important}
.inv-badge-entrada{background:#F0FDF4;color:#15803D;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:700}
.inv-badge-salida{background:#FEF2F2;color:#B91C1C;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:700}
body.dark .inv-badge-entrada{background:rgba(16,185,129,.15);color:#6EE7B7}
body.dark .inv-badge-salida{background:rgba(239,68,68,.15);color:#FCA5A5}

/* ══ INVENTARIO — items de producto y movimiento ══ */
.inv-item,.mov-item{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--bg);border:1px solid var(--border);border-radius:12px;margin-bottom:8px;transition:border-color .18s,box-shadow .18s}
.inv-item:hover,.mov-item:hover{border-color:var(--primary);box-shadow:0 2px 12px rgba(37,99,235,.08)}
.inv-item-icon{width:42px;height:42px;border-radius:11px;background:var(--primary-light);display:flex;align-items:center;justify-content:center;font-size:21px;flex-shrink:0}
.inv-item-info{flex:1;min-width:0}
.inv-item-name{font-weight:700;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.inv-item-minsa{font-size:10px;color:var(--text-light);font-family:monospace;background:var(--card);border:1px solid var(--border);border-radius:4px;padding:1px 5px}
.inv-item-sub{font-size:11px;color:var(--text-light);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.inv-item-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}
.inv-item-actions{display:flex;gap:4px;flex-wrap:nowrap}
/* Expiration state highlights */
.inv-item-vencido{border-color:#FCA5A5!important;background:rgba(254,242,242,.6)!important}
.inv-item-alerta{border-color:#FCD34D!important;background:rgba(255,251,235,.6)!important}
body.dark .inv-item-vencido{background:rgba(239,68,68,.1)!important;border-color:rgba(239,68,68,.5)!important}
body.dark .inv-item-alerta{background:rgba(245,158,11,.1)!important;border-color:rgba(245,158,11,.5)!important}
.inv-venc-tag{display:inline-block;margin-top:4px;font-size:10px!important}
/* Farma alertas — items de vencimiento */
.farma-alerta-item{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:10px 0;border-bottom:1px solid var(--border)}
.farma-alerta-item:last-child{border-bottom:none}
.mov-pill{width:40px;flex-shrink:0;text-align:center;border-radius:9px;padding:6px 2px}
.mov-pill.entrada{background:#F0FDF4}
.mov-pill.salida{background:#FEF2F2}
body.dark .mov-pill.entrada{background:rgba(16,185,129,.15)}
body.dark .mov-pill.salida{background:rgba(239,68,68,.15)}
.mov-pill-day{font-size:14px;font-weight:800;line-height:1}
.mov-pill-month{font-size:9.5px;text-transform:uppercase;font-weight:700;margin-top:2px;letter-spacing:.4px}
.mov-pill.entrada .mov-pill-day,.mov-pill.entrada .mov-pill-month{color:var(--success)}
.mov-pill.salida .mov-pill-day,.mov-pill.salida .mov-pill-month{color:var(--danger)}
.mov-item-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}
.mov-qty{font-size:15px;font-weight:800}
.mov-qty.entrada{color:var(--success)}
.mov-qty.salida{color:var(--danger)}

/* Expiration state borders */
.inv-item-vencido{border-color:#FCA5A5!important;background:rgba(254,242,242,.5)}
.inv-item-alerta{border-color:#FCD34D!important;background:rgba(255,251,235,.5)}
body.dark .inv-item-vencido{background:rgba(239,68,68,.08)!important}
body.dark .inv-item-alerta{background:rgba(245,158,11,.08)!important}
.inv-venc-tag{margin-top:4px;display:inline-block}
.farma-alerta-item{display:flex;justify-content:space-between;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--border)}
.farma-alerta-item:last-child{border-bottom:none}

/* ══ INVENTARIO — barras de reporte ══ */
.rep-bar-row{display:flex;align-items:center;gap:10px}
.rep-bar-label{min-width:160px;max-width:160px;font-size:12px;font-weight:600;color:var(--text-light);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rep-bar-track{flex:1;background:var(--bg);border-radius:8px;height:26px;overflow:hidden}
.rep-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:8px;display:flex;align-items:center;padding-left:8px}
.rep-bar-fill span{color:#fff;font-size:11px;font-weight:700}
.rep-bar-val{min-width:28px;font-size:13px;font-weight:800;color:var(--text)}

/* ══ INVENTARIO — responsive ══ */
@media(max-width:640px){
  /* Productos: tag + acciones pasan a una segunda línea de ancho completo */
  .inv-item{flex-wrap:wrap;gap:8px 10px;padding:10px 12px}
  .inv-item-icon{width:38px;height:38px;font-size:19px}
  .inv-item-right{flex-direction:row;align-items:center;justify-content:space-between;width:100%;padding-top:8px;border-top:1px dashed var(--border)}
  /* Reportes: etiqueta sobre la barra */
  .rep-bar-row{flex-wrap:wrap;gap:4px 8px}
  .rep-bar-label{min-width:100%;max-width:100%;text-align:left}
  /* Header inventario: botones de acción en grid uniforme */
  #inv-action-btns{display:grid!important;grid-template-columns:repeat(3,1fr);gap:6px;width:100%}
  #inv-action-btns .btn{justify-content:center;white-space:nowrap;padding:8px 6px}
  /* Movimientos: fecha a ancho completo */
  #inv-mov-fecha{width:100%}
}
@media(max-width:380px){
  #inv-action-btns{grid-template-columns:repeat(2,1fr)}
  .inv-item-actions{gap:3px}
  .inv-item-actions .btn-sm{padding:5px 7px;font-size:11px}
}

/* ADMIN PANEL */
.admin-stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;margin-bottom:20px}
.admin-stat{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:16px 18px;display:flex;align-items:center;gap:12px}
.admin-stat-icon{font-size:26px;flex-shrink:0}
.admin-stat-val{font-size:22px;font-weight:800;line-height:1;color:var(--text)}
.admin-stat-label{font-size:11px;color:var(--text-light);margin-top:3px;font-weight:500}
.admin-badge-sa{display:inline-flex;align-items:center;gap:5px;background:linear-gradient(90deg,rgba(0,212,255,.15),rgba(124,77,255,.15));border:1px solid rgba(124,77,255,.3);border-radius:20px;padding:3px 10px;font-size:11px;font-weight:700;color:#a78bfa}
.icon-select{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:4px}
.icon-opt{width:100%;aspect-ratio:1;border:1.5px solid var(--border);border-radius:10px;background:var(--bg);cursor:pointer;font-size:22px;display:flex;align-items:center;justify-content:center;transition:all .15s;padding:0}
.icon-opt:hover,.icon-opt.selected{border-color:var(--primary);background:var(--primary-light)}
/* FLATPICKR CUSTOM */
.flatpickr-calendar{background:#151c2e!important;border:1px solid rgba(139,92,246,.3)!important;border-radius:18px!important;box-shadow:0 24px 64px rgba(0,0,0,.5)!important;font-family:'Inter',sans-serif!important;padding:4px 2px 8px!important;width:310px!important}
.flatpickr-months{padding:8px 8px 0;align-items:center}
.flatpickr-month{background:transparent!important;color:#fff!important;height:36px!important}
.flatpickr-prev-month,.flatpickr-next-month{background:rgba(139,92,246,.15)!important;border-radius:10px!important;width:30px!important;height:30px!important;display:flex!important;align-items:center!important;justify-content:center!important;top:10px!important;transition:background .15s!important}
.flatpickr-prev-month:hover,.flatpickr-next-month:hover{background:rgba(139,92,246,.4)!important}
.flatpickr-prev-month svg,.flatpickr-next-month svg{fill:#c4b5fd!important}
.flatpickr-current-month{font-size:15px!important;font-weight:700!important;color:#fff!important;padding-top:4px!important}
.flatpickr-current-month .flatpickr-monthDropdown-months{background:#1e2845!important;color:#fff!important;border-radius:8px!important;border:1px solid rgba(139,92,246,.3)!important;font-weight:700!important;padding:2px 6px!important}
.flatpickr-current-month .flatpickr-monthDropdown-months option{background:#1a2035!important}
.numInputWrapper:hover{background:rgba(139,92,246,.1)!important;border-radius:6px!important}
.cur-year{color:#fff!important;font-weight:700!important}
.numInputWrapper span.arrowUp:after{border-bottom-color:#c4b5fd!important}
.numInputWrapper span.arrowDown:after{border-top-color:#c4b5fd!important}
.flatpickr-weekdays{background:transparent!important;margin-top:4px}
.flatpickr-weekday{color:rgba(196,181,253,.7)!important;font-weight:600!important;font-size:11px!important}
.flatpickr-days{border:none!important}
.dayContainer{padding:0 4px!important}
.flatpickr-day{color:rgba(255,255,255,.85)!important;border-radius:10px!important;border:none!important;font-size:13px!important;font-weight:500!important;height:36px!important;line-height:36px!important;transition:background .15s,color .15s!important}
.flatpickr-day:hover{background:rgba(139,92,246,.25)!important;color:#fff!important}
.flatpickr-day.selected,.flatpickr-day.selected:hover{background:linear-gradient(135deg,#8b5cf6,#a78bfa)!important;color:#fff!important;font-weight:700!important;box-shadow:0 4px 14px rgba(139,92,246,.4)!important}
.flatpickr-day.today{border:2px solid rgba(139,92,246,.5)!important;color:#c4b5fd!important;font-weight:700!important}
.flatpickr-day.today:hover{background:rgba(139,92,246,.3)!important}
.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay{color:rgba(255,255,255,.2)!important}
.flatpickr-day.flatpickr-disabled{color:rgba(255,255,255,.15)!important}
/* DETALLE CLÍNICA */
.tag-purple{background:rgba(124,58,237,.12);color:#7c3aed;border:1px solid rgba(124,58,237,.25);padding:3px 10px;border-radius:20px;font-size:11px;font-weight:700;display:inline-flex;align-items:center;gap:4px}
.clinica-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px}
.clinica-detail-grid .full{grid-column:1/-1}
.field-val{padding:8px 12px;background:var(--bg);border-radius:8px;font-size:14px;color:var(--text);margin-top:4px;min-height:34px;display:flex;align-items:center}
.prod-row-highlight{background:rgba(124,58,237,.04)!important}
.detalle-header{display:flex;align-items:flex-start;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.detalle-logo{width:64px;height:64px;border-radius:12px;border:2px solid var(--border);overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--primary-light),var(--bg))}
.detalle-logo img{width:100%;height:100%;object-fit:contain}
.modal-xl{max-width:720px!important;width:95%!important}

/* ══ SCROLL LOCK cuando hay modal abierto ══ */
body.modal-open{overflow:hidden}
body:has(.modal-overlay.open){overflow:hidden}

/* ══ BOTÓN X CERRAR MODAL ══ */
.modal{position:relative}
.modal-close-btn{position:absolute;top:14px;right:14px;width:30px;height:30px;border:none;background:var(--bg);border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--text-light);transition:all .15s;z-index:2;flex-shrink:0;line-height:1}
.modal-close-btn:hover{background:var(--border);color:var(--text);transform:scale(1.1)}
.modal h2{padding-right:38px}

/* ══ SIDEBAR ANIMACIÓN MEJORADA ══ */
.sidebar{transition:transform .32s cubic-bezier(.34,1.1,.64,1),box-shadow .32s ease}
@media(max-width:768px){
  .sidebar{box-shadow:none}
  .sidebar.open{box-shadow:6px 0 40px rgba(0,0,0,.4)}
}

/* ══ PREVENIR ZOOM EN INPUTS iOS ══ */
@media(max-width:768px){
  input:not([type="checkbox"]):not([type="radio"]),select,textarea{font-size:16px!important}
}

/* ══ STICKY FOOTER EN MODALES MÓVIL ══ */
@media(max-width:768px){
  .modal{display:flex;flex-direction:column}
  .modal-footer{position:sticky;bottom:0;background:var(--card);padding:12px 0 0;margin-top:auto}
  .modal-footer .btn{flex:1;justify-content:center}
}

/* ══ CITAS TABS ══ */
.citas-view-tabs{display:flex;gap:0;border-bottom:2px solid var(--border);margin-bottom:18px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.citas-view-tabs::-webkit-scrollbar{display:none}
.citas-view-tab{padding:10px 18px;font-size:13px;font-weight:700;cursor:pointer;color:var(--text-light);border:none;background:none;font-family:inherit;border-bottom:3px solid transparent;margin-bottom:-2px;transition:all .18s;white-space:nowrap;display:flex;align-items:center;gap:6px;flex-shrink:0}
.citas-view-tab.active{color:var(--primary);border-bottom-color:var(--primary)}
.citas-view-tab:hover:not(.active){color:var(--text)}
.citas-view-tab .ctab-badge{background:var(--border);color:var(--text-light);padding:1px 7px;border-radius:10px;font-size:11px;font-weight:700}
.citas-view-tab.active .ctab-badge{background:var(--primary);color:#fff}
.citas-date-picker-row{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.citas-date-picker-row input[type="date"]{padding:8px 12px;border:1.5px solid var(--border);border-radius:10px;font-size:13px;font-family:inherit;outline:none;cursor:pointer;color:var(--text);background:var(--card);transition:border .2s}
.citas-date-picker-row input[type="date"]:focus{border-color:var(--primary)}

/* ══ BADGE ACUDIÓ ══ */
.acudio-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;background:#F0FDF4;color:#15803D;border:1px solid #86EFAC;border-radius:20px;font-size:11px;font-weight:700;white-space:nowrap}
body.dark .acudio-badge{background:rgba(16,185,129,.15);color:#6EE7B7;border-color:rgba(16,185,129,.3)}

/* ══ CLINIC BADGE EN NOTAS ══ */
.notas-clinic-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;background:var(--primary-light);border:1px solid rgba(37,99,235,.2);border-radius:20px;font-size:12px;font-weight:700;color:var(--primary);margin-bottom:14px}

/* ══ SUPERADMIN DASHBOARD ══ */
.sa-dash{display:flex;flex-direction:column;gap:12px;height:calc(100vh - 130px);min-height:0}
.sa-kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:10px;flex-shrink:0}
.sa-kpi{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 14px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:all .18s}
.sa-kpi:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 4px 16px rgba(37,99,235,.12)}
.sa-kpi-icon{font-size:22px;flex-shrink:0}
.sa-kpi-val{font-size:18px;font-weight:800;line-height:1;color:var(--text)}
.sa-kpi-lbl{font-size:10px;font-weight:600;color:var(--text-light);text-transform:uppercase;letter-spacing:.4px;margin-top:2px}
.sa-kpi-trend{font-size:10px;margin-top:2px;font-weight:700}
.sa-kpi-trend.up{color:var(--success)}.sa-kpi-trend.warn{color:var(--warning)}.sa-kpi-trend.down{color:var(--danger)}
.sa-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;flex:1;min-height:0}
.sa-col{display:flex;flex-direction:column;gap:12px;min-height:0}
.sa-panel{background:var(--card);border:1px solid var(--border);border-radius:14px;display:flex;flex-direction:column;min-height:0;overflow:hidden}
.sa-panel.flex-1{flex:1}
.sa-panel.flex-half{flex:1}
.sa-panel-hdr{padding:12px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.sa-panel-hdr h4{font-size:13px;font-weight:700;display:flex;align-items:center;gap:6px}
.sa-panel-body{flex:1;overflow-y:auto;padding:10px 12px;min-height:0;scrollbar-width:thin}
.sa-panel-body::-webkit-scrollbar{width:4px}
.sa-panel-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
.sa-agenda-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:9px;cursor:pointer;transition:background .15s;border:1px solid transparent;margin-bottom:6px}
.sa-agenda-item:hover{background:var(--primary-light);border-color:rgba(37,99,235,.15)}
.sa-agenda-time{font-size:12px;font-weight:800;color:var(--primary);min-width:42px}
.sa-agenda-name{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sa-agenda-sub{font-size:11px;color:var(--text-light)}
.sa-staff-card{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--bg);border-radius:10px;margin-bottom:6px;border:1px solid var(--border)}
.sa-staff-name{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sa-staff-sub{font-size:10px;color:var(--text-light)}
.sa-bar{height:4px;background:var(--border);border-radius:2px;margin-top:4px}
.sa-bar-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:2px;transition:width .4s}
.sa-fin-row{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;border-radius:8px;background:var(--bg);margin-bottom:5px;font-size:12px}
.sa-fin-lbl{color:var(--text-light);font-weight:600}
.sa-fin-val{font-weight:800}
.sa-quick-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;padding:10px 12px}
.sa-quick-btn{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border-radius:10px;border:1px solid var(--border);background:var(--bg);cursor:pointer;transition:all .15s;font-size:10px;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:.3px}
.sa-quick-btn:hover{border-color:var(--primary);color:var(--primary);background:var(--primary-light)}
.sa-quick-btn span:first-child{font-size:20px}
.sa-rec-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;background:var(--bg);margin-bottom:5px;cursor:pointer;transition:background .15s;border:1px solid transparent}
.sa-rec-item:hover{border-color:var(--border)}
.sa-rec-name{font-size:12px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sa-rec-sub{font-size:10px;color:var(--text-light)}
/* Mobile SA dashboard — stack columns */
@media(max-width:768px){
  .sa-dash{height:auto}
  .sa-kpi-row{grid-template-columns:repeat(3,1fr)}
  .sa-cols{grid-template-columns:1fr}
  .sa-panel{max-height:260px}
}
@media(max-width:480px){
  .sa-kpi-row{grid-template-columns:repeat(2,1fr)}
}

/* ══ ADMIN PANEL RESPONSIVE ══ */
.admin-item-card{background:var(--bg);border:1px solid var(--border);border-radius:12px;padding:14px 16px;margin-bottom:10px;display:flex;flex-direction:column;gap:10px;transition:border-color .18s}
.admin-item-card-blocked{border-color:#FCA5A5;background:rgba(254,242,242,.45)}
body.dark .admin-item-card-blocked{background:rgba(239,68,68,.1);border-color:#b91c1c}
.admin-item-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.admin-item-card-name{font-weight:700;font-size:14px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-item-card-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--text-light)}
.admin-item-card-actions{display:flex;gap:8px;flex-wrap:wrap}
.admin-item-card-actions .btn{flex:1;min-width:0;justify-content:center;font-size:12px}
@media(max-width:768px){
  #view-admin .card{overflow:hidden}
  #view-admin .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  #view-admin .card-header{flex-wrap:wrap;gap:8px}
  #view-admin .card-header h3{font-size:14px;flex:1}
  #view-admin .tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}
  #view-admin .tabs::-webkit-scrollbar{display:none}
  #view-admin .tab{white-space:nowrap;flex-shrink:0;padding:8px 12px;font-size:12px}
  .admin-stat-row{grid-template-columns:1fr 1fr!important;gap:10px}
  .admin-stat{padding:12px 10px}
  .admin-stat-icon{font-size:20px}
  .admin-stat-val{font-size:18px}
  .clinica-detail-grid{grid-template-columns:1fr!important}
  .clinica-detail-grid .full{grid-column:1}
  /* Forzar word-break en tarjetas de texto */
  #admin-panel-global *,#admin-panel-productividad *{word-break:break-word;overflow-wrap:break-word}
}

/* ══════════ FARMACIA — Clases propias ══════════ */
.farma-pos-grid{display:grid;grid-template-columns:1fr 360px;gap:18px;align-items:start}
.farma-carrito-card{position:sticky;top:80px}
.farma-prod-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px;max-height:440px;overflow-y:auto}
.farma-carrito-items{min-height:64px;max-height:260px;overflow-y:auto;margin-bottom:14px}
.farma-totales{background:var(--bg);border-radius:12px;padding:12px 14px;margin-bottom:16px}
.farma-total-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.farma-total-main{padding-top:8px;border-top:1px solid var(--border);margin-bottom:0;font-weight:800;font-size:1.05rem}
.farma-receta-toggle{display:flex;align-items:center;gap:10px;cursor:pointer;padding:10px 14px;background:var(--bg);border-radius:12px;border:1.5px solid var(--border);transition:border-color .2s}
.farma-receta-toggle:hover{border-color:var(--primary)}

@media(max-width:1024px){
  .farma-pos-grid{grid-template-columns:1fr 320px}
}
@media(max-width:768px){
  .farma-pos-grid{grid-template-columns:1fr}
  .farma-carrito-card{position:static}
  .farma-prod-grid{max-height:220px;grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
  .farma-carrito-items{max-height:180px}
  #view-farmacia .tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch}
  #view-farmacia .tab{white-space:nowrap;flex-shrink:0;padding:8px 10px;font-size:12px}
  #farma-stats-row{grid-template-columns:1fr 1fr}
}
@media(max-width:480px){
  .farma-pos-grid{gap:12px}
  .farma-prod-grid{grid-template-columns:repeat(auto-fill,minmax(120px,1fr));max-height:180px}
}

/* ══ RED DE SEGURIDAD MÓVIL — consistencia en TODAS las vistas ══ */
@media(max-width:768px){
  /* Ninguna vista debe provocar scroll horizontal */
  .view{overflow-x:hidden}
  /* Los botones de acción siempre envuelven, nunca se cortan */
  .actions-cell{flex-wrap:wrap}
  /* Tarjetas de cita en el detalle de paciente: acciones en su propia fila */
  #tab-citas-p .cita-item,#tab-meds-p .cita-item,#tab-notas-p .cita-item{flex-wrap:wrap;gap:8px}
  #tab-citas-p .cita-item .actions-cell{width:100%;justify-content:flex-end}
  /* Lista de Pacientes (tarjetas): acciones en su propia fila */
  #tabla-pacientes .pac-row{flex-wrap:wrap;gap:8px}
  #tabla-pacientes .pac-row .actions-cell{width:100%;justify-content:flex-end}
  /* Plan de Tratamiento (tarjetas): acciones en su propia fila */
  .proc-row{flex-wrap:wrap;gap:8px}
  .proc-row .actions-cell{width:100%;justify-content:flex-end}
  #tab-procedimientos-p .actions-cell{flex-wrap:wrap}
}

/* ══ CITAS — calendario centrado + tarjeta del día sin desbordar (móvil) ══ */
@media(max-width:768px){
  /* Calendario más compacto y centrado dentro de la card */
  #citas-tab-calendario .cal-wrap{max-width:360px;margin:0 auto}
  /* Tarjeta de cita: tiempo + datos arriba, acciones en su propia fila */
  #cal-day-citas .cita-item,#lista-citas-tab .cita-item{flex-wrap:wrap;gap:8px;padding:10px 12px}
  #cal-day-citas .cita-item .actions-cell,
  #lista-citas-tab .cita-item .actions-cell{width:100%;justify-content:flex-end;flex-wrap:wrap;gap:6px}
}
@media(max-width:480px){
  #citas-tab-calendario .cal-wrap{max-width:320px}
  #citas-tab-calendario .cal-day{min-height:28px}
}

/* ══════════ ODONTOGRAMA — lámina clásica ══════════ */
.odo-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;border:1px solid var(--border);border-radius:14px;padding:12px 8px;
  /* Sombras laterales que indican que hay más contenido al deslizar */
  background-color:#fff;
  background-image:linear-gradient(to right,#fff 35%,rgba(255,255,255,0)),linear-gradient(to left,#fff 35%,rgba(255,255,255,0)),radial-gradient(farthest-side at 0 50%,rgba(15,23,42,.22),transparent),radial-gradient(farthest-side at 100% 50%,rgba(15,23,42,.22),transparent);
  background-position:left center,right center,left center,right center;
  background-repeat:no-repeat;
  background-size:46px 100%,46px 100%,14px 100%,14px 100%;
  background-attachment:local,local,scroll,scroll}
.odo-scroll::-webkit-scrollbar{height:8px}
.odo-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}
.odo-lamina{display:flex;flex-direction:column;gap:12px;align-items:center;width:max-content;margin:0 auto;padding:2px 4px}
.odo-row{display:flex;align-items:flex-end;gap:3px;justify-content:center}
.odo-half{display:flex;gap:3px}
.odo-mid{width:16px;border-top:2px dashed #9ca3af;align-self:center}
.odo-cell{display:flex;flex-direction:column;align-items:center;gap:3px;width:36px}
.odo-svg{width:32px;height:32px}
.odo-num{font-size:11px;font-weight:800;color:#111;line-height:1}
.odo-codes{font-size:9px;font-weight:800;line-height:1.1;min-height:10px;text-align:center;white-space:nowrap}
.odo-refs{display:grid;grid-template-columns:repeat(auto-fit,minmax(195px,1fr));gap:4px 14px}
.odo-ref-item{font-size:11.5px;color:var(--text)}
.odo-ref-item b{font-weight:800}
.odo-hint{display:none;font-size:11px;color:var(--text-light);font-weight:700;margin-bottom:6px;text-align:center}
.odo-chip{padding:5px 11px;border-radius:16px;border:1.5px solid #9ca3af;background:#fff;font-size:10.5px;font-weight:800;cursor:pointer;line-height:1.25;transition:box-shadow .12s,transform .12s}
.odo-chip:active{transform:scale(.96)}
.odo-surf-btn{padding:4px 11px;border-radius:12px;border:1.5px solid var(--border);font-size:10.5px;font-weight:700;cursor:pointer;line-height:1.25}
@media(max-width:768px){
  .odo-hint{display:block}
  /* Piezas más grandes para seleccionar con el dedo */
  .odo-svg{width:40px;height:40px}
  .odo-cell{width:44px;gap:4px}
  .odo-num{font-size:12px}
  .odo-codes{font-size:10px;min-height:11px}
  .odo-lamina{gap:14px}
  .odo-chip{padding:8px 13px;font-size:12px;border-radius:18px}
  .odo-surf-btn{padding:7px 13px;font-size:12px}
  /* Modal de edición casi a pantalla completa para máxima visibilidad */
  #modal-odontograma .modal{height:96dvh;max-height:96dvh;padding:20px 12px 14px}
  #modal-odontograma .modal h2{margin-bottom:10px}
  #odo-estados-bar{max-height:122px;overflow-y:auto;padding-bottom:2px}
  .odo-refs{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}
  .odo-ref-item{font-size:11px}
}
@media(max-width:400px){
  .odo-svg{width:38px;height:38px}
  .odo-cell{width:41px}
}

/* ══════════ FINANZAS — lista de transacciones y facturas ══════════ */
.fin-list{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--card)}
.fin-list-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:2px solid var(--border);background:var(--bg);border-radius:14px 14px 0 0}
.fin-list-header-lbl{font-size:11px;font-weight:700;color:var(--text-light);text-transform:uppercase;letter-spacing:.04em}
.fin-list-header-val{font-size:12px;font-weight:700}
.fin-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid var(--border);transition:background .12s;background:var(--card)}
.fin-item:last-child{border-bottom:none}
.fin-item:hover{background:var(--bg)}
.fin-date-pill{width:42px;flex-shrink:0;text-align:center;border-radius:9px;padding:6px 4px}
.fin-date-day{font-size:14px;font-weight:800;line-height:1}
.fin-date-mon{font-size:10px;text-transform:uppercase;font-weight:700;margin-top:2px;letter-spacing:.4px}
.fin-date-pill.ingreso{background:#F0FDF4}
.fin-date-pill.ingreso .fin-date-day,.fin-date-pill.ingreso .fin-date-mon{color:var(--success)}
.fin-date-pill.egreso{background:#FEF2F2}
.fin-date-pill.egreso .fin-date-day,.fin-date-pill.egreso .fin-date-mon{color:var(--danger)}
.fin-date-pill.factura{background:var(--primary-light)}
.fin-date-pill.factura .fin-date-day,.fin-date-pill.factura .fin-date-mon{color:var(--primary)}
body.dark .fin-date-pill.ingreso{background:rgba(16,185,129,.18)}
body.dark .fin-date-pill.egreso{background:rgba(239,68,68,.18)}
body.dark .fin-date-pill.factura{background:rgba(37,99,235,.18)}
.fin-item-info{flex:1;min-width:0}
.fin-item-title{font-weight:600;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.fin-item-meta{font-size:11px;color:var(--text-light);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px;text-transform:capitalize}
.fin-item-right{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex-shrink:0}
.fin-monto{font-size:13px;font-weight:800;white-space:nowrap}
.fin-monto.ingreso{color:var(--success)}
.fin-monto.egreso{color:var(--danger)}
/* Responsive finanzas */
@media(max-width:480px){
  .fin-item{padding:10px 12px;gap:8px}
  .fin-date-pill{width:38px}
  .fin-date-day{font-size:12px}
  .fin-item-title{font-size:12px}
  .fin-monto{font-size:12px}
  .fin-list-header{padding:8px 12px}
}
@media(max-width:380px){
  .fin-date-pill{display:none}
}

/* ══ PULIDO GLOBAL MÓVIL ══ */
@media(max-width:600px){
  /* Toast centrado arriba: no tapa los botones de acción inferiores */
  .toast-container{bottom:auto;top:calc(12px + env(safe-area-inset-top,0px));right:12px;left:12px;align-items:center}
  .toast{min-width:0;max-width:100%;width:100%}
}
/* Focus visible para navegación con teclado, sin ensuciar el uso táctil */
button:focus-visible,a:focus-visible,[onclick]:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:8px}
/* Scrollbars finos y consistentes en listas internas */
.table-wrap::-webkit-scrollbar,.farma-prod-grid::-webkit-scrollbar,.farma-carrito-items::-webkit-scrollbar{height:6px;width:6px}
.table-wrap::-webkit-scrollbar-thumb,.farma-prod-grid::-webkit-scrollbar-thumb,.farma-carrito-items::-webkit-scrollbar-thumb{background:var(--border);border-radius:6px}
