/* ============================================================
   INNOVAMED · Portal — Sistema "Liquid" (glassmorphism Apple-style)
   Brand sobre material translúcido. El cristal vive en la capa
   funcional (barras, hojas, controles, tarjetas flotantes); el
   contenido se mantiene legible. Light mode clínico y luminoso.
   ============================================================ */
/* ── San Francisco (SF UI Text) — fuente del sistema Apple ──
   En Mac/iPad/iPhone, -apple-system YA es San Francisco (0 KB de descarga).
   En Windows/Android se descarga la versión WOFF2 (ligera). font-display:swap
   evita que bloquee el render. */
@font-face{font-family:'SF UI Text';src:url('fonts/SFUIText-Regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'SF UI Text';src:url('fonts/SFUIText-Medium.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'SF UI Text';src:url('fonts/SFUIText-Semibold.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'SF UI Text';src:url('fonts/SFUIText-Bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}
@font-face{font-family:'SF UI Text';src:url('fonts/SFUIText-Heavy.woff2') format('woff2');font-weight:800;font-style:normal;font-display:swap}

:root{
  /* ── Marca ── */
  --verde:#80C355;
  --teal:#4B9CA9;
  --cyan:#3BC4ED;
  --azul:#065997;
  --azul-900:#063b66;

  --ink:#16282F;
  --muted:#5E6E76;
  --faint:#93A1A8;
  --line:#E6ECEE;
  --line-soft:#EFF3F5;
  --bg:#FFFFFF;
  --bg-soft:#F6F9FA;
  --bg-tint:#F0F7F8;

  --grad:linear-gradient(125deg,#80C355 0%,#4B9CA9 46%,#3BC4ED 100%);
  --grad-azul:linear-gradient(135deg,#065997 0%,#1499c4 55%,#3BC4ED 100%);

  --sans:-apple-system,BlinkMacSystemFont,'SF UI Text','Nunito Sans',system-ui,sans-serif;
  --display:-apple-system,BlinkMacSystemFont,'SF UI Text','Quicksand','Nunito Sans',sans-serif;

  /* ── Radios (Apple usa radios generosos y concéntricos) ── */
  --r:18px;
  --r-sm:12px;
  --r-lg:24px;
  --r-xl:30px;
  --r-pill:9999px;

  /* ── Material líquido (light) ──
     El cristal = blanco translúcido + blur + saturación, con
     hairline luminoso, brillo especular superior y sombra suave. */
  --glass:rgba(255,255,255,.58);
  --glass-strong:rgba(255,255,255,.74);
  --glass-frost:rgba(255,255,255,.86);
  --glass-tint:rgba(240,247,248,.55);
  --glass-border:rgba(255,255,255,.65);
  --glass-hair:rgba(16,40,47,.07);
  --glass-blur:saturate(180%) blur(20px);
  --glass-blur-sm:saturate(170%) blur(11px);
  --glass-blur-lg:saturate(185%) blur(38px);

  /* brillo especular del borde superior */
  --specular:linear-gradient(150deg,rgba(255,255,255,.85) 0%,rgba(255,255,255,.18) 26%,rgba(255,255,255,0) 52%);
  --inner-glow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 0 0 1px rgba(255,255,255,.18);

  /* ── Sombras ── */
  --shadow:0 1px 2px rgba(16,40,47,.05),0 16px 38px -20px rgba(16,40,47,.26);
  --shadow-lg:0 30px 80px -34px rgba(16,40,47,.4);
  --shadow-pop:0 22px 50px -16px rgba(16,40,47,.3);
  --shadow-float:0 26px 60px -24px rgba(6,89,151,.34);

  /* ── Easings tipo "resorte líquido" ── */
  --ease-liquid:cubic-bezier(.34,1.56,.64,1);
  --ease-glass:cubic-bezier(.22,.68,0,1.18);
  --ease-smooth:cubic-bezier(.4,0,.2,1);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  margin:0;font-family:var(--sans);color:var(--ink);
  background:#EAF1F7;
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;
  font-variation-settings:"opsz" 9;-webkit-tap-highlight-color:transparent;
  min-height:100vh;position:relative;
}

/* ── Capa ambiental: blobs de marca difusos que el cristal refracta ──
   Pintada en una capa fija detrás del contenido (no del fondo del body),
   por lo que sobrevive aunque una página defina su propio color de body. */
body::before{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(46vw 46vw at 8% 4%,rgba(128,195,85,.30),transparent 60%),
    radial-gradient(50vw 50vw at 96% 8%,rgba(59,196,237,.30),transparent 62%),
    radial-gradient(58vw 58vw at 78% 100%,rgba(75,156,169,.28),transparent 60%),
    radial-gradient(46vw 46vw at 12% 96%,rgba(6,89,151,.18),transparent 60%);
  filter:saturate(118%);
}
/* segunda capa con leve deriva para dar vida (respeta reduce-motion) */
body::after{
  content:"";position:fixed;inset:-10%;z-index:-1;pointer-events:none;opacity:.7;
  background:
    radial-gradient(30vw 30vw at 60% 30%,rgba(59,196,237,.20),transparent 60%),
    radial-gradient(34vw 34vw at 30% 70%,rgba(128,195,85,.16),transparent 62%);
  animation:amb-drift 26s var(--ease-smooth) infinite alternate;
}
@keyframes amb-drift{
  0%{transform:translate3d(0,0,0) scale(1)}
  50%{transform:translate3d(3%,-2%,0) scale(1.06)}
  100%{transform:translate3d(-2%,3%,0) scale(1.02)}
}

img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit}

/* ============================================================
   Utilidad de material — .glass / variantes
   ============================================================ */
.glass{
  position:relative;
  background:var(--glass);
  -webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);
  box-shadow:var(--shadow),var(--inner-glow);
}
.glass::before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:var(--specular);opacity:.9;z-index:0;
}
.glass>*{position:relative;z-index:1}
.glass--strong{background:var(--glass-strong)}
.glass--frost{background:var(--glass-frost);-webkit-backdrop-filter:var(--glass-blur-lg);backdrop-filter:var(--glass-blur-lg)}

/* ============================================================
   Botones — pills de cristal con brillo especular
   ============================================================ */
.btn{
  appearance:none;border:none;cursor:pointer;font-family:var(--sans);position:relative;overflow:hidden;
  font-weight:800;font-size:15px;line-height:1;letter-spacing:.1px;
  padding:13px 22px;border-radius:var(--r-pill);
  transition:transform .2s var(--ease-liquid),background-color .16s,color .16s,box-shadow .2s,border-color .16s,filter .16s;
  display:inline-flex;align-items:center;justify-content:center;gap:9px;isolation:isolate;
}
.btn::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(150deg,rgba(255,255,255,.55),rgba(255,255,255,0) 48%);opacity:.9;z-index:0}
.btn>*{position:relative;z-index:1}
.btn svg{flex:none;position:relative;z-index:1}
.btn:active{transform:scale(.965)}

.btn--primary{
  background:var(--grad-azul);color:#fff;
  box-shadow:0 8px 26px -10px rgba(6,89,151,.6),inset 0 1px 0 rgba(255,255,255,.42),inset 0 0 0 1px rgba(255,255,255,.16);
}
.btn--primary:hover{filter:brightness(1.07);transform:translateY(-2px);box-shadow:0 14px 34px -10px rgba(6,89,151,.6),inset 0 1px 0 rgba(255,255,255,.45)}

.btn--cyan{background:linear-gradient(135deg,#3BC4ED,#1499c4);color:#fff;
  box-shadow:0 8px 24px -10px rgba(20,153,196,.6),inset 0 1px 0 rgba(255,255,255,.45)}
.btn--cyan:hover{filter:brightness(1.06);transform:translateY(-2px)}

.btn--secondary{
  background:var(--glass-strong);-webkit-backdrop-filter:var(--glass-blur-sm);backdrop-filter:var(--glass-blur-sm);
  color:var(--azul);border:1px solid rgba(6,89,151,.22);padding:12px 21px;
  box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.9);
}
.btn--secondary:hover{background:#fff;border-color:rgba(6,89,151,.34);transform:translateY(-2px)}

.btn--ghost{background:transparent;color:var(--muted)}
.btn--ghost::before{opacity:0}
.btn--ghost:hover{background:var(--glass);color:var(--azul);-webkit-backdrop-filter:var(--glass-blur-sm);backdrop-filter:var(--glass-blur-sm);box-shadow:inset 0 0 0 1px var(--glass-border)}

.btn--danger{
  background:rgba(255,255,255,.7);-webkit-backdrop-filter:var(--glass-blur-sm);backdrop-filter:var(--glass-blur-sm);
  color:#C62828;border:1px solid rgba(198,40,40,.28);padding:12px 21px;box-shadow:var(--shadow)}
.btn--danger:hover{background:#fdeced;border-color:rgba(198,40,40,.42);transform:translateY(-2px)}

.btn--block{width:100%}
.btn--sm{padding:9px 16px;font-size:13.5px}
.btn:disabled,.btn.is-disabled{opacity:.5;cursor:not-allowed;transform:none;filter:none}

/* ============================================================
   Avatar
   ============================================================ */
.avatar{
  width:34px;height:34px;border-radius:50%;color:#fff;flex:none;
  display:grid;place-items:center;font-family:var(--display);font-weight:700;
  font-size:13px;letter-spacing:.3px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 3px 10px -4px rgba(16,40,47,.4);
}
.avatar--lg{width:44px;height:44px;font-size:16px}
.avatar--xl{width:58px;height:58px;font-size:21px}
.avatar--photo{overflow:hidden;background:var(--bg-tint)}
.avatar--photo img{width:100%;height:100%;object-fit:cover;display:block}

/* edición de perfil */
.prof-edit{display:flex;flex-direction:column;gap:12px;padding-bottom:18px;margin-bottom:16px;border-bottom:1px solid var(--glass-hair)}
.prof-photo{display:flex;align-items:center;gap:15px}
.prof-photo__prev{flex:none}
.prof-photo__btns{display:flex;gap:8px;flex-wrap:wrap}

/* ============================================================
   Barra superior — cristal flotante
   ============================================================ */
.topbar{position:sticky;top:0;z-index:50;
  background:rgba(255,255,255,.55);
  -webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);
  border-bottom:1px solid var(--glass-hair);
  box-shadow:0 1px 0 rgba(255,255,255,.6) inset,0 10px 30px -22px rgba(16,40,47,.5);
}
.topbar__inner{max-width:1180px;margin:0 auto;height:66px;display:flex;align-items:center;gap:14px;padding:0 clamp(18px,4vw,40px)}
.topbar__back{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:var(--muted);
  border:1px solid var(--glass-border);background:var(--glass-strong);flex:none;transition:.16s var(--ease-liquid);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
.topbar__back:hover{color:var(--azul);background:#fff;transform:translateY(-1px)}
.topbar__brand{display:flex;align-items:center;flex:none}
.topbar__brand img{height:30px;width:auto}
.topbar__sep{width:1px;height:26px;background:var(--glass-hair)}
.topbar__title{font-family:var(--display);font-weight:600;font-size:16.5px;color:var(--ink)}
.topbar__spacer{flex:1}

/* ============================================================
   Rail lateral — conmutador rápido de módulos (solo dentro de módulos)
   ============================================================ */
.rail{
  position:fixed;left:0;top:0;bottom:0;width:76px;z-index:55;
  display:flex;flex-direction:column;align-items:center;
  padding:0 0 14px;
  background:rgba(255,255,255,.55);
  -webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);
  border-right:1px solid var(--glass-hair);
  box-shadow:1px 0 0 rgba(255,255,255,.6) inset,18px 0 40px -34px rgba(16,40,47,.5);
}
body.has-rail{padding-left:76px}

.rail__home{
  height:66px;width:100%;display:grid;place-items:center;flex:none;position:relative;
  border-bottom:1px solid var(--glass-hair);margin-bottom:12px;
}
.rail__home img{width:36px;height:36px;border-radius:11px;
  box-shadow:0 6px 16px -8px rgba(6,89,151,.6);transition:transform .24s var(--ease-liquid)}
.rail__home:hover img{transform:scale(1.09) rotate(-4deg)}

.rail__nav{display:flex;flex-direction:column;align-items:center;gap:9px;width:100%;
  overflow-y:auto;overflow-x:visible;padding:2px 0;scrollbar-width:none}
.rail__nav::-webkit-scrollbar{display:none}

.rail__item{
  position:relative;width:50px;height:50px;border-radius:15px;flex:none;
  display:grid;place-items:center;color:var(--muted);
  background:var(--glass-strong);border:1px solid var(--glass-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
  transition:transform .2s var(--ease-liquid),background .18s,color .18s,box-shadow .2s;
}
.rail__item svg{width:23px;height:23px}
.rail__item:hover{color:var(--mc);transform:translateY(-1px) scale(1.05);background:#fff;box-shadow:var(--shadow)}
.rail__item.is-active{
  background:var(--mc);color:#fff;border-color:transparent;
  box-shadow:0 9px 20px -8px var(--mc),inset 0 1px 0 rgba(255,255,255,.4);
}
.rail__item.is-active::after{
  content:"";position:absolute;left:-13px;top:50%;transform:translateY(-50%);
  width:4px;height:22px;border-radius:0 4px 4px 0;background:var(--mc);
}

.rail__tip{
  position:absolute;left:calc(100% + 15px);top:50%;transform:translateY(-50%) translateX(-6px);
  white-space:nowrap;background:var(--ink);color:#fff;font-size:12.5px;font-weight:700;
  padding:7px 11px;border-radius:9px;pointer-events:none;opacity:0;
  box-shadow:0 12px 26px -10px rgba(16,40,47,.6);transition:.16s var(--ease-liquid);z-index:5;
}
.rail__tip::before{content:"";position:absolute;right:100%;top:50%;transform:translateY(-50%);
  border:5px solid transparent;border-right-color:var(--ink)}
.rail__home:hover .rail__tip,.rail__item:hover .rail__tip{opacity:1;transform:translateY(-50%) translateX(0)}

/* móvil/tablet estrecho: rail horizontal bajo la barra superior */
@media (max-width:768px){
  body.has-rail{padding-left:0}
  .rail{position:sticky;top:66px;left:0;right:0;bottom:auto;width:auto;height:auto;
    flex-direction:row;align-items:center;gap:8px;padding:8px 12px;
    border-right:none;border-bottom:1px solid var(--glass-hair);
    box-shadow:0 14px 26px -24px rgba(16,40,47,.5);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
  .rail::-webkit-scrollbar{display:none}
  .rail__home{height:auto;width:auto;border-bottom:none;border-right:1px solid var(--glass-hair);
    margin:0 4px 0 0;padding-right:12px;flex:none}
  .rail__home img{width:30px;height:30px}
  .rail__nav{flex-direction:row;width:auto;overflow:visible;gap:8px;padding:0}
  .rail__item{width:46px;height:46px;flex:none}
  .rail__item.is-active::after{display:none}
  .rail__tip{display:none}
}

/* ---- Perfil ---- */
.profile{position:relative}
.profile__chip{display:flex;align-items:center;gap:10px;
  background:var(--glass-strong);-webkit-backdrop-filter:var(--glass-blur-sm);backdrop-filter:var(--glass-blur-sm);
  border:1px solid var(--glass-border);border-radius:var(--r-pill);padding:5px 12px 5px 5px;cursor:pointer;
  transition:.18s var(--ease-liquid);box-shadow:inset 0 1px 0 rgba(255,255,255,.85)}
.profile__chip:hover{background:#fff;transform:translateY(-1px);box-shadow:var(--shadow)}
.profile__meta{display:flex;flex-direction:column;line-height:1.15;text-align:left}
.profile__meta b{font-size:13.5px;color:var(--ink);font-weight:700}
.profile__meta span{font-size:11px;color:var(--faint);font-weight:600}
.profile__chip>svg{color:var(--faint);transition:transform .2s}
.profile.open .profile__chip>svg{transform:rotate(180deg)}
.profile__menu{
  position:absolute;right:0;top:calc(100% + 12px);width:266px;
  background:var(--glass-frost);-webkit-backdrop-filter:var(--glass-blur-lg);backdrop-filter:var(--glass-blur-lg);
  border:1px solid var(--glass-border);border-radius:var(--r-lg);box-shadow:var(--shadow-pop),var(--inner-glow);
  padding:8px;opacity:0;visibility:hidden;transform:translateY(-8px) scale(.97);transform-origin:top right;
  transition:.2s var(--ease-liquid);z-index:60;
}
.profile.open .profile__menu{opacity:1;visibility:visible;transform:none}
.pm__head{display:flex;align-items:center;gap:12px;padding:12px 12px 14px}
.pm__head b{display:block;font-size:14.5px;color:var(--ink);font-weight:700}
.pm__head span{font-size:12px;color:var(--faint);font-weight:600}
.pm__links{border-top:1px solid var(--glass-hair);padding:6px 0;display:flex;flex-direction:column;gap:1px}
.pm__item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:transparent;border:none;cursor:pointer;
  padding:10px 12px;border-radius:11px;font-size:14px;font-weight:600;color:var(--muted);transition:.14s}
.pm__item:hover{background:rgba(255,255,255,.7);color:var(--azul)}
.pm__item svg{flex:none;color:var(--faint)}
.pm__item:hover svg{color:var(--azul)}
.pm__logout{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:transparent;border:none;cursor:pointer;
  margin-top:4px;border-top:1px solid var(--glass-hair);padding:12px;border-radius:0 0 14px 14px;font-size:14px;font-weight:700;color:#C62828;transition:.14s}
.pm__logout:hover{background:rgba(253,236,237,.8)}
.pm__logout svg{flex:none}

/* ============================================================
   Modal / overlay — hoja de cristal escarchado (legible)
   ============================================================ */
.overlay{position:fixed;inset:0;z-index:200;background:rgba(16,40,47,.34);
  -webkit-backdrop-filter:saturate(120%) blur(8px);backdrop-filter:saturate(120%) blur(8px);
  display:grid;place-items:center;padding:20px;opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .24s,visibility .24s;overflow:auto}
.overlay.show{opacity:1;visibility:visible;pointer-events:auto}
.modal{
  background:var(--glass-frost);-webkit-backdrop-filter:var(--glass-blur-lg);backdrop-filter:var(--glass-blur-lg);
  border:1px solid var(--glass-border);border-radius:var(--r-lg);width:100%;max-width:440px;
  box-shadow:var(--shadow-lg),var(--inner-glow);
  position:relative;transform:translateY(16px) scale(.965);transition:transform .34s var(--ease-liquid),opacity .24s;max-height:92vh;overflow:auto}
.modal::after{content:"";position:absolute;left:0;right:0;top:0;height:2px;border-radius:var(--r-lg) var(--r-lg) 0 0;
  background:var(--grad);opacity:.9;pointer-events:none}
.overlay.show .modal{transform:none}
.modal__x{position:absolute;top:16px;right:16px;width:34px;height:34px;border-radius:11px;border:1px solid var(--glass-hair);
  background:rgba(255,255,255,.6);color:var(--muted);cursor:pointer;display:grid;place-items:center;transition:.16s var(--ease-liquid);z-index:3}
.modal__x:hover{background:#fff;color:var(--ink);transform:rotate(90deg)}
.modal__hd{display:flex;align-items:center;gap:14px;padding:26px 26px 18px}
.modal__hd h3{margin:0;font-family:var(--display);font-weight:700;font-size:21px;color:var(--ink)}
.modal__hd p{margin:3px 0 0;font-size:13px;color:var(--faint);font-weight:600}
.modal__bd{padding:0 26px 26px;display:flex;flex-direction:column;gap:20px}

.fl__lbl{display:block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.12em;color:var(--faint);margin-bottom:10px}
.fl__none{font-size:13px;color:var(--faint);font-style:italic}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:7px;background:var(--glass-strong);border:1px solid var(--glass-border);border-radius:var(--r-pill);
  padding:6px 13px 6px 11px;font-size:13px;font-weight:700;color:var(--ink);box-shadow:inset 0 1px 0 rgba(255,255,255,.8)}
.chip__dot{width:9px;height:9px;border-radius:50%;flex:none}

.pwform{display:flex;flex-direction:column;gap:12px;border-top:1px solid var(--glass-hair);padding-top:18px}
.ff label{display:block;font-size:12px;font-weight:700;color:var(--muted);margin-bottom:6px}
.ff input,.inp{
  width:100%;padding:12px 14px;font-size:15px;font-family:var(--sans);font-weight:600;color:var(--ink);
  border:1.5px solid var(--glass-hair);border-radius:var(--r-sm);outline:none;
  background:rgba(255,255,255,.66);-webkit-backdrop-filter:var(--glass-blur-sm);backdrop-filter:var(--glass-blur-sm);
  transition:border-color .16s,box-shadow .16s,background .16s;
}
.ff input:focus,.inp:focus{border-color:var(--cyan);background:#fff;box-shadow:0 0 0 3px rgba(59,196,237,.2)}
.pwmsg{font-size:13px;font-weight:700;min-height:0}
.pwmsg.err{color:#C62828}
.pwmsg.ok{color:#2f8a3e}

/* ============================================================
   Toast — pastilla de cristal oscuro
   ============================================================ */
.toast{position:fixed;bottom:26px;left:50%;transform:translateX(-50%) translateY(14px);
  background:rgba(11,40,55,.7);-webkit-backdrop-filter:saturate(160%) blur(18px);backdrop-filter:saturate(160%) blur(18px);
  color:#fff;padding:13px 24px;border-radius:var(--r-pill);font-size:14px;font-weight:700;
  box-shadow:var(--shadow-pop),inset 0 1px 0 rgba(255,255,255,.22);z-index:300;opacity:0;
  border:1px solid rgba(255,255,255,.16);transition:.26s var(--ease-liquid);pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.toast--ok{background:rgba(47,138,62,.82)}

/* ============================================================
   Accesibilidad — respeta reduce-motion
   ============================================================ */
@media (prefers-reduced-motion:reduce){
  body::after{animation:none}
  *{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
}

/* ============================================================
   Responsive · rendimiento móvil
   ============================================================ */
/* En pantallas pequeñas reducimos el radio de blur (es lo más caro de
   pintar) y detenemos la animación ambiental → mejor paint/scroll y
   menos consumo de batería, manteniendo el aspecto de cristal. */
@media (max-width:640px){
  :root{
    --glass-blur:saturate(160%) blur(12px);
    --glass-blur-sm:saturate(150%) blur(8px);
    --glass-blur-lg:saturate(165%) blur(20px);
  }
  body::after{animation:none}
}

@media (max-width:560px){
  .profile__meta{display:none}
  .topbar__title{display:none}
  .topbar__inner{gap:10px;padding:0 16px}
  .modal__hd{padding:22px 20px 14px}
  .modal__bd{padding:0 20px 22px}
}

/* ============================================================
   Optimización táctil — iPhone / iPad (Apple HIG)
   ============================================================ */
/* Safe-area del iPhone (notch / barra de inicio). Requiere
   viewport-fit=cover en el <meta viewport> de cada página. */
.topbar{padding-top:env(safe-area-inset-top)}
.topbar__inner{padding-left:max(clamp(18px,4vw,40px),env(safe-area-inset-left));
  padding-right:max(clamp(18px,4vw,40px),env(safe-area-inset-right))}
.page{padding-bottom:max(70px,calc(70px + env(safe-area-inset-bottom)))}

/* En dispositivos táctiles: objetivos ≥44px y sin auto-zoom de iOS.
   pointer:coarse aísla esto al táctil — el escritorio sigue compacto. */
@media (pointer:coarse){
  /* iOS hace zoom al enfocar inputs con fuente <16px: forzamos 16px */
  input,select,textarea,
  .ff input,.inp{font-size:16px !important}

  /* objetivos táctiles cómodos (mín. 44×44 de Apple) */
  .topbar__back{width:44px;height:44px}
  .modal__x{width:44px;height:44px}
  .pm__item,.pm__logout{padding-top:13px;padding-bottom:13px}
  .profile__chip{padding:6px 13px 6px 6px}
  button,a[role="button"]{-webkit-tap-highlight-color:transparent}

  /* desactiva hover-lift en táctil (no hay hover real; evita parpadeos) */
  .topbar__back:hover,.profile__chip:hover,.iconbtn:hover,
  .hist-card:hover,.rng-btn:hover{transform:none}
}

/* Evita el resaltado azul de iOS y mejora el scroll por inercia */
*{-webkit-tap-highlight-color:transparent}
html{-webkit-text-size-adjust:100%}
.tbl-wrap,.snav{-webkit-overflow-scrolling:touch}
