/* SABIS: tema inspirado en la identidad pública de geclisa.com.
   Capa compartida: conserva los estilos funcionales de cada módulo. */
:root {
 --sabis-font-body:'DM Sans','Segoe UI',Arial,sans-serif;
 --sabis-font-heading:'Manrope','Segoe UI',Arial,sans-serif;
 --bs-font-sans-serif:var(--sabis-font-body);
 --bs-body-font-family:var(--sabis-font-body);
 --sabis-ink:#102b2d; --sabis-muted:#607476; --sabis-deep:#052f31;
 --sabis-primary:#073b3c; --sabis-hover:#0d4f50; --sabis-mint:#54dbc9;
 --sabis-mint-light:#baf4e9; --sabis-warm:#f5f3ec; --sabis-line:#dbe5e1;
 --text-primary:var(--sabis-ink); --text-secondary:var(--sabis-muted);
 --border-color:var(--sabis-line); --sidebar-width:260px;
 --bs-primary:#0d4f50; --bs-primary-rgb:13,79,80;
 --bs-link-color:#0d4f50; --bs-link-hover-color:#052f31;
 --bs-body-color:var(--sabis-ink); --bs-border-color:var(--sabis-line);
}
body { font-family:var(--sabis-font-body); color:var(--sabis-ink); background:var(--sabis-warm); }
h1,h2,h3,h4,h5,h6,.sidebar-title,.navbar-brand-title,.health-brand-name { font-family:var(--sabis-font-heading); letter-spacing:-.035em; color:var(--sabis-deep); }
.sabis-main { min-width:0; }
.sabis-content { max-width:1680px; margin:auto; padding:32px!important; }
.sabis-content h2 { font-size:clamp(1.5rem,2.4vw,2rem); }
.text-muted { color:var(--sabis-muted)!important; }
.sidebar { position:sticky; top:0; height:100dvh; min-height:0; overflow-y:auto; background:var(--sabis-deep); border:0; color:#fff; scrollbar-width:thin; scrollbar-color:#36716c transparent; }
.sidebar-brand { position:relative; padding:28px 24px; border-bottom:1px solid #ffffff1c; }
.sidebar-title { color:#fff; font-size:23px; font-weight:800; }
.sidebar-subtitle,.sidebar-brand small { color:#b3cfca; font-size:12px; }
.sidebar-logo,.brand-icon { background:var(--sabis-mint); color:var(--sabis-deep); border-radius:13px; box-shadow:none; width:44px; height:44px; display:grid; place-items:center; }
.sidebar-nav { padding:20px 14px; }
.sidebar-section-title,.nav-section { color:#94b9b2; font-size:10px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; padding:10px 12px; }
.sidebar-link { color:#d6e8e4; border:1px solid transparent; border-radius:10px; padding:11px 13px; font-size:13px; gap:12px; }
.sidebar-link:hover { color:#fff; background:#ffffff12; }
.sidebar-link.active { color:var(--sabis-deep); background:var(--sabis-mint); border-color:var(--sabis-mint); font-weight:700; box-shadow:0 6px 18px #001c1d20; }
.sidebar-link .sidebar-icon { color:inherit; }
.sidebar-footer { padding:20px 24px; }
.sidebar-footer,.sidebar-footer .text-muted,.sidebar-footer-role { color:#b3cfca!important; }
.sidebar-footer-line { background:#ffffff20; }
.sabis-navbar { min-height:80px; background:#fff; border-bottom:1px solid var(--sabis-line); padding:16px 32px; box-shadow:none; backdrop-filter:none; }
.navbar-brand-icon,.navbar-user-avatar { background:#e1f5ee; color:var(--sabis-hover); box-shadow:none; border:1px solid #cce8de; }
.navbar-brand-title,.navbar-user-name { color:var(--sabis-deep); }
.navbar-brand-subtitle,.navbar-user-role { color:var(--sabis-muted); }
.navbar-logout-btn { border:1px solid var(--sabis-line); background:white; border-radius:10px; color:var(--sabis-hover); }
.navbar-logout-btn:hover { background:#e7f5f0; color:var(--sabis-deep); }
.card { --bs-card-border-color:var(--sabis-line); --bs-card-border-radius:18px; background:#fff; box-shadow:0 4px 20px #052f3106; }
.card.border-0 { border:1px solid var(--sabis-line)!important; }
.card-header,.card-footer { background:#f8faf8; border-color:var(--sabis-line); }
.sabis-app .shadow-sm { box-shadow:0 5px 22px #052f3107!important; }
.btn { border-radius:10px; font-weight:600; padding:.6rem 1rem; }
.btn-sm { padding:.35rem .7rem; font-size:.8rem; }
.btn-primary,.btn-dark { --bs-btn-bg:#073b3c; --bs-btn-border-color:#073b3c; --bs-btn-hover-bg:#0d4f50; --bs-btn-hover-border-color:#0d4f50; --bs-btn-active-bg:#052f31; --bs-btn-active-border-color:#052f31; --bs-btn-disabled-bg:#607476; --bs-btn-disabled-border-color:#607476; --bs-btn-focus-shadow-rgb:84,219,201; }
.btn-outline-primary { --bs-btn-color:#0d4f50; --bs-btn-border-color:#99c2b9; --bs-btn-hover-bg:#0d4f50; --bs-btn-hover-border-color:#0d4f50; --bs-btn-active-bg:#052f31; --bs-btn-active-border-color:#052f31; }
.btn-light { --bs-btn-bg:#f4f8f5; --bs-btn-hover-bg:#e3f3ec; --bs-btn-color:#073b3c; --bs-btn-border-color:#dbe5e1; }
.sabis-primary-button { background:var(--sabis-primary); color:#fff; box-shadow:0 5px 12px #052f3112; border-radius:10px; }
.sabis-primary-button:hover { background:var(--sabis-hover); box-shadow:0 7px 16px #052f311c; }
.form-label,.sabis-form-label { color:var(--sabis-ink); font-weight:600; }
.form-control,.form-select,.sabis-form-control { border-color:#cddcd5; border-radius:10px; background-color:#fcfdfb; color:var(--sabis-ink); min-height:42px; }
.form-control:focus,.form-select:focus,.sabis-form-control:focus { border-color:#36958a; box-shadow:0 0 0 3px #54dbc92b; background-color:white; }
.form-check-input:checked { background-color:var(--sabis-hover); border-color:var(--sabis-hover); }
.table { --bs-table-color:var(--sabis-ink); --bs-table-border-color:#e4ebe6; --bs-table-hover-bg:#f0f8f3; --bs-table-striped-bg:#f8faf7; margin-bottom:0; }
.table > thead { --bs-table-bg:#eef4ef; --bs-table-color:#496760; }
.table > thead > tr > th { padding:14px 16px; font-size:.73rem; font-weight:700; letter-spacing:.04em; vertical-align:middle; }
.table > tbody > tr > td { padding:15px 16px; vertical-align:middle; font-size:.86rem; }
.table-responsive { border-radius:12px; }
.badge { font-weight:600; line-height:1.4; }
.page-link { color:var(--sabis-hover); border-color:var(--sabis-line); }
.active>.page-link,.page-link.active { background:var(--sabis-hover); border-color:var(--sabis-hover); }
.modal-content,.sabis-modal-content { border:1px solid var(--sabis-line); border-radius:20px; background:white; box-shadow:0 24px 70px #04262830; }
.modal-header,.sabis-modal-header { background:#edf6f0; border-bottom:1px solid var(--sabis-line); }
.sabis-modal-footer { background:#f7faf7; border-color:var(--sabis-line); }
.sabis-modal-title,.sabis-modal-icon { color:var(--sabis-primary); }
.progress { background:#e4eee7; border-radius:10px; }
.progress-bar { background:var(--sabis-hover); }
.sabis-dashboard-hero { position:relative; overflow:hidden; padding:32px 36px; border-radius:22px; background:var(--sabis-primary); }
.sabis-dashboard-hero::after { content:''; position:absolute; right:-50px; top:-100px; width:300px; height:300px; border:45px solid #54dbc912; border-radius:50%; pointer-events:none; }
.sabis-dashboard-hero h2 { color:white; margin-top:12px; position:relative; z-index:1; }
.sabis-dashboard-hero .text-muted { color:#c1ded7!important; max-width:640px; position:relative; z-index:1; }
.sabis-eyebrow { color:var(--sabis-mint); text-transform:uppercase; letter-spacing:.13em; font-size:.68rem; font-weight:700; }
.sabis-dashboard-card .fs-2 { color:var(--sabis-primary); font-family:var(--sabis-font-heading); }
.sabis-dashboard-card:has(.fs-2) { border-top:3px solid #54dbc9!important; }
.sabis-menu-toggle,.sabis-menu-close { display:none; }
.sabis-skip { position:fixed; top:-100px; left:20px; z-index:2000; padding:12px 18px; border-radius:8px; background:white; color:var(--sabis-deep); }
.sabis-skip:focus { top:12px; }
:focus-visible { outline:3px solid #29998c; outline-offset:3px; }
/* Acceso institucional */
.guest-page { background:var(--sabis-warm); }
.health-login { border-radius:24px; border:1px solid var(--sabis-line); box-shadow:0 24px 70px #04262816; }
.health-hero { background:var(--sabis-primary); padding:56px; }
.health-brand-name,.health-hero h2 { color:white; }
.health-hero h2 { font-size:clamp(2rem,3.2vw,2.8rem); line-height:1.18; font-weight:800; }
.health-hero p,.health-feature { color:#c8e3dc; }
.health-symbol { color:var(--sabis-mint); background:#ffffff10; border:1px solid #ffffff24; box-shadow:none; border-radius:18px; }
.health-brand-line { background:var(--sabis-mint); }
.feature-icon { color:var(--sabis-mint); background:#ffffff12; box-shadow:none; }
.health-circle { background:transparent; border:1px solid #54dbc930; }
.login-section { background:white; }
.login-eyebrow { color:var(--sabis-hover); background:#e5f6ef; }
.login-heading h1 { color:var(--sabis-deep); }
.login-heading p,.login-security,.guest-signature { color:var(--sabis-muted); }
.login-field label { color:var(--sabis-ink); }
.login-control input { border:1px solid #ccdbd3; border-radius:11px; background:#fbfcf9; color:var(--sabis-ink); }
.login-control input:focus { border-color:#36958a; box-shadow:0 0 0 3px #54dbc92b; }
.health-login-button { background:var(--sabis-primary); border-radius:11px; box-shadow:0 6px 14px #052f3115; }
.health-login-button:hover { background:var(--sabis-hover); box-shadow:0 8px 18px #052f3120; }
.login-medical-icon { color:var(--sabis-deep); background:var(--sabis-mint); }
@media (max-width:991.98px) {
 .sabis-content { padding:24px!important; }
 .sabis-navbar { padding:14px 20px; }
 .sabis-app.nav-ready .sidebar { position:fixed; left:0; top:0; z-index:1045; width:280px; visibility:hidden; transform:translateX(-100%); transition:transform .2s ease,visibility .2s; }
 .sabis-app.nav-ready.nav-open .sidebar { visibility:visible; transform:translateX(0); }
 .nav-ready .sabis-menu-toggle,.nav-ready .sabis-menu-close { display:grid; place-items:center; width:40px; height:40px; border:1px solid var(--sabis-line); border-radius:10px; background:white; color:var(--sabis-primary); flex-shrink:0; }
 .nav-ready .sabis-menu-close { position:absolute; top:12px; right:8px; width:30px; height:30px; color:#d8eee8; background:transparent; border-color:#ffffff30; font-size:24px; }
 .sabis-nav-backdrop { position:fixed; inset:0; background:#052f3177; z-index:1040; border:0; }
 .sabis-nav-backdrop[hidden] { display:none; }
 .nav-open { overflow:hidden; }
}
@media (max-width:575.98px) {
 .sabis-content { padding:18px 12px!important; }
 .sabis-navbar { gap:10px; padding:12px; min-height:70px; }
 .navbar-brand-icon,.navbar-brand-subtitle,.navbar-user-info,.navbar-divider,.logout-text { display:none; }
 .navbar-user-area { gap:8px; }
 .navbar-logout-btn { min-width:38px; padding:9px; }
 .sabis-dashboard-hero { padding:24px; border-radius:16px; }
 .guest-page { padding:14px; }
 .health-login { border-radius:20px; min-height:0; }
 .login-section { padding:32px 24px; }
 .sabis-content > .d-flex { flex-wrap:wrap; gap:12px; }
}
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto!important; transition:none!important; animation:none!important; } }

.sidebar-link > span:not(.sidebar-icon) { width:auto; text-align:left; font-size:inherit; }
.sidebar-icon { flex:0 0 22px; }
.sabis-product-table-card { border:1px solid var(--sabis-line); box-shadow:0 5px 22px #052f3107; }
.sabis-product-table thead th { background:#eef4ef; color:#496760; }
.sabis-product-table tbody tr:hover { background:#f0f8f3; }
.sabis-product-upload-btn { background:var(--sabis-primary); color:#fff; border-color:var(--sabis-primary); }
.sabis-product-upload-btn:hover { background:var(--sabis-hover); color:#fff; }
