/* ==========================================================================
   FDR — Sistema de diseño multi-tema (v1.016)

   Cuatro temas sobre una sola estructura de componentes. El tema se elige
   con html[data-theme="soft|glass|luxury|apple"], se guarda en localStorage
   ('fdr_theme') y se puede cambiar desde la barra inferior (shell.html).

   Regla de oro: los componentes NUNCA usan colores directos — solo
   variables. Cada tema es un bloque de variables + un puñado mínimo de
   overrides estructurales al final.
   ========================================================================== */

/* --------------------------------------------------------------------------
   TEMA POR DEFECTO: SOFT UI (evolución del neumorfismo actual)
   -------------------------------------------------------------------------- */
:root{
  --font-display:"Manrope",system-ui,sans-serif;
  --font-body:"Manrope",system-ui,sans-serif;
  --font-mono:"Red Hat Mono",ui-monospace,monospace;

  --bg:#E4E9F2;
  --surface:#E4E9F2;          /* superficie principal (tarjetas)            */
  --surface-2:#EDF1F8;        /* superficie alterna / hover                 */
  --field-bg:#E4E9F2;         /* fondo de inputs                            */
  --card:var(--surface);      /* v2.151: alias — var(--card) era huérfano   */
  --pop:var(--surface);       /* v2.151: paneles FLOTANTES (siempre opaco)  */
  --ink:#232B3A; --ink-soft:#59647A; --ink-faint:#8B96AB;
  --line:rgba(89,100,122,.16);
  --line-strong:rgba(89,100,122,.30);

  /* Coral de marca (logo), oscurecido para contraste de texto AA */
  --brand:#D63840; --brand-soft:#F9DEDF; --on-brand:#FFFFFF;
  --ok:#1F9D62;  --ok-soft:#DCF2E7;
  --warn:#B87514; --warn-soft:#F7ECD8;
  --bad:#C94040; --bad-soft:#F7DEDE;

  --r-sm:10px; --r:14px; --r-lg:20px; --r-pill:999px;

  --sh-l:#FFFFFF; --sh-d:#BCC6D8;
  --sh-card:5px 5px 12px var(--sh-d),-5px -5px 12px var(--sh-l);
  --sh-card-sm:3px 3px 7px var(--sh-d),-3px -3px 7px var(--sh-l);
  --sh-card-hover:7px 7px 16px var(--sh-d),-7px -7px 16px var(--sh-l);
  --sh-inset:inset 3px 3px 7px var(--sh-d),inset -3px -3px 7px var(--sh-l);
  --sh-inset-sm:inset 2px 2px 4px var(--sh-d),inset -2px -2px 4px var(--sh-l);
  --bd-card:1px solid rgba(89,100,122,.14);

  --topbar-bg:#E4E9F2; --topbar-ink:#232B3A; --topbar-bf:none;
  --topbar-line:transparent;
  --topbar-sh:0 8px 18px -14px #BCC6D8;
  --nav-on-ink:var(--brand); --nav-on-bg:var(--bg);
  --nav-on-sh:var(--sh-card-sm); --nav-on-bd:rgba(89,100,122,.14);
  --nav-track-sh:var(--sh-inset-sm);

  /* v2.157: sidebar (rediseño premium). Derivados de los tokens existentes
     para que los 14 skins hereden el layout SIN tocar cada uno; el skin
     «pro» los redefine para el look slate/indigo/emerald del mockup. */
  --side-w:250px;
  --side-bg:var(--surface-2);
  --side-ink:var(--ink);
  --side-line:var(--line);
  --side-grp:var(--ink-faint);
  --side-hover:rgba(120,130,150,.12);
  --side-hover:color-mix(in srgb,var(--ink) 8%,transparent);
  --side-on-ink:var(--nav-on-ink);
  --side-on-bg:var(--nav-on-bg);
  --side-on-sh:var(--nav-on-sh);
  --side-on-bd:var(--nav-on-bd);

  --label-ls:.06em;
  --hweight:800;
  --bf:none;                  /* backdrop-filter de tarjetas                */
}

/* --------------------------------------------------------------------------
   TEMA: GLASS
   -------------------------------------------------------------------------- */
html[data-theme="glass"]{
  --font-display:"Outfit",system-ui,sans-serif;
  --font-body:"Inter",system-ui,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,monospace;

  --bg:#0B1220;
  --surface:rgba(255,255,255,.055);
  --surface-2:rgba(255,255,255,.09);
  --field-bg:rgba(0,0,0,.28);
  --ink:#EDF2FB; --ink-soft:#A8B4CC; --ink-faint:#6C7A96;
  --line:rgba(255,255,255,.10);
  --line-strong:rgba(255,255,255,.22);

  --brand:#54E0C7; --brand-soft:rgba(84,224,199,.16); --on-brand:#07211C;
  --ok:#4ADE80;  --ok-soft:rgba(74,222,128,.14);
  --warn:#FBBF24; --warn-soft:rgba(251,191,36,.12);
  --bad:#F87171; --bad-soft:rgba(248,113,113,.14);

  --r-sm:12px; --r:16px; --r-lg:22px;

  --sh-card:0 14px 40px -22px rgba(0,0,0,.65);
  --sh-card-sm:0 8px 24px -16px rgba(0,0,0,.55);
  --sh-card-hover:0 18px 48px -20px rgba(84,224,199,.28);
  --sh-inset:inset 0 1px 0 rgba(255,255,255,.08);
  --sh-inset-sm:inset 0 1px 0 rgba(255,255,255,.07);
  --bd-card:1px solid rgba(255,255,255,.09);
  --pop:#182642;              /* v2.151: flotantes opacos sobre el vidrio   */

  --topbar-bg:rgba(16,26,46,.72); --topbar-ink:#EDF2FB;
  --topbar-bf:blur(18px) saturate(1.4);
  --topbar-line:rgba(255,255,255,.10);
  --topbar-sh:0 18px 44px -26px rgba(0,0,0,.8);
  --nav-on-ink:#07211C;
  --nav-on-bg:linear-gradient(135deg,#54E0C7,#1FBFA4);
  --nav-on-sh:0 4px 18px -6px rgba(84,224,199,.55);
  --nav-on-bd:transparent;
  --nav-track-sh:none;

  --label-ls:.07em;
  --hweight:600;
  --bf:blur(14px);
}

/* --------------------------------------------------------------------------
   TEMA: LUXURY
   -------------------------------------------------------------------------- */
html[data-theme="luxury"]{
  --font-display:"Cormorant Garamond",serif;
  --font-body:"Jost",system-ui,sans-serif;
  --font-mono:"Jost",system-ui,sans-serif;

  --bg:#F7F5F0;
  --surface:#FCFBF8;
  --surface-2:#F2EFE7;
  --field-bg:#FCFBF8;
  --ink:#1C2B26; --ink-soft:#5C6B64; --ink-faint:#96A19A;
  --line:#E3DED2;
  --line-strong:#CFC7B4;

  --brand:#A8894F; --brand-soft:#F0E9DA; --on-brand:#FFFFFF;
  --ok:#3D6B54;  --ok-soft:#E7EEE9;
  --warn:#8A6D2F; --warn-soft:#F4EEDD;
  --bad:#8C3B32; --bad-soft:#F2E3E1;

  --r-sm:3px; --r:4px; --r-lg:6px; --r-pill:3px;

  --sh-card:0 1px 2px rgba(28,43,38,.05);
  --sh-card-sm:0 1px 2px rgba(28,43,38,.04);
  --sh-card-hover:0 4px 14px rgba(28,43,38,.08);
  --sh-inset:none;
  --sh-inset-sm:none;
  --bd-card:1px solid #E3DED2;

  --topbar-bg:#1E3A31; --topbar-ink:#EDEAE0; --topbar-bf:none;
  --topbar-line:transparent;
  --topbar-sh:none;
  --nav-on-ink:#A8894F; --nav-on-bg:transparent;
  --nav-on-sh:inset 0 -2px 0 #A8894F;
  --nav-on-bd:transparent;
  --nav-track-sh:none;

  --label-ls:.14em;
  --hweight:600;
  --bf:none;
}

/* --------------------------------------------------------------------------
   TEMA: APPLE
   -------------------------------------------------------------------------- */
html[data-theme="apple"]{
  --font-display:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",system-ui,sans-serif;
  --font-body:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",system-ui,sans-serif;
  --font-mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,monospace;

  --bg:#F4F5F7;
  --surface:#FFFFFF;
  --surface-2:#F4F5F7;
  --field-bg:#F4F5F7;
  --ink:#1C1C1E; --ink-soft:#6E6E73; --ink-faint:#A1A1A6;
  --line:rgba(0,0,0,.07);
  --line-strong:rgba(0,0,0,.16);

  --brand:#0A7CFF; --brand-soft:rgba(10,124,255,.10); --on-brand:#FFFFFF;
  --ok:#30A46C;  --ok-soft:rgba(48,164,108,.12);
  --warn:#C47F17; --warn-soft:rgba(196,127,23,.12);
  --bad:#DC3D43; --bad-soft:rgba(220,61,67,.12);

  --r-sm:9px; --r:14px; --r-lg:20px;

  --sh-card:0 1px 2px rgba(0,0,0,.04),0 8px 24px -12px rgba(0,0,0,.10);
  --sh-card-sm:0 1px 2px rgba(0,0,0,.04);
  --sh-card-hover:0 2px 4px rgba(0,0,0,.05),0 16px 36px -14px rgba(0,0,0,.16);
  --sh-inset:none;
  --sh-inset-sm:none;
  --bd-card:1px solid rgba(0,0,0,.05);

  --topbar-bg:rgba(255,255,255,.72); --topbar-ink:#1C1C1E;
  --topbar-bf:saturate(1.8) blur(20px);
  --topbar-line:rgba(0,0,0,.07);
  --topbar-sh:none;
  --nav-on-ink:#FFFFFF; --nav-on-bg:#1C1C1E;
  --nav-on-sh:none; --nav-on-bd:transparent;
  --nav-track-sh:none;

  --label-ls:.02em;
  --hweight:700;
  --bf:none;
}

/* --------------------------------------------------------------------------
   FRONTDESK PRO — rediseño premium (v2.157). SaaS de property management:
   fondo slate, tarjetas blancas nítidas, acento índigo, éxito esmeralda.
   El sidebar es BLANCO sobre el slate del fondo (tokens --side-*).
   -------------------------------------------------------------------------- */
html[data-theme="pro"]{
  --font-display:"Manrope",system-ui,sans-serif;
  --font-body:"Inter",system-ui,sans-serif;
  --font-mono:"JetBrains Mono",ui-monospace,monospace;

  --bg:#F1F5F9;
  --surface:#FFFFFF;
  --surface-2:#F8FAFC;
  --field-bg:#FFFFFF;
  --card:var(--surface);
  --pop:#FFFFFF;
  --ink:#0F172A; --ink-soft:#475569; --ink-faint:#94A3B8;
  --line:#E2E8F0;
  --line-strong:#CBD5E1;

  --brand:#4F46E5; --brand-soft:#EEF2FF; --on-brand:#FFFFFF;
  --ok:#059669;  --ok-soft:#D1FAE5;
  --warn:#D97706; --warn-soft:#FEF3C7;
  --bad:#DC2626; --bad-soft:#FEE2E2;

  --r-sm:10px; --r:14px; --r-lg:18px; --r-pill:999px;

  --sh-card:0 1px 2px rgba(15,23,42,.04),0 10px 26px -16px rgba(15,23,42,.16);
  --sh-card-sm:0 1px 2px rgba(15,23,42,.05);
  --sh-card-hover:0 2px 6px rgba(15,23,42,.06),0 20px 42px -18px rgba(15,23,42,.22);
  --sh-inset:none;
  --sh-inset-sm:none;
  --bd-card:1px solid #E7ECF3;

  --topbar-bg:rgba(255,255,255,.85); --topbar-ink:#0F172A;
  --topbar-bf:saturate(1.4) blur(14px);
  --topbar-line:#E7ECF3;
  --topbar-sh:none;
  --nav-on-ink:#4F46E5; --nav-on-bg:#EEF2FF;
  --nav-on-sh:none; --nav-on-bd:transparent;
  --nav-track-sh:none;

  /* Sidebar blanco, ítem activo índigo suave (el look del mockup). */
  --side-bg:#FFFFFF;
  --side-ink:#334155;
  --side-line:#E9EDF3;
  --side-grp:#94A3B8;
  --side-hover:#F1F5F9;
  --side-on-ink:#4F46E5;
  --side-on-bg:#EEF2FF;
  --side-on-sh:none;
  --side-on-bd:transparent;

  --label-ls:.03em;
  --hweight:700;
  --bf:none;
}

/* Frontdesk Pro — capa de componentes premium (Fase 2, v2.158). SOLO afecta
   al skin «pro»: los otros 13 conservan su identidad (cero riesgo de
   regresión). Cuando Pro sea el default, todo el equipo ve este acabado. */
html[data-theme="pro"] .card{border-radius:var(--r-lg)}
html[data-theme="pro"] .card-head{
  padding-bottom:.7rem;margin-bottom:1rem;border-bottom:1px solid var(--line)}
html[data-theme="pro"] .card-head h3{font-weight:700;letter-spacing:-.01em}

/* KPIs: acento índigo a la izquierda + realce sutil al pasar el cursor. */
html[data-theme="pro"] .kpi{
  border-radius:var(--r-lg);position:relative;overflow:hidden;
  transition:box-shadow .16s ease,transform .16s ease}
html[data-theme="pro"] .kpi::before{content:"";position:absolute;
  left:0;top:0;bottom:0;width:3px;background:var(--brand);opacity:.9}
html[data-theme="pro"] .kpi:hover{
  box-shadow:var(--sh-card-hover);transform:translateY(-1px)}
html[data-theme="pro"] .kpi .val{font-size:1.85rem}

/* Tablas: encabezado gris suave + fila con realce índigo. */
html[data-theme="pro"] thead th{
  color:var(--ink-faint);background:var(--surface-2);
  text-transform:uppercase;letter-spacing:.05em;font-size:.68rem}
html[data-theme="pro"] tbody tr:hover{
  background:color-mix(in srgb,var(--brand) 6%,transparent)}

/* CTA primario índigo con sombra de color sutil. */
html[data-theme="pro"] button.pri,
html[data-theme="pro"] .pri-btn{
  box-shadow:0 1px 2px rgba(79,70,229,.25),0 8px 20px -10px rgba(79,70,229,.45)}
html[data-theme="pro"] button.pri:hover,
html[data-theme="pro"] .pri-btn:hover{
  box-shadow:0 2px 4px rgba(79,70,229,.30),0 12px 26px -8px rgba(79,70,229,.50)}

/* Badges/semáforos como píldoras. */
html[data-theme="pro"] .sem,
html[data-theme="pro"] .badge{border-radius:var(--r-pill);font-weight:700}

/* ==========================================================================
   BASE
   ========================================================================== */
*{box-sizing:border-box}
html{background:var(--bg)}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font-family:var(--font-body);font-size:14px;line-height:1.5;
  -webkit-font-smoothing:antialiased;min-height:100vh;
}
h1,h2,h3{margin:0 0 .6rem;font-family:var(--font-display);
  font-weight:var(--hweight);letter-spacing:-.012em}
h2{font-size:1.35rem} h3{font-size:1.05rem;margin-top:1.4rem}
a{color:var(--brand);text-decoration:none}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:6px}

/* halos de atmósfera — solo glass */
html[data-theme="glass"] body::before,
html[data-theme="glass"] body::after{
  content:"";position:fixed;border-radius:50%;filter:blur(120px);
  z-index:-1;pointer-events:none}
html[data-theme="glass"] body::before{width:560px;height:560px;left:-140px;top:-120px;
  background:radial-gradient(circle,rgba(84,224,199,.16),transparent 70%)}
html[data-theme="glass"] body::after{width:640px;height:640px;right:-180px;bottom:-160px;
  background:radial-gradient(circle,rgba(139,124,246,.14),transparent 70%)}

/* ---------- Layout: sidebar fija + columna de contenido (v2.157) ----------
   Rediseño premium (Fase 1). El shell pasó de una barra superior con pestañas
   a un SIDEBAR lateral. Todo va dirigido por tokens (--side-*): los 14 skins
   heredan el layout sin tocarse uno por uno; «pro» redefine los tokens. */
.app{display:flex;align-items:stretch;min-height:100vh}
.navcb{display:none}

.side{
  flex:none;width:var(--side-w);
  position:sticky;top:0;align-self:flex-start;
  height:100vh;overflow-y:auto;overscroll-behavior:contain;
  display:flex;flex-direction:column;z-index:60;
  background:var(--side-bg);color:var(--side-ink);
  border-right:1px solid var(--side-line);
}
.side-brand{display:flex;align-items:center;padding:1.05rem 1rem .5rem}
.side-brand .logo svg{width:30px;height:30px}

.sidenav{display:flex;flex-direction:column;gap:.1rem;padding:.5rem .6rem 1.2rem}
.nav-grp{font-size:.64rem;font-weight:700;text-transform:uppercase;
  letter-spacing:.11em;color:var(--side-grp);padding:.9rem .7rem .28rem}
.nav-grp:first-of-type{padding-top:.35rem}
.sidenav a{
  display:flex;align-items:center;gap:.7rem;
  padding:.55rem .7rem;border-radius:var(--r-sm);
  color:var(--side-ink);opacity:.78;line-height:1.1;
  font-size:.86rem;font-weight:550;border:1px solid transparent;
  transition:background .15s ease,opacity .15s ease,color .15s ease;
}
.sidenav a:hover{opacity:1;background:var(--side-hover)}
.sidenav a.on{
  opacity:1;color:var(--side-on-ink);background:var(--side-on-bg);
  box-shadow:var(--side-on-sh);border-color:var(--side-on-bd);font-weight:650;
}
.ic{width:1.15rem;height:1.15rem;flex:none;
  stroke:currentColor;fill:none;stroke-width:1.9;
  stroke-linecap:round;stroke-linejoin:round}
html[data-theme="luxury"] .sidenav a{text-transform:uppercase;font-size:.72rem;
  letter-spacing:.09em;border-radius:0}

.side-scrim{display:none}
.main-col{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;min-height:100vh}

/* ---------- Barra superior (delgada, dentro de la columna) ---------- */
.topbar{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;gap:.8rem;
  padding:.55rem 1.4rem;min-height:3.3rem;
  background:var(--topbar-bg);color:var(--topbar-ink);
  backdrop-filter:var(--topbar-bf);-webkit-backdrop-filter:var(--topbar-bf);
  border-bottom:1px solid var(--topbar-line);
  box-shadow:var(--topbar-sh);
}
.top-sp{flex:1 1 auto}
.logo{display:flex;align-items:center;gap:.6rem}
.logo svg{width:34px;height:34px}
.logo-txt{line-height:1.05;padding-left:.6rem;border-left:2.5px solid currentColor}
.logo-txt b{display:block;font-size:.88rem;letter-spacing:.02em;
  font-family:var(--font-display);font-weight:800}
.logo-txt b em{font-style:normal;color:#F0545C}
.logo-txt span{font-size:.62rem;opacity:.75;letter-spacing:.18em;
  font-weight:700;text-transform:uppercase}

.usuario{display:flex;align-items:center;gap:.6rem;font-size:.8rem;opacity:.92}
.ver{font-family:var(--font-mono);font-size:.66rem;font-weight:600;
  padding:.16rem .5rem;border-radius:var(--r-pill);
  border:1px solid var(--line);letter-spacing:.02em}
.avatar{width:32px;height:32px;border-radius:50%;
  display:grid;place-items:center;font-weight:700;font-size:.74rem;
  color:var(--on-brand);background:var(--brand)}

/* Hamburguesa: oculta en escritorio; en móvil (≤900px) abre el drawer. */
.burger{display:none}
.burger i,.burger i::before,.burger i::after{
  content:"";display:block;width:20px;height:2px;border-radius:2px;
  background:currentColor}
.burger i{position:relative}
.burger i::before{position:absolute;left:0;top:-6px}
.burger i::after{position:absolute;left:0;top:6px}

main{padding:1.4rem;max-width:1240px;margin:0 auto;width:100%;flex:1 0 auto}
/* #3 (Charlie 23-08): Housekeeping es una vista de OPERACIONES — usa (casi)
   todo el ancho del viewport, no el contenedor central de 1240px. */
main.tab-housekeeping{max-width:none;padding-left:1.6rem;padding-right:1.6rem}
@media(max-width:640px){main.tab-housekeeping{padding-left:.5rem;padding-right:.5rem}}

/* ---------- Superficies ---------- */
.card{
  background:var(--surface);border-radius:var(--r);
  border:var(--bd-card);box-shadow:var(--sh-card);
  backdrop-filter:var(--bf);-webkit-backdrop-filter:var(--bf);
  padding:1.1rem 1.3rem;margin-bottom:1.1rem;
}
.card.flat{box-shadow:var(--sh-card-sm)}
.card-head{display:flex;align-items:center;gap:.7rem;margin:-.2rem 0 .9rem}
.card-head h3{margin:0;font-size:.98rem}
.card-head .sub{font-size:.76rem;color:var(--ink-faint);margin-left:auto}

/* ---------- KPIs ---------- */
.kpis{display:grid;gap:1rem;margin-bottom:1.2rem;
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.kpi{background:var(--surface);border-radius:var(--r);
  border:var(--bd-card);box-shadow:var(--sh-card);
  backdrop-filter:var(--bf);-webkit-backdrop-filter:var(--bf);
  padding:1rem 1.2rem}
.kpi .lbl,.kpi .klbl{font-size:.72rem;color:var(--ink-faint);
  text-transform:uppercase;letter-spacing:var(--label-ls);font-weight:650}
.kpi .val,.kpi .kval{font-family:var(--font-mono);font-size:1.7rem;
  font-weight:700;letter-spacing:-.02em;margin-top:.2rem;
  font-variant-numeric:tabular-nums lining-nums}
html[data-theme="luxury"] .kpi .val,
html[data-theme="luxury"] .kpi .kval{font-family:var(--font-display);font-size:1.9rem}
.kpi .hint{font-size:.76rem;color:var(--ink-soft)}
.kpi.ok .val{color:var(--ok)} .kpi.warn .val{color:var(--warn)}
.kpi.bad .val{color:var(--bad)}
/* v2.158 (Fase 2): chip de tendencia del KPI. Solo aparece si la vista pasa
   un dato real (helper kpi(delta=…)); nunca se inventa. */
.kpi .delta{display:inline-flex;align-items:center;gap:.25rem;margin-top:.35rem;
  font-family:var(--font-mono);font-size:.7rem;font-weight:700;
  padding:.12rem .5rem;border-radius:var(--r-pill);letter-spacing:-.01em}
.kpi .delta.up{color:var(--ok);background:var(--ok-soft)}
.kpi .delta.down{color:var(--bad);background:var(--bad-soft)}
.kpi .delta.flat{color:var(--ink-faint);background:var(--surface-2)}

/* v2.160 (Fase 4): avatar de iniciales + badge de canal en tablas de reservas.
   Color del avatar estable por nombre (HSL); badges con el color de cada
   marca (contorno, para leerse igual en claro y oscuro). */
.avatar-ini{display:inline-flex;align-items:center;justify-content:center;
  width:1.65rem;height:1.65rem;border-radius:50%;flex:none;color:#fff;
  font-size:.62rem;font-weight:800;letter-spacing:.01em;
  background:hsl(var(--ah,220) 50% 46%)}
.avatar-ini.vacio{background:var(--ink-faint);font-weight:700}
.hu-cell{display:inline-flex;align-items:center;gap:.45rem;flex-wrap:wrap}
.hu-nom{font-weight:600}
.badge-canal{display:inline-flex;align-items:center;line-height:1;
  font-size:.6rem;font-weight:700;letter-spacing:.01em;white-space:nowrap;
  padding:.16rem .42rem;border-radius:var(--r-pill);
  border:1px solid currentColor;opacity:.88}
.badge-canal.airbnb{color:#E11D48}
.badge-canal.booking{color:#1D6FE0}
.badge-canal.vrbo{color:#245ABC}
.badge-canal.directo{color:var(--ink-faint)}
.badge-canal.owner{color:#7C3AED}
/* v2.162: enlace a Vacaciones desde Nómina. */
.vac-link{margin:-.2rem 0 1rem;font-weight:650}
/* v2.241 — vacaciones del auxiliar: vista gráfica (saldo grande + barra) */
.vac-graf{margin:.2rem 0 1rem}
.vac-big{display:flex;align-items:baseline;gap:.5rem;margin-bottom:.55rem}
.vac-num{font-size:2.8rem;font-weight:800;line-height:1;color:var(--ok,#16a34a)}
.vac-num.bad{color:var(--bad,#c0392b)}
.vac-lbl{font-size:.95rem;font-weight:700;color:var(--ink-soft)}
.vac-bar{display:flex;height:1.15rem;border-radius:.6rem;overflow:hidden;
  background:var(--line,#e6e6e6)}
.vac-seg{height:100%}
.vac-seg.tomado{background:var(--ink-soft,#9aa0a6)}
.vac-seg.disp{background:var(--ok,#16a34a)}
.vac-leyenda{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:.5rem;
  font-size:.82rem;font-weight:650;color:var(--ink)}
.vac-leyenda .vdot{display:inline-block;width:.7rem;height:.7rem;
  border-radius:.2rem;margin-right:.35rem;vertical-align:baseline}
.vac-leyenda .vdot.tomado{background:var(--ink-soft,#9aa0a6)}
.vac-leyenda .vdot.disp{background:var(--ok,#16a34a)}
/* v2.242 — reparto de la liquidación entre copropietarios */
.reparto-cop{margin:.55rem 0 .2rem;padding:.55rem .7rem;
  border:1px dashed var(--line,#d8d8d8);border-radius:.6rem}
.reparto-cop h4{margin:0 0 .45rem;font-size:.8rem;text-transform:uppercase;
  letter-spacing:.02em;color:var(--ink-soft)}
/* v2.243 → v2.244 — Mi rol de pago: infografía color-codificada.
   Verde = lo que gano · Rojo/naranja = lo que me descuentan · Azul = lo que
   aporta la empresa · Verde fuerte = mi neto. Tintes suaves con color-mix
   (fallback al fondo de tarjeta) para que respeten cada skin. */
.pay-card{border-left:5px solid var(--line,#d8d8d8);border-radius:.75rem;
  padding:.8rem 1rem;margin-bottom:.95rem;background:var(--card,#fff)}
.pay-card h3{display:flex;align-items:center;gap:.5rem;margin:.1rem 0 .55rem;
  font-size:1.02rem}
.pay-card h3 .ic{width:1.2rem;height:1.2rem;flex:0 0 auto}
.pay-in{border-left-color:var(--ok,#16a34a);
  background:color-mix(in srgb, var(--ok,#16a34a) 7%, var(--card,#fff))}
.pay-in h3{color:var(--ok,#16a34a)}
.pay-out{border-left-color:var(--bad,#c0392b);
  background:color-mix(in srgb, var(--bad,#c0392b) 7%, var(--card,#fff))}
.pay-out h3{color:var(--bad,#c0392b)}
.pay-emp{border-left-color:#2563eb;
  background:color-mix(in srgb, #2563eb 7%, var(--card,#fff))}
.pay-emp h3{color:#2563eb}
.pay-net{border-left-width:6px;border-left-color:var(--ok,#16a34a);
  background:color-mix(in srgb, var(--ok,#16a34a) 12%, var(--card,#fff))}
.pay-net .card-head h3{color:var(--ok,#16a34a)}
.pay-net .big-count{color:var(--ok,#16a34a)}
.pay-card table td.n{font-variant-numeric:tabular-nums}
.pay-note h3{color:var(--ink-soft,#6b7280)}

/* v2.245 — «tanque» que se va llenando: décimos que se acumulan (cuando NO se
   mensualizan) y el acumulado del año de vacaciones. Mismo lenguaje visual en
   Nómina y en Vacaciones. Tintes con color-mix (fallback al fondo). */
.tanque{margin:.55rem 0 .35rem}
.tanque-track{position:relative;height:1.55rem;border-radius:.7rem;
  overflow:hidden;
  background:color-mix(in srgb, var(--ok,#16a34a) 12%, var(--card,#fff));
  border:1px solid color-mix(in srgb, var(--ok,#16a34a) 32%, var(--card,#fff))}
.tanque-fill{position:absolute;left:0;top:0;bottom:0;border-radius:.7rem;
  min-width:.35rem;transition:width .6s ease;
  background:linear-gradient(180deg,
    color-mix(in srgb, var(--ok,#16a34a) 72%, #fff), var(--ok,#16a34a))}
.tanque-pct{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  font-size:.8rem;font-weight:800;color:var(--ink);
  text-shadow:0 0 .4rem var(--card,#fff),0 0 .4rem var(--card,#fff)}
.tanque-meta{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem;
  margin-top:.32rem;font-size:.8rem;font-weight:650;color:var(--ink-soft)}
.por-mes{font-size:.95rem;font-weight:700;color:var(--ink-soft)}

/* ── v2.297 (Charlie): lenguaje visual «Opción 3» de las pantallas del empleado
   — hero oscuro, donut, KPIs. Piezas reutilizables (beneficios, rol, vacaciones). */
.emp-hero{background:linear-gradient(135deg,#102a44,#0d2036);color:#fff;
  border-radius:1rem;padding:1.05rem 1.25rem;margin:0 0 1rem;
  display:flex;align-items:center;justify-content:space-between;gap:1rem}
.emp-hero h2{color:#fff;margin:.05rem 0 .25rem;font-size:1.5rem;border:none;padding:0}
.emp-hero-tx p{color:rgba(255,255,255,.72);margin:0;font-size:.9rem;line-height:1.35}
.emp-hero-sel{display:flex;flex-direction:column;gap:.25rem;align-items:flex-end;
  font-size:.68rem;font-weight:800;letter-spacing:.05em;text-transform:uppercase;
  color:rgba(255,255,255,.7);flex:0 0 auto}
.emp-hero-sel select{font:inherit;font-size:.92rem;font-weight:700;text-transform:none;
  letter-spacing:normal;color:#fff;background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.3);border-radius:.55rem;padding:.42rem .6rem;
  cursor:pointer;max-width:46vw}
.emp-hero-sel select option{color:#12233b;background:#fff}
@media(max-width:520px){.emp-hero{align-items:flex-start}}
.donut{width:118px;height:118px;display:block;flex:0 0 auto}
.donut-track{stroke:var(--line,#e2e6ea)}
.donut-pct{font-size:27px;font-weight:800;font-variant-numeric:tabular-nums}
/* tarjeta de beneficio: acento por tipo (--ben) sobre la superficie del tema */
.ben-card{--ben:#16a34a;border:1px solid var(--line);border-left:5px solid var(--ben);
  border-radius:.85rem;background:var(--surface)}
@supports (background:color-mix(in srgb,#000 5%,#fff)){
  .ben-card{background:color-mix(in srgb,var(--ben) 6%,var(--surface));
    border-color:color-mix(in srgb,var(--ben) 20%,var(--line))}}
.ben-card.b13{--ben:#16a34a}
.ben-card.b14{--ben:#4f46e5}
.ben-card.bfon{--ben:#7c3aed}
.ben-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.35rem}
.ben-head h3{margin:0;flex:1;font-size:1.02rem;display:flex;align-items:center}
.ben-ico{color:var(--ben);display:inline-flex;flex:0 0 auto}
.ben-ico .ic{width:1.35rem;height:1.35rem}
.ben-pct-lbl{font-size:.82rem;color:var(--ink-soft);white-space:nowrap}
.ben-pct-lbl b{font-size:1.05rem;color:var(--ben)}
.ben-body{display:flex;align-items:center;justify-content:space-between;gap:.6rem;
  margin:.35rem 0 .55rem}
.ben-fig{display:flex;flex-direction:column;gap:.05rem;min-width:0}
.ben-fig-r{text-align:right}
.ben-fig>b{font-size:1.35rem;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.1}
.ben-fig>span{font-size:.76rem;color:var(--gy,#6b7280)}
.ben-acum{color:var(--ben)!important}
.ben-mens-val{display:flex;align-items:baseline;gap:.3rem;margin:.2rem 0 .45rem}
.ben-mens-val b{font-size:1.7rem;font-variant-numeric:tabular-nums}
.ben-mens-val span{font-size:.9rem;color:var(--gy,#6b7280);font-weight:700}
.mini-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));
  gap:.5rem;margin:.35rem 0 .1rem}
.ben-fecha{margin:.5rem 0 .1rem}
.mini-kpi{background:var(--surface);border:1px solid var(--line);border-radius:.7rem;
  padding:.55rem .55rem;display:flex;flex-direction:column;gap:.15rem;min-width:0}
.mini-kpi-ic{color:var(--ben);display:inline-flex}
.mini-kpi-ic svg{width:1.05rem;height:1.05rem}
.mini-kpi b{font-size:.96rem;color:var(--ink);font-variant-numeric:tabular-nums;
  line-height:1.15;overflow-wrap:anywhere}
.mini-kpi-lbl{font-size:.72rem;color:var(--gy,#6b7280);line-height:1.2}
.ben-badge{display:inline-block;border-radius:1rem;padding:.12rem .6rem;
  font-size:.76rem;font-weight:700;color:var(--ben);
  background:var(--surface);border:1px solid var(--ben)}
@supports (background:color-mix(in srgb,#000 5%,#fff)){
  .ben-badge{background:color-mix(in srgb,var(--ben) 15%,var(--surface));border-color:transparent}}
.ben-ayuda{cursor:pointer}
.ben-ayuda>summary{font-weight:750;font-size:.95rem;list-style:none}
.ben-ayuda>summary::-webkit-details-marker{display:none}
.ben-ayuda>summary::after{content:"›";float:right;transition:transform .2s}
.ben-ayuda[open]>summary::after{transform:rotate(90deg)}
@media(max-width:520px){
  .emp-hero h2{font-size:1.25rem}
  .ben-fig>b{font-size:1.12rem}
  .donut{width:98px;height:98px}
  .ben-pct-lbl{font-size:.75rem}
}

/* v2.251 — taller de revisión del histórico: cada anomalía en su tarjeta. */
.rev-fila{border-left:4px solid var(--accent,#D63840)}
.rev-cab{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
  font-size:.95rem;margin-bottom:.2rem}

/* v2.166: ⚙ comisión de pago (reservas directas) + desglose Stripe/Guesty. */
.pago-cfg{margin:.2rem 0 .9rem;border:1px solid var(--line);
  border-radius:var(--r-sm);background:var(--surface);max-width:680px}
.pago-cfg>summary{padding:.55rem .75rem;cursor:pointer;font-weight:650;
  list-style:none;user-select:none}
.pago-cfg>summary::-webkit-details-marker{display:none}
.pago-cfg-body{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .7rem;
  padding:.4rem .75rem .7rem;border-top:1px solid var(--line)}
.pago-cfg-body label{display:inline-flex;align-items:center;gap:.3rem;
  font-size:.8rem;font-weight:600}
.pago-cfg-body input{width:5.2rem}
.pago-cfg-body>p{flex:1 1 100%;margin:.15rem 0 0}
.sp-fee-desg{white-space:nowrap;margin-top:.1rem}

/* v2.161 (Fase 5): mapa de ocupación (unidades × días). Celda verde = unidad
   ocupada ese día; fin de semana con un tinte; el pie da el % por día. */
.ocupa-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:.2rem}
.ocupa{border-collapse:separate;border-spacing:2px;font-size:.6rem}
.ocupa th.ocupa-u{position:sticky;left:0;z-index:1;background:var(--surface);
  text-align:left;white-space:nowrap;padding:0 .55rem 0 .1rem;
  font-weight:650;color:var(--ink-soft)}
.ocupa thead th{width:1.1rem;min-width:1.1rem;text-align:center;
  font-weight:700;color:var(--ink-faint);padding:.05rem 0}
.ocupa thead th.fds{color:var(--brand)}
.ocupa tbody td{width:1.1rem;height:1.1rem;border-radius:3px;
  background:var(--surface-2)}
.ocupa tbody td.fds{background:color-mix(in srgb,var(--ink) 7%,var(--surface-2))}
.ocupa tbody td.on{background:var(--ok);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--ok) 55%,#0006)}
.ocupa tbody td.on.fds{background:var(--ok)}
.ocupa tfoot th.ocupa-u{font-size:.55rem;color:var(--ink-faint);font-weight:700}
.ocupa tfoot td{text-align:center;font-size:.52rem;color:var(--ink-faint);
  background:transparent;padding-top:.18rem}

/* ---------- Selector de fechas ---------- */
.rango{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-bottom:1.1rem}
.presets{display:flex;gap:.3rem;flex-wrap:wrap;padding:.3rem;
  border-radius:var(--r-pill);box-shadow:var(--nav-track-sh);
  border:1px solid var(--line)}
html[data-theme="apple"] .presets{background:rgba(0,0,0,.055);border-color:transparent}
.presets a{padding:.36rem .8rem;border-radius:var(--r-pill);
  font-size:.78rem;font-weight:600;color:var(--ink-soft);
  border:1px solid transparent;transition:all .15s ease}
.presets a:hover{color:var(--ink)}
.presets a.on{color:var(--nav-on-ink);background:var(--nav-on-bg);
  box-shadow:var(--nav-on-sh);border-color:var(--nav-on-bd)}
html[data-theme="apple"] .presets a.on{color:var(--ink);background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.12),0 3px 8px rgba(0,0,0,.06)}
html[data-theme="luxury"] .presets{border:0;padding:0;gap:1.2rem}
html[data-theme="luxury"] .presets a{text-transform:uppercase;font-size:.72rem;
  letter-spacing:.08em;border-radius:0;padding:.3rem 0}
.rango .fechas{display:flex;align-items:center;gap:.4rem;margin-left:auto;
  font-family:var(--font-mono);font-size:.78rem;color:var(--ink-soft)}

input,select,textarea{
  font:inherit;color:var(--ink);width:100%;
  background:var(--field-bg);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:.5rem .7rem;height:2.4rem;
  box-shadow:var(--sh-inset-sm);outline:none;
}
textarea{height:auto;min-height:4.5rem}
input[type="checkbox"],input[type="radio"]{width:auto;height:auto}
input[type="file"]{height:auto;padding:.35rem;font-size:.78rem}
input:focus,select:focus,textarea:focus{border-color:var(--brand);
  box-shadow:var(--sh-inset-sm),0 0 0 3px var(--brand-soft)}
label.f{display:flex;flex-direction:column;gap:.18rem;
  font-size:.72rem;color:var(--ink-faint);font-weight:650}

/* ---------- Botones ---------- */
button,.btn{
  font:inherit;font-weight:650;font-size:.82rem;
  color:var(--ink);background:var(--surface);
  border:var(--bd-card);border-radius:var(--r-sm);padding:.48rem .95rem;
  box-shadow:var(--sh-card-sm);cursor:pointer;transition:all .14s ease;
}
button:hover,.btn:hover{box-shadow:var(--sh-card-hover)}
button:active,.btn:active{transform:translateY(1px)}
button.pri{color:var(--on-brand);background:var(--brand);border-color:transparent}
button.ok{color:var(--ok)} button.bad{color:var(--bad)}
button.mini,button.chico{padding:.28rem .55rem;font-size:.76rem;border-radius:8px}

/* ---------- Tablas ---------- */
table{width:100%;border-collapse:collapse;font-size:.86rem}
thead th{text-align:left;font-size:.7rem;letter-spacing:var(--label-ls);
  text-transform:uppercase;color:var(--ink-faint);font-weight:700;
  padding:.5rem .7rem}
tbody td{padding:.55rem .7rem;border-top:1px solid var(--line)}
tbody tr:hover{background:var(--surface-2)}
td.n,th.n{text-align:right;font-family:var(--font-mono);
  font-variant-numeric:tabular-nums lining-nums}
tfoot td{padding:.6rem .7rem;font-weight:700;border-top:2px solid var(--line-strong)}
.tot{font-family:var(--font-mono)}
.sub{font-size:.72rem;color:var(--ink-faint);font-weight:400}

/* ---------- Barras y gráficos ---------- */
.barra{display:flex;align-items:center;gap:.7rem;margin:.32rem 0}
.barra .nom{min-width:11rem;font-size:.82rem}
.barra .track{flex:1;height:12px;border-radius:var(--r-pill);
  background:var(--surface-2);border:1px solid var(--line);
  box-shadow:var(--sh-inset-sm);overflow:hidden}
.barra .fill{display:block;height:100%;border-radius:var(--r-pill);background:var(--brand)}
.barra .fill.ok{background:var(--ok)} .barra .fill.warn{background:var(--warn)}
.barra .cifra{min-width:6.5rem;text-align:right;font-size:.82rem;
  font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:650}

/* Columnas verticales (v2.047: "Por mes"): barras gruesas, alto proporcional
   al valor. La cifra va arriba y el mes abajo. */
.columnas{display:flex;align-items:flex-end;gap:.8rem;padding:.5rem .2rem 0;
  overflow-x:auto}
.columnas .col{flex:1 1 0;min-width:2.6rem;max-width:6rem;display:flex;
  flex-direction:column;align-items:center;gap:.35rem}
.columnas .col-cifra{font-family:var(--font-mono);font-size:.72rem;font-weight:700;
  font-variant-numeric:tabular-nums;color:var(--ink-soft);white-space:nowrap}
.columnas .col-track{height:150px;width:100%;display:flex;align-items:flex-end}
.columnas .col-fill{width:100%;min-height:2px;background:var(--brand);
  border-radius:var(--r-sm) var(--r-sm) 0 0}
.columnas .col-fill.ok{background:var(--ok)}
.columnas .col-fill.warn{background:var(--warn)}
.columnas .col-nom{font-size:.74rem;color:var(--ink-faint);text-align:center;
  white-space:nowrap}

/* ---------- Reviews (v2.052 · rework v2.053) ---------- */
.stars{color:#E0A400;letter-spacing:1px;white-space:nowrap;font-size:.92rem}
.rev-dist{max-width:440px}
.t-rev{width:100%;border-collapse:collapse;font-size:.82rem}
.t-rev th{font-size:.64rem;text-transform:uppercase;letter-spacing:var(--label-ls);
  color:var(--ink-faint);text-align:left;padding:.5rem .6rem;white-space:nowrap;
  border-bottom:1px solid var(--line-strong)}
.t-rev td{padding:.55rem .6rem;border-bottom:1px solid var(--line);
  vertical-align:top}
.t-rev .rev-com{min-width:14rem;max-width:24rem;color:var(--ink-soft);
  line-height:1.4}
.paginador{display:flex;align-items:center;gap:1rem;justify-content:center;
  margin:1rem 0}
.paginador .pag-info{font-size:.8rem;color:var(--ink-soft);
  font-variant-numeric:tabular-nums}

.spark{display:flex;align-items:flex-end;gap:3px;height:46px}
.spark i{flex:1;background:var(--brand);border-radius:3px 3px 0 0;opacity:.8}

/* ---------- Etiquetas ---------- */
.tag{display:inline-block;padding:.12rem .55rem;border-radius:var(--r-pill);
  font-size:.7rem;font-weight:700;letter-spacing:.01em;border:1px solid transparent}
.tag.b{background:var(--brand-soft);color:var(--brand)}
.tag.g{background:var(--ok-soft);color:var(--ok)}
.tag.y{background:var(--warn-soft);color:var(--warn)}
.tag.r{background:var(--bad-soft);color:var(--bad)}
.tag.n{border-color:var(--line);color:var(--ink-soft)}

/* ---------- Avisos ---------- */
.aviso{border-radius:var(--r);padding:.8rem 1.1rem;margin-bottom:1rem;
  font-size:.85rem;background:var(--surface);border:var(--bd-card);
  box-shadow:var(--sh-card-sm);border-left:4px solid var(--warn)}
.aviso.bad{border-left-color:var(--bad)}
.aviso.ok{border-left-color:var(--ok)}
.aviso b{display:block;margin-bottom:.25rem}
.aviso ul{margin:.3rem 0 0 1.1rem;padding:0}

/* ---------- Calendario ---------- */
.semana{display:grid;grid-template-columns:repeat(7,1fr);gap:.5rem;margin-bottom:.5rem}
.semana + .semana{margin-bottom:1.3rem}
.mini-dia{border-radius:var(--r-sm);padding:.6rem .5rem;text-align:center;
  background:var(--surface);border:var(--bd-card);box-shadow:var(--sh-card-sm);
  cursor:pointer;transition:all .15s ease}
.mini-dia:hover{box-shadow:var(--sh-card-hover)}
.mini-dia.hoy{background:var(--surface-2);box-shadow:var(--sh-inset-sm);
  border-color:var(--brand)}
.mini-dia .dow{font-size:.66rem;text-transform:uppercase;
  letter-spacing:var(--label-ls);color:var(--ink-faint);font-weight:700}
.mini-dia .num{font-size:1.25rem;font-weight:700;line-height:1.2;color:var(--ink)}
.mini-dia.hoy .num{color:var(--brand)}
.mini-dia .pts{display:flex;justify-content:center;gap:3px;margin-top:.25rem;min-height:8px}
.mini-dia .pts i{width:5px;height:5px;border-radius:50%;background:var(--brand)}
.mini-dia .pts i.out{background:var(--warn)}

details.dia{margin-bottom:.7rem;border-radius:var(--r);background:var(--surface);
  border:var(--bd-card);box-shadow:var(--sh-card-sm);overflow:hidden}
details.dia[open]{box-shadow:var(--sh-card)}
details.dia > summary{list-style:none;cursor:pointer;padding:.7rem 1.1rem;
  display:flex;align-items:center;gap:.8rem;font-weight:650}
details.dia > summary::-webkit-details-marker{display:none}
details.dia > summary::before{content:"›";font-size:1.1rem;color:var(--ink-faint);
  transition:transform .18s ease}
details.dia[open] > summary::before{transform:rotate(90deg)}
details.dia.pasado > summary{opacity:.62}
details.dia .cuerpo{padding:0 1.1rem .9rem}

.item{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
  padding:.5rem .7rem;margin:.35rem 0;border-radius:var(--r-sm);
  background:var(--surface-2);border:1px solid var(--line);font-size:.85rem}
.item.hecha{opacity:.5}
.item .uni{font-weight:650;min-width:11rem}
.item .aux-sel{margin-left:auto;min-width:11rem}

/* ---------- Fichas (Dueños / Suministros / Listings) ---------- */
details.ficha{margin-bottom:.9rem;border-radius:var(--r);background:var(--surface);
  border:var(--bd-card);box-shadow:var(--sh-card-sm);
  backdrop-filter:var(--bf);-webkit-backdrop-filter:var(--bf);
  overflow:hidden;transition:box-shadow .16s ease}
details.ficha:hover{box-shadow:var(--sh-card)}
details.ficha[open]{box-shadow:var(--sh-card);border-color:var(--line-strong)}
details.ficha > summary{list-style:none;cursor:pointer;padding:1rem 1.2rem;
  display:flex;align-items:center;gap:1rem;font-size:.92rem}
details.ficha > summary::-webkit-details-marker{display:none}
details.ficha > summary strong{font-family:var(--font-display);font-size:1rem}
.gy{color:var(--ink-faint);font-size:.78rem}
.badge{font-family:var(--font-mono);font-size:.68rem;font-weight:700;
  color:var(--ink-soft);border:1px solid var(--line);padding:.12rem .5rem;
  border-radius:var(--r-pill);margin-left:auto}
.badge.b-socio{color:var(--brand);border-color:var(--brand);background:var(--brand-soft)}
/* v2.190: liquidación ya pagada (reflejo de Contabilidad). */
.badge.ok{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 45%,transparent);
  background:var(--ok-soft)}
.pago-liq{margin:.2rem 0 0;font-size:.82rem}
.pago-liq a{color:var(--brand);font-weight:600}

.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));
  gap:.8rem 1rem;padding:1rem 1.2rem;align-items:start}
/* Toda celda de formulario tiene la misma estructura: etiqueta arriba,
   control abajo llenando el ancho. Sirve a .campo con <label> hijo o con
   <span> como etiqueta (ambos patrones conviven en el sistema). */
.campo{display:flex;flex-direction:column;gap:.28rem;min-width:0}
.campo > span,.campo > label:not(.chk):first-child,.campo .lbl{
  display:block;font-size:.64rem;font-weight:700;text-transform:uppercase;
  letter-spacing:var(--label-ls);color:var(--ink-faint);line-height:1.2}
label.campo{gap:.28rem}
label.campo > span{margin:0}
.campo .valor{font-family:var(--font-mono);font-weight:700;font-size:.9rem;
  margin-top:.1rem;font-variant-numeric:tabular-nums lining-nums}
.campo .ayuda{font-size:.68rem;color:var(--ink-faint);line-height:1.3}
.campo.ancho{grid-column:1/-1}
.acc-libro{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;
  padding:.8rem 1.2rem;border-top:1px solid var(--line)}

/* suministros */
.svcs{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.3rem}
.chk{display:inline-flex;align-items:center;gap:.35rem;font-size:.8rem;
  padding:.3rem .6rem;border-radius:var(--r-pill);border:1px solid var(--line);
  background:var(--surface-2);cursor:pointer}
/* v2.258: vista previa de Importar empleados */
.im-tabla td{vertical-align:top;font-size:.82rem}
.im-tabla input[type=text],.im-tabla input:not([type]),.im-tabla input[type=date],
.im-tabla select{font:inherit;font-size:.82rem;padding:.25rem .4rem;max-width:13rem;
  margin:.1rem 0}
.im-tabla .im-nombre{min-width:15rem;font-weight:600}
.im-flag{color:var(--bad);font-size:.74rem;margin-top:.15rem}
.im-fila.im-off{opacity:.55;background:var(--surface-2)}
.im-tabla .chk{margin:.1rem .15rem .1rem 0}
/* v2.258: toggle 160/240 h/mes en la ficha (dos radios en píldora) */
.seg-bh{display:flex;gap:.5rem;flex-wrap:wrap;margin:.15rem 0 .25rem}
.seg-bh .chk input{width:auto;height:auto;margin:0}
.seg-bh .chk:has(input:checked){border-color:var(--brand);
  background:var(--brand-soft);color:var(--brand);font-weight:700}
.chip{display:inline-block;font-size:.68rem;font-weight:650;
  padding:.1rem .5rem;border-radius:var(--r-pill);
  background:var(--brand-soft);color:var(--brand);margin:.1rem .15rem .1rem 0}
.acc{white-space:nowrap}

.vacio{color:var(--ink-faint);font-size:.82rem;padding:.5rem .2rem}
.nota{color:var(--ink-soft);font-size:.8rem}
.none{color:var(--ink-faint);font-size:.82rem}
.nb{background:var(--surface-2);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:.6rem .9rem;margin:.4rem 0}

/* v2.170: la barra de temas del pie se retiró; el selector vive en el menú de
   cuenta (.acct-skin). */
main{padding-bottom:4.5rem}   /* aire para que la skinbar no tape contenido */

/* ---------- Login ---------- */
.login-body{display:flex;min-height:100vh;align-items:center;justify-content:center}
.login-card{background:var(--surface);border:var(--bd-card);
  box-shadow:var(--sh-card);border-radius:var(--r-lg);
  backdrop-filter:var(--bf);-webkit-backdrop-filter:var(--bf);
  padding:2rem;width:min(90vw,340px)}
.login-card h1{font-size:1.15rem;margin:0 0 1rem}
.login-card input{width:100%;margin:.35rem 0}
.login-card button{width:100%;margin-top:.8rem;padding:.7rem;
  /* v2.287 (Ola 3): «Entrar» salía rojo en un Chrome y azul en otro porque
     seguía el skin guardado en ESE navegador (localStorage fdr_theme: apple
     = azul). El acceso es identidad de marca: SIEMPRE rojo FDR. */
  color:#FFFFFF;background:#D63840;border-color:transparent}
.err{color:var(--bad);font-size:.85rem;margin-top:.5rem}

/* ---- Sidebar → drawer deslizante en pantallas medianas/móvil (v2.157) ----
   ≤900px el sidebar sale del flujo y se vuelve un panel off-canvas que abre
   la hamburguesa (label→#navcb) y cierra el scrim. Fondo --pop (opaco en los
   14 skins) para que el contenido NO se transparente a través del drawer. */
@media (max-width:900px){
  .burger{display:grid;place-items:center;flex:none;
    width:2.5rem;height:2.5rem;color:var(--topbar-ink);cursor:pointer;
    background:var(--surface);border:var(--bd-card);
    border-radius:var(--r-sm);box-shadow:var(--sh-card-sm)}
  .side{position:fixed;left:0;top:0;bottom:0;height:100vh;
    width:min(84vw,290px);background:var(--pop);
    transform:translateX(-100%);transition:transform .22s ease;
    box-shadow:0 18px 48px rgba(0,0,0,.32)}
  #navcb:checked ~ .side{transform:none}
  #navcb:checked ~ .side-scrim{display:block;position:fixed;inset:0;z-index:55;
    background:rgba(8,12,22,.44)}
}

@media (max-width:720px){
  main{padding:.9rem .8rem 5rem}
  h2{font-size:1.25rem}

  /* ---- Barra superior compacta (el sidebar ya es drawer, ver ≤900px) ---- */
  .topbar{gap:.5rem;padding:.55rem .85rem}
  .usuario{gap:.45rem}
  .usuario .ver{display:none}

  /* ---- Gráficas: etiqueta + cifra arriba, barra a lo ancho debajo ---- */
  .barra{flex-wrap:wrap;gap:.2rem .6rem;margin:.55rem 0}
  .barra .nom{min-width:0;flex:1 1 auto}
  .barra .cifra{min-width:0;margin-left:auto;text-align:right}
  .barra .track{flex:1 1 100%;order:3;height:14px}

  /* ---- Tablas en móvil (v2.245, Charlie: NADA de scroll horizontal) ----
     Regla: en el celular no puede haber más scroll que el vertical. Una tabla
     que NO desborda se queda igual; una que SÍ desbordaría se APILA (cada fila
     es una tarjeta, cada celda «Etiqueta: valor»), gracias al JS `apilar()` que
     mide el desborde real y le pone la clase .apilada. Así ninguna tabla obliga
     a deslizar de lado. */
  main table:not(.apilada){max-width:100%}

  /* ---- Selector de periodo / rango de fechas ---- */
  .rango{flex-wrap:wrap}
  .rango .sel-periodo{width:100%;max-width:none}
  .rango .fechas{margin-left:0;flex-wrap:wrap;gap:.5rem;width:100%}
  .rango .fechas .f{flex:1 1 40%;min-width:0}
  .rango .fechas .pri{flex:1 1 100%}

  /* ---- Grids a 1–2 columnas ---- */
  .kpis,.pulso,.pulso-4{grid-template-columns:1fr 1fr}
  .centro-cmd,.cols-fin,.oport-grid{grid-template-columns:1fr}
  .drawer{width:100vw}

  /* ---- Calendario: 7 días por semana, celdas compactas ---- */
  .semana{grid-template-columns:repeat(7,1fr);gap:.22rem}
  .mini-dia{padding:.42rem .12rem}
  .mini-dia .num{font-size:.98rem}
  .mini-dia .dow{font-size:.55rem}
  .mini-dia .es{font-size:.5rem}

  /* ---- Filtros ---- */
  .item .aux-sel{margin-left:0;width:100%}
  .rango .fechas{margin-left:0}
  .filtros-f select{max-width:none}

  /* ---- Pulido: tarjetas que ENVUELVEN en vez de recortar ---- */
  .kpis,.pulso,.pulso-4{gap:.7rem}
  .kpi{padding:.85rem .95rem}
  .kpi .val,.kpi .kval{font-size:1.4rem}
  .kpi .lbl,.kpi .klbl{font-size:.66rem;letter-spacing:.02em}
  .acc{flex-wrap:wrap}
  .acc .q{flex:1 1 0;min-width:0}
  .acc .t,.acc .d{white-space:normal;overflow-wrap:anywhere}
  .acc .btns{flex:1 1 100%;display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.3rem}
  details.ficha > summary{flex-wrap:wrap;gap:.25rem .6rem;padding:.85rem 1rem}
  details.ficha > summary .badge{margin-left:0}
  main table th,main table td{padding:.45rem .55rem;font-size:.82rem}
}
/* Tabla APILADA (v2.245): la pone el JS solo cuando desbordaría en móvil. Cada
   fila = tarjeta; cada celda = «Etiqueta: valor». Cero scroll horizontal. */
table.apilada{display:block;width:100%;max-width:100%;border:0}
table.apilada thead{position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);white-space:nowrap}   /* oculto visual, vivo para lectores */
table.apilada tbody,table.apilada tfoot{display:block;width:100%}
/* v2.392: oculto a la vista, vivo para lectores de pantalla y como ancla. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
table.apilada tr{display:block;margin:0 0 .6rem;padding:.15rem .7rem;
  border:1px solid var(--line,#e2e2e2);border-radius:.6rem;
  background:var(--card,#fff)}
table.apilada td{display:flex;justify-content:space-between;align-items:baseline;
  gap:1rem;width:auto;padding:.34rem 0;text-align:right;
  border:0;border-bottom:1px solid color-mix(in srgb,var(--line,#e2e2e2) 60%,transparent);
  overflow-wrap:anywhere}
table.apilada td:last-child{border-bottom:0}
table.apilada td::before{content:attr(data-label);flex:0 0 auto;
  font-weight:650;color:var(--ink-soft,#6b7280);text-align:left;
  margin-right:.9rem}
table.apilada td:empty{display:none}
table.apilada tfoot tr{font-weight:700;
  background:color-mix(in srgb,var(--ok,#16a34a) 8%,var(--card,#fff))}
/* v2.289: en modo apilado las celdas de Reportes ENVUELVEN (las etiquetas del
   bloque de liquidación —«Nuestra Comisión (25%)», el nombre de cada
   deducción— no se cortan) y la tabla respeta sus márgenes dentro del bloque
   de la propiedad (antes width:100% + margen la sacaba del borde derecho). */
.rep-tabla.apilada td{white-space:normal}
.rep-prop table.apilada{width:auto}
.rep-pago.apilada td:last-child{width:auto}
.rep-eg.apilada td.hu{width:auto;max-width:none;text-align:right}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
}

/* ---------- Centro de Comando (Home) ---------- */
.pulso{display:grid;grid-template-columns:repeat(6,1fr);gap:.9rem;margin-bottom:1.2rem}
.pulso .p{padding:.85rem 1rem;border-radius:var(--r);background:var(--surface);
  box-shadow:var(--sh-card-sm);border:var(--bd-card);
  backdrop-filter:var(--bf);-webkit-backdrop-filter:var(--bf)}
.pulso .l{font-size:.62rem;font-weight:800;text-transform:uppercase;
  letter-spacing:var(--label-ls);color:var(--ink-faint)}
.pulso .v{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;
  line-height:1.15;font-variant-numeric:tabular-nums lining-nums}
.pulso .de{font-size:.85rem;color:var(--ink-faint)}
.pulso .c{font-size:.68rem;font-weight:700;color:var(--ink-soft);margin-top:.15rem}
.pulso .c .g,.vent .c .g{color:var(--ok)}
.pulso .c .y,.vent .c .y{color:var(--warn)}
.pulso .c .r,.vent .c .r{color:var(--bad)}
.pulso .p.alerta{border-left:4px solid var(--bad)}
.pulso .p.ojo{border-left:4px solid var(--warn)}

.centro-cmd{display:grid;grid-template-columns:1.6fr 1fr;gap:1.1rem;align-items:start}
.centro-cmd .col{min-width:0}
.acciones-card{border-top:4px solid var(--brand)}

.acc{display:flex;gap:.8rem;align-items:flex-start;padding:.72rem .1rem;
  border-top:1px solid var(--line)}
.acc:first-of-type{border-top:0}
.acc .pri{flex-shrink:0;width:2.2rem;text-align:center;
  font-family:var(--font-mono);font-size:.64rem;font-weight:700;
  padding:.18rem 0;border-radius:7px;color:#fff}
.acc .pri.p0{background:var(--bad)}
.acc .pri.p1{background:#D97706}
.acc .pri.p2{background:var(--brand);color:var(--on-brand)}
.acc .pri.p3{background:#5B6B94}
.acc .q{min-width:0;flex:1}
.acc .t{font-weight:800;font-size:.84rem}
.acc .d{font-size:.74rem;color:var(--ink-soft)}
.acc .d .mono{font-family:var(--font-mono);font-weight:700}
.acc .riesgo{color:var(--bad);font-weight:800;font-family:var(--font-mono)}
.acc .btns{flex-shrink:0}
.acc button,.acc .btn-acc{font:inherit;font-size:.68rem;font-weight:800;
  cursor:pointer;padding:.3rem .6rem;border-radius:8px;border:var(--bd-card);
  background:var(--surface);box-shadow:var(--sh-card-sm);color:var(--ink-soft);
  display:inline-block}
.acc .pri-btn{color:var(--on-brand);background:var(--brand);border-color:transparent}

.captura{display:flex;gap:.4rem;margin-top:.8rem;padding-top:.8rem;
  border-top:1px solid var(--line)}
.captura select{flex-shrink:0;max-width:7.5rem}
.captura input{flex:1;min-width:0}
.captura .pri-btn{font:inherit;font-weight:800;cursor:pointer;
  padding:.4rem .8rem;border-radius:var(--r-sm);border:0;
  color:var(--on-brand);background:var(--brand)}

.sem{display:inline-flex;align-items:center;gap:.35rem;font-size:.68rem;
  font-weight:800;padding:.12rem .55rem;border-radius:var(--r-pill)}
.sem::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.sem.lista{color:var(--ok);background:var(--ok-soft)}
.sem.proceso{color:var(--warn);background:var(--warn-soft)}
.sem.riesgo{color:var(--bad);background:var(--bad-soft)}
.turno-apretado{font-size:.66rem;font-weight:800;color:var(--warn)}

.hueco{display:flex;align-items:center;gap:.7rem;padding:.55rem .1rem;
  border-top:1px solid var(--line);font-size:.82rem}
.hueco:first-of-type{border-top:0}
.hueco .fecha{font-family:var(--font-mono);font-size:.66rem;font-weight:700;
  color:var(--ink-soft);min-width:5.2rem}
.hueco .valor{margin-left:auto;font-family:var(--font-mono);font-weight:700;
  color:var(--ok)}

.adelante{display:grid;gap:.8rem}
.vent{padding:.75rem .95rem;border-radius:var(--r-sm);background:var(--surface-2);
  border:1px solid var(--line)}
.vent .l{font-size:.6rem;font-weight:800;text-transform:uppercase;
  letter-spacing:var(--label-ls);color:var(--ink-faint)}
.vent .v{font-family:var(--font-mono);font-size:1.05rem;font-weight:700;
  margin:.12rem 0;font-variant-numeric:tabular-nums lining-nums}
.vent .de{font-size:.72rem;color:var(--ink-faint);font-family:var(--font-body)}
.vent .c{font-size:.68rem;font-weight:700;color:var(--ink-soft)}
.vent .c .mono{font-family:var(--font-mono)}

@media(max-width:980px){
  .pulso{grid-template-columns:repeat(3,1fr)}
  .centro-cmd{grid-template-columns:1fr}
}
@media(max-width:560px){.pulso{grid-template-columns:1fr 1fr}}

/* ---------- Pie de página: copyright + versión ---------- */
.pie{text-align:center;font-size:.7rem;color:var(--ink-faint);
  font-family:var(--font-mono);padding:.6rem 1rem 3.6rem;
  letter-spacing:.03em}
.pie-suelto{position:fixed;left:0;right:0;bottom:0;padding:.8rem 1rem}

/* ---------- Centro de Comando v2 ---------- */
.pulso-4{grid-template-columns:repeat(4,1fr)}
details.seccion > summary{list-style:none;cursor:pointer;display:flex;
  align-items:baseline;gap:.6rem;margin:-.2rem 0 .2rem}
details.seccion > summary::-webkit-details-marker{display:none}
details.seccion > summary::before{content:"›";color:var(--ink-faint);
  transition:transform .15s}
details.seccion[open] > summary::before{transform:rotate(90deg)}
details.seccion > summary h3{margin:0;font-size:.98rem}
details.seccion > summary .sub{font-size:.74rem;color:var(--ink-faint);
  font-family:var(--font-mono)}
details.seccion[open] > summary{margin-bottom:.7rem}

.oport-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
.oport-grid h4{margin:0 0 .4rem;font-size:.82rem}
.oport-grid h4 .gy{font-weight:600}
.buscador-disp{display:flex;gap:.5rem;align-items:flex-end;margin-top:.8rem;
  padding-top:.7rem;border-top:1px solid var(--line)}
.buscador-disp button{white-space:nowrap}

.mias-h{margin:1rem 0 .2rem;font-size:.78rem;text-transform:uppercase;
  letter-spacing:var(--label-ls);color:var(--ink-faint)}

.heat{display:flex;align-items:flex-end;gap:.35rem;margin-bottom:.6rem}
.heat .hlbl{font-size:.66rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--ink-faint);min-width:4.2rem}
.hcel{flex:1;text-align:center;position:relative;border-radius:6px;
  padding:.3rem 0 .15rem;border:1px solid var(--line);
  background:linear-gradient(to top,var(--brand-soft) var(--h,0%),
                             transparent var(--h,0%))}
.hcel .hn{display:block;font-family:var(--font-mono);font-weight:700;
  font-size:.78rem;min-height:1rem}
.hcel .hd{display:block;font-size:.58rem;color:var(--ink-faint);
  text-transform:uppercase;font-weight:700}

.ocup3{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;
  margin:.7rem 0 .6rem}

.kpi-tabs{display:flex;gap:.35rem;margin-bottom:.7rem}
.kpi-tabs button{font:inherit;font-size:.72rem;font-weight:800;cursor:pointer;
  padding:.28rem .7rem;border-radius:var(--r-pill);border:1px solid var(--line);
  background:var(--surface-2);color:var(--ink-soft);box-shadow:none}
.kpi-tabs button.on{color:var(--nav-on-ink);background:var(--nav-on-bg);
  border-color:var(--nav-on-bd)}
html[data-theme="apple"] .kpi-tabs button.on{color:#fff;background:var(--ink)}

@media(max-width:900px){
  .pulso-4{grid-template-columns:1fr 1fr}
  .oport-grid{grid-template-columns:1fr}
}

/* ---------- Selector de periodo (lista, alineado a la izquierda) ---------- */
.rango-izq{justify-content:flex-start}
.rango-izq .fechas{margin-left:0}
.sel-periodo{font-weight:700;width:auto;min-width:11rem;max-width:14rem}

/* Navegación de periodo: flechas ‹ › al periodo igual anterior/siguiente */
.per-nav{display:inline-flex;align-items:center;gap:.4rem}
.per-nav .sel-periodo{margin:0}
.per-arrow{display:inline-flex;align-items:center;justify-content:center;
  flex:0 0 auto;width:2.4rem;height:2.4rem;border-radius:var(--r-sm);
  border:1px solid var(--line);background:var(--field-bg);color:var(--ink-soft);
  font-size:1.35rem;font-weight:700;line-height:1;text-decoration:none;
  box-shadow:var(--sh-inset-sm);transition:all .15s ease;user-select:none}
.per-arrow:hover{color:var(--brand);border-color:var(--brand);
  background:var(--brand-soft);box-shadow:0 1px 3px rgba(0,0,0,.10)}
.per-arrow:active{transform:translateY(1px)}
/* v2.257: navegador MENSUAL de Financiero (‹ Mes Año ›). Etiqueta central y
   flecha de avanzar apagada en el mes en curso. */
.sel-mes{font-weight:700;min-width:9.5rem;text-align:center;color:var(--ink);
  font-size:1.02rem;letter-spacing:.01em}
.per-arrow.off{opacity:.38;cursor:not-allowed;pointer-events:none;
  box-shadow:none}
.per-arrow.off:hover{color:var(--ink-soft);border-color:var(--line);
  background:var(--field-bg)}
@media (max-width:720px){
  .per-nav{width:100%}
  .per-nav .sel-periodo{flex:1 1 auto;width:auto;min-width:0;max-width:none}
  .per-nav .sel-mes{flex:1 1 auto;min-width:0}
}

/* ---------- Pronóstico: gráfico de línea de alto contraste ---------- */
.pron-svg{width:100%;height:auto;display:block}
.pron-svg .grid{stroke:var(--line);stroke-width:1;stroke-dasharray:2 4}
.pron-svg .ln-usd{fill:none;stroke:var(--brand);stroke-width:3.5;
  stroke-linecap:round;stroke-linejoin:round}
.pron-svg .ln-ocu{fill:none;stroke:var(--ink-soft);stroke-width:2;
  stroke-dasharray:6 5;stroke-linecap:round}
.pron-svg .pt-usd{fill:var(--brand);stroke:var(--surface);stroke-width:2}
.pron-svg .pt-ocu{fill:var(--ink-soft)}
.pron-svg .lbl-usd{fill:var(--brand);font-family:var(--font-mono);
  font-size:11px;font-weight:700;text-anchor:middle}
.pron-svg .lbl-ocu{fill:var(--ink-soft);font-family:var(--font-mono);
  font-size:10px;font-weight:700;text-anchor:middle}
.pron-svg .lbl-dia{fill:var(--ink-faint);font-family:var(--font-body);
  font-size:10px;font-weight:800;text-anchor:middle;
  letter-spacing:.04em}
.pron-leyenda{display:flex;gap:1.1rem;justify-content:center;
  font-size:.7rem;font-weight:700;color:var(--ink-soft);margin:.3rem 0 .6rem}
.pron-leyenda i{display:inline-block;width:16px;height:0;vertical-align:middle;
  margin-right:.3rem}
.pron-leyenda .sw-usd{border-top:3.5px solid var(--brand)}
.pron-leyenda .sw-ocu{border-top:2px dashed var(--ink-soft)}

/* ---------- Important Reviews ---------- */
.fila-legit td{background:var(--bad-soft)}
.fila-descuento td{background:var(--bad-soft)}
.fila-descartada td{opacity:.5}
.marca-btns{display:flex;gap:.35rem;flex-wrap:wrap}
.marca-btns .mb{font-size:.72rem;padding:.25rem .5rem;border:1px solid var(--line);
  border-radius:.5rem;background:var(--surface);cursor:pointer;white-space:nowrap}
.marca-btns .mb.desc.on{background:var(--bad);color:#fff;border-color:var(--bad)}
.marca-btns .mb.disc.on{background:var(--ink);color:var(--surface)}
.base-variable .bv-row{display:flex;justify-content:space-between;gap:1rem;
  padding:.18rem 0}
.base-variable .bv-row.tot-base{margin-top:.2rem}
.big-count{font-size:2rem;font-weight:800;line-height:1;color:var(--ink)}
.fila-hoy td{background:var(--bad-soft)}
.d-badge{font-size:.66rem;color:var(--muted);font-weight:600}
.sent{padding:.1rem .5rem;border-radius:.5rem;font-size:.74rem;font-weight:700}
.sent.pos{background:#1f9d5522;color:#1f9d55}
.sent.neg{background:var(--bad-soft);color:var(--bad)}
.sent.neu{background:var(--line);color:var(--muted)}
.wa-btn{display:inline-block;background:#25D366;color:#fff;padding:.22rem .55rem;
  border-radius:.5rem;font-size:.74rem;font-weight:700;text-decoration:none;white-space:nowrap}
.wa-btn.off{background:var(--line);color:var(--muted);pointer-events:none}
.copy-btn,.rev-estado,.sel-umbral{font-size:.74rem;padding:.24rem .5rem;
  border:1px solid var(--line);border-radius:.5rem;background:var(--surface);cursor:pointer}
.rev-cats{font-size:.74rem;color:var(--bad);font-weight:600;white-space:nowrap}
/* Ordenamiento por columna (v1.032) */
.th-sort{cursor:pointer;user-select:none;white-space:nowrap}
.th-sort::after{content:" ⇵";opacity:.35;font-size:.72em}
.th-sort[data-dir="asc"]::after{content:" ▲";opacity:1}
.th-sort[data-dir="desc"]::after{content:" ▼";opacity:1}
/* Chips-logo de canal en Disponibilidad */
.chip{width:1.75rem;height:1.75rem;border-radius:50%;border:none;color:#fff;
  font-weight:800;font-size:.7rem;cursor:pointer;margin-right:.3rem;
  vertical-align:middle;line-height:1}
.chip.fdr{width:auto;height:1.75rem;border-radius:1rem;padding:0 .55rem;
  background:var(--accent,#D63840)}
.chip.airbnb{background:#FF385C}
.chip.vrbo{background:#245ABC}
.chip.booking{background:#003B95}
.sel-umbral{width:auto;min-width:8rem;max-width:10rem}
/* El selector de estado del review debe leerse completo (v1.034) */
/* Tabla de reviews (v1.039): table-layout FIXED — el 100% es un límite
   DURO. El navegador reparte los anchos por columna y el contenido se
   adapta a ellos (nunca al revés): la tabla no puede volver a desbordar
   la tarjeta. Columnas: Anuncio·Huésped·Canal·Valor·Qué falló·Estado. */
.t-reviews{width:100%;table-layout:fixed}
.t-reviews td,.t-reviews th{vertical-align:middle;overflow:hidden}
.t-reviews th:nth-child(1){width:15%}
.t-reviews th:nth-child(2){width:16%}
.t-reviews th:nth-child(3){width:8%}
.t-reviews th:nth-child(4){width:7%}
.t-reviews th:nth-child(5){width:33%}
.t-reviews th:nth-child(6){width:21%}
/* Compactas: una línea con elipsis si no cabe */
.t-reviews td:nth-child(1),.t-reviews td:nth-child(3),
.t-reviews td:nth-child(4){white-space:nowrap;text-overflow:ellipsis}
/* Huésped y Qué falló pueden quebrar con control (máx. ~2 líneas) */
.t-reviews td:nth-child(2){white-space:normal}
.t-reviews td:nth-child(5).rev-cats,.t-reviews td:nth-child(5){
  white-space:normal;line-height:1.35}
/* Estado: el select llena su celda, nunca más ancho que ella */
.t-reviews .rev-estado{width:100%;min-width:0;max-width:none}
.rev-estado{width:auto;min-width:12rem;max-width:15rem}
/* v1.038: contenidos centrados en todas las tablas del Home (incluye las
   secciones a ancho completo de v1.044) */
.centro-cmd table th,.centro-cmd table td,
main>.seccion table th,main>.seccion table td{text-align:center;
  vertical-align:middle}
/* v1.041 — contención GLOBAL de tarjetas (todo el documento):
   1) Las columnas del grid pueden encogerse (sin esto, min-width:auto
      hace que una tabla ancha empuje la tarjeta debajo de la vecina).
   2) Si una tabla aun así no cabe, la tarjeta hace scroll horizontal
      ADENTRO en vez de desbordarse visualmente.
   3) Fechas y horas nunca se parten en varias líneas. */
.centro-cmd .col,.centro-cmd>*{min-width:0}
.card{overflow-x:auto}
td.mono,th.mono{white-space:nowrap}
.asg-aux{width:auto;min-width:7.5rem;max-width:10rem;font-size:.74rem;
  height:1.9rem;padding:0 .4rem}
/* v1.046 — Centro de Operaciones: colores ESTRICTOS por categoría
   operativa (siempre con etiqueta visible, apto para daltónicos). */
.cat{display:inline-block;padding:.14rem .5rem;border-radius:.45rem;
  font-size:.64rem;font-weight:800;letter-spacing:.05em;color:#fff;
  white-space:nowrap}
.cat-critica{background:#C0392B}      /* crítico / no lista / acceso */
.cat-riesgo{background:#CA5010}       /* turnover en riesgo / atraso */
.cat-mant{background:#E67E22}         /* mantenimiento / soporte     */
.cat-limpieza{background:#2E6FD8}     /* limpieza estándar           */
.cat-lav{background:#5DADE2}          /* lavandería / rutas          */
.cat-lista{background:#1E8E5A}        /* completada / lista          */
.cat-insp{background:#7D3C98}         /* inspección / calidad        */
.cat-pend{background:#B7950B}         /* pendiente de confirmación   */
.cat-info{background:#7F8C8D}         /* informativo / bloqueado     */
/* Timeline de readiness: Salida → Asignada → Iniciada → Lista */
.tl{white-space:nowrap}
.tl-paso{display:inline-block;padding:.12rem .45rem;border-radius:.45rem;
  font-size:.62rem;font-weight:700;color:#fff;margin-right:.22rem}
.tl-off{background:var(--line);color:var(--muted)}
.countdown{color:var(--bad);font-weight:800;font-size:.8rem}
/* Selector de fechas: todo en UNA línea, centrado verticalmente.
   flex-direction:row anula el column del label.f global — sin esto la
   etiqueta se apila sobre el input y desalinea toda la fila (v1.036). */
.rango .f{display:inline-flex;flex-direction:row;align-items:center;
  gap:.35rem;font-size:.78rem;font-weight:700;color:var(--muted)}
.rango .fechas{align-items:center}
.rango .fechas input[type=date]{width:auto}
.rango .sel-periodo,.rango input[type=date],.rango button,
.buscador-disp input[type=date],.buscador-disp select,.buscador-disp button{
  height:2.4rem}
.buscador-disp{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
  margin-bottom:.8rem}
.buscador-disp .f{display:inline-flex;flex-direction:row;align-items:center;
  gap:.35rem;font-size:.78rem;font-weight:700;color:var(--muted)}
.buscador-disp input[type=date]{width:auto}
.buscador-disp select{width:auto;min-width:9rem;max-width:14rem}
/* Al volver del submit, el ancla muestra la sección COMPLETA desde su
   encabezado (deja espacio para la barra superior fija). */
#disponibilidad{scroll-margin-top:6rem}
/* Responsive móvil (v1.033) */
@media(max-width:980px){
  .centro-cmd{grid-template-columns:1fr!important}
  .card table:not(.apilada),.seccion table:not(.apilada){display:block;
    overflow-x:auto;-webkit-overflow-scrolling:touch}
  .pulso,.kpis{grid-template-columns:repeat(2,1fr)}
  .drawer{width:100vw}
  .tarea-nueva{flex-direction:column}
  .cols-fin{grid-template-columns:1fr!important}
  h2{font-size:1.25rem}
}
/* Teléfono chico: una sola columna (debe ir DESPUÉS del bloque ≤980 para
   ganarle por orden de fuente; media queries no suman especificidad). */
@media (max-width:340px){
  .kpis,.pulso,.pulso-4{grid-template-columns:1fr}
}
/* Panel lateral "Nueva tarea" (v1.028, estilo drawer de QuickBooks) */
.dw-oculto{display:none!important}
.btn-nueva-tarea{margin-left:auto}
.drawer-overlay{position:fixed;inset:0;background:rgba(10,14,20,.45);z-index:60}
.drawer{position:fixed;top:0;right:0;height:100vh;width:min(30rem,94vw);
  background:var(--bg);z-index:61;display:flex;flex-direction:column;
  box-shadow:-14px 0 40px rgba(0,0,0,.25);border-left:1px solid var(--line);
  animation:dw-in .18s ease-out}
/* El panel siempre es opaco: --bg es sólido en los 4 temas (en Vidrio,
   --surface es translúcido y dejaba ver el contenido de atrás). */
@keyframes dw-in{from{transform:translateX(1.5rem);opacity:.4}
  to{transform:none;opacity:1}}
.drawer-head{display:flex;align-items:center;justify-content:space-between;
  padding:1rem 1.2rem;border-bottom:1px solid var(--line)}
.drawer-head h3{margin:0}
.drawer-x{background:none;border:none;font-size:1.05rem;cursor:pointer;
  color:var(--muted);padding:.3rem .5rem}
.drawer-body{flex:1;min-height:0;overflow-y:auto;padding:1rem 1.2rem;display:flex;
  flex-direction:column;gap:.9rem}
.dgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:.8rem}
.pri-btn{color:var(--on-brand);background:var(--brand);border:none;border-radius:.6rem;
  padding:.6rem 1.15rem;font-weight:800;cursor:pointer;font-size:.9rem}
.pri-btn:hover{filter:brightness(1.05)}
.dcampo{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;
  font-weight:700;color:var(--muted)}
.dcampo input,.dcampo select,.dcampo textarea{height:2.4rem;font-weight:400;
  border:1px solid var(--line);border-radius:.5rem;padding:0 .5rem;
  background:var(--surface);color:var(--ink);width:100%}
.dcampo textarea{height:auto;padding:.5rem;resize:vertical}
.dcampo .ayuda{font-weight:400}
.drawer-foot{display:flex;justify-content:flex-end;gap:.5rem;
  padding:1rem 1.2rem;border-top:1px solid var(--line)}
.btn-sec{border:1px solid var(--line);background:var(--surface);
  border-radius:.5rem;padding:.45rem .9rem;cursor:pointer}
.copy-btn.fdr{background:var(--accent,#D63840);color:#fff;border-color:transparent}
.enlaces-canal{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}
.enlaces-canal input{height:2.4rem;border:1px solid var(--line);border-radius:.5rem;
  padding:0 .5rem;background:var(--surface)}
@media(max-width:700px){.enlaces-canal{grid-template-columns:1fr}}
.base-variable{margin-top:.9rem;padding-top:.7rem;border-top:1px solid var(--line)}
.base-variable h4{margin:0 0 .3rem;font-size:.78rem;text-transform:uppercase;
  letter-spacing:var(--label-ls);color:var(--ink-faint)}
.base-variable .tot-base{border-top:2px solid var(--line-strong);font-weight:800}

/* ---------- Personal (RRHH): foto + contrato ---------- */
.foto-col{grid-column:1/-1;display:flex;align-items:center;gap:.8rem;
  flex-wrap:wrap}
.foto{width:72px;height:72px;border-radius:12px;object-fit:cover;
  border:var(--bd-card);box-shadow:var(--sh-card-sm)}
.foto.sinfoto{display:grid;place-items:center;font-size:.6rem;
  color:var(--ink-faint);background:var(--surface-2);text-align:center;
  text-transform:uppercase;letter-spacing:.04em}
.foto-col .up-foto{max-width:16rem}
.contrato-fila{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;
  min-height:2.4rem}
.pdf-link{font-weight:700;font-size:.82rem}
.campo .chk.indef{flex-direction:row;text-transform:none;font-size:.82rem;
  font-weight:600;color:var(--ink);letter-spacing:0;margin-bottom:.3rem}
.campo .chk.indef input{margin-right:.35rem}

/* Los inputs deshabilitados (roles sin edición) se ven claramente inertes */
input:disabled,select:disabled{opacity:.7;cursor:not-allowed;
  box-shadow:none;background:var(--surface-2)}

/* ---------- Calendario v2.000: filtros, capas y vista Staff ---------- */
.filtros{align-items:center;gap:.8rem;flex-wrap:wrap}
.filtros .vistas a{font-weight:800}
.filtros-f{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}
.filtros-f .f{flex-direction:row;align-items:center;gap:.4rem;
  font-size:.74rem;font-weight:700;color:var(--muted);
  text-transform:uppercase;letter-spacing:var(--label-ls)}
.filtros-f select{height:2.1rem;max-width:12rem;border:1px solid var(--line);
  border-radius:.5rem;background:var(--surface);color:var(--ink);
  font:inherit;font-size:.8rem;padding:0 .4rem}
.mini-link{font-size:.74rem;font-weight:700;color:var(--bad)}
.capas{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;
  font-size:.78rem}
.capas label{display:inline-flex;align-items:center;gap:.3rem;
  font-weight:600;cursor:pointer;white-space:nowrap}
.capas .gy{font-weight:700;text-transform:uppercase;font-size:.7rem;
  letter-spacing:var(--label-ls)}

.staff{padding:0;overflow-x:auto}
.t-staff{width:100%;border-collapse:collapse;font-size:.78rem}
.t-staff th,.t-staff td{border:1px solid var(--line);padding:.35rem .4rem;
  text-align:center;vertical-align:top;min-width:5.2rem}
.t-staff th{font-size:.68rem;text-transform:uppercase;
  letter-spacing:var(--label-ls);color:var(--ink-faint)}
.t-staff .stf-nom{text-align:left;white-space:nowrap;min-width:8rem}
.t-staff .hoy-col{background:color-mix(in srgb,var(--brand) 7%,transparent)}
.t-staff td.sobre{box-shadow:inset 0 0 0 2px #C0392B}
.t-staff td.racha{box-shadow:inset 0 0 0 2px #B7950B}
.t-staff td.sobre.racha{box-shadow:inset 0 0 0 2px #C0392B,
  inset 0 0 0 4px #B7950B}
.stf-t{display:flex;align-items:center;gap:.3rem;justify-content:flex-start;
  margin:.15rem 0;white-space:nowrap;text-align:left}
.stf-t.hecha{opacity:.55;text-decoration:line-through}
.stf-t .cat{font-size:.56rem;padding:.1rem .3rem}
.stf-sin td{background:color-mix(in srgb,#C0392B 5%,transparent)}
.mini.insp{border-color:#7D3C98;color:#7D3C98}

/* ---------- Calendario v2.002: rejilla por rango + eventos ---------- */
.mini-dia.fuera{opacity:.32;pointer-events:none}
.mini-dia .es{font-size:.58rem;font-weight:700;color:var(--ink-soft);
  min-height:.8rem;white-space:nowrap}
.item.evento{opacity:.92}
.item.evento .sub{font-family:var(--font-mono)}

/* ---------- Calendario v2.003: mes completo + día seleccionado ---------- */
.mes-cal{padding:.9rem 1rem}
.mes-nav{display:flex;align-items:center;justify-content:space-between;
  margin-bottom:.5rem}
.mes-nav h3{margin:0;font-size:1rem}
.mes-nav a{font-weight:700;font-size:.8rem}
.mes-dow{margin-bottom:.2rem}
.mes-dow .dow{text-align:center;font-size:.62rem;font-weight:800;
  text-transform:uppercase;letter-spacing:var(--label-ls);
  color:var(--ink-faint)}
.mini-dia.otro-mes{opacity:.35}
.mini-dia.sel{outline:2px solid var(--brand);outline-offset:-2px;
  border-radius:.5rem}
.fecha-sel{margin-left:auto;font-weight:800;font-size:.86rem}

/* ---------- Propiedades v2.006: tabla + ficha en panel lateral ---------- */
.prop-card{padding:0;overflow-x:auto}
.t-props{width:100%;border-collapse:collapse;font-size:.82rem}
.t-props th{font-size:.68rem;text-transform:uppercase;
  letter-spacing:var(--label-ls);color:var(--ink-faint);text-align:left;
  padding:.6rem .7rem;border-bottom:1px solid var(--line-strong)}
.t-props td{padding:.55rem .7rem;border-bottom:1px solid var(--line);
  vertical-align:middle}
.prop-fila{cursor:pointer}
.prop-fila:hover td{background:color-mix(in srgb,var(--brand) 6%,transparent)}
.prop-nom .sub{display:block;font-family:var(--font-mono)}
.prop-tit,.prop-dir{max-width:22rem;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.t-props .tag{margin-right:.25rem}
/* v2.259 (Charlie): lista de Propiedades al estilo «Your listings» —
   foto miniatura, título + nombre interno, filas altas y aireadas, hover
   suave con chevron, estados con punto de color. */
.prop-card .card-head{display:flex;align-items:center;gap:.6rem;
  padding:1rem 1.1rem .4rem}
.prop-card .card-head h3{margin:0;font-size:1.25rem;letter-spacing:-.01em}
.prop-card .card-head .sub{font-size:.85rem;color:var(--ink-faint)}
.prop-scroll{overflow-x:auto}
.t-props-ab{font-size:.9rem}
.t-props-ab th{font-size:.78rem;text-transform:none;letter-spacing:0;
  font-weight:600;color:var(--ink);padding:.9rem 1rem;
  border-bottom:1px solid var(--line)}
.t-props-ab td{padding:.9rem 1rem;border-bottom:1px solid var(--line);
  vertical-align:middle;color:var(--ink-soft)}
.t-props-ab tbody tr:last-child td{border-bottom:0}
.t-props-ab .prop-fila{transition:background .12s ease}
.t-props-ab .prop-fila:hover td{background:var(--surface-2)}
.t-props-ab .prop-fila:hover td:first-child{border-radius:14px 0 0 14px}
.t-props-ab .prop-fila:hover td:last-child{border-radius:0 14px 14px 0}
.prop-cell{display:flex;align-items:center;gap:.9rem;min-width:18rem}
.prop-thumb{width:64px;height:64px;border-radius:12px;object-fit:cover;
  flex:0 0 64px;background:var(--surface-2);border:1px solid var(--line)}
.prop-thumb-vacia{display:flex;align-items:center;justify-content:center;
  color:var(--ink-faint);font-weight:700;font-size:1.2rem}
.prop-txt{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.prop-txt b{color:var(--ink);font-weight:600;line-height:1.25}
.prop-txt .sub{display:block;font-family:inherit;color:var(--ink-faint);
  font-size:.82rem}
.prop-modelo{white-space:nowrap}
.prop-chev{color:var(--ink-faint);font-size:1.3rem;text-align:right;
  width:1.5rem;padding-right:1.1rem!important}
.prop-estado,.prop-canales{white-space:nowrap}
.dot{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;
  vertical-align:middle;margin-right:.35rem;background:var(--ink-faint)}
.dot.on{background:#1E8E5A}
.dot.warn{background:#B7950B}
.dot.off{background:var(--ink-faint);opacity:.6}
@media (max-width:720px){
  /* móvil: nada de scroll horizontal — la tabla se mide a 100% (fixed) para
     que apilar() detecte el desborde y la convierta en tarjetas. */
  .t-props-ab:not(.apilada){table-layout:fixed;width:100%}
  .t-props-ab th,.t-props-ab td{padding:.7rem .6rem}
  .prop-thumb{width:52px;height:52px;flex-basis:52px}
  .prop-cell{min-width:0}
  .t-props-ab.apilada .prop-cell{min-width:0}
  .t-props-ab.apilada .prop-chev{display:none}
}
.drawer-ancho{width:min(48rem,96vw)}
/* v2.047: la ficha de propiedad es un <div class="ficha"> (como la de socio
   .ficha-u), NO un <details class="ficha">. El <details> heredaba
   details.ficha{overflow:hidden}; como hijo flex del .drawer-body (columna con
   overflow-y:auto), un flex-item con overflow!=visible resuelve min-height:0 y
   se ENCOGÍA hasta recortar su contenido en vez de desbordar y dejar scrollear
   el panel — por eso "no se podía ver todo sin alejar el zoom". Ahora fluye y
   scrollea igual que la ficha de socio, que siempre funcionó. */
#prop-body .ficha{display:none;border:none;box-shadow:none;margin:0;
  flex-direction:column;gap:.9rem}
#prop-body .ficha-cab{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;
  padding:0 1.2rem;font-size:.92rem}
#prop-body .ficha-cab strong{font-family:var(--font-display);font-size:1rem}

/* Toggle switch (v2.049): control booleano UNIFORME de la ficha de propiedad.
   Estilo de la referencia: pastilla oscura + perilla blanca con check cuando ON.
   Se restiliza un <input> REAL (clase .tsw-in) sin tocar la lógica: el guardado
   sigue leyendo .iva/.dpay/.ind .checked igual que antes, y el .tsw-in que
   dispara acciones (Inactivo) conserva su onchange. Todos los booleanos de la
   ficha usan este mismo patrón. */
#prop-body .tsw-lbl{display:inline-flex;align-items:center;cursor:pointer;
  -webkit-tap-highlight-color:transparent}
#prop-body .tsw-in{position:absolute;width:1px;height:1px;opacity:0;margin:0;
  pointer-events:none}
#prop-body .tsw-ui{position:relative;display:inline-block;flex:none;
  width:46px;height:26px;border-radius:999px;background:var(--surface-2);
  border:1px solid var(--line);box-shadow:var(--sh-inset-sm);vertical-align:middle;
  transition:background .16s ease,border-color .16s ease}
#prop-body .tsw-ui::before{content:"";position:absolute;top:2px;left:2px;
  width:20px;height:20px;border-radius:50%;background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .16s ease}
#prop-body .tsw-ui::after{content:"";position:absolute;top:7px;left:28px;
  width:5px;height:9px;border:solid var(--ink);border-width:0 2px 2px 0;
  opacity:0;transform:rotate(45deg) scale(.4);
  transition:opacity .16s ease,transform .16s ease}
#prop-body .tsw-in:checked + .tsw-ui{background:var(--ink);border-color:var(--ink)}
#prop-body .tsw-in:checked + .tsw-ui::before{transform:translateX(20px)}
#prop-body .tsw-in:checked + .tsw-ui::after{opacity:1;transform:rotate(45deg) scale(1)}
#prop-body .tsw-in:focus-visible + .tsw-ui{outline:3px solid var(--brand-soft);
  outline-offset:2px}
#prop-body .tsw-in:disabled + .tsw-ui{opacity:.5;cursor:not-allowed}

/* ---------- Propiedades v2.017: Servicios Básicos = códigos de contrato */
.svcs-contrato{display:flex;flex-direction:column;gap:.4rem}
.svc-fila{display:grid;grid-template-columns:9rem 1fr;align-items:center;
  gap:.6rem}
.svc-fila .svc-nom{font-size:.82rem;font-weight:700}
.svc-fila input{height:2.3rem;border:1px solid var(--line);
  border-radius:.5rem;padding:0 .5rem;background:var(--surface);
  color:var(--ink);font-weight:400}

/* ---------- Propiedad/Socio v2.020: check inactivo, docs, modal, foot ---- */
.chk-inactivo{margin-left:auto;display:inline-flex;align-items:center;gap:.35rem;
  font-size:.8rem;font-weight:700;color:var(--bad);text-transform:none;
  letter-spacing:0;cursor:pointer}
.chk-inactivo input{width:auto;height:auto}
#prop-foot,#u-foot{position:sticky;bottom:0;background:var(--surface);
  border-top:1px solid var(--line);gap:.5rem;justify-content:flex-end;
  padding:.7rem 1.2rem;display:flex}
.doc-item{display:flex;align-items:center;gap:.6rem;font-weight:500;
  text-transform:none;margin:.2rem 0}
.doc-repl{font-size:.72rem;font-weight:600;cursor:pointer;color:var(--brand)}
.doc-repl input{display:none}
.doc-nuevo{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;
  margin-top:.5rem}
.doc-nuevo .dcc-nom{flex:1;min-width:8rem;height:2.3rem;border:1px solid var(--line);
  border-radius:.5rem;padding:0 .5rem;background:var(--surface);color:var(--ink)}
.doc-nuevo input[type=file]{font-size:.75rem}
.mini-modal{position:fixed;inset:0;z-index:80;display:grid;place-items:center;
  background:rgba(10,14,20,.45)}
.mini-card{background:var(--surface);border-radius:.8rem;padding:1.2rem 1.4rem;
  box-shadow:0 10px 30px rgba(0,0,0,.3);max-width:26rem}
.mini-row{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end;
  margin-top:.8rem}

/* ---------- Toast global (v2.021) ---------- */
#fdr-toasts{position:fixed;right:1rem;bottom:1rem;z-index:120;display:flex;
  flex-direction:column;gap:.5rem;max-width:min(24rem,90vw)}
.fdr-toast{background:var(--ink,#1a2230);color:#fff;border-radius:.6rem;
  padding:.6rem .9rem;font-size:.85rem;font-weight:600;white-space:pre-line;
  box-shadow:0 8px 24px rgba(0,0,0,.28);opacity:0;transform:translateY(8px);
  transition:opacity .25s,transform .25s;border-left:4px solid #7F8C8D}
.fdr-toast.show{opacity:1;transform:none}
.fdr-toast.error{border-left-color:#C0392B}
.fdr-toast.ok{border-left-color:#1E8E5A}

/* ---------- v2.023: enlace/estado Guesty ---------- */
.badge.b-guesty{background:#2E6FD8;color:#fff;text-decoration:none}
.badge.b-sinvinc{background:#B7950B;color:#fff}
.pill-si{color:#1E8E5A;font-weight:700;font-size:.8rem}
.pill-no{color:#B7950B;font-weight:700;font-size:.8rem}

/* ---------- v2.068: Conciliación Guesty ↔ Fichas ---------- */
.conc-tabla{width:100%;border-collapse:collapse;font-size:.82rem}
.conc-tabla th{font-size:.68rem;text-transform:uppercase;
  letter-spacing:var(--label-ls);color:var(--ink-faint);text-align:left;
  padding:.5rem .6rem;border-bottom:1px solid var(--line-strong)}
.conc-tabla td{padding:.45rem .6rem;border-bottom:1px solid var(--line);
  vertical-align:middle}
.conc-g b{font-weight:700}
.conc-g .sub{display:block;font-family:var(--font-mono);font-size:.66rem;
  color:var(--ink-faint)}
.conc-link{margin-left:.35rem;text-decoration:none;color:var(--brand);
  font-weight:700}
.conc-sel{width:100%;max-width:22rem;padding:.35rem .5rem;border-radius:8px;
  border:var(--bd-card);background:var(--surface);color:var(--ink);font:inherit}
.conc-fila:hover td{background:color-mix(in srgb,var(--brand) 5%,transparent)}

/* ---------- v2.025: socios de la propiedad ---------- */
.socios-prop{display:flex;flex-direction:column;gap:.4rem;margin:.3rem 0}
/* v2.163: la 3.ª columna (% de participación) estaba en .6rem y quedaba
   aplastada (solo se veían las flechitas). Reparto justo: nombre el más
   ancho, rol medio, % con ancho fijo legible, × mínimo. */
.sp-row{display:grid;
  grid-template-columns:minmax(0,1.9fr) minmax(0,1.2fr) 5.5rem 2rem;
  gap:.5rem;align-items:center}
.sp-row .sp-user,.sp-row .sp-rol,.sp-row .sp-pct{height:2.3rem;width:100%;
  min-width:0;border:1px solid var(--line);border-radius:.5rem;padding:0 .5rem;
  background:var(--surface);color:var(--ink)}
.sp-row .sp-pct{text-align:right;padding-right:.35rem}
.sp-row .mini.bad{width:100%;padding:0;height:2.3rem}
.sp-aviso{font-size:.78rem;margin-top:.2rem}
@media(max-width:640px){
  .sp-row{grid-template-columns:minmax(0,1fr) 5rem 2rem}
  .sp-row .sp-user{grid-column:1/-1}   /* nombre en su propia fila */
}

/* ---------- v2.026: Reportes ---------- */
/* Multi-select dropdown (compartido; antes vivía solo en la ficha de Socio) */
.msel{position:relative}
.msel-field{min-height:2.3rem;border:1px solid var(--line);border-radius:.5rem;
  background:var(--surface);padding:.25rem .5rem;display:flex;align-items:center;
  gap:.3rem;cursor:pointer;flex-wrap:wrap}
.msel-caret{margin-left:auto;color:var(--ink-faint)}
.msel-ph{color:var(--ink-faint);font-weight:400}
.msel-tag{background:color-mix(in srgb,var(--brand) 14%,transparent);
  border-radius:.4rem;padding:.05rem .4rem;font-size:.8rem;font-weight:600}
.msel-tag b{cursor:pointer;color:var(--bad);margin-left:.15rem}
.msel-panel{display:none;position:absolute;z-index:5;left:0;right:0;top:calc(100% + 2px);
  background:var(--pop,#fff);border:1px solid var(--line);border-radius:.5rem;
  box-shadow:var(--sh-card,0 6px 20px rgba(0,0,0,.15));max-height:16rem;
  overflow-y:auto;padding:.3rem}
.msel.open .msel-panel{display:block}
.msel-opt{display:flex;align-items:center;gap:.5rem;padding:.3rem .4rem;
  border-radius:.35rem;cursor:pointer;font-size:.85rem;font-weight:500}
.msel-opt:hover{background:color-mix(in srgb,var(--brand) 8%,transparent)}
.msel-opt input{width:auto!important;height:auto!important;border:none!important}
.rep-todos{display:flex;gap:.4rem;padding:.2rem .2rem .4rem;
  border-bottom:1px solid var(--line);margin-bottom:.3rem}
/* Controles del reporte */
.rep-sub{color:var(--ink-faint);margin:.2rem 0 .8rem}
.rep-controles{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end;
  margin-bottom:1rem}
.rep-campo{display:flex;flex-direction:column;gap:.3rem;min-width:15rem}
.rep-lbl{font-size:.78rem;font-weight:700;color:var(--ink-faint)}
.rep-fechas{display:flex;gap:.5rem;margin-top:.3rem}
.rep-acciones{display:flex;align-items:flex-end}
/* Tabla del reporte */
.rep-tabla{width:100%;border-collapse:collapse;font-size:.85rem}
.rep-tabla th,.rep-tabla td{padding:.45rem .6rem;border-bottom:1px solid var(--line);
  text-align:left;white-space:nowrap}
.rep-tabla th.n,.rep-tabla td.n{text-align:right;font-variant-numeric:tabular-nums}
.rep-tabla tfoot td{border-top:2px solid var(--ink-faint);font-weight:700}
.rep-tabla td.b-socio{color:var(--brand);font-weight:700}
.rep-nota{color:var(--ink-faint);font-size:.75rem;margin-top:.6rem}
.rep-export{display:flex;gap:.6rem;margin-top:1rem}
.btn-exp{display:inline-flex;align-items:center;gap:.3rem;padding:.5rem .9rem;
  border:1px solid var(--line);border-radius:.5rem;background:var(--surface);
  color:var(--ink);font-weight:700;text-decoration:none;font-size:.85rem}
.btn-exp:hover{border-color:var(--brand);color:var(--brand)}

/* ---------- v2.028: Reportes — UX (KPIs, chips, tabla cómoda) ---------- */
.rep-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));
  gap:.9rem;margin:.4rem 0 1.6rem}
.rep-kpi{position:relative;background:var(--surface);border:1px solid var(--line);
  border-radius:.9rem;padding:1rem .8rem;text-align:center;
  box-shadow:var(--sh-card,0 4px 14px rgba(0,0,0,.08))}
/* v2.216 (Charlie): si una etiqueta baja los números, TODAS los bajan —
   la etiqueta reserva dos líneas y se alinea abajo: los valores de todos
   los KPIs quedan siempre a la misma altura. */
.rep-kpi span{display:flex;align-items:flex-end;justify-content:center;
  min-height:2.3em;font-size:.7rem;font-weight:700;letter-spacing:.05em;
  text-transform:uppercase;color:var(--ink-faint);margin-bottom:.4rem}
.rep-kpi b{font-family:'Outfit','Manrope',system-ui,sans-serif;font-size:2rem;
  font-weight:800;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}
/* Tabla de reservas: centrada, con aire y números de impacto */
.rep-tabla{width:100%;border-collapse:separate;border-spacing:0;font-size:.95rem;margin:.3rem 0 0}
.rep-tabla th,.rep-tabla td{padding:.72rem 1rem;text-align:center;vertical-align:middle;
  border-bottom:1px solid var(--line);white-space:nowrap}
.rep-tabla th{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;
  color:var(--ink-faint);font-weight:800;background:var(--bg)}
.rep-tabla td{font-variant-numeric:tabular-nums}
.rep-tabla td.hu{font-weight:600}
.rep-tabla td.neto{font-weight:800;font-size:1.02rem}
.rep-tabla tfoot td{border-top:2px solid var(--ink-faint);border-bottom:none;
  font-weight:800;background:var(--bg)}
/* Chips de canal (mismos colores de marca que en el Home) */
.rep-canal{display:inline-block;padding:.24rem .62rem;border-radius:1rem;color:#fff;
  font-weight:700;font-size:.78rem;line-height:1.3;white-space:nowrap}
.rep-canal.airbnb{background:#FF385C}
.rep-canal.vrbo{background:#245ABC}
.rep-canal.booking{background:#003B95}
.rep-canal.fdr{background:var(--accent,#D63840)}
/* Bloque por propiedad */
.rep-prop{margin:.9rem 0;border:1px solid var(--line);border-radius:.9rem;overflow:hidden;
  background:var(--surface)}
.rep-prop>summary{list-style:none;cursor:pointer;padding:.95rem 1.1rem;display:flex;
  align-items:center;gap:.6rem;flex-wrap:wrap;font-size:1rem}
.rep-prop>summary::-webkit-details-marker{display:none}
.rep-prop>summary b{font-size:1.15rem;font-weight:800}
.rep-prop .rep-badge{margin-left:auto;font-weight:700;color:var(--ink-soft);
  font-variant-numeric:tabular-nums}
.rep-prop .rep-tabla{margin:0 1.1rem 1rem}
/* v2.201: sección itemizada de Extras y Gastos dentro del bloque por propiedad */
.rep-eg-tit{margin:.2rem 1.1rem .1rem;font-size:.72rem;text-transform:uppercase;
  letter-spacing:.06em;color:var(--ink-faint);font-weight:800}
.rep-eg td.hu{text-align:left}
/* v2.218 (Charlie): Concepto a la MITAD de ancho — el texto largo se parte
   en dos filas y las demás columnas respiran. */
.rep-eg th:first-child,.rep-eg td.hu{width:35%;max-width:26rem;
  overflow-wrap:break-word}
/* v2.289: el concepto SÍ envuelve (el nowrap general de .rep-tabla td lo
   impedía y un concepto largo se montaba sobre Fecha/Categoría). */
.rep-eg td.hu{white-space:normal}
/* v2.202: bloque final de liquidación, después de Reservas y Extras y Gastos */
.rep-pago td:last-child{width:10rem}
.rep-pago tr:first-child td{border-top:2px solid var(--ink-faint)}
/* Resumen financiero por propiedad */
.rep-fin{display:flex;flex-wrap:wrap;gap:1.6rem;padding:.9rem 1.1rem;background:var(--bg);
  border-top:1px solid var(--line)}
.rep-fin .rf{display:flex;flex-direction:column;gap:.2rem}
.rep-fin .rf span{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;
  color:var(--ink-faint);font-weight:700}
.rep-fin .rf b{font-size:1.2rem;font-weight:800;font-variant-numeric:tabular-nums}
.rep-fin .rf-tot b{color:var(--brand)}

/* ---------- v2.031: pie de tabla como mini-estado (Subtotal → FDR Fee → Total) ---------- */
.rep-tabla tfoot td{border-top:none;font-weight:700}
.rep-tabla tfoot tr:first-child td{border-top:2px solid var(--ink-faint)}
.rep-tabla tfoot .rep-ded td:first-child,
.rep-tabla tfoot .rep-total td:first-child{text-align:right;color:var(--ink-faint);font-weight:700}
/* v2.226 (Charlie): el total del PERIODO lleva líneas de totales (regla
   arriba, doble regla abajo); los saldos anteriores son sección aparte,
   menos importante, y cierran con el saldo total. */
.rep-tabla tfoot .rep-total td{border-top:2px solid var(--ink);
  border-bottom:3px double var(--ink);font-weight:800;font-size:1.02rem}
.rep-tabla tfoot .rep-total .neto{color:var(--brand)}
.rep-tabla tfoot .rep-sal-cab td{padding-top:.9rem;border:0;text-align:right;
  font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  color:var(--ink-faint)}
.rep-tabla tfoot .rep-sal td{color:var(--ink-faint);font-size:.86rem}
.rep-tabla tfoot .rep-sal .neto{color:var(--ink-faint)}
.rep-tabla tfoot .rep-sal-total td:first-child{text-align:right;
  color:var(--ink-faint);font-weight:700}
.rep-tabla tfoot .rep-sal-total td{border-top:1px solid var(--line);
  font-weight:700;font-size:.92rem;color:var(--ink-soft)}
/* v2.289: deducciones VISIBLES — una línea por extra/gasto/abono con su
   nombre; el subtotal de la sección y el residuo (nunca oculto) van marcados. */
.rep-tabla tfoot .rep-mov td:first-child{color:var(--ink-soft);font-weight:600;
  text-align:right;white-space:normal;overflow-wrap:anywhere}
.rep-tabla tfoot .rep-eg-sub td{border-top:1px solid var(--line)}
.rep-tabla tfoot .rep-residuo td{color:var(--bad);font-weight:800}

.rep-kpi b.neg{color:var(--bad)}
/* v2.078 Portal de Socios: FDR Fee en azul del sistema + tooltip ⓘ en KPIs */
.rep-kpi b.azul{color:#2E6FD8}
.rep-kpi span{position:relative}
/* v2.217 (Charlie): el ⓘ ORDENADO — fijo en la esquina superior derecha de
   la tarjeta, nunca encima de la etiqueta ni del número. */
.kpi-i{position:absolute;top:.5rem;right:.55rem;display:inline-flex;
  align-items:center;justify-content:center;
  width:1.05rem;height:1.05rem;margin-left:0;border-radius:50%;
  font-size:.74rem;line-height:1;color:var(--ink-faint);cursor:help;
  vertical-align:middle;outline:none;font-weight:700}
.kpi-i:hover,.kpi-i:focus{color:#2E6FD8}
.kpi-tip{position:absolute;left:50%;bottom:calc(100% + .5rem);
  transform:translateX(-50%);width:min(17rem,80vw);background:var(--ink);
  color:var(--surface);font-size:.72rem;font-weight:600;line-height:1.35;
  letter-spacing:normal;text-transform:none;text-align:left;padding:.55rem .7rem;
  border-radius:.55rem;box-shadow:0 10px 26px rgba(0,0,0,.28);opacity:0;
  visibility:hidden;transition:opacity .12s;z-index:60;pointer-events:none}
.kpi-i:hover .kpi-tip,.kpi-i:focus .kpi-tip{opacity:1;visibility:visible}
/* v2.079 Portal de Socios: navegación de mes ‹ Mes Año › en Reportes */
.rep-nav-mes{display:flex;align-items:center;justify-content:center;gap:1rem;
  margin:.2rem 0 .9rem}
.nav-mes{display:inline-flex;align-items:center;justify-content:center;
  width:2.1rem;height:2.1rem;border-radius:.6rem;background:var(--surface);
  border:1px solid var(--line);color:var(--ink);font-size:1.25rem;font-weight:800;
  text-decoration:none;line-height:1}
.nav-mes:hover{color:#2E6FD8;border-color:#2E6FD8}
.nav-mes-lbl{font-weight:800;font-size:1.05rem;min-width:9.5rem;text-align:center;
  font-variant-numeric:tabular-nums}
/* v2.081 Portal de Socios: multi-calendar del dueño (tipo Guesty) */
.mcal-topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:.6rem;margin:.2rem 0 .7rem}
.mcal-nav{display:flex;align-items:center;gap:.6rem}
.mcal-leg{display:flex;flex-wrap:wrap;gap:.7rem;font-size:.72rem}
.mcal-leg .lg{display:inline-flex;align-items:center;gap:.32rem;color:var(--ink-soft)}
.mcal-leg .lg::before{content:"";width:.8rem;height:.8rem;border-radius:.2rem;
  background:var(--accent,#D63840)}
.mcal-leg .lg.airbnb::before{background:#FF385C}
.mcal-leg .lg.booking::before{background:#003B95}
.mcal-leg .lg.vrbo::before{background:#245ABC}
.mcal-leg .lg.fdr::before{background:var(--accent,#D63840)}
.mcal-scroll{overflow-x:auto;border:1px solid var(--line);border-radius:.8rem;
  background:var(--surface)}
.mcal{min-width:max-content}
.mcal-row{display:grid;grid-template-columns:9rem repeat(var(--dias),2.6rem);
  align-items:center;min-height:2.5rem;border-bottom:1px solid var(--line)}
.mcal-row:last-child{border-bottom:none}
.mcal-head{position:sticky;top:0;z-index:3;background:var(--bg);min-height:2.4rem}
.mcal-lbl{position:sticky;left:0;z-index:2;grid-column:1;background:var(--surface);
  padding:.3rem .55rem;font-weight:700;font-size:.82rem;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;border-right:1px solid var(--line);height:100%;display:flex;
  align-items:center}
.mcal-head .mcal-lbl{background:var(--bg)}
.mcal-cell{text-align:center;font-size:.62rem;color:var(--ink-faint);padding:.2rem 0;
  line-height:1.15;position:relative}
.mcal-cell b{display:block;font-size:.8rem;color:var(--ink);font-weight:700}
.mcal-cell.wknd{background:var(--surface-2)}
.mcal-cell.hoy b{color:#fff;background:#2E6FD8;border-radius:.3rem;width:1.4rem;margin:0 auto}
.mcal-cell i{position:absolute;top:-.15rem;left:.12rem;font-style:normal;font-size:.55rem;
  color:#2E6FD8;font-weight:800}
.mcal-bar{height:1.7rem;margin:.15rem 1px;border:none;border-radius:.4rem;color:#fff;
  font-size:.72rem;font-weight:700;padding:0 .4rem;cursor:pointer;overflow:hidden;
  white-space:nowrap;text-overflow:ellipsis;text-align:left;display:flex;align-items:center;
  background:var(--accent,#D63840)}
.mcal-bar.airbnb{background:#FF385C}
.mcal-bar.booking{background:#003B95}
.mcal-bar.vrbo{background:#245ABC}
.mcal-bar.fdr{background:var(--accent,#D63840)}
.mcal-bar:hover{filter:brightness(1.08)}
/* ── v2.331 (Charlie): Calendario · vista Lista (multicalendario) ── */
.vista-toggle{display:inline-flex;border:1px solid var(--line);border-radius:.6rem;overflow:hidden;
  margin-right:.6rem}
.vista-toggle .vt-btn{padding:.35rem .8rem;font-size:.78rem;font-weight:700;text-decoration:none;
  color:var(--ink-soft);background:var(--surface)}
.vista-toggle .vt-btn.on{background:var(--accent,#D63840);color:#fff}
.mcal-topbar{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem .9rem;margin-bottom:.6rem}
.mcal-ctl{display:flex;flex-wrap:wrap;gap:.5rem .8rem;align-items:center;font-size:.75rem;
  color:var(--ink-soft)}
.mcal-ctl select{font:inherit;font-size:.78rem;padding:.2rem .35rem;border:1px solid var(--line);
  border-radius:.4rem;background:var(--surface);color:var(--ink);margin-left:.25rem}
.mcal-leg .lg.owner::before{background:#7C5CBF}
.mcal-leg .lg.bloqueo::before{background:#6b7280}
.mcal-bar.bloqueo{background:#6b7280;color:#fff}
.mcal-meses{position:sticky;top:0;z-index:4;background:var(--bg);min-height:1.4rem;
  border-bottom:none}
.mcal-mes{font-size:.68rem;font-weight:800;color:#2E6FD8;padding:.15rem .4rem;text-transform:uppercase;
  letter-spacing:.04em;border-left:2px solid #2E6FD8;align-self:end}
.mcal-meses + .mcal-head{top:1.4rem}
.mcal-head #mcal-q{width:100%;font:inherit;font-size:.74rem;padding:.25rem .4rem;
  border:1px solid var(--line);border-radius:.4rem;background:var(--surface);color:var(--ink)}
.mcal-prop{position:relative;min-height:2.6rem}
.mcal-prop .mcal-lbl{flex-direction:column;align-items:flex-start;justify-content:center;
  line-height:1.15;gap:.1rem}
.mcal-prop .mcal-lbl small{font-weight:500;font-size:.62rem;color:var(--ink-faint);white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;max-width:100%}
.mcal-lbl .mcal-nom{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.mcal-row.mcal-prop .mcal-lbl,.mcal-row.mcal-head .mcal-lbl{width:12rem}
.mcal-row{grid-template-columns:12rem repeat(var(--dias),2.6rem)}
.mcal-hoy{grid-row:1;height:100%;border-left:2px solid #D63840;opacity:.7;pointer-events:none;
  justify-self:start;margin-left:-1px}
.mcal-prop .mcal-bar{grid-row:1}
.mcal-grp{background:var(--surface-2);min-height:2rem}
.mcal-grp-lbl{position:sticky;left:0;justify-self:start;width:max-content;max-width:100%;
  display:flex;align-items:baseline;gap:.7rem;padding:.3rem .6rem;font-size:.8rem;
  white-space:nowrap}
.mcal-grp-info{font-size:.7rem;color:var(--ink-soft);font-weight:500}
.cal-bloq-form select{font:inherit;font-size:.8rem;padding:.25rem .4rem;border:1px solid var(--line);
  border-radius:.4rem;background:var(--surface);color:var(--ink)}
.mcal-drawer{position:fixed;inset:0;z-index:100;display:none}
.mcal-drawer.open{display:block}
.mcal-drawer-bg{position:absolute;inset:0;background:rgba(0,0,0,.35)}
.mcal-panel{position:absolute;top:0;right:0;height:100%;width:min(24rem,92vw);
  background:var(--surface);box-shadow:-8px 0 30px rgba(0,0,0,.3);padding:1.3rem 1.1rem;
  overflow-y:auto}
.mcal-x{position:absolute;top:.5rem;right:.7rem;border:none;background:none;font-size:1.6rem;
  cursor:pointer;color:var(--ink-soft);line-height:1}
.mcal-panel h3{margin:.2rem 0 1rem;font-size:1.1rem;padding-right:1.5rem}
.md-row{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 0;
  border-bottom:1px solid var(--line);font-size:.9rem}
.md-row span{color:var(--ink-faint);flex:0 0 auto}
.md-row b{font-variant-numeric:tabular-nums;text-align:right;min-width:0;
  overflow-wrap:anywhere;display:flex;align-items:center;justify-content:flex-end;gap:.1rem}
/* Logo/favicon del canal a la izquierda del nombre (spec Owner View #1) */
.canal-ico{display:inline-block;width:.85rem;height:.85rem;border-radius:.22rem;
  margin-right:.4rem;flex:0 0 auto;background:var(--accent,#D63840)}
.canal-ico.airbnb{background:#FF385C}
.canal-ico.booking{background:#003B95}
.canal-ico.vrbo{background:#245ABC}
.canal-ico.fdr{background:var(--accent,#D63840)}
/* v2.084 Calendario MENSUAL por propiedad (grilla Dom–Sáb) */
.cal-head{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}
.cal-prop{font-weight:700;font-size:.95rem;padding:.4rem .6rem;border-radius:.55rem;
  border:1px solid var(--line);background:var(--surface);color:var(--ink);max-width:18rem}
.cal-prop-uno{font-weight:800;font-size:1.05rem}
.cal-nav{display:flex;align-items:center;gap:.6rem}
.mgrid{border:1px solid var(--line);border-radius:.8rem;overflow:hidden;background:var(--surface)}
.mgrid-dow{display:grid;grid-template-columns:repeat(7,1fr);background:var(--bg);
  border-bottom:1px solid var(--line)}
.mgrid-dow span{text-align:center;font-size:.7rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--ink-faint);padding:.4rem 0}
.mgrid-week{position:relative;border-bottom:1px solid var(--line);
  min-height:calc(1.6rem + var(--lanes) * 1.55rem + .5rem)}
.mgrid-week:last-child{border-bottom:none}
.mdays{display:grid;grid-template-columns:repeat(7,1fr);height:100%}
.mday{border-right:1px solid var(--line);padding:.25rem .35rem}
.mday:last-child{border-right:none}
.mday>span{font-size:.78rem;font-weight:700;color:var(--ink)}
.mday.fuera{background:var(--surface-2)}
.mday.fuera>span{color:var(--ink-faint)}
.mday.hoy>span{background:#2E6FD8;color:#fff;border-radius:.3rem;padding:0 .35rem}
/* v2.332: días clicables (rango de bloqueo) */
.mday.clic{cursor:pointer}
.mday.clic:hover{background:rgba(46,111,216,.08)}
.mday.sel{background:rgba(214,56,64,.13);box-shadow:inset 0 0 0 2px var(--accent,#D63840)}
.mcal-d{grid-row:1;height:100%;display:block;border-right:1px solid var(--line)}
.mcal-d.wknd{background:var(--surface-2)}
.mcal-d[onclick]{cursor:pointer}
.mcal-d[onclick]:hover{background:rgba(46,111,216,.1)}
.mcal-d.sel{background:rgba(214,56,64,.16);box-shadow:inset 0 0 0 1px var(--accent,#D63840)}
.mcal-prop .mcal-bar{position:relative;z-index:1}
.mcal-hoy{z-index:2}
.mbars{position:absolute;inset:0;pointer-events:none}
.mbar{position:absolute;height:1.4rem;pointer-events:auto;border:none;border-radius:.35rem;
  color:#fff;font-size:.72rem;font-weight:700;padding:0 .4rem;cursor:pointer;overflow:hidden;
  white-space:nowrap;text-overflow:ellipsis;text-align:left;display:flex;align-items:center;
  background:var(--accent,#D63840)}
.mbar.airbnb{background:#FF385C}
.mbar.booking{background:#003B95}
.mbar.vrbo{background:#245ABC}
.mbar.fdr{background:var(--accent,#D63840)}
.mbar:hover{filter:brightness(1.08)}
/* v2.303 (Charlie #2) — bloqueo de fechas: marca operativa local, rayada para
   leerse como «no disponible» y no confundirse con un canal de reserva. */
.mbar.bloqueo{color:#fff;font-weight:800;
  background:repeating-linear-gradient(45deg,#64748B,#64748B 7px,#556173 7px,#556173 14px);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.mbar.bloqueo:hover{filter:brightness(1.05)}
/* v2.339: bloqueo que vive en Guesty (solo lectura): mismo rayado, más claro y con borde */
/* v2.340: solicitud de bloqueo del dueño (pendiente de aprobación) */
.mbar.bloqueo.solicitud,.mcal-bar.bloqueo.solicitud{color:#4a2e00;background:repeating-linear-gradient(45deg,#fcd34d,#fcd34d 7px,#f4b400 7px,#f4b400 14px);box-shadow:inset 0 0 0 1px #b45309}
.mcal-leg .lg.bloqueo.solicitud::before{background:repeating-linear-gradient(45deg,#fcd34d,#fcd34d 3px,#f4b400 3px,#f4b400 6px);box-shadow:inset 0 0 0 1px #b45309}
#bloq-acciones{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.8rem}
.bloq-ok,.pri-btn.bloq-ok{background:var(--ok,#1a7f4b);border-color:var(--ok,#1a7f4b);color:#fff}
.cal-solic{margin:.4rem 0 .8rem}
.pn-herr{padding:.6rem .9rem}
.pn-esp{margin:.2rem 0 .6rem}
.pe-chip-chk{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .5rem;border:1px solid var(--line);border-radius:.5rem;font-size:.8rem;margin:.15rem .2rem .15rem 0}
.pn-herr summary{cursor:pointer;list-style:none}
.cal-directo{margin:.4rem 0 .8rem}
.cal-directo-row{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem}
.cal-directo-row a{word-break:break-all}
.enlaces-canal .u-cupon{min-width:14rem}
.enlaces-canal .u-cupon-pct{width:4.5rem}
.mbar.bloqueo.guesty,.mcal-bar.bloqueo.guesty{cursor:default;color:#1f2937;font-weight:700;background:repeating-linear-gradient(45deg,#cbd5e1,#cbd5e1 7px,#b6c2d3 7px,#b6c2d3 14px);box-shadow:inset 0 0 0 1px #64748B}
.mcal-leg .lg.bloqueo.guesty::before{background:repeating-linear-gradient(45deg,#cbd5e1,#cbd5e1 3px,#b6c2d3 3px,#b6c2d3 6px);box-shadow:inset 0 0 0 1px #64748B}
.mcal-leg .lg.bloqueo::before{
  background:repeating-linear-gradient(45deg,#64748B,#64748B 3px,#556173 3px,#556173 6px)}
/* control «Bloquear fechas» — solo gestión */
.cal-bloq-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:.5rem 0 .2rem}
.cal-bloq-btn{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem .8rem;
  border:1px solid var(--line);border-radius:.5rem;background:var(--surface);
  color:var(--ink);font-weight:700;font-size:.82rem;cursor:pointer}
.cal-bloq-btn:hover{border-color:#64748B;color:#556173}
.cal-bloq-form[hidden]{display:none}   /* v2.339: display:flex pisaba el hidden */
.cal-bloq-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.6rem;
  width:100%;padding:.7rem .8rem;border:1px solid var(--line);border-radius:.6rem;
  background:var(--surface)}
.cal-bloq-form label{display:flex;flex-direction:column;gap:.2rem;font-size:.72rem;
  color:var(--ink-soft);font-weight:700}
.cal-bloq-form input{font:inherit;font-size:.85rem;padding:.35rem .5rem;
  border:1px solid var(--line);border-radius:.4rem;background:var(--bg);color:var(--ink)}
.cal-bloq-form input[name="motivo"]{min-width:12rem}
/* v2.331: la casilla «también en los canales» en línea con su texto (antes la
   casilla se estiraba como un campo y quedaba encima del texto) */
.cal-bloq-form label.cal-bloq-canal{flex-direction:row;align-items:center;gap:.4rem;
  padding-bottom:.45rem;text-transform:none;font-weight:600}
.cal-bloq-form label.cal-bloq-canal input{width:1rem;height:1rem;padding:0;margin:0;flex:0 0 auto}
.btn-danger{border:1px solid var(--bad);background:var(--bad);color:#fff;
  border-radius:.5rem;padding:.45rem .9rem;font-weight:800;cursor:pointer}
.btn-danger:hover{filter:brightness(1.06)}
.bloq-quitar{margin-top:1rem}
/* v2.085 Estados de Cuenta: badges de estado de pago */
.badge-pago{display:inline-block;padding:.16rem .55rem;border-radius:1rem;
  font-size:.72rem;font-weight:800;letter-spacing:.02em;white-space:nowrap}
.badge-pago.pend{background:var(--warn-soft,#F7ECD8);color:var(--warn,#B87514)}
.badge-pago.cancel{background:var(--ok-soft,#DCF2E7);color:var(--ok,#1F9D62)}
.badge-pago.cero{background:var(--line,#E7E9EE);color:var(--ink-soft,#6B7280)}

/* ---------- v2.039: Estados de cuenta guardados ---------- */
.est-crear{background:var(--accent,#D63840);color:#fff;border-color:transparent}
.est-crear:hover{color:#fff;filter:brightness(1.06)}
.rep-estados{margin-top:1.6rem}
.rep-estados h3{font-size:1rem;margin:0 0 .7rem}
.est-tabla{width:100%;border-collapse:collapse;font-size:.88rem}
.est-tabla th,.est-tabla td{padding:.55rem .6rem;border-bottom:1px solid var(--line);
  text-align:left;vertical-align:middle}
.est-tabla th{font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;
  color:var(--muted,#8a94a3);font-weight:700}
.est-tabla td.neto{font-weight:800;text-align:right;font-variant-numeric:tabular-nums}
/* v2.185 (Charlie): sección con más peso + columnas ordenables */
.rep-estados-head{display:flex;align-items:center;gap:.7rem;margin:0 0 .2rem}
.rep-estados-head h2{font-size:1.3rem;margin:0}
.est-orden th.est-th{cursor:pointer;user-select:none;white-space:nowrap}
.est-orden th.est-th:hover{color:var(--ink)}
.est-th .est-sort{display:inline-block;width:.9em;text-align:center;opacity:.6}
.est-orden th.sort-asc .est-sort::after{content:"▲";font-size:.7em}
.est-orden th.sort-desc .est-sort::after{content:"▼";font-size:.7em}
/* v2.186 (Charlie): ficha de pago estilo QuickBooks — cabecera con peso */
.pg-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}
.pg-head .pg-lbl{font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--muted,#8a94a3);font-weight:700;margin-bottom:.2rem}
.pg-benef{font-size:1.5rem;font-weight:800;line-height:1.1;color:var(--ink)}
.pg-sub{color:var(--muted,#8a94a3);font-size:.9rem;margin-top:.15rem}
.pg-head-r{text-align:right}
.pg-imp{font-size:2rem;font-weight:800;line-height:1;color:var(--ink);
  font-variant-numeric:tabular-nums}
.pg-nav{margin:.5rem 0 0;font-size:.9rem}
.pg-pagado{margin:.7rem 0 0;padding:.6rem .8rem;border-radius:.6rem;
  background:color-mix(in srgb,var(--ok,#16a34a) 12%,var(--card,#fff));
  border:1px solid color-mix(in srgb,var(--ok,#16a34a) 30%,transparent)}
.pg-h3{margin:0 0 .5rem;font-size:1rem}
.pg-tabla td.neto,.pg-tabla th.n{text-align:right}
.pg-acc{display:flex;gap:.7rem;align-items:center;flex-wrap:wrap;margin-top:.4rem}
.pg-hint{font-size:.82rem;max-width:32rem}
.pg-veradj{align-self:flex-start;margin-top:.15rem}
/* v2.189: Detalles de la Inversión (subsección desde Personas). */
.inv-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}
.inv-head-r{text-align:right}
.rel-inv{color:var(--brand);font-weight:700;text-decoration:none;
  border-bottom:1px dashed currentColor}
.rel-inv:hover{border-bottom-style:solid}

/* Botón dividido estilo QuickBooks: Guardar y cerrar (def) + ▾ Guardar y enviar */
.pg-split{position:relative;display:inline-flex;align-items:stretch}
.pg-split .pg-main{border-top-right-radius:0;border-bottom-right-radius:0}
.pg-split .pg-caret{border-top-left-radius:0;border-bottom-left-radius:0;
  padding:.6rem .6rem;font-size:.8rem;line-height:1;display:inline-flex;
  align-items:center;box-shadow:inset 1px 0 0 rgba(255,255,255,.28)}
/* v2.224 (Charlie): el menú abre HACIA LA DERECHA del botón, sin sub-texto,
   y se extiende cómodo en una sola línea. */
.pg-menu{position:absolute;left:calc(100% + .4rem);bottom:0;width:max-content;
  background:var(--pop);border:1px solid var(--line);border-radius:var(--r-sm);
  box-shadow:0 10px 30px rgba(0,0,0,.18);padding:.3rem;z-index:40;display:none}
.pg-menu.abierto{display:block}
.pg-menu button{display:block;width:100%;text-align:left;background:transparent;
  border:0;border-radius:calc(var(--r-sm) - 3px);padding:.6rem .9rem;cursor:pointer;
  font:inherit;font-weight:700;color:var(--ink);white-space:nowrap}
.pg-menu button:hover{background:var(--brand-soft);color:var(--brand)}
@media (max-width:640px){
  .pg-menu{left:0;bottom:calc(100% + .4rem)}   /* móvil: arriba, hacia la derecha */
}
.est-acc{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
/* v2.267 (opción E): botón dividido «Pagar ▾» en la fila del estado */
.est-split{position:relative;display:inline-flex;align-items:stretch}
.est-pagar{display:inline-flex;align-items:center;background:var(--brand);
  color:var(--on-brand);font-weight:800;font-size:.85rem;text-decoration:none;
  padding:.5rem .95rem;border-radius:.6rem 0 0 .6rem}
.est-pagar:hover{filter:brightness(1.05);color:var(--on-brand)}
.est-caret{background:var(--brand);color:var(--on-brand);border:0;cursor:pointer;
  padding:.5rem .55rem;font-size:.8rem;line-height:1;display:inline-flex;
  align-items:center;border-radius:0 .6rem .6rem 0;
  box-shadow:inset 1px 0 0 rgba(255,255,255,.3)}
.est-caret:hover{filter:brightness(1.05)}
.est-menu{position:absolute;left:0;top:calc(100% + .35rem);width:max-content;
  background:var(--pop);border:1px solid var(--line);border-radius:var(--r-sm);
  box-shadow:0 10px 30px rgba(0,0,0,.18);padding:.3rem;z-index:40;display:none}
.est-menu.abierto{display:block}
.est-menu a,.est-menu button{display:block;width:100%;text-align:left;
  background:transparent;border:0;border-radius:calc(var(--r-sm) - 3px);
  padding:.55rem .9rem;cursor:pointer;font:inherit;font-weight:700;
  color:var(--ink);white-space:nowrap;text-decoration:none}
.est-menu a:hover,.est-menu button:hover{background:var(--brand-soft);color:var(--brand)}
.est-pagado{display:inline-flex;align-items:center;padding:.45rem .9rem;
  border-radius:999px;background:var(--ok-soft);color:var(--ok);font-weight:800;
  font-size:.82rem;text-decoration:none}
.est-pagado:hover{filter:brightness(.97);color:var(--ok)}
button.est-pagar,button.est-pagado{border:0;cursor:pointer;font:inherit;font-weight:800}
.est-pagar.est-solo{border-radius:.6rem}
/* v2.268 — Control de Cartera */
.cart-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));
  gap:.7rem 1rem;align-items:end}
.cart-form label{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;
  color:var(--ink-soft);font-weight:600}
.cart-form select,.cart-form input{font:inherit;padding:.45rem .6rem;
  border:1px solid var(--line);border-radius:.5rem;background:var(--field-bg);
  color:var(--ink)}
.cart-form .pri-btn{justify-self:start}
.cart-tabla td.n,.cart-tabla th.n{text-align:right}
.cart-tabla tfoot td{font-weight:800;border-top:2px solid var(--line-strong)}
.est-acc form{margin:0;display:inline}
.btn-del{background:transparent;border:1px solid var(--bad);color:var(--bad);
  border-radius:.5rem;padding:.35rem .7rem;font-weight:700;cursor:pointer;font-size:.8rem}
.btn-del:hover{background:var(--bad);color:#fff}

/* ==========================================================================
   Housekeeping (v2.055) — KPIs clicables, strip de 15 días, ficha resumen.
   ========================================================================== */
.hk-sel{gap:.6rem}
.hk-sel .fecha-form{margin:0}
.hk-sel .fecha-form input[type=date]{font:inherit;padding:.4rem .6rem;
  border-radius:var(--r);border:var(--bd-card);background:var(--surface);
  color:var(--ink)}
.hk-sel .fecha-sel{color:var(--ink-soft);font-weight:650}

/* KPIs clicables: heredan la tarjeta .kpi y añaden estado interactivo */
.kpis-click{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
a.kpi-link{text-decoration:none;color:inherit;display:block;cursor:pointer;
  transition:transform .08s ease,box-shadow .12s ease,border-color .12s ease}
a.kpi-link:hover{transform:translateY(-1px);border-color:var(--accent,#D63840)}
a.kpi-link.on{border-color:var(--accent,#D63840);
  box-shadow:0 0 0 2px var(--accent,#D63840) inset}
a.kpi-link.on .lbl{color:var(--accent,#D63840)}

/* Strip horizontal de 15 días */
.hk-strip-card{padding:.7rem}
.hk-strip{display:flex;gap:.5rem;overflow-x:auto;padding-bottom:.3rem;
  scroll-snap-type:x proximity}
.hk-day{flex:0 0 auto;min-width:5.1rem;scroll-snap-align:start;
  display:flex;flex-direction:column;align-items:center;gap:.1rem;
  padding:.55rem .5rem .7rem;border-radius:var(--r);border:var(--bd-card);
  background:var(--surface);color:var(--ink);text-decoration:none;
  position:relative;transition:transform .08s ease,border-color .12s ease}
.hk-day:hover{transform:translateY(-1px);border-color:var(--accent,#D63840)}
.hk-day.hoy{border-color:var(--accent,#D63840)}
.hk-day.sel{box-shadow:0 0 0 2px var(--accent,#D63840) inset;
  border-color:var(--accent,#D63840)}
.hk-day .hk-dow{font-size:.66rem;text-transform:uppercase;
  letter-spacing:.04em;color:var(--ink-faint);font-weight:700}
.hk-day .hk-num{font-family:var(--font-mono);font-size:1.35rem;font-weight:700;
  line-height:1;font-variant-numeric:tabular-nums}
.hk-day .hk-mes{font-size:.62rem;color:var(--ink-faint);text-transform:uppercase}
.hk-day .hk-cts{font-size:.64rem;color:var(--ink-soft);margin-top:.15rem;
  display:flex;gap:.25rem;font-variant-numeric:tabular-nums}
.hk-day .hk-cts .s{color:var(--ink-soft)}
.hk-day .hk-cts .e{color:var(--ink-soft)}
.hk-day .hk-cts .t{color:var(--warn)}
.hk-day .hk-sa{position:absolute;top:.3rem;right:.35rem;min-width:1.05rem;
  height:1.05rem;padding:0 .2rem;border-radius:1rem;background:var(--bad);
  color:#fff;font-size:.62rem;font-weight:800;display:flex;
  align-items:center;justify-content:center;line-height:1}

/* Ficha resumen de la fecha seleccionada */
.hk-facts{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.7rem}
.hk-fact{flex:1 1 auto;min-width:6rem;background:var(--bg);border-radius:var(--r);
  border:var(--bd-card);padding:.5rem .7rem;text-align:center}
.hk-fact .lbl{display:block;font-size:.64rem;text-transform:uppercase;
  letter-spacing:.03em;color:var(--ink-faint);font-weight:700}
.hk-fact b{font-family:var(--font-mono);font-size:1.3rem;font-weight:700}
.hk-fact.on{border-color:var(--accent,#D63840);
  box-shadow:0 0 0 1px var(--accent,#D63840) inset}
.hk-linea{margin:.25rem 0;font-size:.9rem;color:var(--ink)}
.hk-linea .lbl{font-size:.66rem;text-transform:uppercase;letter-spacing:.03em;
  color:var(--ink-faint);font-weight:700;margin-right:.4rem}
.hk-h3{margin:1.4rem 0 .7rem;font-size:1rem}

@media (max-width:720px){
  .hk-strip{gap:.4rem}
  .hk-day{min-width:4.4rem;padding:.5rem .35rem .6rem}
  .hk-day .hk-num{font-size:1.15rem}
  .kpis-click{grid-template-columns:1fr 1fr}
  .hk-sel{flex-wrap:wrap}
  .hk-fact{min-width:4.5rem}
  /* v2.173 (Charlie): en móvil la ficha del día seleccionado se estira para
     llenar la primera pantalla, así «Auxiliares Schedule» queda debajo del
     pliegue (no asoma en la primera impresión). */
  .hk-detalle{min-height:calc(100vh - 15rem)}
}

/* ==========================================================================
   v2.056 — Housekeeping: navegación ± día, tabs con tablas del día.
   ========================================================================== */
.hk-fhead{display:flex;align-items:center;gap:.7rem;margin-bottom:.6rem}
.hk-fhead h3{flex:1;text-align:center;margin:0}
.hk-nav{flex:0 0 auto;width:2.1rem;height:2.1rem;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  border:var(--bd-card);background:var(--bg);color:var(--ink);
  text-decoration:none;font-size:1.25rem;line-height:1;font-weight:700;
  transition:transform .08s ease,border-color .12s ease}
.hk-nav:hover{transform:translateY(-1px);border-color:var(--accent,#D63840);
  color:var(--accent,#D63840)}
.hk-tabs{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.8rem}
button.hk-fact{font:inherit;color:inherit;cursor:pointer}
.hk-fact.on{border-color:var(--accent,#D63840);
  box-shadow:0 0 0 1px var(--accent,#D63840) inset}
.hk-fact.on .lbl{color:var(--accent,#D63840)}
.hk-panel{display:none}
.hk-panel.on{display:block}
.hk-tabla{width:100%;border-collapse:collapse;font-size:.9rem}
.hk-tabla th,.hk-tabla td{padding:.55rem .6rem;text-align:left;
  border-bottom:1px solid var(--line);vertical-align:middle}
.hk-tabla th{font-size:.66rem;text-transform:uppercase;
  letter-spacing:.04em;color:var(--ink-faint);font-weight:750}
.hk-asig{font:inherit;font-size:.82rem;padding:.28rem .4rem;border-radius:6px;
  border:var(--bd-card);background:var(--surface);color:var(--ink);max-width:12rem}
/* v2.109 — Limpieza externa (proveedor por tarifa, ej. Lucy en la playa):
   etiqueta en vez del selector de auxiliar; no la agenda el equipo interno. */
.hk-ext{display:inline-block;font-size:.78rem;font-weight:650;
  color:color-mix(in srgb,#d97706 78%,var(--ink));
  background:color-mix(in srgb,#d97706 12%,var(--card));
  border:1px solid color-mix(in srgb,#d97706 30%,transparent);
  padding:.16rem .5rem;border-radius:999px;white-space:nowrap}

/* v2.063 — Housekeeping: fila de fechas con flechas sincronizadas */
.hk-striprow{display:flex;align-items:stretch;gap:.5rem}
.hk-striprow .hk-strip{flex:1 1 auto}
.hk-arrow{flex:0 0 auto;width:2.2rem;border-radius:var(--r);border:var(--bd-card);
  background:var(--bg);color:var(--ink);text-decoration:none;font-size:1.35rem;
  font-weight:700;display:flex;align-items:center;justify-content:center;
  transition:transform .08s ease,border-color .12s ease}
.hk-arrow:hover{transform:translateY(-1px);border-color:var(--accent,#D63840);
  color:var(--accent,#D63840)}
.hk-strip-tools{display:flex;align-items:center;gap:.8rem;margin-top:.5rem}
.hk-strip-tools .mini-link.on{color:var(--accent,#D63840);font-weight:750}
.hk-detalle{margin-top:.9rem}

/* v2.063 — Próximos 7 Días: columnas por día con trabajos sin asignar */
.hk-cols{display:grid;grid-template-columns:repeat(7,minmax(9rem,1fr));gap:.5rem;
  overflow-x:auto;align-items:start}
/* #3 (Charlie 23-08): en Housekeeping el contenedor central se ensancha (ver
   main.tab-housekeeping) y el Calendario usa TODO ese ancho. */
.hk-cal-wide{width:100%}
/* v2.101/2.108: tablero de 5 días — 5 columnas que reparten TODO el ancho */
/* v2.149 (punto 8): columnas ESTIRADAS a la misma altura para que los 7
   botones «+ Nueva Tarea» (margin-top:auto) formen una sola línea al pie. */
.hk-cols.cal7{grid-template-columns:repeat(7,1fr);gap:.55rem;
  align-items:stretch}  /* v2.142: 7 días */
.hk-col{display:flex;flex-direction:column;gap:.4rem;min-width:9rem}
.hk-cols.cal7 .hk-col{min-width:0}
/* v2.246 (Charlie): en el celular NADA de scroll lateral. El Calendario de
   Housekeeping muestra UN día por pantalla y se cambia con el pager (flechas y
   puntos) — sin swipe horizontal. Desktop sin cambios (se ven las 7 columnas). */
@media(max-width:640px){
  .hk-cols.cal7{display:block;grid-template-columns:none;gap:0;overflow:visible}
  .hk-cols.cal7>.hk-col{min-width:0;box-sizing:border-box;padding:0 .1rem;
    display:none}
  .hk-cols.cal7>.hk-col.activa{display:flex}
}
/* pager del carrusel (#1/#2): puntos + flechas + etiqueta del día activo.
   Solo visible en móvil; en desktop la navegación son las 5 columnas + strip. */
.hk-calpager{display:none;align-items:center;justify-content:center;gap:.7rem;
  margin:.35rem 0 .5rem}
@media(max-width:640px){.hk-calpager{display:flex}}
.hk-calpager .hk-pgbtn{border:var(--bd-card);background:var(--bg);color:var(--ink);
  border-radius:50%;width:2rem;height:2rem;font-size:1.15rem;line-height:1;
  cursor:pointer;flex:0 0 auto;padding:0}
.hk-calpager .lbl{font-weight:800;text-transform:uppercase;font-size:.85rem;
  letter-spacing:.03em;min-width:4.6rem;text-align:center;color:var(--ink)}
.hk-calpager .dots{display:flex;gap:.4rem}
.hk-calpager .dot{width:.5rem;height:.5rem;border-radius:50%;
  background:var(--ink-faint);opacity:.35;cursor:pointer;transition:all .15s}
.hk-calpager .dot.on{opacity:1;background:var(--accent,#D63840);transform:scale(1.25)}
/* v2.392 (Charlie): las flechas de navegación de día viven DENTRO del
   encabezado rojo del día, flanqueando la fecha. Solo en móvil (en desktop se
   ven las 7 columnas y no hacen falta). */
.hk-hnav{display:none}
@media(max-width:640px){
  .hk-hnav{display:flex;align-items:center;justify-content:center;position:absolute;
    top:50%;transform:translateY(-50%);width:2rem;height:2rem;border-radius:50%;
    border:var(--bd-card);background:var(--bg);color:var(--ink);font-size:1.2rem;
    line-height:1;padding:0;cursor:pointer;z-index:2}
  .hk-hnav.prev{left:.4rem}
  .hk-hnav.next{right:.4rem}
  .hk-col-h{padding-left:2.7rem;padding-right:2.7rem}
}
/* #3 (Charlie 22-08): encabezado de cada día «SÁB 22» centrado, MAYÚSCULAS,
   bold y de alto impacto; el ⚡ se ancla a la derecha sin descentrar. */
.hk-col-h{display:flex;align-items:center;justify-content:center;
  flex-wrap:wrap;gap:.15rem .35rem;
  padding:.45rem .5rem;position:relative;text-align:center;cursor:pointer;
  user-select:none;transition:border-color .12s ease,background .12s ease;
  border-radius:var(--r);background:var(--bg);border:var(--bd-card)}
.hk-col-h:hover{border-color:var(--accent,#D63840)}
.hk-col-h.abierta{border-color:var(--accent,#D63840);
  background:color-mix(in srgb,var(--accent,#D63840) 6%,var(--bg))}
.hk-col-h.hoy{border-color:var(--accent,#D63840);
  background:color-mix(in srgb,var(--accent,#D63840) 8%,var(--bg))}
/* v2.167: fecha SIEMPRE visible = toggle; conteo pequeño + chevron; los
   auxiliares (nombres/selección) solo al abrir. */
.hk-col-n{font-size:.6rem;font-weight:700;color:var(--ink-soft);
  background:var(--surface-2);border-radius:var(--r-pill);
  padding:.04rem .32rem;white-space:nowrap;line-height:1.5}
.hk-col-n.none{color:var(--ink-faint)}
.hk-col-n.def0{color:var(--accent,#D63840);background:transparent}
.hk-col-cv{font-style:normal;font-size:.6rem;color:var(--ink-faint);
  transition:transform .15s ease}
.hk-col-h.abierta .hk-col-cv{transform:rotate(180deg)}
.hk-pl-nombres{font-size:.72rem;font-weight:650;line-height:1.3;
  margin-bottom:.4rem;padding-bottom:.35rem;border-bottom:1px solid var(--line)}
.hk-pl-nombres.gy{font-weight:500}
.hk-pl-sug{font-size:.66rem;line-height:1.3;color:var(--ink-faint);
  margin:-.15rem 0 .4rem;font-style:italic}
.hk-pl-ro{font-size:.75rem;font-weight:600;line-height:1.35}
.hk-col-h .d{font-weight:850;text-transform:uppercase;font-size:.92rem;
  letter-spacing:.03em}
.hk-col-h.hoy .d{color:var(--accent,#D63840)}
.hk-col-h .m{font-size:.6rem;color:var(--ink-faint);text-transform:uppercase;
  letter-spacing:.04em}
.hk-col-h .n{font-family:var(--font-mono);font-weight:700}
.hk-col-h .hk-auto{position:absolute;right:.3rem;top:50%;
  transform:translateY(-50%)}
.hk-job{padding:.45rem .5rem;border-radius:var(--r);border:var(--bd-card);
  background:var(--surface);display:flex;flex-direction:column;gap:.3rem}
.hk-job.urg{border-color:var(--bad);box-shadow:0 0 0 1px var(--bad) inset}
.hk-job.tarea{border-left:3px solid var(--sand,#9A7B4F)}
.hk-job-h{display:flex;align-items:center;gap:.35rem;font-size:.84rem}
.hk-job-h b{flex:1}
.hk-job-m{font-size:.72rem;color:var(--ink-soft)}
.hk-job .hk-asig{max-width:none;width:100%}
.hk-urg{background:var(--bad);color:#fff;font-size:.56rem;font-weight:800;
  padding:.05rem .3rem;border-radius:1rem;letter-spacing:.04em}
.hk-tt{font-size:.6rem;color:var(--ink-faint);text-transform:uppercase;
  border:1px solid var(--line);border-radius:1rem;padding:.02rem .35rem}
.hk-empty{padding:.6rem .5rem;font-size:.78rem;text-align:center}

/* ---------- Housekeeping: Otros Puntos (Puntos Privados) ---------- */
.pp-card{display:flex;flex-direction:column;gap:.9rem}
.pp-cat{border:var(--bd-card);border-radius:var(--r);padding:.6rem .7rem;
  background:var(--surface)}
.pp-cat-h{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}
.pp-cat-h b{font-size:.9rem}
.pp-cat-h .gy{font-size:.7rem}
.pp-cat-h button{margin-left:auto}
.pp-item{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
  padding:.35rem 0;border-top:1px solid var(--line)}
.pp-item:first-of-type{border-top:0}
.pp-prop{flex:1;min-width:9rem;font-size:.84rem}
.pp-prop .mono{color:var(--ink-soft);font-size:.74rem;margin-left:.3rem}
.pp-item .hk-asig{max-width:14rem}
.pp-form{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;
  margin-bottom:.55rem;padding:.5rem;border-radius:var(--r);
  background:var(--surface-2,rgba(0,0,0,.03))}
.pp-form .pp-centro{min-width:11rem}
.pp-empty{padding:.4rem 0;font-size:.78rem}

/* ---------- Financiero: toggle Future Earnings ---------- */
.fe-row{margin-bottom:.5rem;align-items:center}
.fe-tog{display:inline-flex;align-items:center;gap:.55rem;cursor:pointer}
.fe-tog input{position:absolute;opacity:0;pointer-events:none}
.fe-ui{width:2.7rem;height:1.5rem;border-radius:1rem;background:var(--line);
  position:relative;transition:background .15s;flex:0 0 auto}
.fe-ui::after{content:"";position:absolute;top:.17rem;left:.17rem;
  width:1.16rem;height:1.16rem;border-radius:50%;background:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.25);transition:left .15s}
.fe-tog input:checked + .fe-ui{background:var(--ok,#2e9e5b)}
.fe-tog input:checked + .fe-ui::after{left:1.37rem}
.fe-lbl{font-weight:750}

/* ---------- Financiero: Ingresos por mes (mes seleccionado resaltado) ---- */
.mes-cols .col-fill{opacity:.5}
.mes-cols .col-fill.sel{opacity:1;background:var(--accent,#D63840)}
.mes-cols .col.sel .col-nom{color:var(--accent,#D63840);font-weight:800}
.mes-cols .col.sel .col-cifra{font-weight:800}
.mes-cols .col{min-width:2.1rem}

/* ---------- Financiero: donut por canal ---------- */
.don-wrap{display:flex;gap:1.6rem;align-items:center;flex-wrap:wrap}
.don-svg{width:min(235px,100%);height:auto;flex:0 0 auto}
.don-tot{font-family:var(--font-mono);font-size:14px;font-weight:800;
  fill:var(--ink)}
.don-sub{font-size:9px;fill:var(--ink-faint)}
.don-leg{flex:1 1 240px;min-width:230px;display:flex;flex-direction:column;
  gap:.45rem}
.don-row{display:flex;align-items:center;gap:.6rem;padding:.35rem .5rem;
  border-radius:var(--r);border:var(--bd-card);background:var(--bg)}
.don-row .don-nom{font-weight:650}
.don-row .don-m{margin-left:auto;font-variant-numeric:tabular-nums}
.don-row .don-pct{min-width:3rem;text-align:right;color:var(--ink-soft);
  font-weight:750;font-variant-numeric:tabular-nums}
.chip.gen{background:#6b7686}

@media (max-width:720px){
  .hk-tabs{gap:.4rem}
  .hk-fact{min-width:5.2rem;padding:.45rem .5rem}
  .don-wrap{gap:.9rem}
  /* v2.246 (Charlie): gráficas de columnas «Por mes» — las 12 columnas reparten
     el ancho (flex) en vez de deslizarse de lado. */
  .columnas,.mes-cols{overflow-x:visible;gap:.28rem;padding-bottom:.3rem}
  .columnas .col,.mes-cols .col{min-width:0;flex:1 1 0;max-width:none}
  .columnas .col-cifra,.mes-cols .col-cifra{font-size:.54rem}
  .columnas .col-nom,.mes-cols .col-nom{font-size:.55rem}

  /* v2.246: mapa de ocupación — el mes entra a lo ancho (celdas chicas), sin
     scroll lateral. En un teléfono el eje de días/‰ es ilegible: se ocultan y
     queda el patrón (unidad × día, verde = ocupado) + las etiquetas de unidad. */
  .ocupa-wrap{overflow-x:hidden;-webkit-overflow-scrolling:auto}
  .ocupa{width:100%;border-spacing:1px;table-layout:fixed}
  .ocupa thead,.ocupa tfoot{display:none}
  .ocupa th.ocupa-u{width:5.2rem;max-width:5.2rem;overflow:hidden;
    text-overflow:ellipsis;font-size:.58rem;padding-right:.35rem}
  .ocupa tbody td{width:auto;min-width:0;height:.86rem}

  /* v2.246: calendario de reservas (Gantt) — el mes entra a lo ancho; las
     columnas de día reparten el espacio (1fr) y ya no se desliza de lado. El
     número de día se oculta (ilegible a este ancho): quedan el finde sombreado,
     el marcador de HOY y las barras (toca una para ver el detalle). */
  .mcal-scroll{overflow-x:hidden}
  .mcal{min-width:0;width:100%}
  .mcal-row{grid-template-columns:3.4rem repeat(var(--dias),1fr)}
  .mcal-lbl{width:3.4rem;font-size:.6rem;padding-right:.25rem;overflow:hidden;
    text-overflow:ellipsis;white-space:nowrap}
  .mcal-cell{font-size:0}
  .mcal-cell b{display:none}
  .mcal-cell.hoy{background:color-mix(in srgb,#2E6FD8 22%,var(--surface-2))}
  .mcal-bar{font-size:.58rem;padding:0 .1rem}

  /* v2.246: strip de días (Housekeeping) envuelve en vez de deslizarse. */
  .hk-strip{flex-wrap:wrap;overflow-x:visible;scroll-snap-type:none}
}

/* v2.057 — Impuesto de uso configurable en la ficha (Ley de Hierro) */
.tax-cfg{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.tax-cfg select{flex:1 1 14rem;min-width:12rem}
.tax-cfg input{flex:1 1 7rem;min-width:6rem}
.tax-cfg .tax-razon{flex:2 1 12rem}
.rep-ded .neto.gy{color:var(--ink-faint)}

/* ── Housekeeping v2 (v2.089): Calendario 7 días ───────────────────────── */
.hk-strip-tools.centrado{justify-content:center}
.cal7 .hk-col{min-width:0}
.hk-ev{padding:.45rem .5rem;border-radius:var(--r);border:var(--bd-card);
  border-left:3px solid transparent;background:var(--card);margin-top:.4rem;
  display:flex;flex-direction:column;gap:.3rem}
.hk-ev-h{display:flex;align-items:center;gap:.35rem;font-size:.84rem;
  flex-wrap:wrap}
.hk-ev-h b{overflow-wrap:anywhere}
.hk-ev-hr{display:flex;gap:.35rem;flex-wrap:wrap;font-size:.72rem;
  color:var(--ink-soft)}
.hk-ev-a{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}
.hk-ev .hk-asig{max-width:none;width:100%}
/* v2.263: «Eliminar» (anular con motivo) — al final de la fila de acciones */
.hk-ev-a .hk-del{margin-left:auto;border-color:var(--bad-soft);
  background:var(--bad-soft);color:var(--bad);font-weight:700}
.hk-ev-a .hk-del:hover{background:var(--bad);color:#fff;border-color:var(--bad)}
.hk-hlbl{display:flex;align-items:center;gap:.25rem;font-size:.66rem;
  color:var(--ink-soft)}
.hk-hora,.hk-hora-pp{font-size:.72rem;padding:.1rem .2rem;max-width:6.2rem}
.hk-noasig{font-size:.72rem}
.chico-txt{font-size:.72rem}
/* favicons Salida / Entrada / Turnover (4.5) */
.evi{display:inline-flex;align-items:center;justify-content:center;
  min-width:1.15rem;height:1.15rem;padding:0 .2rem;border-radius:.35rem;
  font-size:.62rem;font-weight:800;color:#fff;flex:none}
.evi.s{background:#dc2626}      /* check-out */
.evi.e{background:#16a34a}      /* check-in */
.evi.t{background:#7c3aed}      /* salida y entrada */
.evi.l{background:#0891b2}      /* limpieza suelta */
.evi.f{background:#d97706}      /* punto fijo */
.evi.o{background:#64748b}      /* tarea / compromiso */
/* chip del auxiliar (4.6): color persistente, indicador PRINCIPAL */
/* v2.098: globo SÓLIDO y vivo — el color del perfil llena el chip */
.aux-chip{--auxc:#64748b;display:inline-flex;align-items:center;
  gap:.25rem;font-size:.7rem;font-weight:800;color:#fff;border:none;
  border-radius:1rem;padding:.14rem .55rem;background:var(--auxc);
  letter-spacing:.01em;box-shadow:0 1px 2px rgba(0,0,0,.18);
  text-shadow:0 1px 1px rgba(0,0,0,.22)}
/* zonas geográficas (4.4): tinte de FONDO, indicador secundario */
.hk-ev.z-psa{background:color-mix(in srgb,#7c5cff 7%,var(--card))}
.hk-ev.z-urdesa{background:color-mix(in srgb,#0aa27a 8%,var(--card))}
.hk-ev.z-ceibos{background:color-mix(in srgb,#d97706 8%,var(--card))}
.hk-ev.z-kennedy{background:color-mix(in srgb,#2563eb 7%,var(--card))}
.hk-ev.z-portofino{background:color-mix(in srgb,#db2777 7%,var(--card))}
.hk-ev.z-aeropuerto{background:color-mix(in srgb,#64748b 9%,var(--card))}
.hk-ev.z-montanita{background:color-mix(in srgb,#0891b2 8%,var(--card))}
.hk-ev.z-puntablanca{background:color-mix(in srgb,#65a30d 8%,var(--card))}
.hk-ev.z-staugustine{background:color-mix(in srgb,#c026d3 7%,var(--card))}
.hk-ev.z-kearny{background:color-mix(in srgb,#4f46e5 7%,var(--card))}
.cal7-ley{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;
  margin:.4rem 0 0;font-size:.72rem;color:var(--ink-soft)}
.cal7-z{border-radius:.4rem;padding:.1rem .45rem;border:var(--bd-card)}
.cal7-z.z-psa{background:color-mix(in srgb,#7c5cff 12%,transparent)}
.cal7-z.z-urdesa{background:color-mix(in srgb,#0aa27a 14%,transparent)}
.cal7-z.z-ceibos{background:color-mix(in srgb,#d97706 14%,transparent)}
.cal7-z.z-kennedy{background:color-mix(in srgb,#2563eb 12%,transparent)}
.cal7-z.z-portofino{background:color-mix(in srgb,#db2777 12%,transparent)}
.cal7-z.z-aeropuerto{background:color-mix(in srgb,#64748b 16%,transparent)}
.cal7-z.z-montanita{background:color-mix(in srgb,#0891b2 14%,transparent)}
.cal7-z.z-puntablanca{background:color-mix(in srgb,#65a30d 14%,transparent)}
.cal7-z.z-staugustine{background:color-mix(in srgb,#c026d3 12%,transparent)}
.cal7-z.z-kearny{background:color-mix(in srgb,#4f46e5 12%,transparent)}
/* #7: los días pasados ya son editables (no solo lectura) → dimming leve. */
.hk-col-h.pasado{opacity:.9;border-style:dashed}
.tag.ok{background:var(--good,#16a34a);color:#fff;font-size:.56rem;
  font-weight:800;border-radius:.3rem;padding:.05rem .3rem}
/* Puntos Fijos (config) y form Privado */
.pf-card .pf-fila{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;
  padding:.45rem 0;border-top:var(--bd-card)}
.pf-fila .pf-nombre{flex:1 1 11rem;min-width:9rem}
.pf-fila .pf-obs{flex:2 1 12rem;min-width:9rem}
.pf-fila .pf-resp{max-width:12rem}
.pf-dias{display:inline-flex;gap:.25rem}
.pf-d{display:inline-flex;align-items:center;gap:.15rem;font-size:.7rem}
.pp-form-priv{display:flex;gap:.4rem;flex-wrap:wrap}
.pp-form-priv input,.pp-form-priv select{min-width:8rem;flex:1 1 9rem}

/* ── Autoasignación (Fase 2, v2.090) ───────────────────────────────────── */
.hk-auto{border:none;background:transparent;cursor:pointer;font-size:.8rem;
  padding:0 .15rem;opacity:.75}
.hk-auto:hover{opacity:1;transform:scale(1.15)}
/* v2.105: ⚡ deshabilitado hasta que el día tenga Plantilla de Trabajo. */
.hk-auto.off{opacity:.35;cursor:not-allowed;filter:grayscale(1)}
.hk-auto.off:hover{transform:none}
/* v2.105: chip de la Plantilla de Trabajo del día (arriba de cada columna). */
.hk-plchip{display:block;width:100%;text-align:center;font-size:.72rem;
  font-weight:700;padding:.3rem .4rem;border-radius:.45rem;cursor:pointer;
  border:var(--bd-card);margin:.05rem 0 .25rem;line-height:1.1}
.hk-plchip.def{color:var(--ink);
  background:color-mix(in srgb,var(--good,#16a34a) 15%,var(--card))}
.hk-plchip.nodef{color:var(--accent,#D63840);border-color:var(--accent,#D63840);
  background:color-mix(in srgb,var(--accent,#D63840) 12%,var(--card))}
.hk-plchip.ro{cursor:default;opacity:.72;background:var(--bg);font-weight:600}
/* #1 (Charlie 23-08): la Plantilla se despliega EN LÍNEA (no modal). */
.hk-pl{position:relative}
.hk-pl-panel{margin:.1rem 0 .35rem;padding:.55rem;border-radius:.55rem;
  background:var(--pop,#fff);border:var(--bd-card);box-shadow:0 4px 16px rgba(0,0,0,.14)}
.hk-pl-checks{display:flex;flex-direction:column;gap:.1rem;max-height:15rem;
  overflow-y:auto}
.hk-pl-op{display:flex;align-items:center;gap:.4rem;font-size:.8rem;
  padding:.16rem .1rem;cursor:pointer;border-radius:.3rem}
.hk-pl-op:hover{background:var(--bg)}
.hk-pl-acc{display:flex;gap:.4rem;justify-content:flex-end;margin-top:.55rem}
/* #12: panel de carga del mes por auxiliar — nombre + horas acumuladas. */
.hm-card .hm-fila{display:flex;align-items:center;justify-content:space-between;
  gap:.6rem;padding:.35rem 0;border-bottom:1px solid var(--bd,rgba(0,0,0,.07))}
.hm-card .hm-fila:last-child{border-bottom:none}
.hm-card .hm-fila b{font-size:.9rem}
.hm-card h3{margin:0 0 .3rem}
/* v2.168 (Charlie): «Distribución de horas» — barras verticales suaves con el
   color de cada auxiliar, para comparar de un vistazo las horas del mes. */
.hm-chart{display:flex;align-items:flex-end;gap:.9rem;
  padding:1.1rem .3rem .3rem;overflow-x:auto}
.hm-col{display:flex;flex-direction:column;align-items:center;gap:.45rem;
  flex:1 1 0;min-width:3.2rem}
.hm-val{font-family:var(--font-mono);font-weight:700;font-size:.8rem;
  color:var(--ink-soft)}
.hm-track{width:100%;max-width:3.6rem;height:150px;
  display:flex;align-items:flex-end}
.hm-bar{width:100%;min-height:4px;border-radius:.8rem .8rem .35rem .35rem;
  background:linear-gradient(180deg,
    color-mix(in srgb,var(--auxc) 62%,var(--surface)),
    color-mix(in srgb,var(--auxc) 88%,transparent));
  border:1.5px solid color-mix(in srgb,var(--auxc) 55%,transparent);
  box-shadow:0 6px 16px -8px var(--auxc);
  transition:height .35s cubic-bezier(.2,.7,.2,1)}
.hm-nom{font-size:.7rem;font-weight:700;color:#fff;background:var(--auxc);
  border-radius:var(--r-pill);padding:.14rem .55rem;max-width:100%;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* v2.107: separador «comodín» (Ayudantes) en el modal de Plantilla. */
.hk-pl-sep{font-size:.72rem;font-weight:700;color:var(--ink-soft);
  margin:.55rem 0 .25rem;padding-top:.45rem;
  border-top:1px solid var(--bd,rgba(0,0,0,.08))}
/* v2.168: separador fino (sin texto) para los comodines en la Plantilla. */
.hk-pl-div{height:1px;background:var(--line);margin:.4rem 0 .3rem}
.ab-cols{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
@media(max-width:760px){.ab-cols{grid-template-columns:1fr}}
.ab-fila{display:flex;align-items:center;justify-content:space-between;
  gap:.5rem;padding:.3rem 0;border-top:var(--bd-card)}
.ab-fila:first-of-type{border-top:0}
.ab-fila select{max-width:13rem}
.ab-buses{display:flex;flex-direction:column;gap:.35rem}
.ab-bus{display:flex;align-items:center;gap:.45rem;font-size:.85rem}

/* ── Cuentas por Pagar (regla 17, v2.093) ─────────────────────────────── */
.rep-cxp{margin-top:1.2rem}
.rep-cxp-tot{margin:.5rem 0 0;text-align:right;font-size:.95rem}

/* ── Calendario 5 días — correcciones v2.094 ───────────────────────────── */
.hk-h3row{display:flex;align-items:center;justify-content:space-between;
  gap:.6rem;margin-top:1rem}
.hk-h3row .hk-h3{margin:0}
/* #1 (Charlie 22-08): título de alto impacto, centrado, MAYÚSCULAS. El botón
   de autoasignar se ancla a la derecha sin descentrar el título. */
.hk-caltit-row{position:relative;display:flex;align-items:center;
  justify-content:center;gap:.6rem;margin:1.4rem 0 .8rem;min-height:2rem}
.hk-cal-tit{margin:0;text-align:center;text-transform:uppercase;
  font-weight:900;font-size:1.5rem;letter-spacing:.06em;line-height:1.1;
  color:var(--ink)}
.hk-caltit-row .pri-btn{position:absolute;right:0;top:50%;
  transform:translateY(-50%)}
@media(max-width:640px){
  .hk-cal-tit{font-size:1.15rem;letter-spacing:.04em}
  .hk-caltit-row{flex-direction:column;gap:.4rem}
  .hk-caltit-row .pri-btn{position:static;transform:none}
}
/* #9 (Charlie 22-08): secciones colapsables (Otros / Puntos Fijos) cerradas
   por defecto; el summary es su cabecera clicable. */
.hk-coll{margin-top:1.4rem}
.hk-coll>.hk-coll-h{cursor:pointer;list-style:none;font-size:1rem;
  font-weight:700;padding:.55rem .7rem;border-radius:var(--r);
  background:var(--bg);border:var(--bd-card);display:flex;
  align-items:center;gap:.5rem;user-select:none}
.hk-coll>.hk-coll-h::-webkit-details-marker{display:none}
.hk-coll>.hk-coll-h::before{content:"▸";color:var(--ink-faint);
  transition:transform .15s ease;display:inline-block}
.hk-coll[open]>.hk-coll-h::before{transform:rotate(90deg)}
.hk-coll[open]>.hk-coll-h{margin-bottom:.5rem}
.hk-ev.min{padding:.35rem .5rem}
/* chips clicables de auxiliares (punto 2): SOLO chips cuando hay asignación */
.aux-chips{border:none;background:transparent;padding:0;cursor:pointer;
  display:inline-flex;gap:.25rem;flex-wrap:wrap;align-items:center}
.aux-chips:hover .aux-chip{box-shadow:0 0 0 1.5px var(--auxc)}
.hk-selwrap{display:inline-flex;width:100%}
/* modal de selección múltiple */
#hk-aux-modal{position:fixed;inset:0;background:rgba(15,23,42,.45);
  z-index:60;display:flex;align-items:center;justify-content:center}
.hk-aux-box{background:var(--pop,#fff);border-radius:var(--r,.6rem);
  padding:1rem 1.2rem;max-width:22rem;width:92%;max-height:80vh;
  overflow:auto;box-shadow:0 18px 50px rgba(0,0,0,.28)}
.hk-aux-box h4{margin:0 0 .2rem}
#hk-aux-lista{display:flex;flex-direction:column;gap:.35rem;margin:.6rem 0}
.hk-aux-op{display:flex;align-items:center;gap:.5rem;font-size:.9rem}
.hk-aux-acc{display:flex;justify-content:flex-end;gap:.5rem}
/* filter chips de zona (punto 5): interactivos de verdad, con estado */
.cal7-ley .cal7-z{cursor:pointer;border:var(--bd-card);opacity:.8}
.cal7-ley .cal7-z:hover{opacity:1}
.cal7-ley .cal7-z.on{opacity:1;font-weight:750;
  box-shadow:0 0 0 1.6px var(--ink,#0f172a) inset}
.ab-color{width:2rem;height:1.6rem;padding:0;border:none;background:none;
  cursor:pointer}

/* ── Calendario 7 días como tablero de despacho (v2.099) ───────────────── */
.hk-sec{margin-top:.5rem}
.hk-sec-h{font-size:.66rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;color:var(--ink-soft);display:flex;
  align-items:center;gap:.35rem;margin:.3rem 0 .25rem}
.hk-sec-h .n,.hk-grp-h .n{background:rgba(0,0,0,.12);border-radius:1rem;
  padding:0 .4rem;font-size:.62rem}
.hk-sec.arr .hk-sec-h{color:#dc2626}
.hk-arr{background:#dc2626;color:#fff;font-size:.56rem;font-weight:800;
  border-radius:.3rem;padding:.05rem .3rem}
.hk-se{background:#7c3aed;color:#fff;font-size:.56rem;font-weight:800;
  border-radius:.3rem;padding:.05rem .3rem}
.hk-fin{font-size:.72rem;color:var(--ink-soft);margin-left:.3rem}
.evi.mini{min-width:1rem;height:1rem;font-size:.55rem}
/* v2.110 — Ayudante como APOYO dentro de la tarjeta del auxiliar principal
   (mismo listing, sin repetir la propiedad en otra columna). Chip con el
   color del Ayudante. */
.hk-apoyo{--auxc:#64748b;display:inline-flex;align-items:center;
  font-size:.6rem;font-weight:800;letter-spacing:.01em;color:#fff;
  background:var(--auxc);border-radius:.3rem;padding:.05rem .3rem;
  margin-left:.3rem;white-space:nowrap}
/* v2.113 — proveedor externo (Lucy/Olimpo) en la tarjeta de limpieza externa */
.hk-ev-prov{margin:.15rem 0 .1rem}
/* v2.114 — Proveedores externos + control mensual (Contabilidad) */
.pe-prov,.pe-mes{border:var(--bd-card);border-radius:var(--r);margin:.5rem 0;
  padding:.2rem .6rem;background:var(--surface)}
.pe-prov>summary,.pe-mes>summary{cursor:pointer;padding:.45rem 0;font-size:.95rem}
.pe-body{padding:.4rem 0 .7rem;display:flex;flex-direction:column;gap:.55rem}
.pe-inline{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;
  font-size:.85rem}
.pe-inline input,.pe-inline select,.pe-nuevo input,.pe-mes-sel{font:inherit;
  font-size:.85rem;padding:.28rem .4rem;border-radius:6px;border:var(--bd-card);
  background:var(--card);color:var(--ink)}
.pe-inline input[type=number],.pe-nuevo input[type=number]{max-width:6rem}
.pe-chips{display:flex;flex-wrap:wrap;gap:.35rem}
.pe-chip{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;
  font-weight:650;background:color-mix(in srgb,#d97706 12%,var(--card));
  border:1px solid color-mix(in srgb,#d97706 30%,transparent);
  border-radius:999px;padding:.15rem .2rem .15rem .55rem}
.pe-x{border:none;background:rgba(0,0,0,.12);color:var(--ink);cursor:pointer;
  width:1.1rem;height:1.1rem;border-radius:50%;line-height:1;font-weight:800}
.pe-nuevo{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;
  margin-top:.6rem;padding-top:.6rem;border-top:1px solid var(--line)}
.pe-confirmar{display:flex;align-items:center;justify-content:space-between;
  gap:.6rem;flex-wrap:wrap;margin-top:.7rem;padding-top:.6rem;
  border-top:1px solid var(--line)}
.pe-mes-sel{cursor:pointer}
/* grupo por auxiliar: la cabecera lleva SU color, las tarjetas lo heredan */
.hk-grp{margin-top:.5rem;border-radius:var(--r);overflow:hidden;
  border:1px solid color-mix(in srgb,var(--auxc,#64748b) 40%,transparent)}
.hk-grp-h{--auxc:#64748b;background:var(--auxc);color:#fff;font-weight:800;
  font-size:.74rem;padding:.22rem .5rem;display:flex;align-items:center;
  justify-content:space-between;text-shadow:0 1px 1px rgba(0,0,0,.25)}
.hk-ev.asg{--auxc:#64748b;border-left:4px solid var(--auxc);
  background:color-mix(in srgb,var(--auxc) 12%,var(--card));margin:.3rem}
.hk-ev.sinasg{border-left:3px dashed var(--bad,#dc2626)}
.hk-ev.ext{opacity:.85;border-left:3px dotted #94a3b8}
.hk-ev.hist{--auxc:#64748b;border-left:4px solid var(--auxc)}
.evi.x{background:#94a3b8}
/* drop zones */
.hk-dropok{outline:2px dashed var(--accent,#2563eb);outline-offset:-2px;
  background:color-mix(in srgb,var(--accent,#2563eb) 8%,transparent)}
.hk-ev[draggable="true"]{cursor:grab}
.hk-ev[draggable="true"]:active{cursor:grabbing}
details.ext-sec>summary{cursor:pointer;font-size:.66rem;font-weight:800;
  text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);
  list-style:none;margin:.4rem 0 .25rem}
details.ext-sec>summary::-webkit-details-marker{display:none}
details.ext-sec>summary::before{content:"▸ ";}
details.ext-sec[open]>summary::before{content:"▾ ";}

/* selector de hora 24h (v2.099, edición de horarios) */
.hk-hsel{display:inline-flex;align-items:center;gap:.1rem}
.hk-hsel select{padding:.08rem .1rem;font-size:.74rem;min-width:2.6rem}
.hk-hsel b{opacity:.6}
/* v2.104: edición de horarios por lote — la hora pendiente se marca; una
   barra flotante confirma todos los cambios juntos. */
.hk-hsel.pend{outline:2px solid var(--accent,#D63840);outline-offset:1px;
  border-radius:.35rem;background:color-mix(in srgb,var(--accent,#D63840) 10%,transparent)}
.hk-horas-bar{position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);
  z-index:60;display:flex;align-items:center;gap:.7rem;padding:.55rem .85rem;
  border-radius:.7rem;background:var(--pop,#fff);border:var(--bd-card);
  box-shadow:0 8px 28px rgba(0,0,0,.24);max-width:calc(100vw - 1.5rem)}
.hk-horas-bar .t{font-weight:700;font-size:.85rem;color:var(--ink)}

/* ── v2.126: Mis limpiezas de hoy (marcaje del auxiliar) ── */
.mm-card{display:flex;align-items:center;justify-content:space-between;
  gap:.8rem;padding:.75rem .95rem;border:1px solid var(--line);
  border-radius:.8rem;margin-bottom:.55rem;background:var(--surface)}
.mm-info{display:flex;flex-direction:column;gap:.25rem;min-width:0}
.mm-acc{flex:0 0 auto}
.mm-btn{font-size:1.02rem;font-weight:800;padding:.75rem 1.15rem;
  border-radius:.75rem;border:none;cursor:pointer;color:#fff}
.mm-btn.ini{background:var(--ok,#16a34a)}
.mm-btn.fin{background:var(--bad,#c0392b)}
.mm-btn:disabled{opacity:.5;cursor:wait}
@media(max-width:640px){.mm-card{flex-direction:column;align-items:stretch}
  .mm-btn{width:100%}}
/* v2.241 — check-in por GPS + reportar tarea (auxiliar) */
.mm-btn{background:var(--acc,#2563eb)}     /* default; .ini/.fin lo pisan */
.mm-gps #gps-lista{margin-top:.6rem;display:flex;flex-direction:column;gap:.5rem}
.mm-form{display:flex;flex-direction:column;gap:.55rem;margin-top:.3rem}
.mm-form label{display:flex;flex-direction:column;gap:.2rem;font-size:.8rem;
  font-weight:700;color:var(--ink-soft)}
.mm-form select,.mm-form textarea{font:inherit;font-size:.9rem;color:var(--ink);
  width:100%;border:1px solid var(--line,#d8d8d8);border-radius:.6rem;
  padding:.5rem .6rem;background:var(--card,#fff)}
.mm-form .mm-btn{width:100%;margin-top:.2rem}
/* v2.299 (#5): Reporte de novedades — propiedad automática + foto cámara/galería */
.nov-prop{background:var(--surface);border:1px solid var(--line);border-radius:.6rem;
  padding:.5rem .7rem;font-size:.95rem}
.nov-prop b{color:var(--ink)}
.nov-fotos{display:flex;gap:.5rem;flex-wrap:wrap}
.nov-fotos .mm-btn{flex:1 1 auto;width:auto;margin-top:0}
.mm-btn.ghost{background:transparent;color:var(--acc,#2563eb);
  border:1.5px solid var(--acc,#2563eb)}
/* v2.294: reloj/anillo en vivo de la sesión abierta */
.mm-reloj{text-align:center}
.reloj-anillo{width:190px;height:190px;max-width:64vw;max-height:64vw;
  border-radius:50%;margin:.5rem auto;display:grid;place-items:center;
  background:conic-gradient(#15803d 0deg,var(--line) 0deg);transition:background .4s}
.reloj-centro{width:74%;height:74%;border-radius:50%;background:var(--surface);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.15rem}
.reloj-tiempo{font-size:2.1rem;font-weight:800;font-variant-numeric:tabular-nums;
  line-height:1;color:var(--ink)}
.reloj-pct{font-size:.72rem}
.reloj-msg{font-weight:700;margin:.2rem 0 0}
.reloj-critico .reloj-anillo{animation:relojPulso 1.1s ease-in-out infinite}
@keyframes relojPulso{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}
@media(prefers-reduced-motion:reduce){.reloj-critico .reloj-anillo{animation:none}}
/* v2.296 (#9): tarjeta de Jornada activa — hero con CLOCK OUT siempre visible */
.mm-activa{border-left:5px solid var(--ok,#16a34a)}
.mm-activa-prop{font-size:1.15rem;margin:.1rem 0 .2rem}
.mm-activa-prop b{color:var(--ink)}
.mm-clockout{width:100%;margin-top:.6rem;font-size:1.12rem;padding:.9rem 1rem;
  letter-spacing:.02em}
/* v2.294: editor de sesiones (Management) */
.mkj-tabla input[type=time]{font:inherit;font-size:.86rem;padding:.25rem .4rem;
  border:1px solid var(--line,#d8d8d8);border-radius:.45rem;background:var(--surface);color:var(--ink)}
.mkj-tabla td{white-space:nowrap}
.mkj-tabla tr.mkj-anul{opacity:.6}
.mkj-acc{display:flex;gap:.35rem;flex-wrap:wrap}

/* ── v2.128 · Owner view: lista vertical de opción múltiple ─────────────── */
.pn-ov-lista{display:flex;flex-direction:column;margin:.4rem 0 .15rem;
  border:1px solid var(--line-strong);border-radius:var(--r-sm);
  max-height:340px;overflow-y:auto;background:var(--surface-2)}
.pn-ov-item{display:flex;align-items:center;gap:.6rem;cursor:pointer;
  padding:.52rem .75rem;border-bottom:1px solid var(--line);
  font-size:.92rem;line-height:1.25}
.pn-ov-item:last-child{border-bottom:0}
.pn-ov-item:hover{background:var(--surface)}
.pn-ov-item input{width:auto!important;height:auto!important;margin:0;
  flex:0 0 auto;accent-color:var(--brand,#D63840)}
.pn-ov-item:has(input:checked){background:var(--brand-soft);font-weight:600}
.pn-ov-cnt{font-size:.82rem;color:var(--ink-soft);margin:.35rem 0 0}
@media (max-width:640px){
  .pn-ov-lista{max-height:300px}
  .pn-ov-item{padding:.62rem .75rem}   /* dedo: filas más altas en móvil */
}

/* ── v2.130 · Dueño visible en la ficha de propiedad ────────────────────── */
.badge.b-dueno{color:var(--ink);border-color:var(--line-strong);
  background:var(--surface-2,#EDF1F8)}
.badge.b-sindueno{color:var(--warn,#B87514);border-color:var(--warn,#B87514);
  background:var(--warn-soft,#F7ECD8)}
.ro-dueno{font-weight:700;padding:.45rem .2rem .1rem}

/* ── v2.132 · Pagos al socio en la ficha de Persona ─────────────────────── */
.pg-h4{margin:.9rem 0 .3rem;font-size:.86rem}
.pg-doc{display:flex;align-items:center;gap:.5rem;padding:.3rem 0;
  border-bottom:1px solid var(--line)}
.pg-doc:last-of-type{border-bottom:0}

/* ── v2.133 · aviso positivo (GPS desde Guesty) ─────────────────────────── */
.ok-msg{background:var(--ok-soft,#DCF2E7);color:var(--ok,#1F9D62);
  border:1px solid var(--ok,#1F9D62);border-radius:var(--r-sm,10px);
  padding:.55rem .8rem;font-size:.88rem}

/* ── v2.134 · Ley de Hierro v2: candado de override por campo Guesty ────── */
.campo.has-ov{position:relative}
.ov-lock{position:absolute;top:-.1rem;right:0;display:inline-flex;
  align-items:center;gap:.22rem;font-size:.72rem;line-height:1;
  color:var(--ink-faint);cursor:pointer;text-transform:none;
  letter-spacing:0;font-weight:400;user-select:none;z-index:1;
  filter:grayscale(1);opacity:.55}
.ov-lock:hover{opacity:.9}
.ov-lock:has(input:checked){color:var(--ink);filter:none;opacity:1}
.ov-lock input{margin:0;width:.85rem;height:.85rem;accent-color:var(--brand,#C8A96A)}

/* ── v2.135 · Gráficos Chart.js (contenedores; el theming vive en
   fdr-charts.js, que lee estas mismas variables CSS) ────────────────────── */
.ch-wrap{position:relative;width:100%}
.ch-wrap canvas{width:100%!important;height:100%!important;display:block}
.ch-meses{height:250px}
.ch-dona{position:relative;width:min(240px,100%);height:240px;flex:0 0 auto}
.pron-par{display:grid;grid-template-columns:1fr 1fr;gap:1.1rem;margin-bottom:.9rem}
.pron-t{font-size:.7rem;font-weight:700;color:var(--ink-soft);
  text-transform:uppercase;letter-spacing:.08em;margin:0 0 .35rem}
.ch-pron{height:185px}
@media (max-width:760px){
  .pron-par{grid-template-columns:1fr}
  .ch-meses{height:210px}
}

/* v2.137: alturas de los gráficos nuevos */
.ch-estrellas{height:200px}

/* ── v2.138 · Logos oficiales de canal (Ley de UX: identidad, no letras) ──
   Un solo estándar en fichas, tablas, calendarios, housekeeping y reportes:
   .cico  = icono suelto con fondo de marca (enlaces por canal, listas)
   .chip.<canal> y .canal-ico.<canal> heredan el mismo logo (superficies
   existentes: leyenda del donut, drawer del calendario, Home). */
.cico{display:inline-flex;width:1.25rem;height:1.25rem;border-radius:6px;
  flex:0 0 auto;vertical-align:middle;background-color:var(--ink-soft);
  background-repeat:no-repeat;background-position:center;background-size:68%}
.cico.airbnb{background-color:#FF385C;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M12.001 18.275c-1.353-1.697-2.148-3.184-2.413-4.457-.263-1.027-.16-1.848.291-2.465.477-.71 1.188-1.056 2.121-1.056s1.643.345 2.12 1.063c.446.61.558 1.432.286 2.465-.291 1.298-1.085 2.785-2.412 4.458zm9.601 1.14c-.185 1.246-1.034 2.28-2.2 2.783-2.253.98-4.483-.583-6.392-2.704 3.157-3.951 3.74-7.028 2.385-9.018-.795-1.14-1.933-1.695-3.394-1.695-2.944 0-4.563 2.49-3.927 5.382.37 1.565 1.352 3.343 2.917 5.332-.98 1.085-1.91 1.856-2.732 2.333-.636.344-1.245.558-1.828.609-2.679.399-4.778-2.2-3.825-4.88.132-.345.395-.98.845-1.961l.025-.053c1.464-3.178 3.242-6.79 5.285-10.795l.053-.132.58-1.116c.45-.822.635-1.19 1.351-1.643.346-.21.77-.315 1.246-.315.954 0 1.698.558 2.016 1.007.158.239.345.557.582.953l.558 1.089.08.159c2.041 4.004 3.821 7.608 5.279 10.794l.026.025.533 1.22.318.764c.243.613.294 1.222.213 1.858zm1.22-2.39c-.186-.583-.505-1.271-.9-2.094v-.03c-1.889-4.006-3.642-7.608-5.307-10.844l-.111-.163C15.317 1.461 14.468 0 12.001 0c-2.44 0-3.476 1.695-4.535 3.898l-.081.16c-1.669 3.236-3.421 6.843-5.303 10.847v.053l-.559 1.22c-.21.504-.317.768-.345.847C-.172 20.74 2.611 24 5.98 24c.027 0 .132 0 .265-.027h.372c1.75-.213 3.554-1.325 5.384-3.317 1.829 1.989 3.635 3.104 5.382 3.317h.372c.133.027.239.027.265.027 3.37.003 6.152-3.261 4.802-6.975z'/></svg>")}
.cico.booking{background-color:#003B95;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M24 0H0v24h24ZM8.575 6.563h2.658c2.108 0 3.473 1.15 3.473 2.898 0 1.15-.575 1.82-.91 2.108l-.287.263.335.192c.815.479 1.318 1.389 1.318 2.395 0 1.988-1.51 3.257-3.857 3.257H7.449V7.713c0-.623.503-1.126 1.126-1.15zm1.7 1.868c-.479.024-.694.264-.694.79v1.893h1.676c.958 0 1.294-.743 1.294-1.365 0-.815-.503-1.318-1.318-1.318zm-.096 4.36c-.407.071-.598.31-.598.79v2.251h1.868c.934 0 1.509-.55 1.509-1.533 0-.934-.599-1.509-1.51-1.509zm7.737 2.394c.743 0 1.341.599 1.341 1.342a1.34 1.34 0 0 1-1.341 1.341 1.355 1.355 0 0 1-1.341-1.341c0-.743.598-1.342 1.34-1.342z'/></svg>")}
.cico.vrbo{background-color:#245ABC;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><text x='12' y='16.5' text-anchor='middle' font-family='Arial%2Csans-serif' font-size='10' font-weight='bold' font-style='italic' fill='white'>vrbo</text></svg>");background-size:92%}
.cico.fdr{background-color:var(--brand);background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M12 3l9 8h-2.5v9h-4.7v-5.8H10.2V20H5.5v-9H3z'/></svg>")}
.cico.gen{background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M10.6 13.4a1 1 0 0 1 0-1.4l2.8-2.8a3 3 0 0 1 4.2 4.2l-1.4 1.4-1.4-1.4 1.4-1.4a1 1 0 1 0-1.4-1.4l-2.8 2.8zm2.8-2.8a1 1 0 0 1 0 1.4l-2.8 2.8a3 3 0 0 1-4.2-4.2l1.4-1.4 1.4 1.4-1.4 1.4a1 1 0 1 0 1.4 1.4l2.8-2.8z'/></svg>")}
.canal-link{display:inline-flex;align-items:center;gap:.45rem;
  padding:.3rem .65rem;border:1px solid var(--line);border-radius:var(--r-pill,999px);
  background:var(--surface-2);font-size:.82rem;font-weight:650;
  color:var(--ink);text-decoration:none}
.canal-link:hover{border-color:var(--line-strong)}
.canal-links{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:.45rem}
/* superficies existentes: mismo logo, texto de letra fuera */
.chip.airbnb,.canal-ico.airbnb{color:transparent!important;
  background-color:#FF385C!important;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M12.001 18.275c-1.353-1.697-2.148-3.184-2.413-4.457-.263-1.027-.16-1.848.291-2.465.477-.71 1.188-1.056 2.121-1.056s1.643.345 2.12 1.063c.446.61.558 1.432.286 2.465-.291 1.298-1.085 2.785-2.412 4.458zm9.601 1.14c-.185 1.246-1.034 2.28-2.2 2.783-2.253.98-4.483-.583-6.392-2.704 3.157-3.951 3.74-7.028 2.385-9.018-.795-1.14-1.933-1.695-3.394-1.695-2.944 0-4.563 2.49-3.927 5.382.37 1.565 1.352 3.343 2.917 5.332-.98 1.085-1.91 1.856-2.732 2.333-.636.344-1.245.558-1.828.609-2.679.399-4.778-2.2-3.825-4.88.132-.345.395-.98.845-1.961l.025-.053c1.464-3.178 3.242-6.79 5.285-10.795l.053-.132.58-1.116c.45-.822.635-1.19 1.351-1.643.346-.21.77-.315 1.246-.315.954 0 1.698.558 2.016 1.007.158.239.345.557.582.953l.558 1.089.08.159c2.041 4.004 3.821 7.608 5.279 10.794l.026.025.533 1.22.318.764c.243.613.294 1.222.213 1.858zm1.22-2.39c-.186-.583-.505-1.271-.9-2.094v-.03c-1.889-4.006-3.642-7.608-5.307-10.844l-.111-.163C15.317 1.461 14.468 0 12.001 0c-2.44 0-3.476 1.695-4.535 3.898l-.081.16c-1.669 3.236-3.421 6.843-5.303 10.847v.053l-.559 1.22c-.21.504-.317.768-.345.847C-.172 20.74 2.611 24 5.98 24c.027 0 .132 0 .265-.027h.372c1.75-.213 3.554-1.325 5.384-3.317 1.829 1.989 3.635 3.104 5.382 3.317h.372c.133.027.239.027.265.027 3.37.003 6.152-3.261 4.802-6.975z'/></svg>");
  background-repeat:no-repeat;background-position:center;background-size:66%}
.chip.booking,.canal-ico.booking{color:transparent!important;
  background-color:#003B95!important;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M24 0H0v24h24ZM8.575 6.563h2.658c2.108 0 3.473 1.15 3.473 2.898 0 1.15-.575 1.82-.91 2.108l-.287.263.335.192c.815.479 1.318 1.389 1.318 2.395 0 1.988-1.51 3.257-3.857 3.257H7.449V7.713c0-.623.503-1.126 1.126-1.15zm1.7 1.868c-.479.024-.694.264-.694.79v1.893h1.676c.958 0 1.294-.743 1.294-1.365 0-.815-.503-1.318-1.318-1.318zm-.096 4.36c-.407.071-.598.31-.598.79v2.251h1.868c.934 0 1.509-.55 1.509-1.533 0-.934-.599-1.509-1.51-1.509zm7.737 2.394c.743 0 1.341.599 1.341 1.342a1.34 1.34 0 0 1-1.341 1.341 1.355 1.355 0 0 1-1.341-1.341c0-.743.598-1.342 1.34-1.342z'/></svg>");
  background-repeat:no-repeat;background-position:center;background-size:62%}
.chip.vrbo,.canal-ico.vrbo{color:transparent!important;
  background-color:#245ABC!important;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><text x='12' y='16.5' text-anchor='middle' font-family='Arial%2Csans-serif' font-size='10' font-weight='bold' font-style='italic' fill='white'>vrbo</text></svg>");
  background-repeat:no-repeat;background-position:center;background-size:94%}
.chip.fdr,.canal-ico.fdr{color:transparent!important;
  background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M12 3l9 8h-2.5v9h-4.7v-5.8H10.2V20H5.5v-9H3z'/></svg>");background-repeat:no-repeat;
  background-position:center;background-size:64%}

/* ── v2.146 · Panel de reporte de daño al Terminar (marcaje auxiliar) ───── */
.mm-fin-panel{display:flex;flex-direction:column;gap:.45rem;margin-top:.5rem;
  padding:.6rem;border:1px dashed var(--line-strong);border-radius:var(--r-sm);
  background:var(--surface-2)}
.mm-fin-t{font-size:.74rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.06em;color:var(--ink-soft)}
.mm-nota{font:inherit;font-size:.86rem;color:var(--ink);width:100%;
  background:var(--field-bg);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:.45rem .6rem;resize:vertical}
.mm-foto{font-size:.8rem;color:var(--ink-soft)}

/* ── v2.147 · Owner Stay (Charlie: presentar así las Owner Reservations) ── */
.canal-ico.owner{background-color:#7C5CBF!important;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M12 3l9 8h-2.5v9h-4.7v-5.8H10.2V20H5.5v-9H3z'/></svg>");
  background-repeat:no-repeat;background-position:center;background-size:64%;
  color:transparent!important}
.cico.owner{background-color:#7C5CBF;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'><path fill='white' d='M12 3l9 8h-2.5v9h-4.7v-5.8H10.2V20H5.5v-9H3z'/></svg>")}
.mcal-bar.owner,.mbar.owner{background:#7C5CBF!important;border-color:#6A4BAD!important}
.hk-owner{font-size:.62rem;font-weight:800;letter-spacing:.08em;
  text-transform:uppercase;color:#7C5CBF;border:1px solid #7C5CBF;
  border-radius:999px;padding:.05rem .45rem;margin-left:.3rem}

/* ── v2.149: Auxiliares Schedule — líneas compactas y grupos colapsables ── */
/* Grupo por auxiliar como <details>: colapsado por default; la cabecera
   (summary) es zona de asignación (drop) aunque esté cerrado. */
details.hk-grp>summary.hk-grp-h{cursor:pointer;list-style:none;gap:.35rem}
details.hk-grp>summary.hk-grp-h::-webkit-details-marker{display:none}
details.hk-grp>summary.hk-grp-h::after{content:"▸";opacity:.9;
  flex:0 0 auto;font-size:.72rem}
details.hk-grp[open]>summary.hk-grp-h::after{content:"▾"}
.hk-grp-h .n{margin-left:auto}
.hk-grp-vacio{font-size:.7rem;padding:.3rem .5rem}
/* Línea de una sola fila: CÓDIGO + HORA (punto 3). El detalle (hora
   editable, fin estimado, turnover, selector) se abre al tocarla. */
.hk-ev.lin{padding:.26rem .45rem;cursor:pointer}
.hk-ev.asg.lin{margin:.25rem}
/* v2.169 (Charlie): el CÓDIGO del departamento manda y debe verse completo.
   El encabezado ahora ENVUELVE y el ＋Ayudante baja a su propia línea, así el
   código no queda aplastado a «S…» en tarjetas angostas. */
.hk-ev.lin>.hk-ev-h{display:flex;align-items:center;gap:.25rem .4rem;
  font-size:.8rem;flex-wrap:wrap;min-width:0}
.hk-ev.lin>.hk-ev-h>b{white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;flex:1 1 auto;min-width:3.4rem}
.lin-h{margin-left:auto;flex:0 0 auto;font-size:.74rem;font-weight:700}
.lin-tag{background:#0e7490;color:#fff;font-size:.54rem;font-weight:800;
  border-radius:.4rem;padding:.05rem .3rem;text-transform:uppercase;
  letter-spacing:.03em;flex:0 0 auto}
.lin-prov{flex:0 0 auto;max-width:6.5rem;overflow:hidden;white-space:nowrap;
  text-overflow:ellipsis;font-size:.66rem;color:var(--ink-soft)}
.hk-ev.lin .hk-arr{flex:0 0 auto}
.hk-ev.lin .hk-apoyo{font-size:.58rem;flex:1 1 100%}   /* ＋Ayudante: su propia línea */
.hk-ev.lin .hk-ev-det{margin-top:.35rem;padding-top:.35rem;cursor:auto;
  border-top:1px dashed var(--line);display:flex;flex-direction:column;
  gap:.35rem}
/* «+ Nueva Tarea» al pie de cada columna — los 7 botones en una misma
   línea horizontal (punto 8; .hk-col ya es flex-column). */
.hk-col .hk-nt{margin-top:auto;width:100%;padding:.45rem .5rem;
  border-radius:var(--r);border:1px dashed var(--line);background:transparent;
  color:var(--ink-soft);font-weight:700;font-size:.78rem;cursor:pointer}
.hk-col .hk-nt:hover{border-color:var(--accent,#D63840);
  color:var(--accent,#D63840)}
/* ⓘ clickeable con área táctil real (punto 4) */
.info-i{border:none;background:transparent;color:var(--ink-soft);
  cursor:pointer;font-size:.92rem;line-height:1;padding:.32rem .5rem;
  margin:-.2rem 0;border-radius:999px;min-width:2rem;min-height:1.7rem}
.info-i:hover{background:color-mix(in srgb,var(--ink) 9%,transparent);
  color:var(--ink)}
/* Modal «+ Nueva Tarea» (puntos 9–13) */
#hk-nt-modal{position:fixed;inset:0;background:rgba(15,23,42,.45);
  z-index:70;display:flex;align-items:center;justify-content:center;
  padding:1rem}
.hk-nt-box{display:flex;flex-direction:column;gap:.5rem;
  max-width:26rem;width:96%}
.nt-tipos{display:flex;gap:.9rem;font-size:.9rem;flex-wrap:wrap}
.nt-tipos label{display:flex;align-items:center;gap:.3rem;cursor:pointer}
.nt-casc{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}
/* v2.169: los filtros del «Nueva tarea» son OPCIONALES; la propiedad se puede
   elegir directo. El selector de propiedad ocupa toda la fila y se resalta. */
.nt-casc-hint{font-size:.74rem;color:var(--ink-soft);margin:.1rem 0 .5rem}
.nt-casc .nt-listing-main{grid-column:1/-1;border-color:var(--brand);
  box-shadow:var(--sh-inset-sm),0 0 0 2px var(--brand-soft)}
.nt-fh{display:flex;gap:.4rem}
.nt-fh input{flex:1;min-width:0}
.hk-nt-box select,.hk-nt-box input{width:100%}
.hk-np-btn{margin-top:.3rem;align-self:flex-start}
/* Fijos / compromisos compactos (densidad, punto 14) */
.hk-sec.fijos .hk-ev{padding:.3rem .45rem}
.hk-sec.fijos .hk-ev-h{font-size:.78rem}
.hk-sec.fijos .hk-ev-hr{font-size:.68rem}

/* ── v2.150: Vista Co-Host — menú de cuenta (avatar) y WhatsApp intl ── */
.usuario{position:relative}
.avatar-btn{border:none;cursor:pointer;padding:0;overflow:hidden;
  display:inline-flex;align-items:center;justify-content:center}
.avatar-btn img{width:100%;height:100%;object-fit:cover;border-radius:50%}
.acct-pop{position:fixed;top:4.2rem;right:.9rem;z-index:95;
  max-height:calc(100vh - 5.5rem);overflow:auto;
  width:15.5rem;background:var(--pop,#fff);border:var(--bd-card);
  border-radius:1rem;box-shadow:0 18px 50px rgba(0,0,0,.25);
  padding:1rem .7rem .55rem;text-align:center}
.acct-foto-wrap{position:relative;display:inline-block;margin-bottom:.4rem}
.acct-foto{width:4.2rem;height:4.2rem;border-radius:50%;display:inline-flex;
  align-items:center;justify-content:center;overflow:hidden;
  background:var(--brand,#D63840);color:#fff;font-weight:800;
  font-size:1.35rem;letter-spacing:.02em}
.acct-foto img{width:100%;height:100%;object-fit:cover}
.acct-cam{position:absolute;right:-.3rem;bottom:-.15rem;border:none;
  cursor:pointer;background:var(--surface);border-radius:50%;
  width:1.7rem;height:1.7rem;font-size:.8rem;box-shadow:0 2px 8px rgba(0,0,0,.25)}
.acct-nombre{font-weight:800;font-size:.95rem;color:var(--ink)}
.acct-user{margin:.1rem 0 .3rem}
.acct-user code{font-family:var(--font-mono);font-size:.78rem;
  color:var(--ink-soft);background:color-mix(in srgb,var(--ink) 7%,transparent);
  border-radius:.4rem;padding:.08rem .4rem}
.acct-quitar{border:none;background:transparent;color:var(--ink-faint);
  cursor:pointer;font-size:.7rem;text-decoration:underline;margin-bottom:.2rem}
.acct-sep{border-top:1px solid var(--line);margin:.45rem 0}
.acct-item{display:flex;align-items:center;gap:.55rem;width:100%;
  text-align:left;border:none;background:transparent;cursor:pointer;
  padding:.5rem .6rem;border-radius:.55rem;font-size:.86rem;
  color:var(--ink);text-decoration:none;font-weight:600}
.acct-item:hover{background:color-mix(in srgb,var(--ink) 7%,transparent)}
.acct-salir{color:var(--bad,#c0392b)}

/* v2.188 (Charlie): Modo Edición de textos — toggle en el menú, barra y spans. */
.acct-edit{justify-content:space-between}
.acct-tog{position:relative;flex:0 0 auto;width:2rem;height:1.15rem;
  border-radius:999px;background:var(--line-strong,#bbb);transition:background .15s ease}
.acct-tog::after{content:"";position:absolute;top:2px;left:2px;width:.85rem;
  height:.85rem;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);
  transition:left .15s ease}
.acct-tog.on{background:var(--ok)}
.acct-tog.on::after{left:calc(100% - .95rem)}
.edbar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.5rem .9rem;
  background:var(--warn-soft);color:var(--ink);font-size:.85rem;
  border-bottom:1px solid color-mix(in srgb,var(--warn) 40%,transparent)}
.edbar-dot{flex:0 0 auto;width:.6rem;height:.6rem;border-radius:50%;
  background:var(--warn);animation:edpulse 1.8s ease-out infinite}
@keyframes edpulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--warn) 55%,transparent)}
  70%{box-shadow:0 0 0 .5rem transparent}100%{box-shadow:0 0 0 0 transparent}}
.edbar-txt{flex:1 1 12rem;min-width:0}
.edbar-x{flex:0 0 auto;border:1px solid color-mix(in srgb,var(--warn) 45%,transparent);
  background:transparent;color:var(--ink);border-radius:999px;padding:.25rem .85rem;
  font:inherit;font-weight:700;font-size:.8rem;cursor:pointer}
.edbar-x:hover{background:color-mix(in srgb,var(--warn) 16%,transparent)}
.ed-t{cursor:pointer;border-bottom:1px dashed currentColor;border-radius:2px;
  transition:background .12s ease}
.ed-t:hover{background:color-mix(in srgb,currentColor 15%,transparent)}
.ed-t:focus{outline:2px solid var(--brand);outline-offset:1px}
.ed-inp{font:inherit;font-weight:inherit;color:var(--ink);background:var(--field-bg,#fff);
  border:1px solid var(--brand);border-radius:4px;padding:0 .3rem;height:1.8em;
  min-width:5rem;vertical-align:baseline}
/* v2.170: selector de estilo dentro del menú de cuenta (reemplaza la barra). */
.acct-skin{display:flex;align-items:center;justify-content:space-between;
  gap:.55rem;width:100%;padding:.35rem .6rem;font-size:.86rem;font-weight:600;
  color:var(--ink)}
.acct-skin>span{flex:0 0 auto}
.acct-skin select{flex:1 1 auto;min-width:0;max-width:9.5rem;height:2.2rem;
  border:var(--bd-card);border-radius:.55rem;background:var(--surface);
  color:var(--ink);font:inherit;font-weight:600;padding:0 .5rem;cursor:pointer}
.acct-pass-form{position:fixed;top:4.2rem;right:.9rem;z-index:96;
  width:16rem;background:var(--pop,#fff);border:var(--bd-card);
  border-radius:1rem;box-shadow:0 18px 50px rgba(0,0,0,.25);
  padding:.9rem;display:flex;flex-direction:column;gap:.45rem}
.acct-pass-t{font-weight:800;font-size:.9rem}
.acct-pass-form input{width:100%}
.acct-pass-acc{display:flex;justify-content:flex-end;gap:.5rem}
/* WhatsApp internacional (punto 18) */
.wa-row{display:flex;gap:.4rem;align-items:center}
.wa-row .mc-wa-cc{flex:0 1 55%;min-width:0}
.wa-row .mc-wa{flex:1 1 45%;min-width:0}

/* v2.153: toggle «Mostrar información económica» en la ficha de Persona */
.fu-eco{margin:.7rem 0;padding:.6rem .75rem;border-radius:.6rem;
  border:1px solid var(--line);background:color-mix(in srgb,var(--ok,#059669) 6%,var(--surface))}
.fu-eco .eco-chk{font-size:.9rem}
.fu-eco p{margin:.3rem 0 0}

/* v2.164: «Módulos con acceso» pasa de una fila larga de checkboxes a una
   LISTA COLAPSABLE de selección múltiple (pedido de Charlie). <details> nativo:
   el resumen muestra cuántos y cuáles; al abrir, el panel con las casillas. */
.fu-mods{margin:.7rem 0}
.mods-select{border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--surface);overflow:hidden}
.mods-sum{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
  padding:.6rem .75rem;cursor:pointer;list-style:none;font-weight:650;
  user-select:none}
.mods-sum::-webkit-details-marker{display:none}
.mods-sum::before{content:"▸";color:var(--ink-faint);font-size:.85em;
  transition:transform .15s ease}
.mods-select[open] .mods-sum::before{transform:rotate(90deg)}
.mods-badge{display:inline-grid;place-items:center;min-width:1.45rem;
  height:1.45rem;padding:0 .4rem;border-radius:var(--r-pill);
  background:var(--nav-on-bg);color:var(--nav-on-ink);
  font-size:.72rem;font-weight:700;font-family:var(--font-mono)}
.mods-sel{flex:1 1 100%;margin-left:1.15rem;font-weight:500;line-height:1.35}
.mods-panel{display:grid;
  grid-template-columns:repeat(auto-fill,minmax(10.5rem,1fr));
  gap:.1rem .4rem;padding:.35rem .75rem .7rem 1.15rem;
  border-top:1px solid var(--line);background:var(--surface-2)}
.mods-panel .mod-tog{display:flex;align-items:center;gap:.5rem;
  padding:.32rem .25rem;font-weight:500;cursor:pointer;border-radius:.4rem}
.mods-panel .mod-tog:hover{background:var(--surface)}
.mods-panel .mod-tog input{width:auto;height:auto;flex:none}
@media(max-width:640px){.mods-panel{grid-template-columns:1fr 1fr}}
/* v2.361: «Roles» de la persona usa la MISMA lista colapsable; el cargo y el
   tipo de auxiliar quedan en una fila debajo. */
.pn-roles{display:flex;flex-wrap:wrap;gap:.5rem 1.25rem;align-items:center;
  margin:.15rem 0 .2rem}
.pn-roles:empty{display:none}
/* v2.374 (Charlie): dropdown de selección múltiple (Tipo de Servicio) —
   colapsable, con búsqueda, «Seleccionar todo», chips y «Nuevo servicio». */
.msd{position:relative;max-width:100%;margin:.15rem 0 .2rem}
.msd-trigger{display:flex;align-items:center;gap:.4rem;min-height:2.4rem;
  padding:.3rem .5rem;border:1px solid var(--line);border-radius:var(--r-sm);
  background:var(--field-bg);cursor:pointer}
.msd-chips{display:flex;flex-wrap:wrap;gap:.3rem;flex:1 1 auto;align-items:center}
.msd-ph{color:var(--ink-faint)}
.msd-chip{display:inline-flex;align-items:center;gap:.15rem;background:var(--surface-2);
  border:1px solid var(--line);border-radius:var(--r-pill);
  padding:.08rem .2rem .08rem .55rem;font-size:.82rem}
.msd-x{border:none;background:none;cursor:pointer;font-size:1rem;line-height:1;
  color:var(--ink-faint);padding:0 .2rem}
.msd-x:hover{color:var(--bad)}
.msd-caret{margin-left:auto;color:var(--ink-faint);flex:none}
.msd-panel{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 4px);
  background:var(--card,var(--surface));border:1px solid var(--line);
  border-radius:var(--r-sm);box-shadow:var(--sh-card);padding:.5rem;
  max-height:20rem;overflow:auto}
.msd-search{width:100%;font:inherit;padding:.4rem .5rem;margin-bottom:.4rem;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--field-bg)}
.msd-all{display:flex;align-items:center;gap:.5rem;padding:.3rem;font-weight:600;
  border-bottom:1px solid var(--line);margin-bottom:.25rem;cursor:pointer}
.msd-opt{display:flex;align-items:center;gap:.5rem;padding:.35rem .3rem;
  border-radius:var(--r-sm);cursor:pointer}
.msd-opt:hover{background:var(--surface-2)}
.msd-opt[hidden]{display:none}
.msd-new{display:flex;align-items:center;gap:.4rem;border-top:1px solid var(--line);
  margin-top:.35rem;padding-top:.5rem}
.msd-new .pv-serv-nuevo{flex:1 1 auto;font:inherit;padding:.35rem .5rem;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--field-bg)}
/* v2.379 (Charlie): «Área de atención» del proveedor — filas etiqueta+dropdown. */
.pv-area{display:flex;flex-direction:column;gap:.5rem;margin:.3rem 0 .2rem}
.pv-area-row{display:grid;grid-template-columns:6rem 1fr;align-items:start;gap:.6rem}
.pv-area-row>span{font-size:.8rem;color:var(--ink-soft);font-weight:600;padding-top:.55rem}
@media(max-width:640px){.pv-area-row{grid-template-columns:1fr}
  .pv-area-row>span{padding-top:0}}
/* v2.371 (Charlie): «+ Nueva persona» en la cabecera, a la derecha y alineado
   verticalmente con «Personas 35». */
.card-head .pn-nueva-abrir{margin-left:auto}
/* v2.369 (Charlie, rediseño Contífico): lista unificada de Personas.
   v2.378 (Charlie): se antepone .pn-lista para GANARLE en especificidad a la
   regla global «main>.seccion table td{text-align:center}» (0,1,3) que centraba
   todo; con .pn-lista .pn-tabla td (0,2,1) las columnas quedan a la IZQUIERDA. */
.pn-lista .pn-tabla th, .pn-lista .pn-tabla td{text-align:left;vertical-align:top;
  padding-left:1.1rem}                         /* v2.378: izquierda con sangría */
.pn-lista .pn-tabla th:first-child, .pn-lista .pn-tabla td:first-child{padding-left:1.4rem}
.pn-lista .pn-tabla td.acc, .pn-lista .pn-tabla th.acc,
.pn-lista .pn-tabla th:last-child{text-align:right;white-space:nowrap}
.pn-tabla .pn-nom{font-weight:600;text-decoration:none;color:inherit}
.pn-tabla .pn-nom:hover{text-decoration:underline}
.pn-meta{margin-top:.15rem}
.pn-row[hidden]{display:none}
/* barra de búsqueda (Filtro · Rol · Tipo · Estado) */
.pn-filtros{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;
  margin:.5rem 0 .7rem}
.pn-filtros input,.pn-filtros select{font:inherit;padding:.35rem .5rem;
  border:1px solid var(--line);border-radius:var(--r-sm);background:var(--field-bg)}
.pn-filtros .pn-f-txt{flex:1 1 16rem;min-width:12rem}
.pn-sinfiltro{margin:.6rem 0}
.pn-del{color:var(--bad)}
/* v2.369: ficha por pestañas (Datos generales · Roles y acceso · RRHH · Más) */
.pf-tabs{display:flex;gap:.25rem;flex-wrap:wrap;border-bottom:1px solid var(--line);
  margin:.4rem 0 .9rem}
.pf-tab{font:inherit;cursor:pointer;background:none;border:none;
  border-bottom:2px solid transparent;padding:.5rem .8rem;color:var(--ink-soft);
  border-radius:var(--r-sm) var(--r-sm) 0 0;margin-bottom:-1px}
.pf-tab:hover{background:var(--surface-2);color:var(--ink)}
.pf-tab.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}
.pf-panel{display:none}
.pf-panel.on{display:block}

/* ── v2.362: Oferta Inmobiliaria (corretaje) ── */
.of-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));
  gap:.8rem;margin:.6rem 0}
.of-card{display:block;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:1rem;text-decoration:none;color:inherit;
  transition:box-shadow .15s ease,transform .15s ease}
.of-card:hover{box-shadow:0 3px 12px rgba(20,30,60,.1);transform:translateY(-1px)}
.of-card-nom{font-weight:700;margin-bottom:.15rem}
.of-precio-big{font-size:1.5rem;font-weight:800;color:var(--acc,#2f5bd6);margin:.3rem 0}
.of-tabla input{width:100%;max-width:11rem}
.of-tabla .ctr,td.ctr{text-align:center}
.of-chip{display:inline-flex;align-items:center;gap:.25rem;background:var(--nav-on-bg,#eef);
  color:var(--nav-on-ink,#234);border-radius:var(--r-pill,999px);padding:.1rem .5rem;
  font-size:.78rem;font-weight:600;margin:.1rem .2rem .1rem 0}
.of-x{border:none;background:none;color:inherit;cursor:pointer;font-size:1rem;line-height:1;padding:0}
.of-agsel{margin-top:.2rem}
.of-checkin{white-space:pre-wrap;font-family:var(--font-mono,monospace);font-size:.85rem;
  background:var(--surface-2,#f4f6fb);border:1px solid var(--line);border-radius:.5rem;
  padding:.7rem .8rem;margin:0}
.of-cal{display:flex;flex-wrap:wrap;gap:3px;margin:.4rem 0}
.of-day{display:inline-block;width:14px;height:14px;border-radius:3px}
.of-day.free{background:#cfe6cf;border:1px solid #a9d3a9}
.of-day.occ{background:#e6b8b8;border:1px solid #d39a9a}

/* v2.367: tarjetas tipo folder con foto de la propiedad (vista del corredor) */
.of-folders{grid-template-columns:repeat(auto-fill,minmax(13.5rem,1fr))}
.of-folder{padding:0;overflow:hidden}
.of-foto{height:8.5rem;background-size:cover;background-position:center;
  background-color:var(--surface-2,#eef1f7)}
.of-foto-sin{display:grid;place-items:center;font-size:2.4rem;color:var(--ink-faint,#9aa)}
.of-folder-body{padding:.8rem .9rem}
/* pipeline (embudo) */
.of-pipe{display:flex;gap:.7rem;overflow-x:auto;padding:.3rem 0 .6rem}
.of-col{flex:0 0 15rem;background:var(--surface-2,#f4f6fb);border:1px solid var(--line);
  border-radius:var(--r-sm);padding:.5rem}
.of-col-h{font-weight:700;padding:.2rem .3rem .5rem;display:flex;justify-content:space-between}
.of-col-h .sub{color:var(--ink-faint);font-family:var(--font-mono,monospace)}
.of-pcard{display:block;background:var(--surface);border:1px solid var(--line);
  border-radius:.5rem;padding:.55rem .6rem;margin:.35rem 0;text-decoration:none;color:inherit}
.of-pcard:hover{box-shadow:0 2px 8px rgba(20,30,60,.08)}
/* items de acción (funnel) */
.of-items{display:flex;flex-direction:column;gap:.15rem;margin:.2rem 0 .5rem}
.of-item{display:flex;align-items:center;gap:.5rem;padding:.3rem .25rem;border-radius:.4rem}
.of-item.ok{color:var(--ink-faint);text-decoration:line-through}
.of-item input{width:auto;flex:none}
.of-it-nuevo{width:min(22rem,70%)}
/* bitácora */
.of-bit-nueva{margin-bottom:.7rem}
.of-nota-txt{width:100%;resize:vertical}
.of-bitacora{display:flex;flex-direction:column;gap:.6rem}
.of-nota{background:var(--surface-2,#f4f6fb);border:1px solid var(--line);
  border-radius:.5rem;padding:.55rem .7rem}
.of-nota-foto{max-width:12rem;max-height:9rem;border-radius:.4rem;margin-top:.35rem;display:block}

/* ── v2.154: «+ Nueva Tarea» dentro del grupo del auxiliar (punto 2) ── */
.hk-grp-nt{display:block;width:calc(100% - .5rem);margin:.25rem;padding:.35rem;
  border:1px dashed var(--line);border-radius:.5rem;background:transparent;
  color:var(--ink-soft);font-weight:700;font-size:.74rem;cursor:pointer}
.hk-grp-nt:hover{border-color:var(--accent,#D63840);color:var(--accent,#D63840)}

/* ── v2.154: filtro de zonas como dropdown multiselect (punto 3) ── */
.cal7-ley-lbl{font-weight:700;color:var(--ink-soft)}
.zsel{position:relative;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.zsel-btn{display:inline-flex;align-items:center;gap:.45rem;cursor:pointer;
  border:1px solid var(--line);background:var(--surface);border-radius:.55rem;
  padding:.3rem .6rem;font:inherit;font-size:.78rem;font-weight:600;
  color:var(--ink)}
.zsel-btn:hover{border-color:var(--accent,#D63840)}
.zsel-caret{font-style:normal;opacity:.6;font-size:.7rem}
.zsel-pop{position:absolute;top:calc(100% + .3rem);left:0;z-index:40;
  min-width:13rem;background:var(--pop,#fff);border:1px solid var(--line);
  border-radius:.6rem;box-shadow:0 12px 32px rgba(0,0,0,.18);
  padding:.4rem;display:flex;flex-direction:column;gap:.05rem}
.zsel-op{display:flex;align-items:center;gap:.5rem;padding:.34rem .45rem;
  border-radius:.4rem;cursor:pointer;font-size:.8rem}
.zsel-op:hover{background:color-mix(in srgb,var(--ink) 7%,transparent)}
.zsel-sep{border-top:1px solid var(--line);margin:.2rem 0}
.zsel-chips{display:flex;gap:.35rem;flex-wrap:wrap}
.zchip{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;
  font-weight:700;border-radius:999px;padding:.12rem .5rem;
  border:1px solid var(--line);background:var(--surface)}
.zchip-x{cursor:pointer;opacity:.6;font-weight:800}
.zchip-x:hover{opacity:1;color:var(--bad,#c0392b)}
.zchip-dot{width:.6rem;height:.6rem;border-radius:50%;display:inline-block;
  flex:0 0 auto}
.zchip-dot.z-psa{background:#7c5cff}.zchip-dot.z-urdesa{background:#0aa27a}
.zchip-dot.z-ceibos{background:#d97706}.zchip-dot.z-kennedy{background:#2563eb}
.zchip-dot.z-portofino{background:#db2777}.zchip-dot.z-aeropuerto{background:#64748b}
.zchip-dot.z-montanita{background:#0891b2}.zchip-dot.z-puntablanca{background:#65a30d}.zchip-dot.z-staugustine{background:#c026d3}.zchip-dot.z-kearny{background:#4f46e5}
.zchip-dot.z-botanical{background:#16a34a}.zchip-dot.z-otra{background:#94a3b8}

/* v2.155: vista de calidad del auxiliar (Reviews) */
.rev-sub-lbl{font-size:.6rem;font-weight:800;text-transform:uppercase;
  letter-spacing:.04em;border-radius:.3rem;padding:.05rem .3rem;
  background:color-mix(in srgb,var(--ok,#059669) 14%,transparent);
  color:var(--ok-700,#047857)}
.rev-sub-lbl.gy{background:var(--line-soft,#f1f5f9);color:var(--ink-faint)}
tr.rev-malo td{background:color-mix(in srgb,var(--bad,#e11d48) 6%,transparent)}

/* v2.156: Premios de Calidad — podio y fondo */
.premio-fondo{font-size:1.05rem}
.podio{display:flex;gap:1rem;justify-content:center;align-items:flex-end;
  flex-wrap:wrap;margin:1rem 0 1.2rem}
.podio-c{background:var(--surface);border:var(--bd-card);border-radius:1rem;
  box-shadow:var(--sh-card-sm);padding:1rem 1.2rem;text-align:center;
  min-width:9.5rem}
.podio-c.pos1{order:2;transform:translateY(-.6rem);
  border-color:color-mix(in srgb,#f59e0b 55%,transparent)}
.podio-c.pos2{order:1}.podio-c.pos3{order:3}
.podio-m{font-size:2rem;line-height:1}
.podio-n{font-weight:800;margin-top:.2rem}
.podio-ath{font-family:var(--font-mono);font-weight:700;color:var(--ink-soft)}
.podio-pr{font-size:1.4rem;font-weight:800;color:var(--ok-700,#047857);
  margin-top:.25rem}
.podio-rv{font-size:.72rem;margin-top:.15rem}

/* ==========================================================================
   v2.171 · VISTA PREVIA MÓVIL — marco de teléfono con un iframe angosto
   ========================================================================== */
.mobov{position:fixed;inset:0;z-index:200;background:rgba(8,12,22,.72);
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;
  flex-direction:column;align-items:center;justify-content:center;gap:.7rem;
  padding:1.2rem}
.mobov[hidden]{display:none}
.mobov-bar{display:flex;align-items:center;gap:1rem;color:#fff;font-weight:700;
  font-size:.9rem}
.mobov-x{border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.1);
  color:#fff;border-radius:999px;width:1.9rem;height:1.9rem;cursor:pointer;
  font-size:.95rem;line-height:1}
.mobov-phone{width:390px;max-width:calc(100vw - 2rem);height:min(80vh,780px);
  background:#000;border:10px solid #0b0b0f;border-radius:36px;
  box-shadow:0 30px 80px -20px rgba(0,0,0,.7);overflow:hidden}
.mobov-phone iframe{width:100%;height:100%;border:0;background:var(--bg);
  border-radius:26px;display:block}

/* v2.173: «Actividad de perfiles · últimas 24 h» (panel del maestro en Personas) */
.act-perf{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.act-perf-it{display:flex;gap:.7rem;align-items:baseline;padding:.45rem .3rem;
  border-bottom:1px solid var(--line);font-size:.88rem}
.act-perf-it:last-child{border-bottom:none}
.act-perf-t{flex:0 0 5.2rem;color:var(--ink-faint);font-size:.74rem;
  font-family:var(--font-mono)}
.act-perf-f{flex:1 1 auto;min-width:0}

/* v2.176 (Charlie): «Cajas chicas» — sub-cajas fijas (FDR + administradores) */
.cc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));
  gap:.7rem}
.cc-sub{border:var(--bd-card);border-radius:var(--r);background:var(--surface-2);
  padding:.8rem .9rem;box-shadow:var(--sh-card-sm)}
.cc-sub-n{font-size:.78rem;color:var(--ink-soft);font-weight:700;
  text-transform:uppercase;letter-spacing:.03em}
.cc-sub-v{font-size:1.45rem;font-weight:800;color:var(--ink);margin-top:.2rem}

/* v2.176: campos de la reserva manual (reserva real) en la fila de Nuevo Extra */
.x-rm{display:grid;grid-template-columns:1fr 1fr;gap:.3rem;margin-top:.35rem}
.x-rm label{display:flex;flex-direction:column;font-size:.68rem;
  color:var(--ink-soft);gap:.15rem}
.x-rm input{width:100%}

/* ---------- v2.209: historial de precios en la ficha ---------- */
.ph-hist summary{cursor:pointer;font-weight:700;color:var(--ink-soft)}
.ph-tabla{width:100%;border-collapse:collapse;font-size:.8rem;margin-top:.4rem}
.ph-tabla th,.ph-tabla td{padding:.3rem .5rem;border-bottom:1px solid var(--line);text-align:left}
.ph-tabla th{font-size:.65rem;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-faint)}

/* ---------- v2.211: Eficiencia de Limpieza (Unidades de Costo) ---------- */
.lk-tit{margin:1rem 0 .3rem;font-size:.72rem;text-transform:uppercase;
  letter-spacing:.06em;color:var(--ink-faint);font-weight:800}

/* ---------- v2.220: módulo KPIs (F3) ---------- */
.kpi-lista{display:grid;grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));
  gap:.8rem;padding:.4rem .2rem}
.kpi-card{border:1px solid var(--line);border-radius:.8rem;padding:.7rem .9rem;
  background:var(--surface);display:flex;flex-direction:column;gap:.35rem}
.kpi-card.inactivo{opacity:.55}
.kpi-fila1{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.kpi-fav{background:none;border:none;font-size:1.15rem;cursor:pointer;padding:0}
.kpi-act{margin-left:auto;font-size:.78rem;color:var(--ink-soft);
  display:flex;gap:.3rem;align-items:center}
.kpi-dests{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center;font-size:.78rem}
.kpi-dest{display:flex;gap:.25rem;align-items:center;color:var(--ink-soft)}
.kpi-ai textarea{width:100%;border:1px solid var(--line);border-radius:.6rem;
  padding:.6rem;font:inherit;background:var(--surface);color:var(--ink)}
.kpi-ai-fila{display:flex;gap:.6rem;margin-top:.5rem;align-items:center}
.kpi-ped{font-size:.8rem;font-style:italic}
.tag.warn{background:#fff3cd;color:#7a5c00}
/* v2.223 — pago con monto editable (abonos parciales) */
.pg-tabla .pg-monto{width:7.5rem;text-align:right;border:1px solid var(--line);
  border-radius:.45rem;padding:.3rem .45rem;font:inherit;
  background:var(--surface);color:var(--ink)}
.pg-tabla .pg-monto:disabled{opacity:.45;background:transparent}
/* v2.266 — «Monto del pago» en la cabecera (selección cronológica) */
.pg-pago-lbl{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem;
  margin-top:.55rem;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;
  color:var(--ink-soft)}
#pg-pago{width:9rem;text-align:right;font:inherit;font-size:1rem;font-weight:700;
  padding:.3rem .5rem;border:1px solid var(--line);border-radius:.45rem;
  background:var(--surface);color:var(--ink)}
.pg-abonos{margin-top:.8rem}
.pg-abonos summary{cursor:pointer;font-weight:600;font-size:.85rem;
  color:var(--gy,#667)}
.pg-abonos table{margin-top:.5rem}
/* v2.322 — pagos aplicados EDITABLES en la ficha (fecha · monto · comprobante) */
.pg-abonos tr.pg-ab input{border:1px solid var(--line);border-radius:.45rem;
  padding:.3rem .45rem;font:inherit;background:var(--surface);color:var(--ink);
  max-width:100%}
.pg-abonos .pg-ab-monto{width:6.5rem;text-align:right}
.pg-abonos .pg-ab-num{width:9rem}
.pg-abonos tr.pg-ab-fut .pg-ab-fecha{border-color:#d97706}
.pg-abonos .pg-fut{color:#b45309;font-size:.75rem;font-weight:700;white-space:nowrap}
.pg-abonos td.acc{white-space:nowrap}
/* v2.323 — monto mayor al saldo confirmado: el excedente va como adelanto */
.pg-monto.pg-exc{border-color:#2E6FD8;box-shadow:0 0 0 2px rgba(46,111,216,.18)}
/* v2.228 — libro de Pagos editable en Contabilidad */
#pgo-tabla .pgo-monto{width:6.5rem;text-align:right}
#pgo-tabla input,#pgo-tabla select{border:1px solid var(--line);
  border-radius:.45rem;padding:.3rem .45rem;font:inherit;
  background:var(--surface);color:var(--ink);max-width:100%}
/* v2.229 — formularios inline de Contabilidad (mismo estilo que pe-nuevo) */
.fin-nuevo{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;
  margin-top:.8rem;padding-top:.7rem;border-top:1px solid var(--line)}
.fin-nuevo input,.fin-nuevo select{font:inherit;border:1px solid var(--line);
  border-radius:.45rem;padding:.35rem .5rem;background:var(--surface);
  color:var(--ink)}
.fin-nuevo input[type=number]{max-width:7rem}
/* v2.230 — Menuitemizar: submenús en el menú izquierdo (estilo QBO) */
.sidenav a.subitem{padding-left:2.9rem;font-size:.85rem;opacity:.92}
.sidenav a.subitem.on{opacity:1}
/* v2.240 — submenús COLAPSABLES (Charlie): el caret contrae/expande cada
   grupo; el grupo activo abre por defecto. */
.navg{position:relative}
.navg > a{padding-right:2.3rem}
.navcar{position:absolute;top:.2rem;right:.3rem;width:1.8rem;height:1.8rem;
  display:flex;align-items:center;justify-content:center;padding:0;margin:0;
  background:none;border:0;cursor:pointer;color:inherit;opacity:.5;
  border-radius:.45rem}
.navcar:hover{opacity:1;background:var(--side-hover)}
.navcar .ic{width:1rem;height:1rem;transform:rotate(-90deg);
  transition:transform .18s}
.navg.open > .navcar .ic{transform:rotate(0)}
.navg:not(.open) .navsubs{display:none}
/* v2.389 — segundo nivel: Transacciones ▸ Compras/Ventas ▸ sus páginas.
   Los sub-grupos (Compras/Ventas) son cabeceras semibold; sus páginas van con
   una sangría mayor. Reusa .navg (colapsable) + el caret. */
.sidenav .navg2 > a.subitem{font-weight:650;opacity:1}
.sidenav a.subitem.sub2{padding-left:4.05rem}
/* v2.232 — filtros por periodo/tercero + export CSV en los libros */
.fin-filtros{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;
  margin:.2rem 0 .7rem;font-size:.85rem;color:var(--muted)}
.fin-filtros label{display:flex;align-items:center;gap:.35rem}
.fin-filtros input{font:inherit;border:1px solid var(--line);
  border-radius:.45rem;padding:.3rem .5rem;background:var(--surface);
  color:var(--ink)}
.fin-filtros .fin-csv{margin-left:auto}
.fx-pago{border:1px solid var(--line);border-radius:.6rem;
  padding:.6rem .8rem;background:var(--surface)}
/* v2.234 — filtros de columnas (Contabilidad → Pagos) */
.pgo-filtros th{padding:.25rem .35rem}
.pgo-filtros input{width:100%;box-sizing:border-box;font:inherit;
  font-size:.8rem;border:1px solid var(--line);border-radius:.4rem;
  padding:.25rem .4rem;background:var(--surface);color:var(--ink)}
/* v2.237 — estado de Pérdidas y Ganancias (P&L) de FDR */
/* v2.302 — botonera de descarga (Excel / PDF) del P&L */
.pyg-export{display:flex;flex-wrap:wrap;gap:.5rem;margin:.2rem 0 1rem}
.pyg-tabla td{padding:.4rem .6rem}
.pyg-tabla tr.rep-sub-total td{border-top:1px solid var(--line)}
.pyg-tabla tr.rep-total td{border-top:2px solid var(--ink);
  border-bottom:3px double var(--ink);font-size:1.05rem}
/* v2.269 — taller: días >16 h agrupados, probable culpable resaltado */
.rev-dia-cab{margin:1rem 0 .4rem;padding:.55rem .8rem;border-left:4px solid var(--warn);
  background:var(--warn-soft);border-radius:.5rem;font-size:.86rem}
.rev-fila.rev-culpable{border-left:6px solid var(--bad);background:var(--bad-soft)}
.tag.warn{background:var(--warn-soft);color:var(--warn)}

/* v2.273 — P&L: cada línea desplegable con su detalle (Charlie) */
.pyg-tabla details.pyg-det summary{cursor:pointer;list-style:none;display:block}
.pyg-tabla details.pyg-det summary::-webkit-details-marker{display:none}
.pyg-tabla details.pyg-det summary .pyg-cap::before{content:"▸";display:inline-block;
  width:1rem;color:var(--ink-faint);font-size:.8em}
.pyg-tabla details.pyg-det[open] summary .pyg-cap::before{content:"▾"}
.pyg-det-tabla{margin:.4rem 0 .6rem 1rem;font-size:.8rem;width:auto;min-width:60%}
.pyg-det-tabla th,.pyg-det-tabla td{padding:.22rem .55rem}
.pyg-det-tabla th{color:var(--ink-faint);font-weight:600;text-align:left}
.pyg-det-tabla th.n,.pyg-det-tabla td.n{text-align:right}
/* v2.274: Contabilidad → Motor contable (QBO): reglas y vista previa */
.mc-reglas select{width:100%;max-width:100%;font-size:.8rem}
.mc-reglas td,.mc-asiento td{vertical-align:top}
.mc-asiento tr.gy td{color:var(--ink-faint)}
/* v2.275: retoques automáticos — nivel en la línea + lista de verificación */
.lin-tag.rt-recom{background:#d97706}
.lin-tag.rt-oblig{background:#dc2626}
.rt-info{flex:1 1 100%;font-size:.62rem}
.rt-det{display:flex;flex-direction:column;gap:.3rem;font-size:.78rem}
.rt-check summary{cursor:pointer;font-size:.74rem;color:var(--ink-soft)}
.rt-check ul{margin:.25rem 0 .2rem 1.1rem;padding:0;font-size:.74rem;line-height:1.35}
.mm-card .rt-check{flex:1 1 100%}
/* v2.276: Rol de Descansos semanal */
.hk-rol-link{margin-left:.4rem;text-decoration:none;display:inline-block}
.hk-rol-nav{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin:.4rem 0 .6rem}
.tabla-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.rol-tabla{font-size:.82rem;min-width:40rem}
.rol-tabla th,.rol-tabla td{padding:.3rem .45rem;text-align:center;border-bottom:1px solid var(--line)}
.rol-tabla th.rol-aux,.rol-tabla tr.rol-cob th{text-align:left;white-space:nowrap}
.rol-tabla th.fin{color:#b45309}
.rol-tabla td.rol-ok{color:#15803d;font-weight:700}
.rol-tabla td.rol-libre{background:#fee2e2;color:#991b1b;font-weight:800;font-size:.66rem;letter-spacing:.03em}
.rol-tabla td.rol-libre.dom{background:#fef3c7;color:#92400e}
.rol-tabla td.rol-vac{background:#e0e7ff;color:#3730a3;font-weight:700;font-size:.66rem}
/* v2.290: celdas editables a mano (clic = ✓ ↔ DESCANSO) */
.rol-tabla td.rol-edit{cursor:pointer;user-select:none;transition:box-shadow .12s}
.rol-tabla td.rol-edit:hover,.rol-tabla td.rol-edit:focus-visible{box-shadow:inset 0 0 0 2px var(--brand);outline:none}
.rol-tabla td.rol-edit[data-busy]{opacity:.5;cursor:progress}
.rol-manual{margin-left:.3rem}
.rol-hint{margin:.3rem 0 0}
.rol-tabla tr.rol-cob td{font-size:.76rem;color:var(--ink-soft)}
.rol-tabla tr.rol-cob:first-of-type th,.rol-tabla tr.rol-cob:first-of-type td{border-top:2px solid var(--line)}
.rol-plan{margin:.2rem 0 .3rem 1.1rem;font-size:.8rem}
.rol-params-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.3rem .8rem;margin:.4rem 0}
.rol-params summary{cursor:pointer;color:var(--ink-soft);font-size:.82rem}
.aviso-txt{color:#b45309}
/* v2.386: panel de ajustes del rol — humano, agrupado y explicado */
.rol-sec{margin:.7rem 0 1rem;padding:.7rem .8rem;border:1px solid var(--line);
  border-radius:12px;background:var(--surface-2,rgba(0,0,0,.015))}
.rol-sec>h5{margin:0 0 .5rem;font-size:.9rem;display:flex;align-items:center;gap:.5rem}
.rol-campos{display:grid;grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));
  gap:.7rem .9rem;margin-bottom:.6rem}
.rol-campos.finos{grid-template-columns:repeat(auto-fill,minmax(11rem,1fr))}
.rol-campo{display:flex;flex-direction:column;gap:.15rem;font-size:.8rem}
.rol-campo .rc-l{font-weight:650}
.rol-campo input{padding:.34rem .5rem;border:1px solid var(--line);border-radius:8px;
  background:var(--surface,#fff);color:inherit;font:inherit;width:100%}
.rol-campo .rc-h{color:var(--ink-faint);font-size:.7rem;line-height:1.3}
.rol-campo.ro .rc-v{font-weight:750;padding:.2rem 0}
.rc-nota{margin:.15rem 0 0}
.rol-perfiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.5rem}
.rol-perfil{display:flex;flex-direction:column;gap:.15rem;padding:.55rem .65rem;
  border:1.5px solid var(--line);border-radius:10px;cursor:pointer;font-size:.78rem}
.rol-perfil>b{font-size:.84rem}
.rol-perfil>span{color:var(--ink-faint);line-height:1.3}
.rol-perfil input{margin:0 0 .1rem}
.rol-perfil.sel{border-color:var(--accent,#D63840);
  background:color-mix(in srgb,var(--accent,#D63840) 7%,transparent)}
.rol-adv{margin-top:.4rem}
.rol-adv>summary{cursor:pointer;color:var(--ink-soft);font-size:.8rem}
/* v2.277: trabajo en día de descanso — solicitud y confirmación */
.lin-tag.dt-pend{background:#d97706;flex:1 1 100%;text-align:center}
.lin-tag.dt-ok{background:#0f766e;flex:1 1 100%;text-align:center}
.dt-det{display:flex;flex-direction:column;gap:.3rem;font-size:.78rem}
.dt-det button{align-self:flex-start}
.card-sub h4{margin:.2rem 0 .4rem;font-size:.9rem;display:flex;align-items:center;gap:.4rem}
.mm-card.dt-card{border-left:4px solid #d97706}
.rol-tabla td.rol-trab{background:#ccfbf1;color:#0f766e;font-weight:800;font-size:.66rem;letter-spacing:.03em}
.rol-tabla td.rol-sol{background:#fef3c7;color:#92400e;font-weight:700;font-size:.66rem}

/* v2.281: «+ Nueva persona…» en línea dentro de Socios de la propiedad */
.sp-nueva{grid-column:1/-1;margin:.2rem 0 .5rem;padding:.55rem .65rem;border-radius:.7rem;
  background:var(--bg-2, rgba(0,0,0,.04));border:1px dashed var(--line, #c9ced6)}
.sp-nueva .spn-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr) auto auto;gap:.4rem;align-items:center}
.sp-nueva input{height:2.2rem;width:100%}
.sp-nueva .spn-aviso{margin-top:.35rem}
.sp-nueva code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:rgba(0,0,0,.06);padding:.05rem .3rem;border-radius:.3rem}
@media (max-width:640px){.sp-nueva .spn-grid{grid-template-columns:1fr 1fr}
  .sp-nueva .spn-nombre{grid-column:1/-1}}

/* v2.282: ELECTRICIDAD / CNEL EP en la ficha (y parqueo) */
.parqueo-cfg{display:flex;align-items:center;gap:.6rem}
.parqueo-cfg .parq-num{max-width:12rem}
.sv-card{border:var(--bd-card, 1px solid #d9dee6);border-radius:.9rem;padding:.7rem .85rem;background:var(--surface, #fff)}
.sv-head{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-bottom:.5rem}
.sv-head code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}
.sv-res{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin:.3rem 0 .6rem}
.sv-res>div,.sv-kpi>div{display:flex;flex-direction:column;gap:.15rem;padding:.45rem .55rem;border-radius:.6rem;background:rgba(0,0,0,.035)}
.sv-res span,.sv-kpi span{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;opacity:.7}
.sv-res b{font-size:1.05rem}
.sv-btns{display:flex;flex-wrap:wrap;gap:.4rem;margin:.2rem 0 .6rem}
.sv-kpi{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.4rem;margin:.3rem 0 .6rem}
.sv-kpi b.bad{color:#c0392b}
.sv-alerta{background:#fff3e0;border:1px solid #f0b56b;color:#8a4b00;border-radius:.6rem;padding:.45rem .6rem;font-weight:600;margin:.2rem 0 .5rem}
.sv-pill{display:inline-block;padding:.1rem .5rem;border-radius:1rem;font-size:.72rem;font-weight:700;letter-spacing:.04em;background:rgba(0,0,0,.07)}
.sv-pill.ok{background:#e3f6e8;color:#1c6b33}
.sv-pill.bad{background:#fde8e6;color:#b3261e}
.sv-pill.warn{background:#fff3e0;color:#8a4b00}
.sv-pill.gy{background:rgba(0,0,0,.06);color:#666}
.sv-cuenta,.sv-form{margin:.4rem 0;padding:.5rem .6rem;border-radius:.7rem;background:rgba(0,0,0,.03)}
.sv-cuenta summary{cursor:pointer;font-weight:600}
.sv-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem .7rem;margin:.4rem 0}
.sv-grid .campo.ancho{grid-column:1/-1}
.sv-form-h{margin-bottom:.2rem}
.sv-hist h4{margin:.5rem 0 .3rem}
.t-sv td.n,.t-sv th.n{text-align:right}
.t-sv tr.sv-bad td{background:rgba(192,57,43,.06)}
.t-sv tr.sv-warn td{background:rgba(240,181,107,.12)}
.t-sv .sv-acc{white-space:nowrap}
@media (max-width:700px){
  .sv-res,.sv-kpi{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sv-grid{grid-template-columns:1fr}
  .t-sv thead{display:none}
  .t-sv tr{display:block;border-bottom:1px solid rgba(0,0,0,.08);padding:.35rem 0}
  .t-sv td{display:flex;justify-content:space-between;gap:.6rem;padding:.15rem .2rem;text-align:left}
  .t-sv td::before{content:attr(data-l);font-size:.7rem;text-transform:uppercase;opacity:.65}
  .t-sv td.sv-acc::before{content:''}
}

.badge.b-operacion{background:rgba(0,0,0,.08);color:#444}
.t-instal code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}

/* v2.282: histórico de electricidad compacto dentro del panel de la ficha */
.t-sv{font-size:.75rem;width:100%}
.t-sv th{padding:.25rem .3rem;white-space:normal;line-height:1.1;font-size:.68rem}
.t-sv td{padding:.26rem .28rem;white-space:nowrap}
.t-sv .sv-pill{font-size:.66rem;padding:.05rem .4rem}
.t-sv .chico{padding:.1rem .32rem;font-size:.66rem}

/* v2.283: Mi semana / Equipo · esta semana */
.sem-card .card-head .sub{white-space:normal}
.sem-fila{display:grid;grid-template-columns:minmax(0,9rem) 1fr;gap:.4rem;align-items:center;padding:.25rem 0;border-bottom:1px solid rgba(0,0,0,.06)}
.sem-fila:last-of-type{border-bottom:0}
.sem-nom{font-weight:600;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sem-cells{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.25rem}
.sem-c{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.05rem;
  padding:.3rem .1rem;border-radius:.55rem;background:rgba(0,0,0,.05);min-height:3.1rem;line-height:1.05}
.sem-c .sem-d{font-size:.62rem;text-transform:uppercase;letter-spacing:.04em;opacity:.7}
.sem-c .sem-n{font-size:.95rem;font-weight:700}
.sem-c .sem-s{font-size:.7rem;font-weight:700}
.sem-c.trabaja{background:#e3f6e8;color:#1c6b33}
.sem-c.descanso{background:#dfe9ff;color:#1f3f8a}
.sem-c.descanso_trabajado{background:#fff3e0;color:#8a4b00}
.sem-c.solicitado{background:#fff8e6;color:#8a4b00;outline:1px dashed #f0b56b}
.sem-c.vacaciones{background:rgba(0,0,0,.08);color:#555}
.sem-c.libre,.sem-c.sin_rol{background:rgba(0,0,0,.035);color:#888}
.sem-c.hoy{box-shadow:0 0 0 2px var(--accent, #D63840) inset}
.sem-c.fer .sem-d::after{content:' F';font-size:.55rem;font-weight:700}
.sem-ley{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.5rem;font-size:.72rem;opacity:.8}
.sem-ley i.sem-c{display:inline-flex;min-height:0;padding:.05rem .35rem;margin-right:.25rem;font-style:normal;font-size:.68rem}
.sem-frase{font-size:1rem;font-weight:600;margin:.2rem 0 .5rem}
@media (max-width:640px){
  .sem-fila{grid-template-columns:1fr}
  .sem-nom{font-size:.8rem}
  .sem-cells{gap:.18rem}
  .sem-c{padding:.25rem .05rem;min-height:2.8rem}
  .sem-c .sem-n{font-size:.85rem}
}

/* ── v2.300 (Charlie #6/#7): Auxiliares Schedule por auxiliar + Mis días libres */
.aux-sched .card-head{margin-bottom:.3rem}
.aux-row{border:1px solid var(--line);border-radius:.7rem;margin:.4rem 0;background:var(--surface)}
.aux-row.yo{border-color:var(--acc,#2563eb);box-shadow:inset 0 0 0 1px var(--acc,#2563eb)}
.aux-row>summary{cursor:pointer;list-style:none;padding:.6rem .75rem;display:flex;
  align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}
.aux-row>summary::-webkit-details-marker{display:none}
.aux-nom{font-weight:750;font-size:.98rem}
.aux-row.yo .aux-nom{color:var(--acc,#2563eb)}
.aux-body{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem;padding:0 .6rem .6rem}
.aux-dia{border:1px solid var(--line);border-radius:.5rem;padding:.35rem .15rem;
  text-align:center;display:flex;flex-direction:column;gap:.12rem;min-width:0;background:var(--surface)}
.aux-dia-lbl{font-size:.68rem;font-weight:700;color:var(--ink-soft)}
.aux-dia-val{font-size:.64rem;color:var(--gy,#6b7280);overflow-wrap:anywhere;line-height:1.15}
.aux-dia.libre{background:color-mix(in srgb,#16a34a 12%,var(--surface));border-color:transparent}
.aux-dia.libre .aux-dia-val{color:#15803d;font-weight:800}
.aux-dia.conasig{background:color-mix(in srgb,#2563eb 12%,var(--surface));border-color:transparent}
.aux-dia.trabaja{background:color-mix(in srgb,#b45309 10%,var(--surface));border-color:transparent}
.aux-dia.hoy{outline:2px solid var(--acc,#2563eb);outline-offset:-1px}
/* Mis días libres */
.dl-frase{font-size:1rem;font-weight:750;margin:.1rem 0 .55rem}
.dl-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.35rem}
.dl-tile{border:1px solid var(--line);border-radius:.6rem;padding:.5rem .15rem;
  text-align:center;display:flex;flex-direction:column;gap:.1rem;min-width:0;background:var(--surface)}
.dl-d{font-size:.66rem;font-weight:700;color:var(--ink-soft)}
.dl-n{font-size:1rem;font-weight:800;color:var(--ink);line-height:1}
.dl-b{font-size:.62rem;font-weight:800;line-height:1.1}
.dl-det{font-size:.56rem;color:var(--gy,#6b7280);overflow-wrap:anywhere;line-height:1.1}
.dl-tile.libre{background:color-mix(in srgb,#16a34a 16%,var(--surface));border-color:transparent}
.dl-tile.libre .dl-b{color:#15803d}
.dl-tile.conasig{background:color-mix(in srgb,#2563eb 14%,var(--surface));border-color:transparent}
.dl-tile.conasig .dl-b{color:#1d4ed8}
.dl-tile.trabaja .dl-b{color:#b45309}
.dl-tile.sin{opacity:.72}.dl-tile.sin .dl-b{color:var(--gy,#9ca3af)}
.dl-tile.hoy{outline:2px solid var(--acc,#2563eb);outline-offset:-1px}
.dl-ley{display:flex;flex-wrap:wrap;gap:.35rem .9rem;margin-top:.6rem;font-size:.72rem;color:var(--ink-soft)}
.dl-ley i{display:inline-block;width:.7rem;height:.7rem;border-radius:.2rem;margin-right:.25rem;vertical-align:-1px}
.dl-sw.libre{background:#16a34a}.dl-sw.conasig{background:#2563eb}
.dl-sw.trabaja{background:#b45309}.dl-sw.sin{background:#9ca3af}

/* v2.284: Contact Reports en la ficha */
.cr-form h4{margin:.6rem 0 .25rem;font-size:.85rem}
.crf-tema{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.3rem .4rem;margin:.25rem 0 .45rem;align-items:start}
.crf-tema .crt-titulo{grid-column:1;grid-row:1;width:100%}
.crf-tema button{grid-column:2;grid-row:1;width:auto;justify-self:end}
.crf-tema .crt-notas{grid-column:1/-1;grid-row:2;width:100%}
.crf-accion{display:grid;grid-template-columns:9rem minmax(0,1fr) auto auto;gap:.35rem;align-items:center;margin:.2rem 0}
.crf-accion input{width:100%}
.cr-btns{display:flex;flex-wrap:wrap;gap:.4rem;margin:.4rem 0}
.crf-notas{width:100%}
@media (max-width:640px){.crf-accion{grid-template-columns:1fr auto}.crf-accion .cra-accion{grid-column:1/-1}}

/* v2.284: gestión de tareas en Home */
.acc-resumen{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center;padding:.3rem .2rem .5rem}
.cr-est{display:inline-block;padding:.05rem .5rem;border-radius:1rem;font-size:.72rem;font-weight:700;background:rgba(0,0,0,.07);white-space:nowrap}
.cr-est.pendiente_asignacion{background:#fff3e0;color:#8a4b00}
.cr-est.asignada{background:#dfe9ff;color:#1f3f8a}
.cr-est.vencida{background:#fde8e6;color:#b3261e}
.cr-est.completada{background:#e3f6e8;color:#1c6b33}
.g-coms{list-style:none;padding:0;margin:.2rem 0 0;max-height:14rem;overflow:auto;font-size:.85rem}
.g-coms li{padding:.3rem .4rem;border-bottom:1px solid rgba(0,0,0,.06)}

/* v2.287 — Fase C: Reviews embebido en Housekeeping */
.hk-reviews summary .gy{margin-left:.4rem}
.rv-hk td.rev-com{max-width:26rem;white-space:normal}
.rv-hk tr.rv-mal td{background:rgba(214,56,64,.07)}
.rv-hk tr.rv-mal td:first-child{border-left:3px solid var(--bad,#b3261e)}
@media (max-width:640px){.rv-hk{font-size:.8rem}.rv-hk td.rev-com{max-width:12rem}}

/* v2.287 — filtros tipo chip (Mi Portafolio, Electricidad) y tabla global de electricidad */
.pf-filtro{display:flex;flex-wrap:wrap;gap:.35rem;margin:.2rem 0 .8rem}
.pf-filtro a{padding:.2rem .6rem;border-radius:1rem;border:1px solid var(--line);font-size:.78rem;font-weight:700;text-decoration:none;color:var(--ink-soft)}
.pf-filtro a.on{background:var(--ink);color:var(--surface);border-color:var(--ink)}
.t-elec{font-size:.85rem}.t-elec th,.t-elec td{padding:.4rem .45rem}
.t-elec .cr-est{white-space:nowrap}

/* v2.288 — Contratos de alquiler (ficha, arbitraje) */
.ct-nuevo{display:grid;grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.35rem;margin-top:.45rem;align-items:center}
.ct-nuevo input{width:100%;margin:0}
.ct-nuevo button{width:auto;justify-self:start}
.ct-tabla th,.ct-tabla td{padding:.25rem .4rem;text-align:left}.ct-tabla td.n,.ct-tabla th.n{text-align:right}
.ct-tabla td .cr-est{white-space:normal}
/* v2.306 — tarjeta de avisos push del marcaje */
.push-card .push-acc{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.4rem}
.push-card h3{font-size:.95rem}

/* ── v2.335: Revenue Management ── */
.rm-tabs{display:flex;flex-wrap:wrap;gap:.35rem;margin:.6rem 0 .4rem}
.rm-tab{padding:.35rem .75rem;border-radius:.6rem;border:1px solid var(--line);font-size:.8rem;
  font-weight:700;color:var(--ink-soft);text-decoration:none;background:var(--surface)}
.rm-tab.on{background:var(--accent,#D63840);color:#fff;border-color:transparent}
.rm-tab.off{opacity:.45;cursor:not-allowed}
.rm-datos{margin:.2rem 0 .6rem}
.rm-filtros{margin:.4rem 0 .8rem;display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:flex-end}
.rm-filtros label{display:flex;flex-direction:column;gap:.2rem;font-size:.72rem;font-weight:700;
  color:var(--ink-soft)}
.rm-filtros select{font:inherit;font-size:.85rem;min-width:13rem;padding:.35rem .5rem;
  border:1px solid var(--line);border-radius:.45rem;background:var(--surface);color:var(--ink)}
.rm-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));gap:.6rem;
  margin-bottom:.6rem}
.rm-kpis .vent{margin:0}
.rm-tile.gy .v{color:var(--ink-faint);font-size:1rem}
.rm-tile.ok .v{color:var(--ok,#1a7f4b)}
.rm-tile.bad .v{color:var(--bad,#b3261e)}
.rm-estado{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin:.3rem 0 .8rem;font-size:.85rem}
.rm-est.ok{background:rgba(26,127,75,.14);color:#1a7f4b}
.rm-est.warn{background:rgba(214,120,20,.16);color:#9a5300}
.rm-est.bad{background:rgba(179,38,30,.14);color:#b3261e}
.rm-est.gy{background:var(--surface-2);color:var(--ink-faint)}
.rm-conf{background:var(--surface-2);color:var(--ink-soft);font-size:.68rem}
.rm-ch{height:320px}
.rm-ch-b{height:220px}
.rm-glos{margin:.8rem 0;font-size:.8rem;color:var(--ink-soft)}
.rm-glos summary{cursor:pointer;font-weight:700}
.rm-cal{list-style:none;padding:0;margin:.4rem 0}
.rm-cal li{padding:.25rem 0;border-bottom:1px solid var(--line)}
.rm-cal li.ok b{color:var(--ok,#1a7f4b)}
.rm-cal li.bad b{color:var(--bad,#b3261e)}
.rm-util{color:#9a5300}
.rm-sel-row td{background:rgba(214,56,64,.06)}
.rm-top.ok h3{color:var(--ok,#1a7f4b)}
.rm-top.bad h3{color:var(--bad,#b3261e)}
.rm-compacta{font-size:.8rem}
.rm-compacta th,.rm-compacta td{padding:.45rem .4rem}
.rm-compacta th{font-size:.62rem;white-space:nowrap}
.rm-acc td{vertical-align:top}
.rm-acc .rm-senal{min-width:12rem;max-width:22rem;text-align:left}

/* ---- v2.344 Mantenimiento (Operaciones → Mantenimiento; ficha de Propiedades) ---- */
.t-mt{font-size:.82rem}
.t-mt td,.t-mt th{padding:.4rem .45rem;vertical-align:top}
.t-mt .sv-acc{white-space:normal;min-width:5.5rem}
.t-mt .sv-acc button{display:block;width:100%;margin:.12rem 0;white-space:nowrap}
.mt-filtros{margin:.2rem 0 .7rem}
.mt-sec .mt-lp{margin-bottom:.45rem}
.mt-sec .lp-dias{height:1.9rem;border:1px solid var(--line);border-radius:.4rem;padding:0 .4rem;
  background:var(--surface);color:var(--ink);font:inherit}
.aviso .chico{margin-left:.35rem;vertical-align:middle}

/* ---- v2.345 No-show ---- */
.rep-tabla tr.rep-noshow td{color:var(--ink-faint)}
.rep-tabla tr.rep-noshow td.hu{white-space:normal;max-width:24rem}
.rep-tabla tr.rep-noshow td.hu .chico-txt{font-weight:400;line-height:1.35}
.rep-tabla tr.rep-noshow td.neto{text-decoration:line-through}
.rep-tabla .ns-btn{margin-left:.4rem;font-size:.68rem;padding:.1rem .45rem}

/* ---- v2.346 total por pagar consolidado (2+ propiedades) ---- */
.rep-total-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem 1.2rem;margin:0 0 .8rem;
  padding:.7rem 1rem;border:2px solid var(--brand);border-radius:var(--r-sm);background:var(--surface)}
.rep-total-bar .rtb-l{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--brand)}
.rep-total-bar .rtb-v{font-size:1.5rem;font-weight:800;font-variant-numeric:tabular-nums}
.rep-total-bar .rtb-det{flex-basis:100%;font-size:.82rem;color:var(--ink-soft)}
.rep-total-bar .rtb-det b{color:var(--ink);font-variant-numeric:tabular-nums}
@media print{.rep-total-bar{border-color:#D63840;background:#fff}.rep-total-bar .rtb-l{color:#D63840}}

/* ---- v2.347 Gasto / Factura de compra ---- */
.gx-modo{display:flex;flex-direction:column;gap:.35rem;margin-bottom:.2rem}
.gx-modo label{font-weight:500;cursor:pointer}
#t-gastos td .sub a{color:var(--brand)}

/* ---- v2.348 Tarea (vista completa tipo Asana) ---- */
.ta-page{max-width:52rem;margin:0 auto}
.ta-top{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.6rem}
.ta-done{border:1px solid var(--line);background:var(--surface);border-radius:.6rem;padding:.4rem .8rem;
  font-weight:700;cursor:pointer;color:var(--ink)}
.ta-done.on{background:#e3f6e8;color:#1c6b33;border-color:#bfe8cb}
span.ta-done{cursor:default}
.ta-avs{display:flex;align-items:center;margin-left:auto}
.ta-av{margin-left:-.35rem}.ta-av:first-child{margin-left:0}
.ta-av .avatar-ini{box-shadow:0 0 0 2px var(--bg)}
.ta-av-mas{font-size:.72rem;color:var(--ink-faint);margin-left:.3rem}
.ta-vis{font-size:.8rem;color:var(--ink-soft);background:var(--surface-2);border:1px solid var(--line);
  border-radius:.6rem;padding:.5rem .8rem;margin-bottom:.8rem}
.ta-h1{font-size:1.45rem;font-weight:800;margin:.2rem 0 .8rem;line-height:1.25}
input.ta-h1{width:100%;border:1px solid transparent;background:transparent;color:var(--ink);padding:.2rem .3rem;
  border-radius:.4rem;font-family:inherit}
input.ta-h1:hover,input.ta-h1:focus{border-color:var(--line);background:var(--surface)}
.ta-campos{border-collapse:collapse;width:100%;margin-bottom:1rem;font-size:.9rem}
.ta-campos th{text-align:left;width:9rem;padding:.4rem .3rem;color:var(--ink-faint);font-weight:600;vertical-align:middle}
.ta-campos td{padding:.3rem .3rem;border-bottom:1px solid var(--line)}
.ta-campos select,.ta-campos input[type=date]{font:inherit;padding:.3rem .5rem;border:1px solid var(--line);
  border-radius:.45rem;background:var(--surface);color:var(--ink);max-width:100%}
.ta-chip{display:inline-block;padding:.1rem .55rem;border-radius:1rem;background:rgba(214,56,64,.12);color:var(--brand);
  font-weight:700;font-size:.8rem}
.ta-pri{font-weight:700}.ta-pri.P0,.ta-pri.P1{color:var(--bad)}
.ta-page h3{font-size:.95rem;margin:1rem 0 .4rem}
.ta-page textarea{width:100%;font:inherit;border:1px solid var(--line);border-radius:.5rem;padding:.5rem;
  background:var(--surface);color:var(--ink);resize:vertical}
.ta-desc-ro{white-space:normal;line-height:1.45}
.ta-subs,.ta-adj,.ta-linea,.ta-cols,.ta-lista{list-style:none;margin:0;padding:0}
.ta-subs li{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;border-bottom:1px solid var(--line)}
.ta-subs li.hecha span{text-decoration:line-through;color:var(--ink-faint)}
.ta-adj li{padding:.3rem 0;border-bottom:1px solid var(--line)}
.ta-add{display:flex;gap:.4rem;margin-top:.4rem}
.ta-add input{flex:1;font:inherit;border:1px solid var(--line);border-radius:.5rem;padding:.4rem .6rem;
  background:var(--surface);color:var(--ink)}
.ta-x{background:none;border:none;color:var(--ink-faint);cursor:pointer;font-size:.85rem;margin-left:auto}
.ta-x:hover{color:var(--bad)}
.ta-tabs{display:flex;gap:.3rem;margin:1.2rem 0 .5rem;border-bottom:1px solid var(--line)}
.ta-tabs button{background:none;border:none;border-bottom:2px solid transparent;padding:.4rem .7rem;cursor:pointer;
  font-weight:600;color:var(--ink-faint)}
.ta-tabs button.on{color:var(--ink);border-bottom-color:var(--brand)}
.ta-linea li{display:flex;gap:.6rem;padding:.5rem 0;align-items:flex-start}
.ta-linea li.ta-act{font-size:.82rem;color:var(--ink-soft)}
.ta-linea .ta-dot{width:.55rem;height:.55rem;border-radius:50%;background:var(--ink-faint);margin:.45rem .3rem 0}
.ta-linea li.ta-com p{margin:.2rem 0 0;white-space:normal}
.ta-linea li.ta-com.interno{background:rgba(240,181,107,.12);border-radius:.5rem;padding:.5rem}
.ta-caja{display:flex;gap:.6rem;align-items:flex-start;margin-top:.8rem;padding-top:.8rem;border-top:1px solid var(--line)}
.ta-caja>div{flex:1}
.ta-caja-f{display:flex;align-items:center;justify-content:flex-end;gap:.8rem;margin-top:.4rem}
.ta-int{font-size:.78rem;color:var(--ink-soft)}
.ta-cols li{display:flex;align-items:center;gap:.5rem;padding:.3rem 0;border-bottom:1px solid var(--line)}
.ta-lista li{padding:.45rem 0;border-bottom:1px solid var(--line)}
.cr-est{display:inline-block;padding:.05rem .45rem;border-radius:1rem;font-size:.72rem;font-weight:700;background:rgba(0,0,0,.07)}
.cr-est.pendiente_asignacion{background:#fff3e0;color:#8a4b00}
.cr-est.asignada{background:#dfe9ff;color:#1f3f8a}
.cr-est.vencida{background:#fde8e6;color:#b3261e}
.cr-est.completada{background:#e3f6e8;color:#1c6b33}
@media (max-width:600px){.ta-campos th{width:6.5rem}.ta-avs{margin-left:0}}

/* ── v2.349: Evaluación de Coordinadoras (prueba de 90 días) ─────────────── */
.ev-cab{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;flex-wrap:wrap}
.ev-cab h2{margin:.1rem 0 .3rem}
.ev-eyebrow{font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-weight:700}
.ev-coord{display:inline-block;padding:.1rem .6rem;border-radius:1rem;font-size:.8rem;font-weight:700;border:1px solid transparent}
.ev-coord.morado{background:#EFE9FA;color:#4A2A86;border-color:#6A3FB5}
.ev-coord.amarillo{background:#FBF3DC;color:#7A5806;border-color:#C48F0C}
.ev-tabs{display:flex;gap:.25rem;flex-wrap:wrap;margin:.8rem 0 1rem;border-bottom:1px solid var(--line)}
.ev-tabs a{padding:.5rem .8rem;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--ink-soft);text-decoration:none;font-weight:600;font-size:.9rem}
.ev-tabs a.on{color:var(--ink);border-bottom-color:var(--brand)}
.ev-tl{position:relative;padding:1.6rem 0 .2rem}
.ev-tl-track{display:flex;height:1.5rem;border-radius:.5rem;overflow:hidden;border:1px solid var(--line)}
.ev-tl-f{display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden}
.ev-tl-f.f1{background:#1E4A7C}.ev-tl-f.f2{background:#153A64}.ev-tl-f.f3{background:#0B2A4A}
.ev-tl-hoy{position:absolute;top:0;bottom:0;width:2px;background:var(--bad);z-index:2}
.ev-tl-hoy span{position:absolute;top:0;left:50%;transform:translateX(-50%);background:var(--bad);color:#fff;font-size:.7rem;padding:.05rem .45rem;border-radius:1rem;white-space:nowrap;font-weight:700}
.ev-tl-marcas{position:relative;height:1.1rem;margin-top:.2rem}
.ev-tl-marcas span{position:absolute;transform:translateX(-50%);font-size:.72rem;color:var(--ink-soft);white-space:nowrap}
.ev-coord-blk{margin-top:1rem}
.ev-coord-blk h3{margin:0 0 .5rem;display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.ev-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.7rem}
.ev-tile{display:flex;flex-direction:column;gap:.15rem;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:.7rem .85rem;text-decoration:none;color:inherit;border-top:3px solid var(--line-strong)}
.ev-tile.morado{border-top-color:#6A3FB5}.ev-tile.amarillo{border-top-color:#C48F0C}
.ev-tile .lbl{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);font-weight:700}
.ev-tile .val{font-family:var(--font-display);font-size:1.5rem;font-weight:700;line-height:1.1;font-variant-numeric:tabular-nums}
.ev-tile .val small{font-size:.8rem;color:var(--ink-soft);font-weight:500}
.ev-tile .val.ok{color:var(--ok)}.ev-tile .val.warn{color:var(--warn)}.ev-tile .val.bad{color:var(--bad)}
.ev-tile .sub{font-size:.75rem;color:var(--ink-soft)}
.ev-2col{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:1rem}
@media (max-width:900px){.ev-2col{grid-template-columns:1fr}}
.ev-chart{width:100%;height:auto;display:block}
.ev-chart .grid{stroke:var(--line);stroke-width:1}
.ev-chart .ax{font-size:10px;fill:var(--ink-soft)}
.ev-chart .ax.v{font-size:9px;fill:var(--ink)}
.ev-chart .meta{stroke:var(--warn);stroke-dasharray:4 3}
.ev-chart .meta-t{fill:var(--warn)}
.ev-chart .bar.morado{fill:#6A3FB5}.ev-chart .bar.amarillo{fill:#C48F0C}
.ev-chart .nodata{fill:var(--line-strong)}
.ev-leyenda{display:flex;gap:1rem;font-size:.78rem;color:var(--ink-soft);margin-top:.3rem}
.ev-leyenda i{display:inline-block;width:.6rem;height:.6rem;border-radius:2px;margin-right:.3rem;vertical-align:middle}
.ev-leyenda i.morado{background:#6A3FB5}.ev-leyenda i.amarillo{background:#C48F0C}
.ev-alertas{display:flex;flex-direction:column;gap:.4rem}
.ev-alerta{display:flex;align-items:center;gap:.6rem;padding:.45rem .6rem;border:1px solid var(--line);border-radius:.5rem;text-decoration:none;color:inherit;font-size:.86rem}
.ev-alerta i{width:.5rem;height:1.2rem;border-radius:.25rem;background:var(--ink-faint);flex:0 0 .5rem}
.ev-alerta.critica i{background:var(--bad)}.ev-alerta.alta i{background:var(--warn)}.ev-alerta.media i{background:var(--brand)}
.ev-aviso{border-radius:.5rem;padding:.5rem .8rem;font-size:.85rem;margin:.6rem 0}
.ev-aviso.warn{background:var(--warn-soft);color:var(--warn)}.ev-aviso.ok{background:var(--ok-soft);color:var(--ok)}
.ev-selrow{display:flex;justify-content:space-between;align-items:center;gap:.8rem;flex-wrap:wrap;margin-bottom:.5rem}
.ev-segs{display:inline-flex;border:1px solid var(--line);border-radius:.5rem;overflow:hidden}
.ev-seg{padding:.35rem .7rem;font-size:.85rem;text-decoration:none;color:var(--ink-soft);border-right:1px solid var(--line)}
.ev-seg:last-child{border-right:0}
.ev-seg.on{background:var(--brand);color:var(--on-brand);font-weight:700}
.ev-score{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.8rem;margin:.6rem 0 .8rem}
.ev-big{font-family:var(--font-display);font-size:1.7rem;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.1}
.ev-big.bad{color:var(--bad)}
.ev-kpis td{vertical-align:top}
.ev-kpis tr.ev-cat td,.ev-cat td{background:var(--field-bg)}
.ev-kpis tr.sin_datos td:first-child{border-left:3px solid var(--bad)}
.ev-kpis tr.auto td:first-child{border-left:3px solid var(--warn)}
.ev-kpis tr.validado td:first-child,.ev-kpis tr.manual td:first-child,.ev-kpis tr.no_aplica td:first-child{border-left:3px solid var(--ok)}
.ev-form{margin-top:.25rem;font-size:.78rem;color:var(--ink-soft)}
.ev-form summary{cursor:pointer}
.ev-form code{display:block;font-family:var(--font-mono);font-size:.74rem;margin:.2rem 0}
.ev-pct{display:inline-block;padding:.05rem .45rem;border-radius:1rem;font-weight:700;font-size:.8rem}
.ev-pct.ok{background:var(--ok-soft);color:var(--ok)}.ev-pct.warn{background:var(--warn-soft);color:var(--warn)}.ev-pct.bad{background:var(--bad-soft);color:var(--bad)}.ev-pct.gy{color:var(--ink-soft)}
.ev-pill{display:inline-block;padding:.05rem .5rem;border-radius:1rem;font-size:.74rem;font-weight:700;background:rgba(0,0,0,.07);color:var(--ink-soft);white-space:nowrap}
.ev-pill.ok{background:var(--ok-soft);color:var(--ok)}.ev-pill.warn{background:var(--warn-soft);color:var(--warn)}.ev-pill.bad{background:var(--bad-soft);color:var(--bad)}
.ev-val{font-size:.8rem;min-width:9rem}
.ev-mini{display:flex;gap:.9rem;flex-wrap:wrap;font-size:.82rem;color:var(--ink-soft);margin:.3rem 0 .6rem}
.ev-mini b{color:var(--ink)}
.ev-descargo{display:block;background:var(--field-bg);border-radius:.4rem;padding:.3rem .5rem;margin-top:.2rem}
.bad-txt{color:var(--bad);font-weight:700}
.ev-cmp td.ev-best{font-weight:800;color:var(--ok)}
.ev-ctx{padding-left:1.2rem;font-size:.88rem}
.ev-ctx li{margin:.3rem 0}
.ev-rec{font-family:var(--font-display);font-size:1.25rem;font-weight:800;margin:.2rem 0}
.ev-reqs{list-style:none;padding:0;margin:.5rem 0 0;display:flex;flex-direction:column;gap:.3rem}
.ev-reqs li{display:flex;gap:.5rem;align-items:flex-start;font-size:.86rem;padding:.35rem .5rem;border-radius:.4rem;background:var(--field-bg)}
.ev-reqs li .ic{font-weight:800;width:1rem}
.ev-reqs li.ok .ic{color:var(--ok)}.ev-reqs li.bad .ic{color:var(--bad)}.ev-reqs li.na .ic{color:var(--ink-faint)}
.ev-in{width:5.5rem;padding:.2rem .35rem;border:1px solid var(--line);border-radius:.35rem;background:var(--field-bg);color:inherit;font:inherit;font-size:.85rem;text-align:right}
input.ev-in[data-fase$="-nombre"]{width:100%;text-align:left}
.ev-form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.8rem}
.ev-cands{display:flex;flex-direction:column;gap:.4rem}
.ev-chk{display:flex;align-items:center;gap:.5rem;font-size:.9rem}
.ev-chk select{width:auto}
.mt4{margin-top:.25rem}.mt6{margin-top:.4rem}.mt8{margin-top:.5rem}.mt12{margin-top:.8rem}
.ev-kpis td.num,.ev-kpis th.num{white-space:nowrap}

/* v2.350: tarea en espera (autorización / proveedor / propietario) con seguimiento */
.cr-est.en_espera{background:#ede7f6;color:#4a2a86}

/* v2.350: checklist de reserva y servicios coordinados */
.ev-tick{display:inline-flex;align-items:center;justify-content:center;width:1.7rem;height:1.7rem;border-radius:50%;border:1px solid var(--line);background:var(--field-bg);color:var(--ink-soft);font-weight:700;cursor:pointer;font:inherit}
.ev-tick.on{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}
span.ev-tick{cursor:default}
.ev-cl td{vertical-align:middle}
tr.ev-hoy td{background:var(--warn-soft)}
.ev-selrow form.ev-selrow{margin:0}
.ev-selrow .dcampo{display:inline-flex;flex-direction:row;align-items:center;gap:.4rem;font-size:.82rem}
.ev-selrow .dcampo input{width:auto}

/* v2.351: comunicación con huéspedes */
.ev-pre{font-family:var(--font-mono);font-size:.72rem;white-space:pre-wrap;word-break:break-all;background:var(--field-bg);padding:.6rem;border-radius:.4rem;max-height:24rem;overflow:auto}
.flex-dias{display:flex;gap:.5rem;flex-wrap:wrap}
.ev-dia{font-size:.8rem}

/* v2.352: seguimiento y cierre */
.ev-lista{list-style:none;padding:0;margin:.3rem 0;display:flex;flex-direction:column;gap:.3rem;font-size:.86rem}
.ev-item{padding:.5rem .6rem;border:1px solid var(--line);border-radius:.5rem;margin:.3rem 0;font-size:.88rem;background:var(--card)}
.ev-links{font-size:.8rem;display:flex;gap:.3rem;flex-wrap:wrap;align-items:center}

/* v2.353: códigos de descuento amigos y familia */
.cu-owner{margin-top:.8rem;padding-top:.8rem;border-top:1px solid var(--line)}
.cu-owner h4{margin:0 0 .4rem;font-size:.95rem}
.cu-code{border:1px solid var(--line);border-radius:.6rem;padding:.6rem .8rem;margin:.5rem 0;background:var(--card)}
.cu-code-h{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:.35rem}
.cu-msg{font-family:var(--font-body);font-size:.92rem;white-space:pre-wrap;word-break:break-word;background:var(--field-bg);border-radius:.5rem;padding:.6rem .8rem;margin:0 0 .5rem;line-height:1.45}
.cu-acc{display:flex;gap:.5rem;flex-wrap:wrap}
.cu-acc .pri-btn{text-decoration:none}
.cu-form{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center;margin:.6rem 0;font-size:.88rem}
.cu-lista{list-style:none;padding:0;margin:.4rem 0 0;display:flex;flex-direction:column;gap:.3rem;font-size:.85rem}
.cu-plantilla{margin-top:.6rem}
/* v2.354: leyenda de canales DESPUÉS del calendario, con aire vertical */
.mcal-leg-pie{margin:1.2rem .1rem 1.6rem;gap:.75rem 1.1rem}
/* v2.355: Revenue · Planner de precio e Historial de acciones */
.rm-regla{max-width:26rem;line-height:1.35}
.rm-sin{margin:.5rem 0 0}
.rm-sin summary{cursor:pointer;color:var(--ink-soft)}
.rm-manual{display:flex;flex-wrap:wrap;gap:.5rem .8rem;align-items:flex-end}
.rm-manual label{display:flex;flex-direction:column;font-size:.75rem;color:var(--ink-soft);gap:.15rem}
.rm-in{width:6.5rem;font:inherit;font-size:.82rem;padding:.25rem .4rem;border:1px solid var(--line);border-radius:.4rem;background:var(--surface);color:var(--ink)}
.rm-cfg summary{cursor:pointer;padding:.2rem 0}
.rm-cfg h4{margin:.9rem 0 .35rem;font-size:.85rem}
.rm-cfg-form{display:flex;flex-wrap:wrap;gap:.5rem .9rem;align-items:flex-end}
.rm-cfg-form label{display:flex;flex-direction:column;font-size:.72rem;color:var(--ink-soft);gap:.15rem;max-width:11rem}
.rm-filtros-est a.on{font-weight:800;color:var(--accent,#D63840)}
.pe-nuevo[hidden]{display:none}
.pe-nuevo-btn{margin:.3rem 0 .6rem}
.acc-grupo{margin:.9rem 0 .25rem;font-size:.9rem;display:flex;align-items:center;gap:.4rem;border-bottom:1px solid var(--line);padding-bottom:.25rem}
.acc-grupo .sub{font-weight:500;color:var(--ink-faint);font-size:.78rem}
