/* ==========================================================================
   BIO ONE GROUP · sistema visual del ecosistema
   ========================================================================== */
/* Inter servida localmente (subset latino, pesos 400-800): sin origenes externos que bloqueen el render. */
@font-face{font-family:"Inter";font-style:normal;font-weight:400 800;font-display:swap;src:url(fonts/inter-latin.woff2) format("woff2")}
.con-sesion #login{display:none}
:root{
  --navy:#0b1f44;--navy-900:#04122b;--navy-800:#071c40;--ink:#0b1f44;--text:#23385a;--muted:#5a6d8a;--muted-2:#64748b;
  --blue:#1463ff;--blue-600:#0b52e0;--blue-50:#eaf2ff;--cyan:#0ea5e9;--teal:#12b3a0;
  --green:#16a34a;--green-50:#e8f8ef;--orange:#f08c00;--orange-50:#fff4e0;--red:#e5484d;--red-50:#ffeced;--violet:#7c5cf0;--violet-50:#f1edff;
  --bg:#f2f6fb;--card:#fff;--line:#e5ecf5;--line-2:#eef3f9;--radius:14px;
  --shadow:0 4px 18px rgba(16,42,90,.06);--shadow-lg:0 18px 50px rgba(8,28,66,.14);
  /* Tipografia global: una sola familia sans serif (Google Fonts: Inter) con respaldo generico sans-serif. */
  --font:"Inter","Helvetica Neue",Helvetica,Arial,sans-serif;--font-head:var(--font);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:14px;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;font-family:var(--font);color:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:var(--font-head);color:var(--ink)}
.hidden{display:none!important}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ico{width:20px;height:20px;flex:none;display:inline-block;vertical-align:middle}
.eyebrow{font-size:10.5px;font-weight:700;letter-spacing:.14em;color:var(--muted-2)}
.eyebrow.blue{color:var(--blue)}
.muted{color:var(--muted-2);font-size:12px}
.mono{font-family:var(--font);font-variant-numeric:tabular-nums;color:#4f6788;font-size:12.5px}
:focus-visible{outline:3px solid #7fb0ff;outline-offset:2px}

/* ---------- Botones ---------- */
.primary,.secondary,.danger-btn{border:0;border-radius:10px;padding:11px 18px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:.15s}
.primary{background:linear-gradient(90deg,#1a6dff,#0b4fd8);color:#fff;box-shadow:0 8px 18px rgba(20,99,255,.25)}
.primary:hover{filter:brightness(1.07)}
.secondary{background:#fff;color:var(--blue-600);border:1px solid #cfdcf0}
.secondary:hover{background:var(--blue-50)}
.danger-btn{background:var(--red-50);color:#c2343a}
.primary .ico,.secondary .ico{width:17px;height:17px}
.wide{width:100%;margin-top:18px}
.big{padding:14px 18px;font-size:15px}
.error{color:#d63c44!important;min-height:18px;font-size:12.5px}
.link-btn{border:0;background:none;color:var(--blue);font-weight:600;font-size:12.5px;display:inline-flex;align-items:center;gap:5px;padding:4px 0;white-space:nowrap}
.link-btn .ico{width:15px;height:15px}
.plain-link{border:0;background:none;padding:0;font-weight:600;color:var(--ink);text-align:left;font-size:13px;overflow-wrap:anywhere}
.plain-link:hover{color:var(--blue)}
.ver-btn{border:1px solid #cfdcf0;background:#fff;color:var(--blue-600);border-radius:8px;padding:6px 14px;font-weight:600;font-size:12.5px}
.ver-btn:hover{background:var(--blue-50)}
.table-btn{border:0;background:var(--blue-50);color:var(--blue-600);border-radius:8px;padding:7px 10px;font-size:11.5px;font-weight:600;margin:2px 4px 2px 0}
.table-btn:hover{background:#dce9ff}
button:disabled{opacity:.45;cursor:not-allowed}

/* ==========================================================================
   Login (inspirado en la portada del ecosistema)
   ========================================================================== */
.login{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) 440px;background:radial-gradient(120% 90% at 70% 20%,#0d3a86 0%,#062456 38%,#03132f 75%);position:relative;overflow:hidden}
.login-hero{position:relative;padding:48px 6% 0;display:flex;flex-direction:column;color:#fff;min-height:100vh}
.login-net{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.login-logo{position:relative;height:54px;width:auto;align-self:flex-start}
.login-hero-copy{position:relative;max-width:640px;margin-top:6vh}
.pill-label{display:inline-block;border:1px solid rgba(80,190,255,.5);background:rgba(20,140,255,.12);color:#7fd0ff;font-size:11px;letter-spacing:.14em;font-weight:700;padding:7px 14px;border-radius:8px}
.login-hero h1{color:#fff;font-size:clamp(34px,4.2vw,56px);line-height:1.08;margin:22px 0 18px;font-weight:800;letter-spacing:-.01em}
.login-hero h1 em{font-style:normal;color:#35b6ff}
.login-hero p{color:#cfe0f7;font-size:16.5px;line-height:1.6;max-width:540px;margin:0}
.login-features{display:flex;flex-wrap:wrap;gap:22px;margin-top:34px}
.feature{display:flex;flex-direction:column;align-items:center;gap:10px;width:96px;text-align:center;font-size:12.5px;color:#e4eeff;line-height:1.3}
.feature span{width:58px;height:58px;border-radius:12px;display:grid;place-items:center;background:rgba(10,40,95,.6);border:1px solid rgba(90,160,255,.45);box-shadow:inset 0 0 18px rgba(40,140,255,.25)}
.feature span .ico{width:28px;height:28px}
.feature .blue{color:#4fb0ff}.feature .violet{color:#9d8cff}.feature .green{color:#3fe0b5}.feature .cyan{color:#39d3f2}
.login-wave{position:relative;margin:auto -9% 0;color:#f4f8fd}
.login-wave svg{display:block;width:100%;height:90px}
.login-wave-copy{background:#f4f8fd;padding:6px 9% 44px;color:var(--text)}
.login-wave-copy h2{font-size:clamp(22px,2.3vw,30px);margin:10px 0;line-height:1.2;max-width:560px;font-weight:800}
.login-wave-copy h2 b{color:var(--blue-600)}
.login-wave-copy p{color:#4d6284;max-width:560px;line-height:1.6;margin:0}
.login-card{position:relative;z-index:2;align-self:center;margin:32px 32px 32px 0;background:#fff;border-radius:22px;padding:40px 36px;box-shadow:0 30px 80px rgba(0,10,40,.35);display:flex;flex-direction:column;align-items:stretch}
.login-card-logo{height:78px;width:auto;align-self:center}
.tagline{align-self:center;color:#0b7f72;font-weight:600;font-size:12.5px;margin-top:6px}
.login-card h2{text-align:center;font-size:26px;margin:28px 0 4px}
.login-sub{text-align:center;color:var(--muted);margin:0 0 26px}
.input-icon{position:relative;display:block;margin-bottom:14px}
.input-icon>i{position:absolute;left:15px;top:50%;transform:translateY(-50%);color:#71829c;display:flex}
.input-icon>i .ico{width:19px;height:19px}
.input-icon input{width:100%;border:1px solid #d7e1ee;border-radius:10px;padding:14px 46px;background:#fbfdff;outline:none;font-size:14px}
.input-icon input:focus{border-color:#6ea4ff;box-shadow:0 0 0 3px rgba(20,99,255,.12)}
.eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:none;color:#51647f;padding:8px;display:flex}
.remember{display:flex;align-items:center;gap:9px;font-size:13px;color:#3c5071;margin:6px 0 4px}
.remember input{width:17px;height:17px;accent-color:var(--blue)}
.login-foot{text-align:center;font-size:12.5px;color:var(--muted);margin:18px 0 0;border-top:1px solid var(--line);padding-top:18px}
.login-foot b{color:var(--blue-600);font-weight:600}

/* ==========================================================================
   Estructura de la aplicacion
   ========================================================================== */
.app{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}
.sidebar{background:linear-gradient(180deg,#051733 0%,#06204a 55%,#041634 100%);color:#d7e3f5;padding:20px 14px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow:hidden}
.sidebar::after{content:'';position:absolute;left:-40px;right:-40px;bottom:120px;height:220px;background:radial-gradient(closest-side,rgba(40,120,255,.18),transparent);pointer-events:none}
.side-brand{padding:4px 12px 22px;text-align:center}
.side-brand img{width:100%;max-width:190px;height:auto}
.sidebar nav{display:flex;flex-direction:column;gap:3px;overflow-y:auto;flex:1;position:relative;z-index:1;scrollbar-width:thin;scrollbar-color:#1c3a6b transparent}
.sidebar nav button{border:0;background:transparent;color:#d0dcef;padding:11px 14px;border-radius:10px;display:flex;align-items:center;gap:13px;text-align:left;font-size:14px;font-weight:500;transition:.15s}
.sidebar nav button .ico{color:#9fc3ff;width:20px;height:20px}
.sidebar nav button:hover{background:rgba(255,255,255,.06);color:#fff}
.sidebar nav button.active{background:linear-gradient(90deg,#1f7bff,#0d56e0);color:#fff;font-weight:600;box-shadow:0 8px 22px rgba(20,99,255,.4)}
.sidebar nav button.active .ico{color:#fff}
.side-card{position:relative;z-index:1;margin-top:14px;border:1px solid rgba(110,160,255,.25);background:rgba(10,35,80,.55);border-radius:14px;padding:14px}
.side-user{display:flex;align-items:center;gap:10px}
.side-user b,.side-user span{display:block}
.side-user b{color:#fff;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:150px}
.side-user span{font-size:11.5px;color:#9fb4d6;margin-top:2px}
.online{display:flex;align-items:center;gap:6px;font-size:11.5px;color:#a9c0e3;margin:10px 0}
.online i{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.2)}
.side-btn{width:100%;border:0;border-radius:9px;padding:10px;background:linear-gradient(90deg,#1f7bff,#0d56e0);color:#fff;font-weight:600}
.side-btn:hover{filter:brightness(1.08)}
.side-link{width:100%;margin-top:6px;border:0;background:none;color:#9fb6d9;font-size:12px;text-decoration:underline;cursor:pointer}
.side-link:hover{color:#fff}
.avatar{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#dbe9ff,#bcd5ff);color:var(--blue-600);display:grid;place-items:center;font-weight:700;font-size:12px;flex:none}
.main{min-width:0}
.topbar{height:68px;display:flex;justify-content:space-between;align-items:center;padding:0 28px;background:rgba(242,246,251,.9);backdrop-filter:blur(8px);position:sticky;top:0;z-index:5;border-bottom:1px solid var(--line)}
.topbar h2{margin:2px 0 0;font-size:19px}
.top-actions{display:flex;align-items:center;gap:10px}
.icon-btn{border:1px solid var(--line);background:#fff;border-radius:10px;width:40px;height:40px;color:#4d6284;display:grid;place-items:center;position:relative}
.icon-btn:hover{color:var(--blue)}
.content{padding:22px 28px 40px;max-width:1680px}
body[data-page="dashboard"] .topbar{display:none}

/* ==========================================================================
   Dashboard
   ========================================================================== */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;min-width:0}
.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.card-head h3{margin:0;font-size:15.5px;font-weight:700}
.chip-select{border:1px solid var(--line);border-radius:8px;padding:5px 10px;font-size:12px;color:#4d6284;background:#fff;margin-left:auto}
.card-head .chip-select+.link-btn{margin-left:0}
.empty-sm{padding:22px 10px;text-align:center;color:var(--muted);font-size:13px;display:flex;align-items:center;justify-content:center;gap:8px}
.empty-sm.ok{color:var(--green)}

/* Banner de bienvenida (administracion) */
.hero-banner{position:relative;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.8fr) minmax(280px,.95fr);border-radius:18px;overflow:hidden;background:linear-gradient(100deg,#ffffff 0%,#f3f8ff 45%,#dce9fb 70%,#b9d3f5 100%);border:1px solid var(--line);box-shadow:var(--shadow);min-height:170px;margin-bottom:18px}
.hero-text{padding:26px 30px;position:relative;z-index:1}
.hero-text h1{margin:0;font-size:30px;font-weight:800}
.hero-text h3{margin:6px 0 8px;font-size:19px;font-weight:700}
.hero-text p{margin:0;color:#4a5f80;line-height:1.55;max-width:470px}
.hero-meta{display:flex;flex-wrap:wrap;gap:0;margin-top:16px;font-size:13px;color:#445a7c}
.hero-meta span{padding:0 14px;border-left:1px solid #c9d6ea}
.hero-meta span:first-child{padding-left:0;border-left:0}
.hero-meta b{color:var(--ink);font-weight:700}
.hero-art{position:relative;color:#2f7bff}
.net-deco{position:absolute;inset:0;width:100%;height:100%}
.hero-brand{background:radial-gradient(120% 120% at 20% 0%,#0f3f8f,#061c44 60%,#04132f);color:#e7efff;display:flex;align-items:center;gap:18px;padding:18px 24px;border-left:1px solid rgba(255,255,255,.1);border-radius:14px;margin:10px;box-shadow:inset 0 0 0 1px rgba(120,170,255,.25)}
.hero-brand img{width:46%;min-width:120px;height:auto}
.hero-brand ul{list-style:none;margin:0;padding:0 0 0 16px;border-left:1px solid rgba(255,255,255,.15);display:flex;flex-direction:column;gap:9px;font-size:13px}
.hero-brand li{display:flex;align-items:center;gap:9px}
.hero-brand .ico{width:17px;height:17px;color:#6fc3ff}
.wave{display:inline-block}

/* Encabezado de clinica e ingeniero */
.hero-row{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,.8fr) minmax(0,.55fr);gap:16px;margin-bottom:16px}
.hero-hello{display:flex;align-items:center;gap:16px;padding:16px 20px;background:linear-gradient(100deg,#fff,#f4f8ff)}
.hero-hello h1,.hero-simple h1{margin:0;font-size:28px;font-weight:800}
.hero-hello p,.hero-simple p{margin:6px 0 0;color:#4a5f80}
.hello-avatar{width:58px;height:58px;border-radius:50%;background:var(--blue-50);color:var(--blue);display:grid;place-items:center;flex:none;box-shadow:inset 0 0 0 2px #cfe0ff}
.hello-avatar .ico{width:30px;height:30px}
.hero-clinic{display:flex;align-items:center;gap:14px}
.hero-clinic b,.hero-clinic span{display:block}
.hero-clinic b{font-family:var(--font-head);color:var(--ink);font-size:15.5px}
.hero-clinic span{color:var(--muted);font-size:12.5px;margin-top:4px}
.hero-clinic .kpi-bars{margin-left:auto}
.clinic-thumb{width:64px;height:48px;border-radius:10px;background:linear-gradient(135deg,#dbe8fb,#9fc0ee);display:grid;place-items:center;color:#fff;flex:none}
.clinic-thumb .ico{width:26px;height:26px}
.hero-date{display:flex;align-items:center;justify-content:space-between;gap:10px}
.hero-date b,.hero-date span{display:block}
.hero-date b{text-transform:capitalize;color:var(--ink);font-size:14px}
.hero-date span{font-size:12px;color:var(--muted);margin-top:4px}
.hero-date .ico{width:30px;height:30px;color:#f5a524}
.hero-simple{display:flex;align-items:center;gap:16px;margin:4px 0 18px}

/* Indicadores */
.kpis{display:grid;gap:14px;margin-bottom:16px}
.kpis.k5{grid-template-columns:repeat(5,minmax(0,1fr))}
.kpis.k4{grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px 18px;display:flex;align-items:center;gap:14px;min-width:0}
.kpi-icon{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;flex:none}
.kpi-icon .ico{width:26px;height:26px}
.kpi-body{min-width:0}
.kpi-body b,.kpi-body span,.kpi-body small{display:block}
.kpi-val{font-family:var(--font-head);font-size:26px;font-weight:800;line-height:1.1}
.kpi-body span{font-size:12.5px;color:#4d6284;margin-top:2px;line-height:1.3}
.kpi-body small{font-size:12px;font-weight:600;margin-top:3px;color:var(--muted)}
.kpi-bars{display:flex;align-items:flex-end;gap:3px;height:22px;margin-left:auto;align-self:flex-start;margin-top:6px}
.kpi-bars s{display:block;width:4px;border-radius:2px;background:currentColor;opacity:.9}
.kpi-bars s:nth-child(1){height:45%}.kpi-bars s:nth-child(2){height:75%}.kpi-bars s:nth-child(3){height:100%}
.blue{color:var(--blue)}.green{color:var(--green)}.orange{color:var(--orange)}.red{color:var(--red)}.violet{color:var(--violet)}.cyan{color:var(--cyan)}
.kpi-icon.blue,.feed-icon.blue{background:var(--blue-50)}
.kpi-icon.green,.feed-icon.green{background:var(--green-50)}
.kpi-icon.orange,.feed-icon.orange{background:var(--orange-50)}
.kpi-icon.red,.feed-icon.red{background:var(--red-50)}
.kpi-icon.violet,.feed-icon.violet{background:var(--violet-50)}
.kpi-icon.cyan{background:#e3f6fd}
.blue-text{color:var(--ink)}.green-text{color:var(--green)}.orange-text{color:var(--orange)}.red-text{color:var(--red)}.violet-text{color:var(--ink)}

/* Rejillas por rol */
.dash{display:grid;gap:16px;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(300px,.8fr);align-items:start}
.dash-admin{grid-template-areas:"areas mant side" "quick quick side" "table table side2" "agenda agenda agenda"}
.dash-clinica{grid-template-areas:"areas mant side" "quick quick side" "table table side" "agenda agenda agenda"}
.dash-ing{grid-template-areas:"areas areas side" "table table side" "agenda agenda agenda"}
.a-areas{grid-area:areas}.a-mant{grid-area:mant}.a-side{grid-area:side}.a-side2{grid-area:side2}.a-quick{grid-area:quick}.a-table{grid-area:table}.a-agenda{grid-area:agenda;min-width:0}
.stack{display:flex;flex-direction:column;gap:16px;min-width:0}
.a-areas,.a-mant{align-self:stretch}

/* Donas */
.donut-row{display:flex;align-items:center;gap:22px}
.donut{position:relative;width:170px;flex:none}
.donut svg{width:100%;height:auto;display:block}
.donut svg circle{transition:opacity .15s}
.donut svg:hover circle{opacity:.55}
.donut svg circle:hover{opacity:1}
.donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none}
.donut-center b{font-family:var(--font-head);font-size:28px;font-weight:800;color:var(--ink);line-height:1}
.donut-center span{font-size:11.5px;color:#4d6284;max-width:92px;margin-top:4px;line-height:1.25}
.legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px;flex:1;min-width:0}
.legend li{display:flex;align-items:center;gap:9px;font-size:12.5px;color:#34496b}
.legend i{width:10px;height:10px;border-radius:50%;flex:none}
.legend span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.legend b{font-weight:600;color:var(--ink);white-space:nowrap}
.legend small{color:var(--muted);font-weight:500}
.compliance{margin-top:16px;padding-top:14px;border-top:1px solid var(--line-2)}
.compliance-head{display:flex;justify-content:space-between;align-items:baseline}
.compliance-head b{font-size:13.5px;color:var(--ink)}
.compliance-head strong{font-family:var(--font-head);font-size:22px;color:var(--ink)}
.progress{height:9px;border-radius:9px;background:#e8eef6;margin:8px 0;overflow:hidden}
.progress i{display:block;height:100%;border-radius:9px;background:linear-gradient(90deg,#16a34a,#34d27b)}
.compliance small{font-size:12px;color:var(--muted)}

/* Acciones rapidas */
.quick-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));padding:8px}
.quick-actions button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:9px;padding:14px 6px;font-size:12.5px;color:#34496b;line-height:1.3;border-radius:10px;text-align:center}
.quick-actions button+button{box-shadow:-1px 0 0 var(--line-2)}
.quick-actions button:hover{background:#f5f9ff}
.quick-actions span{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;background:var(--blue-50);color:var(--blue)}
.quick-actions button:nth-child(4n+1) span{background:var(--green-50);color:var(--green)}
.quick-actions button:nth-child(4n+3) span{background:var(--violet-50);color:var(--violet)}
.quick-actions span .ico{width:24px;height:24px}

/* Listas laterales */
.feed{list-style:none;margin:0;padding:0}
.feed li{display:flex;gap:12px;align-items:flex-start;padding:11px 0;border-top:1px solid var(--line-2)}
.feed li:first-child{border-top:0;padding-top:0}
.feed-icon{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none}
.feed-icon .ico{width:18px;height:18px}
.feed li>div{flex:1;min-width:0}
.feed b,.feed span,.feed small{display:block}
.feed b{font-size:13px;color:var(--ink);font-weight:600}
.feed span{font-size:12px;color:#4d6284;margin-top:2px}
.feed small{font-size:11.5px;color:var(--muted);margin-top:2px}
.feed time{font-size:11.5px;color:var(--muted);white-space:nowrap}
.feed .pill{flex:none}
.crit-list,.upcoming,.clinic-pins{list-style:none;margin:0;padding:0}
.crit-list li{display:flex;align-items:center;gap:12px;padding:10px 6px;border-top:1px solid var(--line-2);cursor:pointer;border-radius:8px}
.crit-list li:first-child{border-top:0}
.crit-list li:hover{background:#f7faff}
.crit-list li>div{flex:1;min-width:0}
.crit-list b,.crit-list span{display:block}
.crit-list b{font-size:13px;color:var(--ink)}
.crit-list div span{font-size:12px;color:var(--muted);margin-top:2px}
.upcoming li{display:flex;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line-2)}
.upcoming li:first-child{border-top:0;padding-top:0}
.upcoming li>div:not(.date-block){flex:1;min-width:0}
.upcoming b,.upcoming span,.upcoming small{display:block}
.upcoming div b{font-size:13px;color:var(--ink)}
.upcoming div span,.upcoming div small{font-size:12px;color:var(--muted);margin-top:2px}
.date-block{width:42px;text-align:center;flex:none}
.date-block b{font-family:var(--font-head);font-size:20px;color:var(--ink);line-height:1}
.date-block span{font-size:10.5px;color:var(--muted);font-weight:700;letter-spacing:.06em;margin-top:2px}
.eq-thumb{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#eef3fa,#dfe8f4);color:#5a7090;display:grid;place-items:center;flex:none}
.eq-thumb .ico{width:18px;height:18px}
.eq-thumb.lg{width:44px;height:44px}.eq-thumb.lg .ico{width:22px;height:22px}
.eq-thumb.xl{width:74px;height:74px;border-radius:12px}.eq-thumb.xl .ico{width:34px;height:34px}
.clinic-pins{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:4px 22px}
.clinic-pins li{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line-2)}
.clinic-pins li>div{flex:1;min-width:0}
.clinic-pins b,.clinic-pins span{display:block}
.clinic-pins b{font-size:13.5px;color:var(--ink)}
.clinic-pins span{font-size:12px;color:var(--muted);margin-top:2px}
.clinic-pins em{font-style:normal;font-size:12.5px;color:#4d6284;white-space:nowrap}
.pin .ico{width:24px;height:24px;fill:currentColor;fill-opacity:.15}

/* Tarjeta de alerta (ingeniero) */
.alert-card{border-color:#ffd3d5;box-shadow:0 14px 40px rgba(229,72,77,.12)}
.alert-head{display:flex;align-items:center;gap:10px;color:var(--red);font-size:12px;letter-spacing:.04em}
.alert-head .ico{width:30px;height:30px;padding:6px;border-radius:50%;background:var(--red);color:#fff}
.alert-head time{margin-left:auto;color:var(--muted);letter-spacing:0;font-weight:500}
.alert-body{display:flex;gap:14px;margin:14px 0}
.alert-body b,.alert-body strong,.alert-body span{display:block}
.alert-body b{font-family:var(--font-head);color:var(--ink);font-size:15px}
.alert-body strong{color:var(--blue-600);font-size:13.5px;margin:3px 0}
.alert-body span{font-size:12.5px;color:var(--muted);margin-bottom:8px}
.alert-actions{display:grid;grid-template-columns:1fr 1.4fr;gap:10px}
.alert-actions button{padding:10px 12px;font-size:13px}

/* Pastillas de estado */
.pill{display:inline-flex;align-items:center;gap:6px;border-radius:7px;padding:4px 9px;font-size:11.5px;font-weight:600;white-space:nowrap}
.pill i{width:6px;height:6px;border-radius:50%;background:currentColor}
.pill.green{background:var(--green-50);color:#138a3f}
.pill.orange{background:var(--orange-50);color:#b86400}
.pill.red{background:var(--red-50);color:#c2343a}
.pill.blue{background:var(--blue-50);color:var(--blue-600)}
.pill.violet{background:var(--violet-50);color:#5b3fd0}

/* Tablas del dashboard */
.table-wrap{overflow-x:auto;margin:0 -20px -18px;border-top:1px solid var(--line-2)}
.dash-table{min-width:720px}
.dash-table th{background:#f6f9fd}
.dash-table td{padding:11px 16px}
.dash-table th:first-child,.dash-table td:first-child{padding-left:20px}
.eq-cell{display:flex;align-items:center;gap:10px}
.eq-cell b{display:inline}
.table-tools{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:-4px 0 14px}
.tabs{display:flex;gap:6px;flex-wrap:wrap}
.tabs button{border:0;background:#f0f5fc;color:#3c5071;border-radius:9px;padding:8px 14px;font-size:12.5px;font-weight:500}
.tabs button[aria-selected="true"]{background:linear-gradient(90deg,#1f7bff,#0d56e0);color:#fff;font-weight:600}
.search{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:0 14px;background:#fff;min-width:240px;cursor:text;transition:border-color .15s,box-shadow .15s}
.search:hover{border-color:#9dbcf0}
.search:focus-within{border-color:#6ea4ff;box-shadow:0 0 0 3px rgba(20,99,255,.12)}
.search.wide{flex:1}
.search .ico{width:18px;height:18px;flex:none;color:var(--muted);transition:color .15s,transform .15s}
.search:hover .ico,.search:focus-within .ico{color:var(--blue);transform:scale(1.1)}
.search input,.filters .search input,.filters .search input:focus{border:0;outline:none;box-shadow:none;padding:11px 0;flex:1;min-width:0;background:none}
@media (prefers-reduced-motion:reduce){.search,.search .ico{transition:none}.search:hover .ico,.search:focus-within .ico{transform:none}}

/* ==========================================================================
   Vistas de gestion (tablas, formularios, modales)
   ========================================================================== */
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}
.toolbar p{color:#4d6284;margin:0}
.filters{display:flex;gap:10px;margin-bottom:14px;align-items:center;flex-wrap:wrap}
.filters input:not([type=checkbox]){flex:1;min-width:200px}
.filters select{width:200px}
.filters label{display:flex;align-items:center;gap:6px;font-size:13px;color:#4d6284}
.formgrid label{display:flex;flex-direction:column;gap:7px;color:#3c5071;font-size:12.5px;font-weight:600}
.formgrid input,.formgrid select,.formgrid textarea,.filters input,.filters select{border:1px solid #d7e1ee;background:#fbfdff;border-radius:10px;padding:11px 13px;color:var(--text);outline:none;font-weight:400}
.formgrid input:focus,.formgrid select:focus,.formgrid textarea:focus,.filters input:focus,.filters select:focus{border-color:#6ea4ff;box-shadow:0 0 0 3px rgba(20,99,255,.12)}
.formgrid small{font-weight:400;color:var(--muted)}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:auto;box-shadow:var(--shadow)}
.panel>h3{margin:0;padding:18px 20px;border-bottom:1px solid var(--line-2);font-size:15px}
.panel+.panel,.panel+p,p+.panel{margin-top:16px}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:16px 20px;border-bottom:1px solid var(--line-2)}
.panel-head h3,.panel-head h4{margin:0;font-size:15px}
.panel-head span{font-size:12px;color:var(--muted)}
table{width:100%;border-collapse:collapse;min-width:700px}
th,td{text-align:left;padding:13px 18px;border-bottom:1px solid var(--line-2);font-size:13px;vertical-align:middle}
th{font-size:11px;color:#6f82a0;text-transform:uppercase;letter-spacing:.06em;font-weight:600;background:#f6f9fd}
tbody tr:hover{background:#fafcff}
td b,td small{display:block}
td b{color:var(--ink);font-weight:600}
td small{color:var(--muted);margin-top:3px;font-size:12px}
.status,.tag{display:inline-flex;align-items:center;gap:6px;border-radius:7px;padding:4px 9px;font-size:11.5px;font-weight:600;white-space:nowrap;text-transform:none}
.status::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor}
.status.green{background:var(--green-50);color:#138a3f}.status.orange{background:var(--orange-50);color:#b86400}.status.blue{background:var(--blue-50);color:var(--blue-600)}.status.violet{background:var(--violet-50);color:#5b3fd0}.status.red{background:var(--red-50);color:#c2343a}
.tag.blue{background:var(--blue-50);color:var(--blue-600)}
.tag.red{background:var(--red-50);color:#c2343a}
.grid2{display:grid;grid-template-columns:1.2fr .8fr;gap:16px}
.panel-com{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
.panel-com table{min-width:0}
.panel-com th,.panel-com td{padding:10px 12px}
.barras{display:flex;flex-direction:column;gap:10px}
.barra-fila{display:grid;grid-template-columns:minmax(90px,30%) 1fr auto;grid-template-rows:auto auto;column-gap:10px;align-items:center;font-size:13px}
.barra-fila>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.barra-fila small{grid-column:2/4;color:var(--muted,#6b7a90);font-size:11.5px}
.barra{height:10px;background:var(--blue-50);border-radius:6px;overflow:hidden}
.barra i{display:block;height:100%;background:var(--blue-600);border-radius:6px}
.kpis-dinero .kpi-val{font-size:21px;white-space:nowrap}
.conceptos-cot{display:flex;flex-direction:column;gap:8px;border:1px solid var(--line);border-radius:10px;padding:12px}
.conceptos-cot legend{font-size:12.5px;font-weight:600;color:#3c5071;padding:0 4px}
.conceptos-cot>button{align-self:flex-start}
.fila-concepto{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,2fr) minmax(0,1fr) auto;gap:8px;align-items:center}
.fila-concepto input,.fila-concepto select{border:1px solid #d7e1ee;background:#fbfdff;border-radius:10px;padding:9px 11px;min-width:0}
.pre{white-space:pre-line}
.section details{margin-bottom:16px}
@media (max-width:640px){.fila-concepto{grid-template-columns:1fr 1fr}.fila-concepto input[name=c_concepto]{grid-column:1/-1;grid-row:1}}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:0 0 16px}
.stat{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;display:flex;gap:14px;align-items:center;box-shadow:var(--shadow)}
.stat-icon{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;font-weight:700;flex:none}
.stat-icon .ico{width:24px;height:24px}
.stat-icon.blue{background:var(--blue-50)}.stat-icon.violet{background:var(--violet-50)}.stat-icon.green{background:var(--green-50)}.stat-icon.orange{background:var(--orange-50)}.stat-icon.cyan{background:#e3f6fd}.stat-icon.red{background:var(--red-50)}
.stat span,.stat b{display:block}
.stat span{font-size:12.5px;color:#4d6284}
.stat b{font-family:var(--font-head);font-size:22px;color:var(--ink);margin-top:3px}
.calendar-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}
.calendar-strip>*{background:#fff;border:1px solid var(--line);padding:15px 18px;border-radius:var(--radius);box-shadow:var(--shadow);border-left:4px solid var(--blue)}
.calendar-strip>:nth-child(1){border-left-color:var(--orange)}.calendar-strip>:nth-child(3){border-left-color:var(--violet)}.calendar-strip>:nth-child(4){border-left-color:var(--green)}
/* Tarjetas de estado que filtran la tabla de mantenimientos */
.calendar-strip button{font:inherit;text-align:left;cursor:pointer;transition:.15s}
.calendar-strip button:hover{transform:translateY(-1px);box-shadow:var(--shadow-lg)}
.calendar-strip button[aria-pressed="true"]{background:var(--blue-50);box-shadow:0 0 0 2px var(--blue)}
.calendar-strip b,.calendar-strip span{display:block}
.calendar-strip b{font-family:var(--font-head);font-size:24px;color:var(--ink)}
.calendar-strip span{font-size:12.5px;color:var(--muted);margin-top:2px}
.cards3{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.person-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);position:relative;min-height:120px}
.person-avatar{width:46px;height:46px;background:var(--blue-50);color:var(--blue-600);border-radius:50%;display:grid;place-items:center;font-weight:700;margin-bottom:12px}
.person-card b,.person-card span,.person-card small{display:block}
.person-card b{color:var(--ink)}
.person-card span{color:#4d6284;font-size:12.5px;margin-top:4px}
.person-card small{color:var(--muted);font-size:12px;margin-top:8px}
.person-card em{position:absolute;top:16px;right:16px;font-style:normal}
.profile{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.profile-head{padding:26px;display:flex;align-items:center;gap:17px;border-bottom:1px solid var(--line-2);background:linear-gradient(100deg,#fff,#f1f7ff)}
.clinic-logo{width:62px;height:62px;border-radius:16px;background:linear-gradient(135deg,#1f7bff,#0d56e0);color:#fff;display:grid;place-items:center;font-size:19px;font-weight:700}
.profile-head h1{margin:3px 0 5px}
.profile-head p{margin:0;color:var(--muted)}
.profile-head .status{margin-left:auto}
.info-grid{display:grid;grid-template-columns:repeat(3,1fr)}
.info-grid>div{padding:20px 22px;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.info-grid small,.info-grid b{display:block}
.info-grid small{font-size:11.5px;color:var(--muted)}
.info-grid b{margin-top:5px;font-size:13.5px;color:var(--ink)}
.modal-back{position:fixed;inset:0;background:rgba(4,18,43,.45);display:none;align-items:center;justify-content:center;padding:20px;z-index:20;backdrop-filter:blur(4px)}
.modal-back.show{display:flex}
.modal{background:#fff;border-radius:18px;width:min(780px,100%);max-height:90vh;overflow:auto;box-shadow:var(--shadow-lg);padding:26px}
.modal-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px}
/* Boton "Volver" de todas las ventanas emergentes (regresa a la ventana anterior o cierra si es la primera) */
.modal-volver{border:0;background:none;color:var(--blue-600);font-weight:600;font-size:13px;padding:4px 8px 4px 0;margin:-8px 0 8px;cursor:pointer;display:inline-flex;align-items:center;gap:4px;border-radius:6px}
.modal-volver:hover{color:var(--blue);text-decoration:underline}
.modal-volver:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.modal-title h2{margin:6px 0 3px;font-size:21px}
.modal-title p{margin:0;color:var(--muted)}
.close{border:0;background:#f0f4f9;width:34px;height:34px;border-radius:50%;font-size:20px;color:#4d6284;flex:none}
.close:hover{background:#e4ebf5}
.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.formgrid .wide{grid-column:1/-1}
.section{padding-top:20px;margin-top:20px;border-top:1px solid var(--line-2)}
.section h3{font-size:14px;margin:0 0 12px}
.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.detail-grid>div{padding:13px 14px;border-right:1px solid var(--line-2);border-bottom:1px solid var(--line-2)}
.detail-grid small,.detail-grid b{display:block}
.detail-grid small{font-size:11px;color:var(--muted)}
.detail-grid b{font-size:13px;margin-top:4px;color:var(--ink)}
.timeline{display:flex;gap:12px;padding:10px 0}
.timeline>i{width:10px;height:10px;border-radius:50%;background:var(--blue);margin-top:5px;box-shadow:0 0 0 4px var(--blue-50);flex:none}
.timeline b,.timeline span{display:block}
.timeline b{color:var(--ink)}
.timeline span{font-size:12px;color:var(--muted);margin-top:3px}
.timeline p{font-size:12.5px;color:#4d6284;line-height:1.5}
.docs{display:flex;flex-wrap:wrap;gap:8px}
.docs a{background:#f2f7fc;padding:8px 10px;border-radius:8px;font-size:12px;color:var(--blue)}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px;flex-wrap:wrap}
.inline-actions{display:flex;gap:8px;flex-wrap:wrap}
.empty{background:#fff;border:1px dashed #cfdbea;border-radius:var(--radius);padding:46px;text-align:center;color:var(--muted)}
.toast{position:fixed;right:24px;bottom:24px;background:var(--navy);color:#fff;padding:13px 18px;border-radius:10px;box-shadow:var(--shadow-lg);transform:translateY(20px);opacity:0;pointer-events:none;transition:.2s;z-index:30;font-size:13px}
.toast.show{opacity:1;transform:translateY(0)}
.toast.ok{background:#138a3f}.toast.bad{background:#c2343a}
.upload-row{display:flex;gap:8px;align-items:center;margin-top:12px;flex-wrap:wrap}
.upload-row select,.upload-row input{border:1px solid var(--line);background:#fbfdff;border-radius:8px;padding:9px;color:#4d6284;font-size:12px}
.upload-row input{flex:1;min-width:180px}
/* Adjuntos: descargas autenticadas sobre <button> */
.doc-item{display:inline-flex;align-items:center;gap:4px;background:#f2f7fc;border-radius:8px;overflow:hidden}
.doc-link{background:none;border:0;padding:8px 10px;font-size:12px;color:var(--blue);cursor:pointer}
.doc-link:hover{text-decoration:underline}
.doc-del{background:none;border:0;padding:8px;font-size:13px;line-height:1;color:#c0392b;cursor:pointer}
.doc-del:hover{background:#fdecea}
.doc-rep,.doc-ver{background:none;border:0;padding:8px 6px;font-size:12px;line-height:1;color:var(--blue);cursor:pointer}
.doc-ver{font-weight:700}
.doc-rep:hover,.doc-ver:hover{background:#e3eefc}
.caract{display:inline-block;margin-top:3px;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600}
.caract.pendiente_caracterizacion{background:#fff4e5;color:#b25f00}
.caract.pendiente_validacion{background:#e8f0fe;color:#1a56c4}
.aviso-caract{align-items:center;margin-bottom:12px}
.aviso-caract .primary{margin-left:auto;white-space:nowrap}
/* Informe tecnico: respeta los saltos de linea del ingeniero */
.report-text{white-space:pre-wrap;font-size:13px;color:#4d6284;line-height:1.55;margin:0}
.event-data{white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow:auto;background:#f4f8fc;padding:12px;border-radius:8px;font-size:12px}
.formgrid textarea{width:100%}
.filters input[type=checkbox]{width:auto;min-width:0}
/* Notificaciones */
.notif-count{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--red);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}
.notif-list{display:flex;flex-direction:column;gap:8px;max-height:380px;overflow-y:auto;margin:14px 0}
.notif-item{display:flex;align-items:center;gap:10px;padding:11px 13px;border:1px solid var(--line);border-radius:12px;background:#fff}
.notif-item.nueva{background:#f4f9ff;border-color:#c9ddfb}
.notif-item>div{flex:1}
.notif-item b{display:block;font-size:13px;color:var(--ink)}
.notif-item small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:14px;font-size:12.5px;color:#4d6284}
.catalogo-panel{margin-bottom:16px}

/* Agenda de mantenimientos */
.agenda-panel{min-width:0}
.agenda-panel .panel-head{flex-wrap:wrap;gap:10px}
.agenda-panel .inline-actions .secondary{padding:7px 13px}
.agenda-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px;padding:0 20px 18px}
.agenda-mes{text-transform:capitalize;margin:14px 0 10px;padding:0 20px;font-size:17px}
.agenda-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.agenda-semana{text-align:center;font-size:11.5px;padding:6px 0;color:var(--muted);font-weight:600}
.agenda-dia{min-height:62px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);cursor:pointer;font-weight:600}
.agenda-dia:hover{border-color:#b7cff5;background:#f7faff}
.agenda-dia small{font-size:10.5px;color:#fff;background:var(--blue);border-radius:6px;padding:1px 6px;font-weight:600}
.agenda-dia.agenda-hoy{border:2px solid var(--blue)}
.agenda-dia[aria-pressed=true]{background:linear-gradient(135deg,#1f7bff,#0d56e0);color:#fff;border-color:transparent}
.agenda-dia[aria-pressed=true] small{background:#fff;color:var(--blue-600)}
.agenda-orden{display:flex;flex-direction:column;gap:5px;text-align:left;width:100%;padding:13px 14px;margin-bottom:8px;border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:10px;background:#fbfdff;cursor:pointer;color:var(--ink);overflow-wrap:anywhere}
.agenda-orden:hover{background:#f3f8ff}
.agenda-orden span,.agenda-ayuda{font-size:12px;color:#4d6284}
.agenda-orden small{color:var(--blue-600);font-weight:600}
.agenda-dia small.agenda-cal{background:var(--violet)}
.agenda-orden.agenda-cal{border-left-color:var(--violet)}
.agenda-orden.agenda-ejecutada{border-left-color:var(--green);background:#fff}
.agenda-layout .panel-head{padding:0 0 12px;border:0}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media(max-width:1400px){
  .kpis.k5{grid-template-columns:repeat(3,minmax(0,1fr))}
  .hero-banner{grid-template-columns:minmax(0,1fr) minmax(260px,.8fr)}
  .hero-art{display:none}
}
@media(max-width:1200px){
  .dash{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .dash-admin{grid-template-areas:"areas mant" "quick quick" "table table" "side side2" "agenda agenda"}
  .dash-clinica{grid-template-areas:"areas mant" "quick quick" "table table" "side side" "agenda agenda"}
  .dash-ing{grid-template-areas:"areas areas" "side side" "table table" "agenda agenda"}
  .hero-row{grid-template-columns:1fr 1fr}
  .hero-hello{grid-column:1/-1}
  .donut-row{flex-direction:column;align-items:stretch}
  .donut{align-self:center}
}
@media(max-width:900px){
  .login{grid-template-columns:1fr}
  .login-hero{min-height:auto;padding-bottom:0}
  .login-card{margin:-40px 20px 30px;order:2}
  .login-hero-copy{margin-top:30px}
  .app{grid-template-columns:78px minmax(0,1fr)}
  .sidebar{padding:16px 8px}
  .side-brand{padding:0 0 16px}
  .side-brand img{content:url(brand/logo-white-compact.min.png);max-width:56px}
  .sidebar nav span,.side-card{display:none}
  .sidebar nav button{justify-content:center;padding:12px}
  .content{padding:18px}
  .topbar{padding:0 18px}
  body[data-page="dashboard"] .topbar{display:flex}
  .dash,.dash-admin,.dash-clinica,.dash-ing{grid-template-columns:minmax(0,1fr);grid-template-areas:none}
  .dash>*{grid-area:auto!important}
  .kpis.k5,.kpis.k4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hero-banner{grid-template-columns:1fr}
  .agenda-layout,.grid2,.panel-com,.formgrid{grid-template-columns:1fr}
  .info-grid{grid-template-columns:1fr 1fr}
  .calendar-strip{grid-template-columns:1fr 1fr}
  .donut-row{flex-direction:row}
}
@media(max-width:600px){
  .login-hero{padding:30px 20px 0}
  .login-features{gap:12px}
  .feature{width:84px}
  .login-card{padding:30px 22px}
  .hero-row,.kpis.k5,.kpis.k4{grid-template-columns:1fr}
  .hero-text h1,.hero-hello h1,.hero-simple h1{font-size:23px}
  .content{padding:14px 12px 90px}
  .app{grid-template-columns:1fr}
  .sidebar{position:fixed;z-index:10;bottom:0;top:auto;height:66px;width:100%;padding:6px;flex-direction:row;background:#061c40}
  .sidebar::after,.side-brand{display:none}
  .sidebar nav{flex-direction:row;overflow-x:auto;gap:2px}
  .sidebar nav button{flex-direction:column;gap:3px;padding:7px 10px;min-width:64px}
  .sidebar nav button span{display:block;font-size:9.5px;white-space:nowrap}
  .donut-row{flex-direction:column}
  .info-grid,.detail-grid,.calendar-strip{grid-template-columns:1fr}
  .filters select{width:100%}
  .alert-actions{grid-template-columns:1fr}
  .agenda-etiqueta{display:none}
  .agenda-dia{min-height:46px}
  .agenda-grid{gap:3px}
  .agenda-layout{padding:0 10px 12px}
  .agenda-mes{padding:0 10px}
}

/* Ajustes finos */
.dash-ing .a-areas{align-self:start}
.alert-body .pill{display:inline-flex;margin:0}
.dash-table td{white-space:nowrap}
.dash-table td:first-child{white-space:normal;min-width:190px}
.feed-icon.blue{background:#e1ecff}.feed-icon.green{background:#dcf5e6}.feed-icon.orange{background:#ffedcc}.feed-icon.red{background:#ffe0e1}.feed-icon.violet{background:#e9e3ff}
@media(min-width:901px){
  .login-hero{grid-column:1/-1;grid-row:1}
  .login-card{grid-column:2;grid-row:1;margin:32px 40px 32px 0;align-self:center}
  .login-hero-copy{max-width:min(640px,calc(100% - 520px))}
  .login-wave-copy>*{max-width:min(560px,calc(100% - 480px))}
}
.dash-admin{grid-template-rows:auto auto auto auto}
.dash-clinica{grid-template-rows:auto auto 1fr auto}
.dash-ing{grid-template-rows:auto 1fr auto}
.dash .a-table{align-self:start}
@media(max-width:900px){.dash{grid-template-rows:none!important}}
@media(max-width:600px){.app{grid-template-columns:minmax(0,1fr)}.hero-meta span{padding:0 8px}.hero-brand{flex-direction:column;align-items:flex-start}.hero-brand ul{border-left:0;padding-left:0}.top-actions .avatar{display:none}}

/* Garantia y hoja de vida */
.garantia-campo{display:flex;flex-direction:column;gap:10px}
/* Interruptor de advertencia ("NO APLICA GARANTÍA"): tarjeta neutra apagado, naranja encendido.
   El checkbox real queda oculto visualmente pero sigue siendo el control (teclado y lector de pantalla). */
.formgrid .switch-aviso{flex-direction:row;align-items:center;gap:12px;padding:12px 14px;border:1.5px solid #d7e1ee;border-radius:12px;background:#fbfdff;cursor:pointer;font-weight:400;transition:background .15s,border-color .15s,box-shadow .15s;position:relative}
.formgrid .switch-aviso:hover{border-color:#f5b65c}
.switch-aviso input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
.switch-pista{flex:none;width:42px;height:24px;border-radius:999px;background:#cfd8e5;position:relative;transition:background .15s}
.switch-pista::after{content:'';position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(4,18,43,.3);transition:transform .15s}
.switch-texto b,.switch-texto small{display:block}
.switch-texto b{font-size:12.5px;letter-spacing:.04em;color:var(--ink)}
.switch-texto small{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.35}
.formgrid .switch-aviso:has(input:checked){background:var(--orange-50);border-color:var(--orange);box-shadow:0 0 0 3px rgba(240,140,0,.15)}
.switch-aviso:has(input:checked) .switch-pista{background:var(--orange)}
.switch-aviso:has(input:checked) .switch-pista::after{transform:translateX(18px)}
.switch-aviso:has(input:checked) .switch-texto b{color:#8a4b00}
.switch-aviso:has(input:focus-visible){outline:3px solid #7fb0ff;outline-offset:2px}
@media (prefers-reduced-motion:reduce){.switch-pista,.switch-pista::after,.formgrid .switch-aviso{transition:none}}
.formgrid .check-inline{flex-direction:row;align-items:center;gap:8px;font-weight:700;color:#b86400;font-size:12px;letter-spacing:.02em}
.check-inline input{width:17px;height:17px;accent-color:var(--orange)}
.formgrid input:disabled{background:#eef2f7;color:var(--muted-2)}
.hoja-vida{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.hoja-vida p{margin:0}
.tip-wrap{position:relative;display:inline-flex}
.tip{position:absolute;left:0;bottom:calc(100% + 10px);width:320px;max-width:80vw;background:var(--navy);color:#fff;font-size:12px;line-height:1.5;padding:10px 12px;border-radius:10px;box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transition:.15s;z-index:5;pointer-events:none}
.tip::after{content:'';position:absolute;left:24px;top:100%;border:6px solid transparent;border-top-color:var(--navy)}
.tip-wrap:hover .tip,.tip-wrap:focus-within .tip{opacity:1;visibility:visible}
.pasos{margin:0 0 18px;padding-left:20px;color:#3c5071;line-height:1.6;font-size:13px}
.pasos li+li{margin-top:4px}
.feed-icon.cyan{background:#dff4fb}

/* Gestionar mantenimiento: equipo en una linea; lo ya registrado va plegado al final */
.modal-title p.equipo-linea{margin-top:4px;font-size:12.5px;color:var(--ink);font-weight:500}
.detalle-caso{margin-top:20px;border:1px solid var(--line);border-radius:12px;background:#f8fafd}
.detalle-caso>summary{cursor:pointer;padding:12px 16px;font-size:13.5px;font-weight:600;color:var(--blue-600);list-style:none;display:flex;align-items:center;gap:8px}
.detalle-caso>summary::-webkit-details-marker{display:none}
.detalle-caso>summary::before{content:'';width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:.15s}
.detalle-caso[open]>summary::before{transform:rotate(45deg)}
.detalle-caso>.section{margin:0 16px;padding-bottom:16px}
.detail-grid.cols4{grid-template-columns:repeat(4,minmax(0,1fr))}
.formgrid input[readonly]{background:#eef2f7;color:var(--ink);font-weight:600}
@media(max-width:600px){.detail-grid.cols4{grid-template-columns:1fr 1fr}}

/* Falla reportada, remision y asignacion de clinicas */
.remision .formgrid{margin-top:10px}
.remision-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:10px}
.remision-texto{background:#f6f9fd;border-radius:10px;padding:12px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 8px}
.chip{background:var(--blue-50);color:var(--blue-600);border-radius:7px;padding:4px 9px;font-size:11.5px;font-weight:600}
.check-list{display:flex;flex-direction:column;gap:2px;max-height:340px;overflow:auto;margin:12px 0;border:1px solid var(--line);border-radius:12px;padding:6px}
.check-list label{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer}
.check-list label:hover{background:#f5f9ff}
.check-list input{width:17px;height:17px;accent-color:var(--blue)}
.check-list span{flex:1;color:var(--ink);font-weight:500}
.check-list small{color:var(--muted)}

/* Evidencia para cierre de mantenimiento */
.bloque-cierre{border:1px solid var(--line);border-radius:12px;padding:14px 16px 16px;margin:0;display:flex;flex-direction:column;gap:12px;min-width:0}
.bloque-cierre legend{font-weight:700;color:var(--ink);padding:0 6px;font-size:13.5px}
.req{background:var(--red-50);color:#c2343a;border-radius:6px;padding:2px 7px;font-size:10.5px;font-weight:700;margin-left:6px;vertical-align:middle}
.aviso{display:flex;gap:12px;background:var(--orange-50);border:1px solid #ffd99a;border-radius:10px;padding:12px 14px;color:#8a4b00}
.aviso .ico{color:var(--orange);flex:none;margin-top:1px}
.aviso b,.aviso span{display:block}
.aviso b{color:#7a4200;font-size:13px}
.aviso span{font-size:12.5px;margin-top:3px;line-height:1.45}
.aviso-duplicado ul{margin:6px 0 0;padding-left:18px;font-size:12.5px}
.aviso-duplicado li b{display:inline;font-size:12.5px}
.formgrid .confirma{color:var(--ink);font-weight:600;letter-spacing:0;align-items:flex-start}
.confirma input{margin-top:1px;accent-color:var(--blue)}
.radios{display:flex;gap:18px;flex-wrap:wrap}
.formgrid .radios label{flex-direction:row;align-items:center;gap:8px;font-weight:500;color:var(--ink)}
.radios input{width:17px;height:17px;accent-color:var(--blue)}
#seccionRepuestos{display:flex;flex-direction:column;gap:12px}
#seccionRepuestos h3{margin:4px 0 0;font-size:14px}
#seccionRepuestos p{margin:0}
.pasos-foto{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.paso-foto{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff}
.paso-foto>div{flex:1;min-width:0}
.paso-foto b,.paso-foto small{display:block}
.paso-foto b{color:var(--ink);font-size:13px}
.paso-foto small{color:var(--muted);font-size:12px;margin-top:2px}
.paso-foto .num{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:700;background:#eef2f7;color:var(--muted);flex:none}
.paso-foto .num .ico{width:16px;height:16px}
.paso-foto.actual{border-color:#9dc0ff;background:#f4f8ff}
.paso-foto.actual .num{background:var(--blue);color:#fff}
.paso-foto.hecho .num{background:var(--green);color:#fff}
.paso-foto img{width:64px;height:48px;object-fit:cover;border-radius:6px;border:1px solid var(--line)}
.camara{display:flex;flex-direction:column;gap:10px}
.camara video{width:100%;max-height:360px;background:#000;border-radius:12px;object-fit:contain}
.camara p{margin:0}

/* Pestanas de un grupo del menu (p. ej. Ventas / Compras en Facturacion) */
.subnav{display:flex;flex-direction:column;gap:12px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin-bottom:18px}
.subnav-secciones{display:flex;gap:8px;flex-wrap:wrap}
.subnav-seccion{display:inline-flex;align-items:center;gap:9px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:11px;padding:10px 16px;font-size:13.5px;font-weight:600;cursor:pointer;transition:.15s}
.subnav-seccion .ico{width:18px;height:18px;color:var(--blue)}
.subnav-seccion:hover{border-color:#bcd3f5;background:#f6f9fe}
.subnav-seccion.actual{border-color:var(--blue)}
.subnav-seccion[aria-expanded="true"]{background:var(--blue-50);border-color:var(--blue);color:var(--blue-600)}
.subnav-seccion .chev{width:7px;height:7px;margin-left:4px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:.15s;opacity:.6}
.subnav-seccion[aria-expanded="true"] .chev{transform:translateY(2px) rotate(-135deg)}
.subnav-opciones{min-width:0;padding-top:12px;border-top:1px solid var(--line-2)}
@media(max-width:600px){.subnav-seccion{flex:1;justify-content:center}}
/* Modulos contables en definicion */
.modulo-pendiente{display:flex;gap:18px;align-items:flex-start;max-width:760px;padding:26px}
.modulo-pendiente h2{margin:6px 0 8px}
.modulo-pendiente p{color:#4d6284;margin:0 0 10px;line-height:1.55}
.modulo-pendiente ul{margin:0;padding-left:20px;color:var(--ink);line-height:1.8}

/* Flujo del correctivo (Entrega 2) */
.stepper{list-style:none;margin:0 0 6px;padding:0;display:flex;gap:4px;overflow-x:auto}
.stepper li{flex:1;min-width:84px;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);text-align:center;position:relative;padding-top:2px}
.stepper li::before{content:'';position:absolute;top:15px;left:-50%;right:50%;height:2px;background:var(--line);z-index:0}
.stepper li:first-child::before{display:none}
.stepper li span{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:#eef2f7;color:var(--muted);font-weight:700;position:relative;z-index:1}
.stepper li span .ico{width:15px;height:15px}
.stepper li.hecho{color:var(--ink)}.stepper li.hecho span{background:var(--green);color:#fff}.stepper li.hecho::before{background:var(--green)}
.stepper li.actual{color:var(--blue-600);font-weight:700}.stepper li.actual span{background:var(--blue);color:#fff;box-shadow:0 0 0 4px var(--blue-50)}
.stepper li.omitido{opacity:.5}.stepper li small{font-size:10px}
.estado-actual{margin:4px 0 18px;display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.radios-campo{border:0;padding:0;margin:0}.radios-campo legend{font-size:12.5px;font-weight:600;color:#3c5071;margin-bottom:8px}
.repuesto-card{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin-bottom:10px;background:#fbfdff}
.repuesto-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.repuesto-head b{color:var(--ink)}.repuesto-card p{margin:6px 0;font-size:12.5px;color:#4d6284}.repuesto-card>small{color:var(--muted);font-size:11.5px}
.chip.pendiente{background:var(--orange-50);color:#b86400}.chip.aprobada{background:var(--green-50);color:#138a3f}.chip.rechazada{background:var(--red-50);color:#c2343a}
.compras-tabs{margin-bottom:14px}
.compras-lista{display:flex;flex-direction:column;gap:14px;margin-bottom:18px}
.compra-card{display:flex;flex-direction:column;gap:12px}
.compra-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.compra-head h3{margin:4px 0 0;font-size:16px}.compra-head small{color:var(--muted);font-weight:500}
.compra-card p{margin:0}
.table-wrap.plano{margin:0;border:1px solid var(--line-2);border-radius:10px}
tr.seleccionada{background:#f1fbf5}
.aprobaciones{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.aprobaciones li{display:flex;align-items:center;gap:12px;border:1px solid var(--line-2);border-radius:10px;padding:9px 12px;flex-wrap:wrap}
.aprobaciones li>span:not(.pill){flex:1;min-width:180px}
.aprobaciones b,.aprobaciones small{display:block}.aprobaciones b{font-size:13px;color:var(--ink)}.aprobaciones small{font-size:11.5px;color:var(--muted);margin-top:2px}
.input-area{width:100%;min-width:140px;border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:#fbfdff}
.input-area:focus{outline:none;border-color:#6ea4ff;box-shadow:0 0 0 3px rgba(20,99,255,.12)}
.table-btn.rojo{background:var(--red-50);color:#c2343a}
.reglas-panel{margin-top:6px}
.subtitulo{font-size:15px;margin:6px 0 12px}
.faltantes{background:var(--red-50);border:1px solid #ffc9cc;border-radius:10px;padding:12px 14px;color:#8f1d23;font-size:13px}
.faltantes ul{margin:6px 0 0;padding-left:20px;line-height:1.6}

/* Indicador de carga al navegar (aparece solo si la carga pasa de 80 ms) */
#content.cargando>*{opacity:.5;pointer-events:none;transition:opacity .15s ease .08s}
#content.cargando::before{content:'';position:fixed;top:0;left:0;right:0;height:3px;z-index:60;background:linear-gradient(90deg,var(--blue),var(--cyan));transform-origin:left;animation:barraCarga 1.4s cubic-bezier(.2,.7,.3,1) .08s both}
@keyframes barraCarga{from{transform:scaleX(0)}to{transform:scaleX(.9)}}
@media (prefers-reduced-motion:reduce){#content.cargando::before{animation:none;transform:scaleX(.6)}}

/* ==========================================================================
   Ajustes para celular (revisados en un Samsung A35, 384 px de ancho)
   ========================================================================== */
/* Los formularios nunca se estiran mas que la pantalla (opciones largas en selects). */
.formgrid>*{min-width:0}
.formgrid input,.formgrid select,.formgrid textarea{width:100%;max-width:100%;min-width:0}
.formgrid small{overflow-wrap:anywhere}
@media(max-width:900px){
  /* Login: el formulario primero; la presentacion queda debajo. */
  .login-card{order:-1;margin:16px 16px 0}
  .login-hero .login-logo{display:none}
  .login-hero-copy{margin-top:8px}
}
@media(max-width:600px){
  /* Tablas como tarjetas: cada fila es un bloque con su etiqueta (data-label). */
  #content table,.modal table{min-width:0}
  #content table thead,.modal table thead{display:none}
  #content table tbody tr,.modal table tbody tr{display:block;padding:10px 16px;border-bottom:1px solid var(--line)}
  #content table td,.modal table td{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:5px 0;border:0;text-align:right;white-space:normal}
  #content table td[data-label]::before,.modal table td[data-label]::before{content:attr(data-label);flex:none;max-width:42%;text-align:left;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
  #content table td>div,#content table td b,#content table td small{text-align:right}
  .dash-table td:first-child{padding-left:0}
  .dash-table td:first-child .eq-cell{justify-content:flex-end}
  .table-wrap{margin:0 -20px -18px}
  /* Controles de al menos 36 px de alto para tocarlos con el dedo. */
  .table-btn,.ver-btn,.tabs button,.chip-select,.doc-link,.link-btn{min-height:36px}
  .link-btn{padding:8px 4px}
  .tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:4px}
  .tabs button{flex:none}
  /* Barra inferior: etiquetas cortas sin montarse. */
  .sidebar nav button{min-width:74px;max-width:74px;padding:7px 4px}
  .sidebar nav button span{max-width:66px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* Stepper compacto: solo se rotula el paso actual. */
  .stepper li{min-width:40px;font-size:0}
  .stepper li span{font-size:12px}
  .stepper li.actual{font-size:11px;min-width:84px}
  .stepper li small{display:none}
  .modal{padding:20px 18px}
}
@media(max-width:600px){
  /* Tarjeta: etiqueta fija a la izquierda y el contenido (uno o varios datos) alineado a la derecha. */
  #content table td[data-label],.modal table td[data-label]{display:block;position:relative;padding:6px 0 6px 42%;text-align:right;min-height:30px}
  #content table td[data-label]::before,.modal table td[data-label]::before{position:absolute;left:0;top:8px}
  #content table td[data-label] b,#content table td[data-label] small,.modal table td[data-label] b,.modal table td[data-label] small{display:block}
  #content table td[data-label] .eq-cell{justify-content:flex-end}
  #content table td:not([data-label]),.modal table td:not([data-label]){display:block;text-align:left}
  /* Sin barras de desplazamiento visibles en carruseles horizontales. */
  .stepper,.tabs,.sidebar nav{scrollbar-width:none}
  .stepper::-webkit-scrollbar,.tabs::-webkit-scrollbar,.sidebar nav::-webkit-scrollbar{display:none}
  .stepper li{min-width:30px}
  .stepper li.actual{min-width:76px}
  .compra-head{flex-wrap:wrap}
}

/* Hoja de vida: ficha tecnica en dos columnas (etiqueta | valor), como el formato impreso */
.ficha-acciones{display:flex;justify-content:flex-end;margin-bottom:10px}
.ficha-acciones button{display:inline-flex;align-items:center;gap:6px}
.ficha-hv h3{margin:16px 0 0;padding:8px 14px;background:var(--blue-50);color:var(--blue-600);font-size:12px;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);border-bottom:0;border-radius:10px 10px 0 0}
.ficha-hv h3:first-child{margin-top:0}
.ficha-grid{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:0 0 10px 10px;overflow:hidden}
.ficha-grid>div{display:grid;grid-template-columns:44% 1fr;align-items:center;border-bottom:1px solid var(--line-2)}
.ficha-grid>div:nth-child(odd){border-right:1px solid var(--line-2)}
.ficha-grid small{padding:8px 12px;font-size:11.5px;font-weight:600;color:var(--muted);background:#f8fafd;align-self:stretch;display:flex;align-items:center}
.ficha-grid b{padding:8px 12px;font-size:13px;font-weight:500;color:var(--ink);overflow-wrap:anywhere}
.ficha-grid .ficha-wide{grid-column:1/-1;grid-template-columns:22% 1fr;border-right:0}
.formgrid .ficha-sub{margin:6px 0 -4px;padding-bottom:6px;border-bottom:1px solid var(--line);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--blue-600)}
.formgrid .check-ficha{flex-direction:row;align-items:center;gap:8px;font-weight:500}
.formgrid .check-ficha input{width:18px;height:18px;padding:0}
@media(max-width:700px){.ficha-grid{grid-template-columns:1fr}.ficha-grid>div:nth-child(odd){border-right:0}.ficha-grid .ficha-wide{grid-template-columns:44% 1fr}}

/* Reporte de mantenimiento: tiempos, repuestos pendientes y firmas */
.formgrid .tiempos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.formgrid .duracion{display:flex;align-items:center;min-height:44px;padding:0 13px;border-radius:10px;background:var(--blue-50);color:var(--blue-600);font-weight:700}
.tabla-repuestos{width:100%;border-collapse:collapse;margin:4px 0 10px}
.tabla-repuestos th{text-align:left;font-size:11.5px;color:var(--muted);padding:6px 6px;border-bottom:1px solid var(--line)}
.tabla-repuestos td{padding:5px 6px;border-bottom:1px solid var(--line-2);font-size:13px}
.tabla-repuestos th:nth-child(3),.tabla-repuestos td:nth-child(3){width:90px}
.tabla-repuestos th:nth-child(4),.tabla-repuestos td:nth-child(4){width:36px}
.tabla-repuestos input{width:100%;box-sizing:border-box;padding:8px 10px!important}
.firmas{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.firma{display:flex;flex-direction:column;gap:8px}
.pad-firma{width:100%;height:auto;aspect-ratio:500/160;border:1.5px dashed #b9c8dc;border-radius:10px;background:#fff;touch-action:none;cursor:crosshair}
.firma .table-btn{align-self:flex-start}
.firma img{width:100%;max-width:320px;aspect-ratio:500/160;object-fit:contain;border-bottom:1px solid var(--line);background:#fff}
.firma small{color:var(--muted);font-size:11.5px}
@media(max-width:700px){.formgrid .tiempos{grid-template-columns:1fr 1fr}.firmas{grid-template-columns:1fr}}
.ok-text{color:#0f8a5f!important;font-weight:600!important}
/* Burbujas de pendientes (menu, grupos y pestanas): rojo = urgente, naranja = por gestionar */
.burbuja{min-width:18px;height:18px;padding:0 5px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;font-size:10.5px;font-weight:700;line-height:1;color:#fff;background:var(--orange);flex:none;animation:burbuja-entra .35s cubic-bezier(.34,1.56,.64,1)}
.burbuja.alta{background:var(--red);animation:burbuja-entra .35s cubic-bezier(.34,1.56,.64,1),burbuja-pulso 1.8s ease-out .4s 3}
.sidebar nav button{position:relative}
.sidebar nav button .burbuja{margin-left:auto}
.tabs button .burbuja,.subnav-seccion .burbuja{margin-left:7px}
.tabs button[aria-selected="true"] .burbuja{box-shadow:0 0 0 2px rgba(255,255,255,.7)}
@media(max-width:900px){.sidebar nav button .burbuja{position:absolute;top:3px;right:6px;margin:0}}
@keyframes burbuja-entra{from{transform:scale(0)}to{transform:scale(1)}}
@keyframes burbuja-pulso{from{box-shadow:0 0 0 0 rgba(229,72,77,.55)}to{box-shadow:0 0 0 8px rgba(229,72,77,0)}}
/* Paso actual del correctivo con algo por hacer: anillo que late y tooltip con el pendiente */
.stepper{padding-top:8px}
.stepper li.pendiente{cursor:help}
.stepper li.pendiente span::after{content:'';position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--blue);animation:paso-pulso 1.8s ease-out 3}
@keyframes paso-pulso{from{transform:scale(1);opacity:.7}to{transform:scale(1.3);opacity:0}}
@media (prefers-reduced-motion:reduce){.burbuja,.burbuja.alta,.stepper li.pendiente span::after{animation:none}}

/* Hoja de vida: foto del equipo, documentos por tipo y filtro del historial (HV-01, HV-03) */
.titulo-con-foto{display:flex;gap:14px;align-items:center;min-width:0}
.foto-equipo{width:76px;height:76px;object-fit:cover;border-radius:12px;border:1px solid var(--line);flex:none;background:var(--line-2)}
.doc-grupo + .doc-grupo{margin-top:12px}
.doc-grupo h4{margin:0 0 6px;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.section-cab{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.section-cab h3{margin:0}
.filtro-eventos{border:1px solid #d7e1ee;background:#fbfdff;border-radius:8px;padding:6px 10px;font-size:12.5px}
/* Auditoria: antes y despues de cada campo (SEG-02) */
.aud-cambios{margin-top:4px;font-size:12px}
.aud-cambios summary{cursor:pointer;color:var(--blue-600);font-weight:600}
.aud-cambios table{margin-top:4px;border-collapse:collapse;width:auto;min-width:0}
.aud-cambios th,.aud-cambios td{padding:2px 6px;border:0;font-size:12px;text-align:left;vertical-align:top;white-space:nowrap;background:none;text-transform:none;letter-spacing:0}
.aud-cambios td{white-space:normal;overflow-wrap:anywhere;min-width:72px;max-width:220px}
.aud-cambios th{color:var(--muted);font-weight:600}
/* TAB-02: vencimientos y pendientes */
.indicadores{padding:18px 20px;margin-bottom:18px;display:grid;gap:14px}
.ind-cab{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;align-items:center}
.ind-cab h3{margin:0;font-size:16px}
.ind-resumen{margin:3px 0 0;font-size:12.5px;color:var(--muted);cursor:help}
.ind-resumen.hay{color:#b25f00;font-weight:600}
.ind-acciones{display:flex;gap:8px;align-items:center}
.ind-btn-filtros{border:1px solid #d7e1ee;background:#fbfdff;border-radius:9px;padding:0 12px;height:34px;font-size:12.5px;color:var(--ink);cursor:pointer;display:inline-flex;gap:6px;align-items:center}
.ind-btn-filtros[aria-expanded="true"]{border-color:var(--blue);color:var(--blue-600);background:var(--blue-50)}
.ind-btn-filtros em{font-style:normal;background:var(--blue);color:#fff;border-radius:999px;font-size:11px;min-width:18px;padding:1px 6px;text-align:center}
.ind-acciones select,.ind-filtros select,.ind-filtros input{border:1px solid #d7e1ee;background:#fbfdff;border-radius:9px;padding:0 10px;height:34px;font-size:12.5px;color:var(--ink);outline:none}
.ind-acciones select:focus,.ind-filtros select:focus,.ind-filtros input:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-50)}
.ind-filtros{display:flex;gap:8px;flex-wrap:wrap;align-items:center;padding:10px 12px;background:#f6f9fd;border-radius:10px}
.ind-filtros[hidden]{display:none}
.ind-filtros select{max-width:220px}
.ind-filtros input{width:200px}
/* Cada grupo es una tarjeta del mismo tamaño con renglones "concepto ... numero". */
.ind-grupos{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr))}
.ind-grupo{border:1px solid var(--line);border-radius:12px;padding:12px 10px 8px;display:flex;flex-direction:column;gap:1px;background:#fff}
.ind-grupo h4{margin:0 0 6px;padding:0 8px;font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.ind-fila{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;border:0;background:transparent;border-radius:8px;padding:6px 8px;text-align:left;font:inherit;cursor:pointer;transition:background .15s}
.ind-fila span{font-size:13px;color:var(--ink);font-weight:600}
.ind-fila b{font-size:13px;font-variant-numeric:tabular-nums;min-width:30px;text-align:center;border-radius:999px;padding:2px 9px}
.ind-fila:not([disabled]):hover{background:#f3f7fd}
.ind-fila[disabled]{cursor:default}
.ind-fila[disabled] span{color:var(--muted);font-weight:400}
.ind-fila[disabled] b{color:#a9b6c8;font-weight:500}
.ind-fila.red:not([disabled]) b{background:var(--red-50);color:#c2343a}
.ind-fila.orange:not([disabled]) b{background:var(--orange-50);color:#b25f00}
.ind-fila.yellow:not([disabled]) b{background:#fff3c4;color:#8a6500}
.ind-fila.blue:not([disabled]) b{background:var(--blue-50);color:var(--blue-600)}
.ind-estados{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;padding:0 8px 4px;font-size:12.5px}
@media (prefers-reduced-motion:reduce){.ind-fila{transition:none}}
/* ADM-05: modulos habilitados en Editar clinica */
.modulos-inst{border:1px solid var(--line);border-radius:10px;padding:10px 14px;display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center}
.modulos-inst legend{font-size:12.5px;font-weight:600;padding:0 4px}
.modulos-inst label,.formgrid .modulos-inst label{display:flex;flex-direction:row;align-items:center;gap:6px;font-size:13px;font-weight:500;white-space:nowrap}
.modulos-inst small{flex-basis:100%;color:var(--muted)}
/* COM-04/05: parametros tarifarios y simulador */
.tarifa-sim,.tarifa-version{padding:18px 20px;margin:14px 0;display:grid;gap:12px}
.tarifa-sim h3,.tarifa-titulo{margin:0}
.tarifa-titulo{margin-top:22px;font-size:16px}
.tarifa-res{display:grid;gap:12px;grid-template-columns:minmax(0,1fr) auto;align-items:start}
.tarifa-res table{min-width:0}
.tarifa-total{border:1px solid var(--line);border-radius:12px;padding:14px 18px;display:grid;gap:4px;min-width:220px;background:var(--blue-50)}
.tarifa-total span{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.tarifa-total b{font-size:26px;color:var(--ink);font-variant-numeric:tabular-nums}
.tarifa-total small{color:var(--muted);font-size:12px}
.tarifa-pend{color:#b25f00!important;font-weight:600}
.tarifa-cab{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.tarifa-cab h4{margin:0;font-size:15px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.tarifa-cab p{margin:4px 0 0;font-size:12.5px}
.tarifa-factores{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr))}
.tarifa-factores h5{margin:0 0 6px;font-size:12px;color:var(--muted)}
.tarifa-factores table{min-width:0}
.tarifa-factores td{padding:5px 8px;font-size:12.5px}
.tabla-factores{min-width:0}
.tabla-factores td{padding:5px 8px}
.input-area.num{min-width:70px;max-width:110px}
@media (max-width:760px){.tarifa-res{grid-template-columns:1fr}}
/* PER-03: perfiles y permisos */
.perfiles{display:grid;gap:12px}
.perfil{padding:16px 18px;display:grid;gap:10px}
.perfil.inactivo{opacity:.7}
.perfil-cab{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.perfil-cab h3{margin:0;font-size:15px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.perfil-cab p{margin:4px 0 0;font-size:12.5px}
.perfil-permisos{display:grid;gap:6px 18px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
.perfil-permisos div{display:grid;font-size:12.5px}
.perfil-permisos b{font-size:12px;color:var(--ink)}
.perfil-permisos span{color:var(--muted)}
.grilla-permisos{min-width:640px}
.grilla-permisos th{font-size:10.5px;padding:8px 6px;text-align:center}
.grilla-permisos th:first-child,.grilla-permisos td:first-child{text-align:left}
.grilla-permisos td{padding:6px;text-align:center;font-size:12.5px}
.grilla-permisos input{width:16px;height:16px}
/* COM-12: pipeline de oportunidades */
.pipeline{display:flex;gap:12px;overflow-x:auto;padding-bottom:10px;align-items:flex-start}
.op-col{flex:0 0 230px;background:var(--line-2);border-radius:12px;padding:10px;display:grid;gap:8px}
.op-col h4{margin:0;font-size:12px;display:flex;justify-content:space-between;color:var(--ink)}
.op-col h4 span{color:var(--muted);font-weight:500}
.op-col .muted{margin:0;font-size:12px;text-align:center}
.op-card{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px;text-align:left;display:grid;gap:3px;cursor:pointer;box-shadow:var(--shadow)}
.op-card:hover{border-color:#9dbcf0}
.op-card b{font-size:13px;color:var(--ink)}
.op-card span{font-size:12px;color:var(--muted)}
.op-card .op-meta{display:flex;justify-content:space-between;color:var(--text);font-weight:600}
.op-card small{font-size:11.5px;color:var(--muted)}
.op-card.alerta{border-left:4px solid var(--orange)}
.op-card.alerta small{color:#b25f00;font-weight:600}
.op-etapa{background:var(--blue-50);border-radius:10px;padding:12px;margin-bottom:14px}
.op-act.vencida b{color:#b25f00}
.op-act.hecha{opacity:.75}
/* COM-03: diagnostico comercial */
.tabla-diag{min-width:0;margin-bottom:10px}
.tabla-diag td{padding:7px 10px;font-size:12.5px;vertical-align:top}
.tabla-diag td small{display:block;color:var(--muted)}
.fuente-verificado{color:#138a3f;font-weight:600}
.fuente-declarado{color:var(--blue-600);font-weight:600}
.fuente-supuesto{color:#b25f00;font-weight:600}
.diag-total{max-width:420px}
.tabla-diag-edit{min-width:720px}
.tabla-diag-edit td{padding:6px 8px;vertical-align:top;font-size:12.5px}
.tabla-diag-edit td small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
.tabla-diag-edit input,.tabla-diag-edit select{width:100%;border:1px solid #d7e1ee;border-radius:8px;padding:6px 8px;background:#fbfdff;font-size:12.5px}
/* COM-09: cotizaciones */
.cot-fila{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-2)}
.cot-fila small{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.cot-precio{display:grid;gap:14px;grid-template-columns:minmax(0,260px) minmax(0,1fr);align-items:start;margin:12px 0}
@media (max-width:760px){.cot-precio{grid-template-columns:1fr}}
