/* ==========================================================================
   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                            */
  --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);

  --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);

  --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;
}

/* ==========================================================================
   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%)}

/* ---------- Cabecera y navegación ---------- */
.topbar{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;gap:1.2rem;
  padding:.7rem 1.4rem;
  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);
}
.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}

.nav{display:flex;gap:.35rem;flex-wrap:wrap;margin-left:.8rem;
  padding:.24rem;border-radius:var(--r-pill);box-shadow:var(--nav-track-sh)}
.nav a{
  padding:.42rem .85rem;border-radius:var(--r-pill);
  color:inherit;opacity:.66;font-size:.84rem;font-weight:550;
  transition:all .16s ease;border:1px solid transparent;
}
.nav a:hover{opacity:1}
.nav a.on{
  opacity:1;color:var(--nav-on-ink);background:var(--nav-on-bg);
  box-shadow:var(--nav-on-sh);border-color:var(--nav-on-bd);font-weight:650;
}
html[data-theme="luxury"] .nav a{text-transform:uppercase;font-size:.72rem;
  letter-spacing:.1em;border-radius:0}

.usuario{margin-left:auto;display:flex;align-items:center;gap:.6rem;
  font-size:.8rem;opacity:.9}
.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)}

main{padding:1.4rem;max-width:1240px;margin:0 auto}

/* ---------- 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)}

/* ---------- 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{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}

.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)}

.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}
.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}

/* ---------- Barra de temas (pie) ---------- */
.skinbar{position:fixed;left:50%;bottom:14px;transform:translateX(-50%);
  z-index:60;display:flex;gap:.25rem;padding:.3rem;
  background:var(--surface);border:var(--bd-card);border-radius:999px;
  box-shadow:var(--sh-card);backdrop-filter:var(--topbar-bf);
  -webkit-backdrop-filter:var(--topbar-bf)}
html[data-theme="glass"] .skinbar{background:rgba(16,26,46,.8)}
.skinbar button{border:1px solid transparent;background:transparent;box-shadow:none;
  font-size:.72rem;font-weight:700;color:var(--ink-soft);
  padding:.32rem .75rem;border-radius:999px;cursor:pointer}
.skinbar button:hover{color:var(--ink);box-shadow:none}
.skinbar button.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"] .skinbar button.on{color:#fff;background:var(--ink)}
html[data-theme="luxury"] .skinbar{border-radius:4px}
html[data-theme="luxury"] .skinbar button{border-radius:2px;text-transform:uppercase;
  font-size:.62rem;letter-spacing:.1em}
html[data-theme="luxury"] .skinbar button.on{color:var(--on-brand);background:var(--brand);
  box-shadow:none}
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;
  color:var(--on-brand);background:var(--brand);border-color:transparent}
.err{color:var(--bad);font-size:.85rem;margin-top:.5rem}

@media (max-width:720px){
  main{padding:.9rem .9rem 4.5rem}
  .semana{grid-template-columns:repeat(4,1fr)}
  .nav a{padding:.38rem .65rem;font-size:.78rem}
  .item .aux-sel{margin-left:0;width:100%}
  .skinbar{bottom:8px}
}
@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}

/* ---------- 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,.seccion table{display:block;overflow-x:auto;
    -webkit-overflow-scrolling:touch}
  .pulso,.kpis{grid-template-columns:1fr 1fr}
  .drawer{width:100vw}
  .tarea-nueva{flex-direction:column}
  .cols-fin{grid-template-columns:1fr!important}
  h2{font-size:1.25rem}
}
/* 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;overflow-y:auto;padding:1rem 1.2rem;display:flex;
  flex-direction:column;gap:.9rem}
.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}
.drawer-ancho{width:min(48rem,96vw)}
#prop-body .ficha{display:none;border:none;box-shadow:none;margin:0}
#prop-body .ficha summary{pointer-events:none;list-style:none}
#prop-body .ficha summary::-webkit-details-marker{display:none}

/* ---------- 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.025: socios de la propiedad ---------- */
.socios-prop{display:flex;flex-direction:column;gap:.4rem;margin:.3rem 0}
.sp-row{display:grid;grid-template-columns:2fr 1.1fr .6rem auto;gap:.4rem;
  align-items:center}
.sp-row .sp-user,.sp-row .sp-rol,.sp-row .sp-pct{height:2.3rem;
  border:1px solid var(--line);border-radius:.5rem;padding:0 .4rem;
  background:var(--surface);color:var(--ink)}
.sp-aviso{font-size:.78rem;margin-top:.2rem}
@media(max-width:640px){.sp-row{grid-template-columns:1fr 1fr;grid-auto-rows:auto}}

/* ---------- 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(--surface);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{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))}
.rep-kpi span{display:block;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}
/* 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}
.rep-tabla tfoot .rep-total td{border-top:1px solid var(--line);font-weight:800;font-size:1.02rem}
.rep-tabla tfoot .rep-total .neto{color:var(--brand)}

.rep-kpi b.neg{color:var(--bad)}

/* ---------- 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}
.est-acc{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.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}
