/* ════════════════════════════════════════════════════════════════
   HandyTask — ht-base.css v2 · el espacio de la bottom nav (D118)
   Doble mecanismo: padding + spacer físico. Con aire real (+24px).
   ════════════════════════════════════════════════════════════════ */
:root { --ht-bottomspace: calc(64px + env(safe-area-inset-bottom, 0px)); }

/* capa 1: páginas que scrollean por el body */
body { padding-bottom: calc(var(--ht-bottomspace) + 24px) !important; }

/* capa 2: spacer físico al final del flujo — funciona aunque el body
   tenga height/overflow propios o el padding sea absorbido */
body::after { content: ''; display: block; height: calc(var(--ht-bottomspace) + 24px); flex-shrink: 0; }

/* capa 3: contenedores de scroll internos típicos (Bootstrap) */
.container:last-child, .container-fluid:last-child { margin-bottom: calc(var(--ht-bottomspace) + 24px) !important; }

/* overlays: terminan ENCIMA de la nav (los de iframe lo resuelven por dentro) */
.modal:not(:has(iframe)) { bottom: var(--ht-bottomspace) !important; height: auto !important; }
.offcanvas { bottom: var(--ht-bottomspace) !important; }
.modal-footer { padding-bottom: calc(12px + env(safe-area-inset-bottom, 0px)); }

/* elementos sticky/fixed al fondo declarados por páginas legacy */
.ht-respect-nav { margin-bottom: var(--ht-bottomspace) !important; }

/* HT-TAPAREA: area de accion ampliada en botones de cerrar (target ~64px) */
.btn-close,.modal-nav-btn{position:relative;}
.ht-modal-x::after,.btn-close::after,.modal-nav-btn::after{content:"";position:absolute;inset:-14px;border-radius:50
/* HT-TAPAREA: area de accion ampliada en botones de cerrar */
.btn-close,.modal-nav-btn{position:relative;}
.ht-modal-x::after,.btn-close::after,.modal-nav-btn::after{content:"";position:absolute;inset:-14px;border-radius:50%;}

/* HT-IMGSKEL: shimmer mientras cargan las fotos de perfil */
.handyman-img, .hg-item img, .ht-header-avatar{
  background:linear-gradient(100deg,#e9e9ee 40%,#f7f7fa 50%,#e9e9ee 60%);
  background-size:200% 100%;
  animation:htshimmer 1.1s linear 10;
}
@keyframes htshimmer{ to{ background-position:-200% 0; } }
/* ═══ HT-SELFCHROME — contenido con chrome propio: el padre cede franja y X ═══ */
#fullscreenModal.ht-selfchrome .modal-content::before{ display: none !important; }
#fullscreenModal.ht-selfchrome .modal-body{ padding-top: 0 !important; }
#fullscreenModal.ht-selfchrome .ht-modal-x{ display: none !important; }
