  /*
    Paleta oficial RE/MAX. Dos temas que el usuario elige con el botón
    Noche / Día de la cabecera (y de la portada): Noche (por defecto, el
    aspecto de siempre: fondo azul marino) y Día (:root[data-theme="light"],
    crema y blanco con texto azul marino). No sigue el tema del visor: la
    elección se guarda en localStorage y se aplica antes del primer pintado.
    Todo color vive en un token de :root; el resto del CSS solo usa var(--…).
    Tipografía: Gotham no está disponible como webfont libre (es una
    fuente de pago, no la ofrece Google Fonts ni ningún CDN permitido),
    así que se usa Montserrat en todo el panel — es el sustituto abierto
    habitual de Gotham y comparte su geometría — con pesos altos (800/900)
    para títulos y pesos medios para el texto, para conservar la
    jerarquía visual.
  */
  :root{
    --bg:#000e35;            /* Primary Dark Blue */
    --surface:#0C2749;       /* Bridge Blue */
    --surface-2:#232323;     /* Dark Charcoal Gray */
    --ink:#f7f5ee;           /* Cream */
    --ink-soft:rgba(247,245,238,.60);
    --line:rgba(247,245,238,.14);
    --line-strong:rgba(247,245,238,.30);
    --accent:#ff1200;        /* Primary Red */
    --accent-hover:#AA1120;  /* Bridge Red */
    --accent-ink:#f7f5ee;      /* Cream — texto sobre fondo rojo de acento */
    --ok:#f7f5ee;            /* Cream — progreso positivo */
    --ok-bg:rgba(247,245,238,.12);
    --warn:#ff1200;          /* Primary Red — Collection / guardia */
    --warn-bg:rgba(255,18,0,.14);
    --info:#0043ff;          /* Primary Blue — Residencial / citas */
    --info-bg:rgba(0,67,255,.18);
    --rent:#f7f5ee;          /* Cream, tratamiento en contorno */
    --rent-bg:transparent;
    /* Identidad de las 4 líneas de negocio en gráficos y etiquetas de zona.
       Comercial y Alquileres compartían el crema (--ok/--rent) y solo se
       distinguían por opacidad — mismo color, ilegible en el donut y en la
       barra de tendencia. Estos dos tonos son nuevos, elegidos y validados
       (contraste + separación bajo daltonismo) para distinguirse siempre
       entre sí y de los colores ya en uso (Rojo Collection, Azul Residencial). */
    --zona-comercial:#00a37a;
    --zona-comercial-bg:rgba(0,163,122,.16);
    --zona-alquiler:#a06bd6;
    --zona-alquiler-bg:rgba(160,107,214,.16);
    --shadow:0 1px 2px rgba(0,0,0,.35), 0 10px 30px -14px rgba(0,0,0,.7);
    color-scheme: dark;
    /* Variantes de texto de los colores de zona para badges pequeños:
       las base (--info, --warn, --zona-*) no llegan a 4.5:1 sobre el fondo. */
    --info-ink:#8fadff;
    --warn-ink:#ff8a7e;
    --zona-comercial-ink:#2fd3a5;
    --zona-alquiler-ink:#c9a5ef;
    --info-line:rgba(143,173,255,.35);
    --warn-line:rgba(255,138,126,.35);
    --zona-comercial-line:rgba(47,211,165,.35);
    --zona-alquiler-line:rgba(201,165,239,.4);
    --aviso:#ffc94d;             /* toast de aviso */
    --accent-bg:rgba(180,140,60,.1);
    --danger-tint:rgba(255,18,0,.12);
    --scrim:rgba(0,4,16,.6);     /* velo de los paneles laterales */
    --shimmer:rgba(247,245,238,.10);
    --logo-plate:transparent;    /* el logo es de trazo crema: en Día va sobre una placa azul marino */
    /* Portada de acceso */
    --auth-glow-1:rgba(0,67,255,.22);
    --auth-glow-2:rgba(255,18,0,.08);
    --auth-dot:rgba(247,245,238,.16);
    --auth-card-bg:rgba(12,39,73,.94);
    --auth-shadow:0 2px 4px rgba(0,0,0,.3), 0 30px 60px -24px rgba(0,0,0,.75);
    --auth-txt-1:rgba(247,245,238,.72);
    --auth-txt-2:rgba(247,245,238,.86);
    --auth-txt-3:rgba(247,245,238,.70);
    --auth-txt-4:rgba(247,245,238,.66);
    /* Botón oficial de Google: colores de marca, iguales en los dos temas */
    --gbtn-bg:#fff;
    --gbtn-ink:#1f1f1f;
    --gbtn-line:#747775;
    --gbtn-hover:#f6f8fe;
    --gbtn-active:#e8eefc;
    --gbtn-blue:#4285F4;
    --gbtn-sheen:rgba(66,133,244,.14);
    --gbtn-shadow:0 1px 2px rgba(0,0,0,.3), 0 6px 18px -8px rgba(0,0,0,.6);
    --badge-h:20px;
    --badge-r:3px;
  }

  /* ---------- Tema Día (claro): mismos tokens, valores para fondo claro.
     Contraste AA comprobado: texto ≥ 4.5:1 y bordes de campos ≥ 3:1. ---------- */
  :root[data-theme="light"]{
    --bg:#f7f5ee;            /* Cream */
    --surface:#ffffff;
    --surface-2:#efece2;     /* crema algo más oscuro */
    --ink:#000e35;           /* Primary Dark Blue como texto */
    --ink-soft:rgba(0,14,53,.68);
    --line:rgba(0,14,53,.14);
    --line-strong:rgba(0,14,53,.46);
    --accent:#c80e00;        /* rojo RE/MAX algo más profundo: 5.5:1 sobre crema */
    --accent-hover:#a00b00;
    --accent-ink:#ffffff;
    --ok:#000e35;
    --ok-bg:rgba(0,14,53,.07);
    --warn:#c80e00;
    --warn-bg:rgba(200,14,0,.09);
    --info:#0037d6;
    --info-bg:rgba(0,55,214,.09);
    --rent:#000e35;
    --rent-bg:transparent;
    --zona-comercial:#006b4f;
    --zona-comercial-bg:rgba(0,107,79,.10);
    --zona-alquiler:#6d32a8;
    --zona-alquiler-bg:rgba(109,50,168,.10);
    --shadow:0 1px 2px rgba(0,14,53,.08), 0 10px 30px -14px rgba(0,14,53,.28);
    color-scheme: light;
    --info-ink:#0033cc;
    --warn-ink:#a80c00;
    --zona-comercial-ink:#005e45;
    --zona-alquiler-ink:#5a2a92;
    --info-line:rgba(0,55,214,.32);
    --warn-line:rgba(200,14,0,.32);
    --zona-comercial-line:rgba(0,107,79,.35);
    --zona-alquiler-line:rgba(109,50,168,.35);
    --aviso:#8a5200;
    --accent-bg:rgba(200,14,0,.07);
    --danger-tint:rgba(200,14,0,.08);
    --scrim:rgba(0,14,53,.45);
    --shimmer:rgba(0,14,53,.07);
    --logo-plate:transparent;
    --auth-glow-1:rgba(0,67,255,.10);
    --auth-glow-2:rgba(255,18,0,.07);
    --auth-dot:rgba(0,14,53,.16);
    --auth-card-bg:rgba(255,255,255,.95);
    --auth-shadow:0 2px 4px rgba(0,14,53,.08), 0 30px 60px -28px rgba(0,14,53,.35);
    --auth-txt-1:rgba(0,14,53,.74);
    --auth-txt-2:rgba(0,14,53,.88);
    --auth-txt-3:rgba(0,14,53,.72);
    --auth-txt-4:rgba(0,14,53,.68);
    --gbtn-shadow:0 1px 2px rgba(0,14,53,.14), 0 6px 18px -8px rgba(0,14,53,.28);
  }

  *{box-sizing:border-box;}
  body{
    margin:0;
    background:var(--bg);
    color:var(--ink);
    font-family:"Montserrat",system-ui,-apple-system,"Segoe UI",sans-serif;
    -webkit-font-smoothing:antialiased;
    padding-inline:20px;
  }
  .wrap{
    max-width:1180px;
    margin:0 auto;
    padding-block:28px 64px;
  }
  h1,h2,h3{
    font-family:"Montserrat",sans-serif;
    font-weight:800;
    letter-spacing:-.01em;
    text-wrap:balance;
    margin:0;
  }
  a{color:inherit;}
  button{font-family:inherit;}
  section[id]{scroll-margin-top:16px;}

  /* ---------- header ---------- */
  .masthead{
    display:flex;
    flex-wrap:wrap;
    justify-content:space-between;
    align-items:flex-end;
    gap:20px;
    padding-bottom:22px;
    border-bottom:2px solid var(--ink);
    margin-bottom:18px;
  }
  /* globo decorativo que cruza la cabecera (detrás del contenido) */
  .masthead{position:relative;}
  .masthead > div:not(.masthead-cielo){position:relative; z-index:1;}
  .masthead-cielo{
    position:absolute; inset:0 0 0 0; overflow:hidden; z-index:0; pointer-events:none;
  }
  .masthead-globo{
    position:absolute; top:6px; left:100%; height:44px; width:auto; aspect-ratio:2/3;
    opacity:.9; pointer-events:none; user-select:none;
  }
  @media (prefers-reduced-motion:no-preference){
    .masthead-globo{animation:mastCruce 40s linear infinite, mastBob 7s ease-in-out infinite;}
  }
  @media (prefers-reduced-motion:reduce){
    .masthead-globo{left:auto; right:8px; top:6px;}
  }
  @media (max-width:599px){
    .masthead-globo{height:32px; opacity:.85;}
    @media (prefers-reduced-motion:no-preference){
      .masthead-globo{animation-duration:48s, 7s;}
    }
  }
  /* Entra por la derecha y se desvanece antes de llegar al logo (≈170px de ancho + margen). */
  .masthead-cielo{--globo-fin:260px;}
  @media (max-width:599px){ .masthead-cielo{--globo-fin:190px;} }
  @keyframes mastCruce{
    0%{left:100%; opacity:0;}
    6%{opacity:.9;}
    88%{opacity:.9;}
    100%{left:var(--globo-fin); opacity:0;}
  }
  @keyframes mastBob{0%,100%{transform:translateY(0);} 50%{transform:translateY(12px);}}
  .eyebrow{
    font-size:.72rem;
    letter-spacing:.14em;
    text-transform:uppercase;
    color:var(--accent);
    font-weight:600;
    margin:0 0 8px;
  }
  .saludo-usuario{
    font-family:"Montserrat",sans-serif;
    font-weight:700;
    font-size:clamp(1.05rem,2.4vw,1.4rem);
    color:var(--ink);
    margin:0 0 6px;
  }
  .masthead h1{
    font-size:clamp(2.1rem,5vw,3.1rem);
    line-height:1.02;
  }
  .masthead .lema{
    color:var(--ink-soft);
    font-size:.92rem;
    margin-top:8px;
  }
  .masthead .fecha{
    text-align:right;
    font-size:.85rem;
    color:var(--ink-soft);
  }
  .masthead .fecha strong{
    display:block;
    font-family:"Montserrat",sans-serif;
    font-size:1.25rem;
    color:var(--ink);
    font-weight:800;
  }
  .logo-chip{
    display:inline-block;
    margin-bottom:18px;
    line-height:0;
  }
  .logo-chip img{
    display:block;
    height:84px;
    width:auto;
  }

  /* ---------- quick nav ---------- */
  .quicknav{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-bottom:34px;
  }
  .quicknav a{
    font-size:.74rem;
    text-transform:uppercase;
    letter-spacing:.06em;
    padding:6px 13px;
    border:1px solid var(--line-strong);
    color:var(--ink-soft);
    text-decoration:none;
  }
  .quicknav a:hover{border-color:var(--ink); color:var(--ink);}

  /* ---------- stats ---------- */
  .stats{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:1px;
    background:var(--line);
    border:1px solid var(--line);
    margin-bottom:44px;
  }
  .stat{
    background:var(--surface);
    padding:18px 18px 16px;
    min-height:96px;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
  }
  .stat .label{
    font-size:.68rem;
    text-transform:uppercase;
    letter-spacing:.09em;
    color:var(--ink-soft);
  }
  .stat .value{
    font-family:"Montserrat",sans-serif; font-weight:800;
    font-size:1.55rem;
    font-variant-numeric:tabular-nums;
    margin-top:6px;
  }
  .stat .value.small{font-size:1.05rem; font-family:"Montserrat",sans-serif; font-weight:600;}
  .stat .sub-note{font-size:.72rem; color:var(--ink-soft); margin-top:2px;}
  .stat.clickable{cursor:pointer;}
  .stat.clickable:hover{background:var(--surface-2);}
  .stats-nc-top{margin-bottom:44px;}
  .stats-nc-top .stats-subhead{margin-top:0;}
  @media (max-width:820px){ .stats{grid-template-columns:repeat(2,1fr);} }

  /* ---------- dashboard (donut + tendencia de cartera) ---------- */
  .dash-donut-row{
    display:flex;
    align-items:center;
    gap:28px;
    flex-wrap:wrap;
    margin-bottom:22px;
  }
  .dash-legend{
    display:flex;
    flex-direction:column;
    gap:9px;
    flex:1;
    min-width:200px;
  }
  .dash-legend-row{
    display:flex;
    align-items:center;
    gap:8px;
    font-size:.84rem;
  }
  .dash-legend-row .dot{
    width:10px; height:10px; border-radius:2px; flex:none;
  }
  .dash-legend-row b{font-weight:600;}
  .dash-legend-row .dl-count{color:var(--ink-soft); font-size:.78rem;}
  .dash-trend{display:flex; flex-direction:column; gap:9px;}
  .dash-trend-row{display:flex; align-items:center; gap:10px;}
  .dash-trend-row .dtr-label{width:38px; flex:none; font-size:.76rem; color:var(--ink-soft); text-transform:capitalize;}
  .dash-trend-row .dtr-track{flex:1; height:14px; background:var(--surface-2);}
  .dash-trend-row .dtr-bar{display:flex; height:100%; overflow:hidden; gap:2px; border-radius:0 3px 3px 0;}
  .dash-trend-row .dtr-seg{height:100%; cursor:pointer; transition:filter .12s ease;}
  .dash-trend-row .dtr-seg:hover, .dash-trend-row .dtr-seg:focus-visible{filter:brightness(1.3); outline:none;}
  .dash-trend-row .dtr-total{width:24px; flex:none; text-align:right; font-size:.76rem; font-variant-numeric:tabular-nums; color:var(--ink-soft);}
  .dash-donut-seg{cursor:pointer; transition:stroke-width .12s ease;}
  .dash-donut-seg:hover, .dash-donut-seg:focus-visible{stroke-width:17px !important; outline:none;}

  /* ---------- tooltip ligero y reutilizable de los gráficos ---------- */
  .viz-tooltip{
    position:fixed; z-index:90; pointer-events:none;
    background:var(--surface); border:1px solid var(--line-strong); border-radius:3px;
    padding:7px 10px; box-shadow:var(--shadow); max-width:220px;
  }
  .viz-tooltip .vt-value{font-family:"Montserrat",sans-serif; font-weight:700; font-size:.86rem; color:var(--ink);}
  .viz-tooltip .vt-label{font-size:.72rem; color:var(--ink-soft); margin-top:2px;}

  /* ---------- section headers ---------- */
  section.block{ margin-bottom:52px; }
  .section-head{
    display:flex;
    flex-wrap:wrap;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    margin-bottom:16px;
  }
  .section-head h2{font-size:1.5rem;}
  .section-head .sub{color:var(--ink-soft); font-size:.85rem; margin-top:2px;}

  .btn{
    appearance:none;
    border:1px solid var(--ink);
    background:var(--ink);
    color:var(--bg);
    padding:9px 16px;
    font-size:.82rem;
    font-weight:600;
    letter-spacing:.01em;
    cursor:pointer;
    display:inline-flex;
    align-items:center;
    gap:6px;
  }
  .btn:hover{background:var(--accent); border-color:var(--accent); color:var(--accent-ink);}
  .btn:active{background:var(--accent-hover); border-color:var(--accent-hover);}
  .btn:focus-visible, .chip:focus-visible, .icon-btn:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible, .quicknav a:focus-visible{
    outline:2px solid var(--accent); outline-offset:2px;
  }
  .btn.ghost{
    background:transparent; color:var(--ink);
  }
  .btn.ghost:hover{background:var(--surface-2); color:var(--ink); border-color:var(--ink);}

  /* ---------- dropdown (Importar/Exportar CSV) ---------- */
  .dropdown{position:relative; display:inline-block;}
  .dropdown-menu{
    position:absolute; top:calc(100% + 6px); right:0; z-index:20;
    min-width:180px;
    background:var(--surface); border:1px solid var(--line-strong);
    box-shadow:var(--shadow);
    padding:6px;
    display:flex; flex-direction:column; gap:2px;
  }
  .dropdown-item{
    appearance:none; border:none; background:transparent; color:var(--ink);
    text-align:left; padding:9px 10px; font-size:.82rem; font-weight:500;
    cursor:pointer; width:100%;
  }
  .dropdown-item:hover{background:var(--surface-2);}
  .dropdown-item:disabled{opacity:.4; cursor:not-allowed;}

  .toast{
    position:fixed; left:50%; bottom:24px; transform:translateX(-50%);
    z-index:100; max-width:min(90vw, 440px);
    background:var(--surface); border:1px solid var(--line-strong);
    color:var(--ink); box-shadow:var(--shadow);
    padding:12px 18px; font-size:.85rem; font-weight:500;
    text-align:center;
  }

  /* ---------- filters ---------- */
  .filters{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-bottom:18px;
  }
  .chip{
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink-soft);
    font-size:.76rem;
    padding:6px 12px;
    cursor:pointer;
    letter-spacing:.02em;
  }
  .chip.active{
    background:var(--ink);
    border-color:var(--ink);
    color:var(--bg);
  }
  .search{
    flex:1 1 200px;
    min-width:160px;
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink);
    padding:6px 12px;
    font-size:.82rem;
  }

  /* ---------- kanban ---------- */
  .board{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:14px;
    align-items:start;
  }
  @media (max-width:980px){ .board{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:600px){ .board{grid-template-columns:1fr;} }

  .col{
    background:var(--surface-2);
    border:1px solid var(--line);
    min-height:70px;
  }
  .col-head{
    padding:10px 12px;
    border-bottom:1px solid var(--line);
    display:flex;
    justify-content:space-between;
    align-items:baseline;
  }
  .col-head .name{font-size:.78rem; font-weight:600; letter-spacing:.03em; text-transform:uppercase;}
  .col-head .count{font-size:.75rem; color:var(--ink-soft); font-variant-numeric:tabular-nums;}
  .col-body{padding:10px; display:flex; flex-direction:column; gap:10px; min-height:24px;}
  .empty-col{
    color:var(--ink-soft);
    font-size:.78rem;
    padding:10px 2px;
    pointer-events:none;
  }
  .col.drag-over{ outline:2px dashed var(--accent); outline-offset:-2px; background:var(--surface); }
  .col.drag-over .col-head{ border-bottom-color:var(--accent); }

  /* ---------- Postventa vendedores: línea de 12 meses ---------- */
  .postventa-linea{ margin-top:6px; }
  .pv-scroll{
    overflow-x:auto;
    overscroll-behavior-x:contain;
    scroll-snap-type:x proximity;
    padding-bottom:10px;
    border:1px solid var(--line);
    background:var(--surface-2);
  }
  .pv-scroll:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
  .pv-track{ position:relative; padding:14px 0 12px; }
  .pv-eje{ position:relative; height:22px; }
  .pv-eje-line{ position:absolute; bottom:0; height:2px; background:var(--line-strong); }
  .pv-tick{
    position:absolute; top:0; transform:translateX(-50%);
    font-size:.64rem; letter-spacing:.04em; color:var(--ink-soft);
    font-variant-numeric:tabular-nums; white-space:nowrap; line-height:1;
  }
  .pv-tick::after{
    content:""; position:absolute; left:50%; top:13px; width:1px; height:9px;
    background:var(--line-strong);
  }
  .pv-tick-despues{ transform:translateX(-100%); }
  .pv-dot{
    position:absolute; bottom:1px; width:11px; height:11px; border-radius:50%;
    transform:translate(-50%,50%);
    background:var(--bg); border:2px solid var(--ink-soft);
  }
  .pv-dot.con-fichas{ background:var(--info); border-color:var(--ink); }
  .pv-dot.atrasado{ background:var(--accent); border-color:var(--ink); }
  .pv-conectores{ display:block; width:100%; height:34px; overflow:visible; }
  .pv-conector{ stroke:var(--line-strong); stroke-width:1; fill:none; }
  .pv-conector.con-fichas{ stroke:var(--ink-soft); }
  .pv-conector.atrasado{ stroke:var(--accent); }
  .pv-nodos{ list-style:none; margin:0; padding:0; display:flex; align-items:stretch; }
  .pv-nodo{
    flex:1 1 0; min-width:0; padding:0 6px;
    display:flex; flex-direction:column; align-items:stretch; gap:8px;
    scroll-snap-align:start;
  }
  .pv-nodo.drag-over{ outline:2px dashed var(--accent); outline-offset:-2px; background:var(--surface); }
  .pv-nodo-btn{
    font:inherit; color:var(--ink); cursor:pointer; text-align:center;
    background:var(--surface); border:1px solid var(--line-strong);
    padding:7px 8px 8px; position:relative;
    display:flex; flex-direction:column; align-items:center; gap:2px;
  }
  .pv-nodo-btn:hover, .pv-nodo-btn:focus-visible{ border-color:var(--ink); }
  .pv-nodo-btn:focus-visible{ outline:2px solid var(--accent); outline-offset:2px; }
  .pv-nodo-btn.vacio{ background:transparent; color:var(--ink-soft); border-style:dashed; }
  .pv-nodo-btn.atrasado{ border-color:var(--accent); }
  .pv-cuando{ font-size:.62rem; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-soft); }
  .pv-corto{ font-size:.8rem; font-weight:600; line-height:1.2; }
  .pv-count{
    position:absolute; top:-8px; right:-6px; min-width:18px; height:18px; padding:0 5px;
    border-radius:9px; background:var(--info); color:var(--accent-ink);
    font-size:.68rem; font-weight:700; line-height:18px; text-align:center;
    font-variant-numeric:tabular-nums;
  }
  .pv-nodo-btn.atrasado .pv-count{ background:var(--accent); }
  .pv-nodo-btn.completado{ border-style:solid; }
  .pv-nodo-btn.completado.vacio{ border-style:dashed; cursor:default; }
  .pv-nodo-btn.completado.con-fichas::after{
    content:"▾"; font-size:.7rem; color:var(--ink-soft); line-height:1;
  }
  .pv-nodo-btn.completado[aria-expanded="true"]::after{ content:"▴"; }
  .pv-cards[hidden]{ display:none; }
  .pv-track{ padding-right:10px; }
  .pv-card .fecha-rel{ font-size:.64rem; padding:0 6px; gap:4px; letter-spacing:0; }
  .pv-cards{ display:flex; flex-direction:column; gap:8px; }
  .pv-card{ padding:9px 10px 9px; }
  .pv-card .top .direccion{ font-size:.84rem; }
  .pv-card .meta{ margin-top:6px; font-size:.72rem; }
  .card.pv-card .actions{ margin-top:8px; flex-wrap:wrap; justify-content:flex-start; align-items:center; }
  .pv-card .actions .contact-actions{ margin-right:auto; }
  @media (prefers-reduced-motion:no-preference){
    .pv-nodo-btn{ transition:border-color .15s ease; }
    .pv-scroll{ scroll-behavior:smooth; }
  }
  @media (max-width:600px){
    .pv-nodo{ scroll-snap-align:center; }
  }

  .card{
    background:var(--surface);
    border:1px solid var(--line);
    box-shadow:var(--shadow);
    padding:13px 14px 12px;
    position:relative;
  }
  .card.overdue{ border-left:3px solid var(--accent); }
  .card[draggable="true"]{ cursor:grab; }
  .card[draggable="true"]:active{ cursor:grabbing; }
  .card.dragging{ opacity:.45; }
  .card .top{
    display:flex;
    justify-content:space-between;
    gap:8px;
    align-items:flex-start;
  }
  .card .direccion{
    font-weight:600;
    font-size:.92rem;
    line-height:1.25;
  }
  .card .zona{
    display:inline-block;
    font-size:.64rem;
    text-transform:uppercase;
    letter-spacing:.06em;
    padding:2px 7px;
    margin-top:5px;
    border-radius:2px;
  }
  .card .zona + .zona{ margin-left:5px; }
  .zona.norte{background:var(--info-bg); color:var(--info);}
  .zona.collection{background:var(--warn-bg); color:var(--warn);}
  .zona.commercial{background:var(--zona-comercial-bg); color:var(--zona-comercial);}
  .zona.alquileres{background:var(--zona-alquiler-bg); color:var(--zona-alquiler); border:1px solid var(--zona-alquiler);}

  .card .checklist{
    margin-top:9px;
    font-size:.75rem;
    color:var(--ink-soft);
  }
  .card .checklist .bar{
    display:inline-block;
    width:60px;
    height:4px;
    background:var(--line);
    margin-right:6px;
    vertical-align:middle;
    position:relative;
    top:-1px;
  }
  .card .checklist .bar i{
    display:block;
    height:100%;
    background:var(--ok);
  }
  .proximo-paso-badge{
    margin-top:9px;
    font-size:.74rem;
    color:var(--accent);
    background:var(--accent-bg);
    border:1px solid var(--accent);
    border-radius:3px;
    padding:4px 8px;
    display:flex;
    align-items:center;
    gap:6px;
  }
  .proximo-paso-badge .pp-dot{
    width:6px; height:6px; border-radius:50%;
    background:var(--accent);
    flex:none;
  }
  .proximo-paso-badge b{font-weight:600;}
  .contact-actions{display:flex; gap:6px;}

  .card .precio{
    font-variant-numeric:tabular-nums;
    font-weight:600;
    white-space:nowrap;
    font-size:.95rem;
  }
  .card .meta{
    margin-top:9px;
    font-size:.78rem;
    color:var(--ink-soft);
    display:flex;
    flex-direction:column;
    gap:3px;
  }
  .card .meta b{color:var(--ink); font-weight:500;}
  .card .meta .od, .card .meta .od b{color:var(--accent); font-weight:600;}
  .card .actions{
    margin-top:10px;
    display:flex;
    gap:6px;
    justify-content:flex-end;
  }
  .icon-btn{
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink-soft);
    width:26px; height:26px;
    display:inline-flex; align-items:center; justify-content:center;
    cursor:pointer;
    font-size:.78rem;
    line-height:1;
    padding:0;
  }
  .icon-btn:hover{border-color:var(--ink); color:var(--ink);}
  .icon-btn.danger{color:var(--accent);}
  .icon-btn.danger.confirming{background:var(--accent); color:var(--accent-ink); border-color:var(--accent);}

  /* ---------- agenda ---------- */
  .agenda-list{
    display:flex;
    flex-direction:column;
    gap:2px;
    border-top:1px solid var(--line);
  }
  .day-header{
    padding:14px 4px 6px;
    font-size:.74rem;
    text-transform:uppercase;
    letter-spacing:.08em;
    color:var(--accent);
    font-weight:600;
  }
  .event{
    display:flex;
    gap:14px;
    align-items:flex-start;
    padding:11px 4px;
    border-bottom:1px solid var(--line);
  }
  .event .hora{
    width:52px;
    flex:0 0 52px;
    font-variant-numeric:tabular-nums;
    font-weight:600;
    font-size:.82rem;
    padding-top:2px;
  }
  .event .body{flex:1; min-width:0;}
  .event .titulo{font-weight:600; font-size:.9rem;}
  .event .lugar{color:var(--ink-soft); font-size:.8rem; margin-top:2px;}
  .event .tipo-pill{
    display:inline-block;
    font-size:.64rem;
    text-transform:uppercase;
    letter-spacing:.06em;
    padding:2px 7px;
    border-radius:2px;
    margin-bottom:4px;
  }
  .tipo-cita{background:var(--info-bg); color:var(--info);}
  .tipo-guardia{background:var(--warn-bg); color:var(--warn);}
  .tipo-firma{background:var(--ok-bg); color:var(--ok);}
  .tipo-tarea{background:var(--surface-2); color:var(--ink-soft);}
  .tipo-gcal{background:transparent; color:var(--ink-soft); border:1px solid var(--line-strong);}
  .event .actions{display:flex; gap:6px; flex:0 0 auto; padding-top:2px;}
  .live-note{font-size:.76rem; color:var(--ink-soft); margin-top:2px;}
  .live-note.warn{color:var(--accent);}

  /* ---------- mini calendar ---------- */
  .minical{
    max-width:340px;
    border:1px solid var(--line);
    background:var(--surface-2);
    padding:14px;
    margin-bottom:22px;
  }
  .minical-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    margin-bottom:10px;
  }
  .minical-head .label{
    font-family:"Montserrat",sans-serif; font-weight:800;
    font-size:1.05rem;
    text-transform:capitalize;
  }
  .minical-nav{
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink-soft);
    width:24px; height:24px;
    cursor:pointer;
    font-size:.8rem;
    line-height:1;
  }
  .minical-nav:hover{border-color:var(--ink); color:var(--ink);}
  .minical-grid{
    display:grid;
    grid-template-columns:repeat(7,1fr);
    gap:3px;
    text-align:center;
  }
  .minical-grid .dow{
    font-size:.62rem;
    text-transform:uppercase;
    color:var(--ink-soft);
    padding-bottom:4px;
  }
  .minical-grid .day{
    position:relative;
    font-size:.78rem;
    padding:5px 0;
    font-variant-numeric:tabular-nums;
    color:var(--ink);
  }
  .minical-grid .day.pad{visibility:hidden;}
  .minical-grid .day{cursor:pointer;}
  .minical-grid .day:hover{background:var(--surface-2);}
  .minical-grid .day.today{background:var(--ink); color:var(--bg); font-weight:600;}
  .minical-grid .day.sel{outline:2px solid var(--accent); outline-offset:-2px;}
  .minical-grid .day .dot{
    display:block;
    width:4px; height:4px;
    border-radius:50%;
    background:var(--accent);
    margin:2px auto 0;
  }
  .minical-grid .day.today .dot{background:var(--bg);}

  .day-header.flash{outline:2px solid var(--accent); outline-offset:2px;}

  .empty-state{
    padding:34px 18px;
    text-align:center;
    color:var(--ink-soft);
    font-size:.88rem;
    border:1px dashed var(--line-strong);
  }

  /* ---------- tabs ---------- */
  .tabnav{
    display:flex;
    flex-wrap:wrap;
    gap:8px;
    margin-bottom:28px;
    padding-bottom:20px;
    border-bottom:1px solid var(--line);
  }
  .tabnav-btn{
    appearance:none;
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink-soft);
    font-family:"Montserrat",sans-serif;
    font-size:.84rem;
    font-weight:700;
    padding:10px 18px;
    cursor:pointer;
  }
  .tabnav-btn:hover{color:var(--ink); border-color:var(--ink-soft);}
  .tabnav-btn.active{background:var(--accent); border-color:var(--accent); color:var(--accent-ink);}

  /* ---------- móvil (A4, parcial): cabecera compacta y pestañas en una
     sola fila con scroll horizontal. Mismo orden e ids; la activa se centra
     por JS (switchTab). ---------- */
  @media (max-width:600px){
    .masthead{gap:6px 12px; padding-bottom:10px; margin-bottom:10px; align-items:center;}
    .logo-chip{margin-bottom:6px; border-radius:8px;}
    .logo-chip img{height:36px;}
    .saludo-usuario{font-size:.92rem; margin:0 0 2px;}
    .masthead h1{font-size:1.3rem; line-height:1.15; white-space:nowrap;}
    .masthead .lema{font-size:.72rem; margin-top:2px;}
    .masthead .fecha{
      width:100%; text-align:left; font-size:.72rem;
      display:flex; flex-wrap:wrap; align-items:center; gap:4px 8px;
    }
    .masthead .fecha strong{display:inline; font-size:.9rem;}
    .masthead .fecha .sesion-box{margin:0 0 0 auto; gap:6px;}
    .masthead .fecha .sesion-email{display:none;}
    .masthead .fecha .sesion-btn{padding:4px 10px; font-size:.7rem;}
    .tabnav{
      flex-wrap:nowrap; overflow-x:auto; overflow-y:hidden;
      scroll-snap-type:x proximity; -webkit-overflow-scrolling:touch; overscroll-behavior-x:contain;
      gap:6px; margin:0 0 14px; padding:0 28px 8px 0;
      scrollbar-width:none;
      -webkit-mask-image:linear-gradient(to right, #000 calc(100% - 28px), transparent);
      mask-image:linear-gradient(to right, #000 calc(100% - 28px), transparent);
    }
    .tabnav::-webkit-scrollbar{display:none;}
    .tabnav-btn{flex:none; white-space:nowrap; scroll-snap-align:start; padding:8px 12px; font-size:.8rem;}
  }

  /* Briefing (A3): filas pulsables y "y N más…" */
  .fecha-clave-item.es-pulsable, .bloque-card.es-pulsable{cursor:pointer;}
  .fecha-clave-item.es-pulsable:focus-visible, .bloque-card.es-pulsable:focus-visible{outline:2px solid var(--accent); outline-offset:-2px;}
  .briefing-mas{
    display:block; width:100%; text-align:left; appearance:none; cursor:pointer;
    background:transparent; border:0; border-top:1px dashed var(--line);
    padding:10px 14px; font:inherit; font-size:.84rem; font-weight:700; color:var(--accent);
  }
  .briefing-mas:hover{background:var(--surface-2);}
  .bloque-grid .briefing-mas, #briefingActos .briefing-mas{grid-column:1 / -1; border:1px dashed var(--line);}
  /* Agenda (M3): cita pendiente de subir a Google */
  .icon-btn.gcal-pendiente{color:var(--warn-ink, var(--accent)); cursor:help;}

  /* ---------- briefing ---------- */
  .briefing-headline{
    font-family:"Montserrat",sans-serif;
    font-weight:800;
    font-size:1.4rem;
    line-height:1.32;
    margin:6px 0 26px;
    max-width:820px;
  }

  /* ---------- facturación / plan ---------- */
  .funnel-table{
    border:1px solid var(--line);
    background:var(--surface);
  }
  .funnel-row{
    display:grid;
    grid-template-columns:1.6fr 1fr 1fr 1fr;
    gap:10px;
    padding:12px 14px;
    border-bottom:1px solid var(--line);
    align-items:center;
  }
  .funnel-row:last-child{border-bottom:none;}
  .funnel-row.head{
    background:var(--surface-2);
    font-size:.68rem;
    text-transform:uppercase;
    letter-spacing:.07em;
    color:var(--ink-soft);
    font-weight:600;
  }
  .funnel-row .etapa{font-weight:600; font-size:.88rem;}
  .funnel-row .etapa .sub{display:block; font-weight:400; color:var(--ink-soft); font-size:.75rem; margin-top:2px;}
  .funnel-row .num{font-variant-numeric:tabular-nums; font-size:.9rem;}
  @media (max-width:640px){
    .funnel-row{grid-template-columns:1.4fr repeat(3,1fr); font-size:.82rem; padding:10px;}
  }

  .comisiones-table{
    border:1px solid var(--line);
    background:var(--surface);
  }
  .comision-row{
    display:grid;
    grid-template-columns:1.7fr 1fr 1fr 1.2fr 1fr 1fr;
    gap:10px;
    padding:12px 14px;
    border-bottom:1px solid var(--line);
    align-items:center;
    cursor:pointer;
    font-size:.85rem;
  }
  .comision-row:last-child{border-bottom:none;}
  .comision-row:hover{background:var(--surface-2);}
  .comision-row.comision-head{
    cursor:default;
    background:var(--surface-2);
    font-size:.68rem;
    text-transform:uppercase;
    letter-spacing:.07em;
    color:var(--ink-soft);
    font-weight:600;
  }
  .comision-row.comision-head:hover{background:var(--surface-2);}
  .cr-comision, .cr-parte{font-variant-numeric:tabular-nums; font-weight:600;}
  .cr-seguimiento{display:flex; align-items:center; font-size:.78rem; color:var(--ink-soft);}
  .cr-seguimiento .bar{
    display:inline-block; width:36px; height:4px; background:var(--line);
    margin-right:6px; vertical-align:middle; position:relative; top:-1px;
  }
  .cr-seguimiento .bar i{display:block; height:100%; background:var(--ok);}
  @media (max-width:760px){
    .comision-row{grid-template-columns:1.4fr 1fr 1fr; font-size:.8rem;}
    .comision-row .cr-seguimiento, .comision-row .cr-escritura, .comision-row .cr-parte{display:none;}
    .comision-row.comision-head span:nth-child(3), .comision-row.comision-head span:nth-child(4), .comision-row.comision-head span:nth-child(6){display:none;}
  }

  .year-progress{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1px;
    background:var(--line);
    border:1px solid var(--line);
    margin-bottom:18px;
  }
  .year-progress .yp{
    background:var(--surface);
    padding:16px 16px 14px;
  }
  .year-progress .yp .label{font-size:.68rem; text-transform:uppercase; letter-spacing:.09em; color:var(--ink-soft);}
  .year-progress .yp .figures{
    display:flex;
    align-items:baseline;
    gap:6px;
    margin-top:6px;
    font-family:"Montserrat",sans-serif; font-weight:800;
    font-size:1.3rem;
  }
  .year-progress .yp .figures .of{font-family:"Montserrat",sans-serif; font-size:.82rem; color:var(--ink-soft); font-weight:500;}
  .year-progress .yp .pbar{height:5px; background:var(--surface-2); margin-top:10px; position:relative;}
  .year-progress .yp .pbar i{display:block; height:100%; background:var(--ok);}
  .year-progress .yp .pbar i.behind{background:var(--accent);}
  @media (max-width:820px){ .year-progress{grid-template-columns:1fr;} }
  .year-progress.cols4{grid-template-columns:repeat(4,1fr);}
  @media (max-width:900px){ .year-progress.cols4{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:520px){ .year-progress.cols4{grid-template-columns:1fr;} }
  .year-progress.cols3{grid-template-columns:repeat(3,1fr);}
  @media (max-width:900px){ .year-progress.cols3{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:520px){ .year-progress.cols3{grid-template-columns:1fr;} }
  .year-progress .yp.clickable{cursor:pointer;}
  .year-progress .yp.clickable:hover, .year-progress .yp.clickable:focus-visible{background:var(--surface-2); outline:none;}
  .stats-subhead{
    font-size:.72rem;
    text-transform:uppercase;
    letter-spacing:.07em;
    color:var(--accent);
    font-weight:600;
    margin:28px 0 10px;
  }

  details.historial-combo summary{
    cursor:pointer;
    font-family:"Montserrat",sans-serif;
    font-weight:800;
    font-size:1.2rem;
    list-style:none;
    display:flex;
    align-items:center;
    gap:8px;
    padding:2px 0;
  }
  details.historial-combo summary::-webkit-details-marker{ display:none; }
  details.historial-combo summary::before{
    content:"▸";
    color:var(--accent);
    display:inline-block;
    transition:transform .15s ease;
  }
  details.historial-combo[open] summary::before{ transform:rotate(90deg); }
  details.historial-combo .historial-combo-body{ margin-top:16px; }

  .month-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:10px;
  }
  @media (max-width:900px){ .month-grid{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:520px){ .month-grid{grid-template-columns:1fr;} }
  .month-card{
    background:var(--surface);
    border:1px solid var(--line);
    padding:12px 13px;
  }
  .month-card.current{border-color:var(--accent);}
  .month-card .mname{
    font-family:"Montserrat",sans-serif; font-weight:800;
    font-size:1rem;
    text-transform:capitalize;
    margin-bottom:8px;
    display:flex;
    justify-content:space-between;
    align-items:baseline;
  }
  .month-card .mname .tag{font-family:"Montserrat",sans-serif; font-size:.62rem; text-transform:uppercase; letter-spacing:.06em; color:var(--accent);}
  .month-card .mrow{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:8px;
    font-size:.78rem;
    color:var(--ink-soft);
    margin-bottom:6px;
  }
  .month-card .mrow input{
    width:72px;
    border:1px solid var(--line-strong);
    background:var(--bg);
    color:var(--ink);
    padding:3px 6px;
    font-size:.78rem;
    text-align:right;
    font-variant-numeric:tabular-nums;
  }
  .month-card .mrow .goal{font-size:.68rem; color:var(--ink-soft);}
  .month-card .pbar{height:4px; background:var(--surface-2); margin-top:2px;}
  .month-card .pbar i{display:block; height:100%; background:var(--ok);}

  .field-group{margin-bottom:16px;}
  .field-group .fg-title{
    font-size:.72rem;
    text-transform:uppercase;
    letter-spacing:.07em;
    color:var(--accent);
    font-weight:600;
    margin-bottom:8px;
  }
  .field-group .row2{margin-bottom:8px;}
  .post-firma-calc{
    font-size:.78rem;
    color:var(--ink-soft);
    background:var(--surface-2);
    border:1px solid var(--line);
    padding:8px 10px;
    margin:-2px 0 10px;
  }
  .post-firma-calc b{color:var(--ink); font-weight:600;}

  /* ---------- formación ---------- */
  .pilares-grid{
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:12px;
  }
  @media (max-width:900px){ .pilares-grid{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:520px){ .pilares-grid{grid-template-columns:1fr;} }
  .pilar-card{
    background:var(--surface);
    border:1px solid var(--line);
    border-top:3px solid var(--accent);
    padding:16px 15px;
  }
  .pilar-card .num{font-family:"Montserrat",sans-serif; font-weight:800; font-size:1.6rem; color:var(--accent);}
  .pilar-card h3{font-size:1.02rem; margin-top:4px;}
  .pilar-card p{font-size:.82rem; color:var(--ink-soft); margin-top:6px; line-height:1.4;}

  .modulos-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:14px;
  }
  @media (max-width:820px){ .modulos-grid{grid-template-columns:1fr;} }
  .modulo-card{
    background:var(--surface);
    border:1px solid var(--line);
    padding:16px 17px;
  }
  .modulo-card .mod-pilar{
    display:inline-block;
    font-size:.62rem;
    text-transform:uppercase;
    letter-spacing:.07em;
    padding:2px 8px;
    border-radius:2px;
    background:var(--info-bg);
    color:var(--info);
    margin-bottom:8px;
    margin-right:6px;
  }
  .modulo-card .mod-fuente{
    display:inline-block;
    font-size:.62rem;
    text-transform:uppercase;
    letter-spacing:.07em;
    padding:2px 8px;
    border-radius:2px;
    background:var(--warn-bg);
    color:var(--warn);
    margin-bottom:8px;
  }
  .modulo-card h3{font-size:1.04rem; margin-bottom:9px;}
  .modulo-card ul{margin:0; padding-left:18px; display:flex; flex-direction:column; gap:6px;}
  .modulo-card li{font-size:.84rem; line-height:1.42; color:var(--ink);}
  .modulo-card li b{font-weight:600;}
  .modulo-card li.cita{list-style:none; margin-left:-18px; font-style:italic; color:var(--ink-soft); border-left:2px solid var(--line-strong); padding-left:12px;}
  .modulo-card.hidden{display:none;}

  .mercado-card{
    background:var(--surface);
    border:1px solid var(--line);
    padding:18px 20px;
  }
  .mercado-card .mgrid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:14px;
    margin-bottom:16px;
  }
  @media (max-width:720px){ .mercado-card .mgrid{grid-template-columns:1fr;} }
  .mercado-card .mgrid .m{padding:10px 0; border-top:1px solid var(--line);}
  .mercado-card .mgrid .m .label{font-size:.68rem; text-transform:uppercase; letter-spacing:.07em; color:var(--ink-soft);}
  .mercado-card .mgrid .m .value{font-family:"Montserrat",sans-serif; font-weight:800; font-size:1.15rem; margin-top:4px;}
  .mercado-card p{font-size:.86rem; line-height:1.5; color:var(--ink); margin:0 0 10px;}
  .mercado-card p.quote{font-style:italic; color:var(--ink-soft); border-left:2px solid var(--accent); padding-left:14px;}
  .mercado-card p.fuente-linea{font-size:.7rem; color:var(--ink-soft); margin:12px 0 0; text-transform:uppercase; letter-spacing:.05em;}

  /* ---------- actividad (updates, estilo Monday) ---------- */
  .activity-block{
    border-top:1px solid var(--line);
    padding-top:14px;
    margin-top:2px;
  }
  .update-add{
    display:flex;
    flex-direction:column;
    gap:6px;
    margin-bottom:12px;
  }
  .update-add select{
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink);
    padding:6px 8px;
    font-size:.8rem;
    align-self:flex-start;
  }
  .update-add input[type="text"]{
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink);
    padding:8px 10px;
    font-size:.85rem;
    font-family:inherit;
  }
  .update-add textarea{
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink);
    padding:8px 10px;
    font-size:.85rem;
    min-height:56px;
    resize:vertical;
    font-family:inherit;
  }
  .updates-list{display:flex; flex-direction:column; gap:10px;}
  .updates-empty{font-size:.8rem; color:var(--ink-soft); padding:4px 0;}
  .update-item{
    display:flex;
    gap:9px;
    align-items:flex-start;
    padding-bottom:10px;
    border-bottom:1px solid var(--line);
  }
  .update-item:last-child{border-bottom:none; padding-bottom:0;}
  .update-item .ui-icon{font-size:.95rem; line-height:1.4;}
  .update-item .ui-body{flex:1; min-width:0;}
  .update-item .ui-head{display:flex; gap:8px; align-items:baseline;}
  .update-item .ui-tipo{font-size:.72rem; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--ink);}
  .update-item .ui-fecha{font-size:.72rem; color:var(--ink-soft);}
  .update-item .ui-texto{font-size:.84rem; margin-top:3px; line-height:1.4; white-space:pre-wrap;}
  .update-item.sys .ui-tipo, .update-item.sys .ui-icon{color:var(--ink-soft);}
  .update-item.sys .ui-texto{color:var(--ink-soft); font-style:italic;}

  /* ---------- contactos ---------- */
  .contacts-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:12px;
  }
  @media (max-width:980px){ .contacts-grid{grid-template-columns:repeat(2,1fr);} }
  @media (max-width:620px){ .contacts-grid{grid-template-columns:1fr;} }
  .contact-card{
    background:var(--surface);
    border:1px solid var(--line);
    padding:14px 15px;
    cursor:pointer;
    display:flex;
    flex-direction:column;
    gap:8px;
  }
  .contact-card:hover{border-color:var(--ink-soft);}
  .contact-card .cc-name{font-weight:600; font-size:.92rem;}
  .contact-card .cc-sub{font-size:.76rem; color:var(--ink-soft);}
  .contact-card .cc-chips{display:flex; flex-wrap:wrap; gap:5px;}
  .contact-card .cc-actions{align-self:flex-start;}
  .contact-card .cc-chip{
    font-size:.62rem;
    text-transform:uppercase;
    letter-spacing:.05em;
    padding:2px 7px;
    background:var(--surface-2);
    color:var(--ink-soft);
    border-radius:2px;
  }
  .contact-card .cc-last{font-size:.74rem; color:var(--ink-soft); border-top:1px solid var(--line); padding-top:7px; margin-top:2px;}
  .contact-card .cc-actions{display:flex; gap:6px;}
  .cc-prio{
    font-size:.62rem;
    text-transform:uppercase;
    letter-spacing:.05em;
    padding:2px 7px;
    border-radius:2px;
    font-weight:600;
  }
  .cc-prio.prioritario{background:var(--warn-bg); color:var(--warn);}
  .cc-prio.base{background:var(--info-bg); color:var(--info);}
  .cc-prio.nuevo{background:var(--ok-bg); color:var(--ok); border:1px solid var(--ok);}
  .cc-prio.baja{background:transparent; color:var(--ink-soft); border:1px solid var(--line-strong);}

  /* ---------- prospección (Betterplace) ---------- */
  .prospeccion-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:14px;
  }
  @media (max-width:820px){ .prospeccion-grid{grid-template-columns:1fr;} }
  .prospecto-card .pc-badges{
    margin-top:6px;
    font-size:.72rem;
    text-transform:uppercase;
    letter-spacing:.05em;
    color:var(--accent);
  }
  .prospecto-card .pc-msg{
    margin:9px 0 0;
    font-size:.8rem;
    color:var(--ink-soft);
    line-height:1.4;
    border-top:1px solid var(--line);
    padding-top:9px;
    white-space:pre-wrap;
  }

  #panelContacto{width:min(460px,100%);}
  .ctc-meta{font-size:.84rem; color:var(--ink-soft); display:flex; flex-direction:column; gap:2px; margin-top:-6px;}
  .ctc-actions{display:flex; gap:6px; margin-bottom:4px;}
  .ctc-apariciones-list{display:flex; flex-direction:column; gap:6px;}
  .aparicion-row{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:8px;
    padding:8px 10px;
    background:var(--surface-2);
    border:1px solid var(--line);
    font-size:.8rem;
    cursor:pointer;
  }
  .aparicion-row:hover{border-color:var(--ink-soft);}
  .aparicion-row .ar-tag{font-size:.66rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-soft);}

  /* ---------- mi día (bloques + seguimiento) ---------- */
  .daynav{
    display:flex;
    align-items:center;
    gap:10px;
  }
  .daynav-label{
    font-family:"Montserrat",sans-serif;
    font-weight:800;
    font-size:1.05rem;
    min-width:220px;
    text-align:center;
    text-transform:capitalize;
  }
  .bloques-grid{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:12px;
  }
  @media (max-width:1100px){ .bloques-grid{grid-template-columns:1fr 1fr;} }
  @media (max-width:820px){ .bloques-grid{grid-template-columns:1fr;} }
  .bloque-card{
    background:var(--surface);
    border:1px solid var(--line);
    border-left:3px solid var(--info);
    padding:14px 16px;
  }
  .bloque-card.done{ border-left-color:var(--ok); opacity:.72; }
  .bloque-head{
    display:flex;
    align-items:flex-start;
    gap:10px;
    margin-bottom:10px;
  }
  .bloque-head .bloque-icon{font-size:1.2rem; line-height:1.3;}
  .bloque-head > div:nth-child(2){flex:1; min-width:0;}
  .bloque-label{font-weight:700; font-size:.9rem;}
  .bloque-hint{font-size:.74rem; color:var(--ink-soft); margin-top:2px; line-height:1.35;}
  .bloque-check{
    display:flex;
    align-items:center;
    gap:5px;
    font-size:.7rem;
    text-transform:uppercase;
    letter-spacing:.05em;
    color:var(--ink-soft);
    white-space:nowrap;
    cursor:pointer;
  }
  .bloque-check input{width:auto;}
  .bloque-resumen{
    font-size:.72rem;
    color:var(--ink-soft);
    margin-bottom:10px;
    padding-bottom:10px;
    border-bottom:1px solid var(--line);
  }
  .bloque-resumen b{color:var(--ink); font-weight:700;}
  .tareas-list{display:flex; flex-direction:column; gap:6px; margin-bottom:8px;}
  .tarea-row{display:flex; align-items:center; gap:6px;}
  .tarea-row input[type="text"]{
    flex:1;
    min-width:0;
    border:1px solid var(--line-strong);
    background:var(--surface-2);
    color:var(--ink);
    padding:6px 8px;
    font-size:.82rem;
    font-family:inherit;
  }
  .tarea-row.hecho input[type="text"]{ color:var(--ink-soft); text-decoration:line-through; }
  .tarea-row select{
    flex:none;
    width:74px;
    border:1px solid var(--line-strong);
    background:var(--surface-2);
    color:var(--ink);
    padding:6px 4px;
    font-size:.74rem;
    font-family:inherit;
  }
  .tarea-del{
    flex:none;
    background:none;
    border:none;
    color:var(--ink-soft);
    font-size:.9rem;
    cursor:pointer;
    padding:2px 4px;
    line-height:1;
  }
  .tarea-del:hover{color:var(--warn);}
  .bloque-add{
    background:none;
    border:1px dashed var(--line-strong);
    color:var(--ink-soft);
    font-size:.76rem;
    padding:6px 10px;
    width:100%;
    cursor:pointer;
    font-family:inherit;
  }
  .bloque-add:hover{color:var(--ink); border-color:var(--ink-soft);}

  .dia-resumen{
    margin-bottom:16px;
  }
  .dia-resumen .dr-head{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    font-size:.8rem;
    color:var(--ink-soft);
    margin-bottom:6px;
    flex-wrap:wrap;
    gap:6px;
  }
  .dia-resumen .dr-head b{color:var(--ink); font-family:"Montserrat",sans-serif; font-weight:800;}
  .dr-bar{
    display:flex;
    height:8px;
    width:100%;
    background:var(--surface-2);
    overflow:hidden;
    border:1px solid var(--line);
  }
  .dr-seg{height:100%;}
  .dr-legend{
    display:flex;
    flex-wrap:wrap;
    gap:14px;
    margin-top:7px;
    font-size:.72rem;
    color:var(--ink-soft);
  }
  .dr-legend .dot{display:inline-block; width:8px; height:8px; margin-right:5px; border-radius:1px;}

  /* ---------- las 5 energías ---------- */
  .energias-card{
    background:var(--surface);
    border:1px solid var(--line);
    padding:14px 16px;
    margin-bottom:16px;
  }
  .energias-head{
    display:flex;
    justify-content:space-between;
    align-items:baseline;
    margin-bottom:10px;
  }
  .energias-head .titulo{font-family:"Montserrat",sans-serif; font-weight:800; font-size:.92rem;}
  .energias-head .pct{font-size:.8rem; color:var(--ink-soft); font-variant-numeric:tabular-nums;}
  .energias-list{display:flex; flex-direction:column; gap:9px;}

  /* ---------- recordatorios ---------- */
  .recordatorio-add{
    display:flex;
    gap:8px;
    flex-wrap:wrap;
    margin-bottom:14px;
  }
  .recordatorio-add input[type="text"]{
    flex:1;
    min-width:220px;
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink);
    padding:8px 10px;
    font-size:.85rem;
    font-family:inherit;
  }
  .recordatorio-add select{
    border:1px solid var(--line-strong);
    background:var(--surface);
    color:var(--ink);
    padding:8px;
    font-size:.82rem;
  }
  .recordatorios-list{display:flex; flex-direction:column;}
  .recordatorios-empty{font-size:.8rem; color:var(--ink-soft); padding:4px 0;}
  .recordatorio-row{
    display:flex;
    align-items:center;
    gap:10px;
    padding:9px 0;
    border-bottom:1px solid var(--line);
  }
  .recordatorio-row:last-child{border-bottom:none;}
  .recordatorio-row .rr-texto{flex:1; min-width:0; font-size:.86rem;}
  .recordatorio-row.manana{opacity:.6;}
  .rr-badge{
    font-size:.6rem;
    text-transform:uppercase;
    letter-spacing:.06em;
    padding:2px 7px;
    white-space:nowrap;
    flex:none;
  }
  .rr-badge.atrasado{background:var(--warn-bg); color:var(--warn);}
  .rr-badge.manana{background:var(--info-bg); color:var(--info);}

  .fechas-clave-list{display:flex; flex-direction:column;}
  .fecha-clave-item{
    display:flex;
    align-items:center;
    gap:10px;
    padding:10px 12px;
    border-bottom:1px solid var(--line);
    font-size:.86rem;
    cursor:pointer;
  }
  .fecha-clave-item:last-child{border-bottom:none;}
  .fecha-clave-item:hover{background:var(--surface-2);}
  .fecha-clave-item .fc-icon{font-size:1.1rem; flex:none;}
  .fecha-clave-item .fc-texto{flex:1; min-width:0;}

  /* ---------- panel (form) ---------- */
  .overlay{
    position:fixed; inset:0;
    background:var(--scrim);
    display:flex;
    justify-content:flex-end;
    z-index:40;
  }
  .overlay[hidden]{display:none;}
  .panel{
    width:min(420px,100%);
    height:100%;
    background:var(--surface);
    border-left:1px solid var(--line);
    padding:24px 22px 22px;
    overflow-y:auto;
    display:flex;
    flex-direction:column;
    gap:14px;
  }
  .panel h3{font-size:1.3rem;}
  .field{display:flex; flex-direction:column; gap:5px;}
  .field label{font-size:.72rem; text-transform:uppercase; letter-spacing:.06em; color:var(--ink-soft);}
  .field input, .field select, .field textarea{
    border:1px solid var(--line-strong);
    background:var(--bg);
    color:var(--ink);
    padding:8px 10px;
    font-size:.88rem;
    font-family:inherit;
  }
  .field textarea{resize:vertical; min-height:56px;}
  .row2{display:grid; grid-template-columns:1fr 1fr; gap:10px;}
  .panel-actions{
    margin-top:6px;
    display:flex;
    gap:10px;
  }
  .panel-close{
    align-self:flex-end;
    background:none; border:none; color:var(--ink-soft);
    font-size:1.2rem; cursor:pointer; line-height:1; padding:4px;
  }
  .panel.wide{width:min(640px,100%);}

  .argum-pilares{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:10px;
  }
  .argum-pilar{
    border:1px solid var(--line);
    background:var(--surface-2);
    padding:12px 13px;
  }
  .argum-pilar .ap-titulo{font-weight:700; font-size:.85rem; margin-bottom:4px; color:var(--accent);}
  .argum-pilar .ap-texto{font-size:.8rem; color:var(--ink-soft); line-height:1.4;}
  @media (max-width:520px){ .argum-pilares{grid-template-columns:1fr;} }

  .argum-objeciones{display:flex; flex-direction:column; gap:12px;}
  .argum-objecion{border-left:3px solid var(--accent); padding:4px 0 4px 12px;}
  .argum-objecion .ao-pregunta{font-weight:600; font-size:.85rem; font-style:italic; color:var(--ink);}
  .argum-objecion .ao-respuesta{font-size:.83rem; color:var(--ink-soft); margin-top:5px; line-height:1.5;}

  .argum-cierre{
    font-size:.85rem;
    font-style:italic;
    color:var(--ink);
    border-top:1px solid var(--line);
    padding-top:14px;
    margin-top:4px;
  }

  footer{
    margin-top:56px;
    padding-top:18px;
    border-top:1px solid var(--line);
    font-size:.78rem;
    color:var(--ink-soft);
    display:flex;
    flex-wrap:wrap;
    justify-content:space-between;
    gap:8px;
  }
  .sync-note{font-size:.72rem; color:var(--ink-soft);}

  @media (prefers-reduced-motion:no-preference){
    .card, .event, .btn, .chip{transition:background .15s ease, border-color .15s ease, color .15s ease;}
  }

  /* ---------- acceso: puerta de login ---------- */
  .auth-gate{
    position:relative; isolation:isolate; overflow:hidden;
    min-height:100vh; min-height:100dvh;
    margin-inline:-20px; padding:32px 20px;
    display:flex; align-items:center; justify-content:center;
    background:
      radial-gradient(90% 60% at 50% 0%, var(--auth-glow-1), transparent 70%),
      radial-gradient(70% 50% at 85% 100%, var(--auth-glow-2), transparent 70%),
      var(--bg);
  }
  .auth-gate[hidden]{display:none;}
  .auth-bg{position:absolute; inset:0; z-index:-1; pointer-events:none; overflow:hidden;}
  .auth-dots{
    position:absolute; inset:-30px;
    background-image:radial-gradient(var(--auth-dot) 1px, transparent 1.4px);
    background-size:28px 28px;
    -webkit-mask-image:radial-gradient(75% 65% at 50% 40%, #000, transparent 100%);
            mask-image:radial-gradient(75% 65% at 50% 40%, #000, transparent 100%);
    will-change:transform;
  }
  .auth-skyline{
    position:absolute; left:0; bottom:0; width:100%; height:clamp(150px,34vh,300px);
    opacity:.34;
  }
  .auth-skyline path{stroke-dasharray:1; stroke-dashoffset:0;}
  .auth-balloon{
    position:absolute; top:100%; right:9%;
    height:clamp(200px,30vh,240px); width:auto; aspect-ratio:2/3;
    opacity:0; pointer-events:none;
  }
  .auth-card{
    position:relative;
    width:100%; max-width:430px;
    background:var(--auth-card-bg);
    border:1px solid var(--line-strong);
    box-shadow:var(--auth-shadow);
    padding:38px 30px 30px;
    display:flex; flex-direction:column; align-items:center;
    gap:12px; text-align:center;
  }
  .auth-card::before{
    content:""; position:absolute; left:-1px; right:-1px; top:-1px; height:3px;
    background:linear-gradient(90deg, var(--accent) 0 33.4%, var(--ink) 33.4% 66.6%, var(--info) 66.6% 100%);
  }
  .auth-logo{display:block; height:68px; width:auto; margin-bottom:4px;}
  .auth-logo:not([src]){visibility:hidden;}
  .auth-card h1{font-size:clamp(1.6rem,6.5vw,2rem); line-height:1.05;}
  .auth-sub{margin:0 0 10px; color:var(--auth-txt-1); font-size:.86rem; line-height:1.45;}
  .auth-btn{
    appearance:none; position:relative; overflow:hidden;
    width:100%; min-height:48px; padding:11px 16px;
    display:inline-flex; align-items:center; justify-content:center; gap:12px;
    background:var(--gbtn-bg); color:var(--gbtn-ink);
    border:1px solid var(--gbtn-line); border-radius:4px;
    font-family:inherit; font-size:.92rem; font-weight:600; letter-spacing:.01em;
    cursor:pointer;
    box-shadow:var(--gbtn-shadow);
  }
  .auth-btn::after{
    content:""; position:absolute; top:0; bottom:0; left:0; width:40%;
    background:linear-gradient(100deg, transparent, var(--gbtn-sheen), transparent);
    transform:translateX(-140%); pointer-events:none;
  }
  .auth-btn:hover{background:var(--gbtn-hover); border-color:var(--gbtn-blue);}
  .auth-btn:hover::after{transform:translateX(340%);}
  .auth-btn:active{background:var(--gbtn-active);}
  .auth-btn:focus-visible{outline:3px solid var(--info-ink); outline-offset:3px;}
  .auth-btn:disabled{opacity:.7; cursor:progress;}
  .auth-btn[hidden]{display:none;}
  .auth-g{width:20px; height:20px; flex:none;}
  .auth-solo{margin:6px 0 0; color:var(--auth-txt-2); font-size:.82rem; font-weight:600; line-height:1.4;}
  .auth-primera{margin:0; color:var(--auth-txt-3); font-size:.78rem; line-height:1.5;}
  .auth-note{margin:8px 0 0; padding-top:12px; border-top:1px solid var(--line); width:100%; color:var(--auth-txt-4); font-size:.7rem; line-height:1.45;}
  .auth-msg{
    margin:0; width:100%;
    border:1px solid var(--accent);
    color:var(--ink);
    background:var(--danger-tint);
    padding:10px 12px;
    font-size:.84rem; font-weight:600; line-height:1.45;
  }
  @media (max-width:430px){
    .auth-card{padding:32px 20px 24px;}
    .auth-skyline{height:clamp(120px,26vh,220px);}
    .auth-balloon{right:4%; height:140px;}
  }

  @media (prefers-reduced-motion:no-preference){
    .auth-card{animation:authIn .8s cubic-bezier(.2,.7,.2,1) both;}
    .auth-skyline path{stroke-dashoffset:1; animation:authDraw 2.5s ease-out forwards;}
    .auth-skyline path:nth-child(2){animation-delay:.1s}
    .auth-skyline path:nth-child(3){animation-delay:.2s}
    .auth-skyline path:nth-child(4){animation-delay:.3s}
    .auth-skyline path:nth-child(5){animation-delay:.4s}
    .auth-skyline path:nth-child(6){animation-delay:.5s}
    .auth-skyline path:nth-child(7){animation-delay:.6s}
    .auth-skyline path:nth-child(8){animation-delay:.7s}
    .auth-skyline path:nth-child(9){animation-delay:.8s}
    .auth-skyline path:nth-child(10){animation-delay:.9s}
    .auth-skyline path:nth-child(11){animation-delay:1s}
    .auth-skyline path:nth-child(12){animation-delay:1.1s}
    .auth-balloon{animation:authRise 70s linear infinite;}
    .auth-btn::after{transition:transform .7s ease;}
  }
  @keyframes authIn{from{opacity:0; transform:translate3d(0,18px,0);} to{opacity:1; transform:none;}}
  @keyframes authDraw{to{stroke-dashoffset:0;}}
  @keyframes authRise{
    0%{transform:translate3d(0,-14vh,0); opacity:0;}
    6%{opacity:.95;}
    92%{opacity:.95;}
    100%{transform:translate3d(0,-125vh,0); opacity:0;}
  }
  @media (prefers-reduced-motion:reduce){
    .auth-balloon{top:auto; bottom:42%; opacity:.95;}
  }

  /* ---------- sesión en la cabecera ---------- */
  .sesion-box{
    margin-top:10px;
    display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:8px;
  }
  .sesion-email{font-size:.76rem; color:var(--ink-soft); overflow-wrap:anywhere;}
  .sesion-btn{padding:6px 12px; font-size:.74rem;}
  .sync-note.warn{color:var(--accent); font-weight:600;}

  /* ---------- Ajustes → mis conexiones ---------- */
  .conexiones-lista{border:1px solid var(--line); background:var(--surface); margin-bottom:14px;}
  .conexion-row{
    display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between;
    gap:10px 16px;
    padding:12px 14px;
    border-bottom:1px solid var(--line);
  }
  .conexion-row:last-child{border-bottom:none;}
  .conexion-info{display:flex; flex-direction:column; gap:2px; min-width:0;}
  .conexion-nombre{font-weight:600; font-size:.9rem;}
  .conexion-estado{font-size:.8rem; color:var(--ink-soft); overflow-wrap:anywhere;}
  .conexion-row.conectada .conexion-estado{color:var(--ink);}
  .conexion-row.conectada .conexion-estado::before{content:"● "; color:var(--zona-comercial);}
  .conexion-acciones{display:flex; flex-wrap:wrap; gap:8px;}
  .conexion-acciones .btn:disabled{opacity:.45; cursor:not-allowed;}
  .conexion-acciones [hidden]{display:none;}
  /* Copias de seguridad en Drive (solo responsables) */
  .copias-drive{margin-top:22px;}
  .copias-drive .conexion-info [hidden]{display:none;}
  .copias-drive-ultima.warn{color:var(--accent); font-weight:600;}

  /* ---------- Ajustes → usuarios ---------- */
  .ajustes-nota{
    margin:0 0 18px;
    padding:12px 14px;
    border-left:3px solid var(--accent);
    background:var(--surface);
    font-size:.85rem; line-height:1.5;
  }
  .ajustes-form{
    display:grid;
    grid-template-columns:2fr 1.6fr 1fr auto;
    gap:10px;
    align-items:end;
    margin-bottom:22px;
  }
  .ajustes-form .btn{justify-content:center;}
  .usuarios-table{border:1px solid var(--line); background:var(--surface);}
  .usuario-row{
    display:grid;
    grid-template-columns:2fr 1.5fr 1.1fr .9fr .8fr 130px;
    gap:10px;
    padding:10px 14px;
    border-bottom:1px solid var(--line);
    align-items:center;
    font-size:.85rem;
  }
  .usuario-row:last-child{border-bottom:none;}
  .usuario-row.usuario-head{
    background:var(--surface-2);
    font-size:.68rem; text-transform:uppercase; letter-spacing:.07em;
    color:var(--ink-soft); font-weight:600;
  }
  .usuario-row.inactivo .u-email, .usuario-row.inactivo .u-nombre{color:var(--ink-soft);}
  .usuario-row .u-email{overflow-wrap:anywhere; font-weight:600;}
  .usuario-row .u-alta{font-variant-numeric:tabular-nums; color:var(--ink-soft);}
  .usuario-row .u-acciones{text-align:right;}
  .usuario-row select{
    width:100%;
    border:1px solid var(--line-strong); background:var(--bg); color:var(--ink);
    padding:6px 8px; font-family:inherit; font-size:.82rem;
  }
  .usuario-row .u-estado.activo{border-color:var(--ink-soft); color:var(--ink);}
  .usuario-row button:disabled, .usuario-row select:disabled{opacity:.45; cursor:not-allowed;}
  .usuarios-vacio{margin:0; padding:14px; color:var(--ink-soft); font-size:.85rem;}
  .usuarios-sub{margin:22px 0 10px; font-size:.95rem; font-weight:700;}
  .usuarios-bloque .usuarios-sub{margin-top:8px;}
  .solicitud-row{
    display:grid; grid-template-columns:2fr 1.3fr 1fr auto; gap:10px; align-items:center;
    padding:10px 14px; border-bottom:1px solid var(--line); font-size:.85rem;
  }
  .solicitud-row:last-child{border-bottom:none;}
  .solicitud-row .s-quien{display:flex; flex-direction:column; gap:2px; overflow-wrap:anywhere;}
  .solicitud-row .s-email{color:var(--ink-soft);}
  .solicitud-row .s-fecha{color:var(--ink-soft); font-variant-numeric:tabular-nums;}
  .solicitud-row select{
    width:100%; border:1px solid var(--line-strong); background:var(--bg); color:var(--ink);
    padding:6px 8px; font-family:inherit; font-size:.82rem;
  }
  .solicitud-row .s-acciones{display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end;}
  .usuario-row .u-estado{width:auto;}
  .u-nombre-celda{display:flex; align-items:center; gap:6px; min-width:0;}
  .u-nombre-txt, .s-nombre-txt{overflow-wrap:anywhere;}
  .btn-editar-nombre, .btn-editar-email{
    border:1px solid var(--line-strong); background:transparent; color:var(--ink-soft);
    padding:2px 7px; font-size:.85rem; line-height:1.2; cursor:pointer; flex:none;
  }
  .btn-editar-nombre:hover, .btn-editar-email:hover{color:var(--ink); border-color:var(--ink);}
  .nombre-edit{display:flex; flex-direction:column; gap:6px; width:100%; min-width:0;}
  .nombre-edit input{
    width:100%; box-sizing:border-box; border:1px solid var(--line-strong); background:var(--bg); color:var(--ink);
    padding:6px 8px; font-family:inherit; font-size:.85rem;
  }
  .nombre-edit .ne-btns{display:flex; gap:6px; flex-wrap:wrap;}
  .nombre-edit .ne-ayuda{font-size:.72rem; color:var(--ink-soft); margin:0;}
  .tab-badge{
    display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box;
    min-width:18px; height:18px; padding:0 5px; margin-left:6px; border-radius:9px;
    background:var(--warn-bg); color:var(--warn-ink); border:1px solid var(--warn);
    font-size:.68rem; font-weight:700; line-height:1; font-variant-numeric:tabular-nums;
  }
  .auth-estado{margin-top:6px; width:100%; text-align:left;}
  .auth-estado-tit{margin:0 0 8px; font-size:1rem;}
  .auth-estado-txt{margin:0 0 16px; line-height:1.5;}
  .auth-estado-acc{display:flex; gap:10px; flex-wrap:wrap;}
  @media (max-width:760px){
    .ajustes-form{grid-template-columns:1fr;}
    .usuario-row{grid-template-columns:1fr 1fr; row-gap:6px;}
    .usuario-row.usuario-head{display:none;}
    .usuario-row .u-email{grid-column:1 / -1;}
    .usuario-row .u-acciones{text-align:left;}
    .solicitud-row{grid-template-columns:1fr 1fr;}
    .solicitud-row .s-quien, .solicitud-row .s-acciones{grid-column:1 / -1; justify-content:flex-start;}
  }

  /* ---------- Ajustes → copia de seguridad ---------- */
  .backup-acciones{display:flex; flex-wrap:wrap; gap:10px; margin-bottom:16px;}
  .backup-table{border:1px solid var(--line); background:var(--surface); margin-bottom:14px;}
  .backup-row{
    display:grid;
    grid-template-columns:2fr 1fr 1fr 1fr;
    gap:10px;
    padding:10px 14px;
    border-bottom:1px solid var(--line);
    align-items:center;
    font-size:.85rem;
  }
  .backup-row:last-child{border-bottom:none;}
  .backup-row.head{
    background:var(--surface-2);
    font-size:.68rem; text-transform:uppercase; letter-spacing:.07em;
    color:var(--ink-soft); font-weight:600;
  }
  .backup-row.mal{color:var(--accent); font-weight:600;}
  .backup-progreso{margin:0 0 14px; font-size:.85rem; color:var(--ink-soft);}
  @media (max-width:760px){
    .backup-row{grid-template-columns:1fr 1fr;}
    .backup-row.head{display:none;}
  }

  .bp-estado.warn{color:var(--accent); font-weight:600;}

/* =====================================================================
   UI: toasts apilables, skeletons, estados vacíos, progreso y badges
   (vanilla; misma paleta RE/MAX y Montserrat). Inspirado solo en el
   comportamiento de 000h; código propio.
   ===================================================================== */
/* ---------- toasts ---------- */
.toast-stack{
  position:fixed; left:50%; bottom:24px; transform:translateX(-50%);
  z-index:100; width:min(92vw, 440px);
  display:flex; flex-direction:column; pointer-events:none;
}
.toast-region{display:flex; flex-direction:column; gap:8px;}
.toast-region:empty{display:none;}
.toast-region + .toast-region:not(:empty){margin-top:8px;}
.toast{
  position:relative; transform:none; left:auto; bottom:auto;
  max-width:none; width:100%; box-sizing:border-box;
  pointer-events:auto;
  display:flex; align-items:flex-start; gap:10px;
  padding:11px 10px 11px 14px; text-align:left;
  border-left:3px solid var(--toast-c, var(--line-strong));
}
.toast-ok{--toast-c:var(--zona-comercial-ink);}
.toast-aviso{--toast-c:var(--aviso);}
.toast-error{--toast-c:var(--warn-ink);}
.toast-icon{flex:none; width:18px; height:18px; margin-top:1px; color:var(--toast-c);}
.toast-msg{flex:1; min-width:0; line-height:1.4; overflow-wrap:anywhere;}
.toast-close{
  flex:none; appearance:none; border:none; background:transparent; color:var(--ink-soft);
  width:24px; height:24px; padding:4px; cursor:pointer; margin:-2px 0 0;
}
.toast-close svg{width:100%; height:100%; display:block;}
.toast-close:hover{color:var(--ink); background:var(--surface-2);}
.toast-close:focus-visible{outline:2px solid var(--ink); outline-offset:1px;}
@media (prefers-reduced-motion:no-preference){
  .toast{animation:toast-in .22s ease-out both;}
  .toast.saliendo{animation:toast-out .2s ease-in forwards;}
  @keyframes toast-in{from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:none;}}
  @keyframes toast-out{from{opacity:1; transform:none;} to{opacity:0; transform:translateY(6px);}}
}

/* ---------- skeletons ---------- */
.skeleton-block{display:flex; flex-direction:column; gap:10px; width:100%;}
.skeleton-line{
  display:block; height:12px; width:100%; border-radius:3px;
  background:var(--surface-2);
}
.skeleton-line.corta{width:60%;}
.empty-state.is-skeleton{border-style:solid; border-color:var(--line); padding:18px; text-align:left;}
.es-compacto.is-skeleton .skeleton-line:nth-child(n+2){display:none;}
.is-loading .stat .value{
  color:transparent; border-radius:3px; width:min(100%, 7ch); min-height:1.2em;
  background:var(--surface-2);
}
@media (prefers-reduced-motion:no-preference){
  .skeleton-line, .is-loading .stat .value{
    background-image:linear-gradient(90deg, transparent 0, var(--shimmer) 50%, transparent 100%);
    background-size:200% 100%; background-repeat:no-repeat;
    animation:skeleton-shimmer 1.4s ease-in-out infinite;
  }
  @keyframes skeleton-shimmer{from{background-position:200% 0;} to{background-position:-200% 0;}}
}

/* ---------- estados vacíos ---------- */
.empty-state{
  display:flex; flex-direction:column; align-items:center; gap:10px; line-height:1.5;
}
.empty-state .es-icon{width:30px; height:30px; color:var(--ink-soft); opacity:.85;}
.empty-state .es-globo{display:block; height:120px; width:80px; opacity:.95;}
.empty-state .es-text{max-width:52ch;}
.empty-state .es-action{margin-top:4px;}
.empty-state.es-compacto{
  flex-direction:row; justify-content:flex-start; text-align:left; gap:10px;
  padding:10px 12px; border-style:solid; border-color:var(--line); font-size:.8rem;
}
.empty-state.es-compacto .es-icon{width:18px; height:18px; flex:none;}
.empty-state.es-compacto .es-action{margin:0 0 0 auto; flex:none;}

/* ---------- barras de progreso ---------- */
.pbar i{transition:width .6s cubic-bezier(.2,.7,.2,1);}
@media (prefers-reduced-motion:reduce){ .pbar i{transition:none;} }

/* ---------- badges (etapas / zonas / tipos) ---------- */
.zona, .event .tipo-pill, .card .zona{
  display:inline-flex; align-items:center; box-sizing:border-box;
  height:var(--badge-h); padding:0 8px; border-radius:var(--badge-r);
  font-size:.64rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  line-height:1; white-space:nowrap; border:1px solid transparent; vertical-align:middle;
}
.event .tipo-pill{margin-bottom:4px;}
.zona.norte, .tipo-cita{background:var(--info-bg); color:var(--info-ink); border-color:var(--info-line);}
.zona.collection, .tipo-guardia{background:var(--warn-bg); color:var(--warn-ink); border-color:var(--warn-line);}
.zona.commercial{background:var(--zona-comercial-bg); color:var(--zona-comercial-ink); border-color:var(--zona-comercial-line);}
.zona.alquileres{background:var(--zona-alquiler-bg); color:var(--zona-alquiler-ink); border-color:var(--zona-alquiler-line);}
.tipo-firma{border-color:var(--line-strong);}
.tipo-tarea{border-color:var(--line);}
.tipo-gcal{border-color:var(--line-strong);}

/* =====================================================================
   Interacción tipo "Pulso" con la paleta RE/MAX: tema Noche/Día, botones
   píldora, selector segmentado, filtros en píldora, etiquetas de fecha,
   botón ✓, cabecera de Mi día y tarjetas de Urgente / Los que más esperan.
   Todo con tokens de :root: sirve igual en Noche y en Día.
   ===================================================================== */
.sr-only{
  position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden;
  clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap; border:0;
}

/* ---------- tema: botón y transición suave ---------- */
.tema-btn{gap:7px; border-radius:999px;}
.tema-ico{flex:none; display:block;}
.tema-btn[aria-pressed="true"] .ico-sol{display:none;}
.tema-btn[aria-pressed="false"] .ico-luna{display:none;}
.tema-btn-gate{position:absolute; top:16px; right:16px; z-index:3; padding:6px 12px; font-size:.74rem;}
.sesion-box .tema-btn{padding:6px 12px;}
@media (prefers-reduced-motion:no-preference){
  html.tema-anim, html.tema-anim *, html.tema-anim *::before, html.tema-anim *::after{
    transition:background-color .35s ease, color .35s ease, border-color .35s ease,
               fill .35s ease, stroke .35s ease, box-shadow .35s ease !important;
  }
}
.auth-skyline, .auth-balloon{color:var(--ink);}
.logo-chip, .auth-logo{background:var(--logo-plate); border-radius:12px;}
#appRoot[data-vista="plandia"] .saludo-usuario{display:none;} /* Mi día ya lleva el saludo grande */

/* ---------- botón principal en píldora (.btn-pill) ---------- */
.btn-pill{
  position:relative;
  border-radius:999px;
  min-height:40px;
  padding:9px 50px 9px 20px;
  border-color:var(--ink);
}
.btn-pill::after{
  content:""; position:absolute; right:5px; top:50%; width:30px; height:30px; margin-top:-15px;
  border-radius:50%; background:var(--accent);
}
.btn-pill::before{
  content:""; position:absolute; right:13px; top:50%; width:14px; height:14px; margin-top:-7px; z-index:1;
  background:var(--accent-ink);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12h15M13 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12h15M13 6l6 6-6 6' fill='none' stroke='%23000' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
}
.btn-pill:hover, .btn-pill:focus-visible, .btn-pill:active{
  background:var(--ink); border-color:var(--ink); color:var(--bg);
}
.btn-pill:hover, .btn-pill:focus-visible{box-shadow:var(--shadow);}
.btn-pill:hover::before, .btn-pill:focus-visible::before{transform:translateX(4px);}
.btn-pill:active{transform:scale(.98);}
.btn-pill:disabled{opacity:.5; cursor:not-allowed; box-shadow:none; transform:none;}
.btn-pill:disabled::before{transform:none;}
@media (prefers-reduced-motion:no-preference){
  .btn-pill{transition:background .15s ease, border-color .15s ease, color .15s ease, box-shadow .2s ease, transform .12s ease;}
  .btn-pill::before{transition:transform .2s cubic-bezier(.2,.7,.2,1);}
}
.panel-actions .btn-pill{flex:1 1 auto; justify-content:flex-start;}

/* ---------- selector segmentado con indicador deslizante ---------- */
.filters.seg{
  position:relative;
  display:inline-flex; flex-wrap:nowrap; gap:0;
  width:fit-content; max-width:100%; overflow-x:auto;
  padding:4px;
  background:var(--surface-2);
  border:1px solid var(--line);
  border-radius:999px;
}
.seg .chip{
  position:relative; z-index:1;
  background:transparent; border:1px solid transparent; border-radius:999px;
  padding:8px 18px; font-size:.8rem; font-weight:600; white-space:nowrap;
  color:var(--ink-soft);
}
.seg .chip:hover{color:var(--ink);}
.seg .chip.active{background:transparent; border-color:transparent; color:var(--bg);}
.seg:not(.seg-ready) .chip.active{background:var(--ink);} /* respaldo hasta medir el indicador */
.seg-ind{
  position:absolute; z-index:0; top:4px; bottom:4px; left:4px; width:0;
  border-radius:999px; background:var(--ink); pointer-events:none;
}
@media (prefers-reduced-motion:no-preference){
  .seg.seg-anim .seg-ind{transition:transform .28s cubic-bezier(.2,.7,.2,1), width .28s cubic-bezier(.2,.7,.2,1);}
  .seg.seg-anim .chip{transition:color .28s ease;}
}

/* ---------- filtros en píldora con icono y contador ---------- */
.filters .chip{
  display:inline-flex; align-items:center; gap:6px;
  border-radius:999px; padding:6px 14px;
}
.chip .chip-ico{width:14px; height:14px; flex:none;}
.chip .chip-n{
  min-width:18px; padding:1px 6px; border-radius:999px; text-align:center;
  font-size:.66rem; font-weight:700; font-variant-numeric:tabular-nums; line-height:1.4;
  background:var(--surface-2); color:var(--ink-soft);
}
.chip.active .chip-n{background:var(--bg); color:var(--ink);}
/* Filtro de líneas plegable (móvil, David 06-10-2026): el botón solo se ve ≤ 700 px */
.lineas-btn{display:none;}
.lineas-btn .lineas-flecha{font-size:.8rem; margin-left:2px; transition:transform .2s ease;}
.lineas-btn[aria-expanded="true"] .lineas-flecha{transform:rotate(180deg);}

/* ---------- etiquetas de las tarjetas: fecha relativa y "Esperando N días" ---------- */
.card-tags{display:flex; flex-wrap:wrap; gap:6px; margin-top:8px;}
.fecha-rel, .espera, .urg-tipo{
  display:inline-flex; align-items:center; gap:5px; box-sizing:border-box;
  height:22px; padding:0 10px; border-radius:999px;
  font-size:.68rem; font-weight:700; letter-spacing:.02em; line-height:1; white-space:nowrap;
  border:1px solid var(--line-strong); color:var(--ink-soft); background:var(--surface-2);
}
.fecha-rel::before{content:""; width:6px; height:6px; border-radius:50%; background:currentColor; flex:none;}
.fecha-rel.vencida{color:var(--warn-ink); background:var(--warn-bg); border-color:var(--warn-line);}
.fecha-rel.hoy{color:var(--info-ink); background:var(--info-bg); border-color:var(--info-line);}
.fecha-rel.manana{color:var(--ink); background:var(--ok-bg);}
.espera.alta{color:var(--warn-ink); background:var(--warn-bg); border-color:var(--warn-line);}
/* Reloj de arena delante de "Esperando N días" (icono en máscara: toma el color del texto). */
.espera::before{
  content:""; width:11px; height:11px; flex:none; background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 2h12M6 22h12M7 2v4a5 5 0 0 0 10 0V2M7 22v-4a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 2h12M6 22h12M7 2v4a5 5 0 0 0 10 0V2M7 22v-4a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") center/contain no-repeat;
}
/* 7 días o más: píldora roja rellena que "late" con un halo y el reloj se da la vuelta. */
.espera.alta{color:#fff; background:var(--accent-hover); border-color:var(--accent-hover); position:relative;}
@media (prefers-reduced-motion:no-preference){
  .espera.alta{animation:esperaHalo 2.4s ease-out infinite;}
  .espera.alta::before{animation:esperaReloj 3.2s ease-in-out infinite;}
}
@keyframes esperaHalo{
  0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 55%, transparent);}
  70%{box-shadow:0 0 0 7px color-mix(in srgb, var(--accent) 0%, transparent);}
  100%{box-shadow:0 0 0 0 transparent;}
}
@keyframes esperaReloj{0%,70%{transform:rotate(0);} 85%,100%{transform:rotate(180deg);}}

/* ---------- botón circular ✓ ---------- */
.btn-check{
  appearance:none; flex:none; padding:0; cursor:pointer;
  width:32px; height:32px; border-radius:50%;
  display:inline-flex; align-items:center; justify-content:center;
  border:1.5px solid var(--line-strong); background:var(--surface); color:var(--ink);
}
.btn-check .check-ico{width:16px; height:16px; display:block; stroke-width:2.2;}
.btn-check:hover, .btn-check:focus-visible{background:var(--ink); border-color:var(--ink); color:var(--bg);}
.btn-check:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
.btn-check:active{transform:scale(.92);}
.btn-check:disabled{opacity:.4; cursor:default; background:var(--surface); color:var(--ink); border-color:var(--line-strong);}
.btn-check .check-ico path{stroke-dasharray:24; stroke-dashoffset:0;}
@media (prefers-reduced-motion:no-preference){
  .btn-check{transition:background .15s ease, color .15s ease, border-color .15s ease, transform .12s ease;}
  .card.recien-hecho{animation:hechoAnillo .9s ease-out;}
  .card.recien-hecho .btn-check .check-ico path{animation:hechoTick .5s ease-out both;}
  @keyframes hechoTick{from{stroke-dashoffset:24;} to{stroke-dashoffset:0;}}
  @keyframes hechoAnillo{
    0%{box-shadow:0 0 0 0 var(--info-line), var(--shadow);}
    100%{box-shadow:0 0 0 14px transparent, var(--shadow);}
  }
}
.card.pv-card .actions .btn-check{margin-left:auto;}

/* ---------- Mi día: cabecera con fecha, saludo, anillo y racha ---------- */
.dia-hero{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:22px 32px;
  background:var(--surface); border:1px solid var(--line); box-shadow:var(--shadow);
  padding:24px 28px;
}
.dia-hero-txt{min-width:0; flex:1 1 320px;}
.dia-hero-fecha{margin:0 0 8px; font-size:.74rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent); font-weight:600;}
.dia-hero-saludo{margin:0; font-weight:800; font-size:clamp(1.7rem,4.6vw,2.6rem); line-height:1.08; letter-spacing:-.015em; text-wrap:balance;}
.dia-racha{
  margin:14px 0 0; display:inline-flex; align-items:center; gap:6px;
  padding:6px 14px; border-radius:999px;
  background:var(--surface-2); border:1px solid var(--line);
  font-size:.84rem; font-weight:700;
}
.dia-hero-anillo{display:flex; align-items:center; gap:18px; flex:none;}
.dia-anillo{position:relative; width:132px; height:132px; flex:none;}
.dia-anillo svg{display:block; width:100%; height:100%;}
.dia-anillo .ring-bg{fill:none; stroke:var(--line); stroke-width:10;}
.dia-anillo .ring-fg{fill:none; stroke:var(--accent); stroke-width:10; stroke-linecap:round; stroke-dasharray:326.73; stroke-dashoffset:326.73;}
.dia-anillo .ring-fg.completo{stroke:var(--info);}
.dia-anillo-num{
  position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
  font-weight:800; font-size:1.8rem; font-variant-numeric:tabular-nums; letter-spacing:-.02em;
}
.dia-anillo-num .sep{margin:0 3px; color:var(--ink-soft); font-weight:500;}
.dia-obj{display:flex; flex-direction:column; align-items:flex-start; gap:8px; font-size:.82rem; color:var(--ink-soft); min-width:92px;}
.dia-obj-txt{font-weight:600;}
.dia-obj-form{display:flex; align-items:center; gap:6px;}
.dia-obj-form[hidden]{display:none;}
.dia-obj-form input{
  width:64px; padding:6px 8px; font-family:inherit; font-size:.88rem; font-weight:700; text-align:center;
  border:1px solid var(--line-strong); background:var(--bg); color:var(--ink);
}
@media (prefers-reduced-motion:no-preference){
  .dia-anillo .ring-fg{transition:stroke-dashoffset .9s cubic-bezier(.2,.7,.2,1), stroke .3s ease;}
}
@media (max-width:520px){
  .dia-hero{padding:18px 16px;}
  .dia-hero-anillo{width:100%; justify-content:flex-start;}
  .dia-anillo{width:112px; height:112px;}
  .dia-anillo-num{font-size:1.5rem;}
}

/* ---------- Mi día: Urgente — depende de ti · Los que más esperan ---------- */
.urg-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:12px; align-items:stretch;}
@media (max-width:1100px){ .urg-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:700px){ .urg-grid{grid-template-columns:1fr;} }
.urg-card{
  position:relative; display:flex; gap:12px; align-items:flex-start; min-width:0;
  background:var(--surface); border:1px solid var(--line); border-left:3px solid var(--accent);
  box-shadow:var(--shadow); padding:13px 14px; cursor:pointer;
}
.urg-card:hover{border-color:var(--ink-soft); border-left-color:var(--accent);}
.urg-card:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
.urg-card.esp-card{border-left-color:var(--line-strong);}
.urg-card.esp-card.espera-alta, .urg-card.esp-card.espera-alta:hover{border-color:var(--accent);}
.urg-ico{
  flex:none; width:34px; height:34px; border-radius:50%;
  display:flex; align-items:center; justify-content:center; font-size:1rem;
  background:var(--surface-2);
}
.urg-body{flex:1; min-width:0;}
.urg-tags{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:7px;}
.urg-tag{
  display:inline-flex; align-items:center; box-sizing:border-box; height:22px; padding:0 10px; border-radius:999px;
  font-size:.62rem; font-weight:800; letter-spacing:.08em; text-transform:uppercase; line-height:1;
  color:var(--warn-ink); background:var(--warn-bg); border:1px solid var(--warn-line);
}
.urg-tit{font-weight:700; font-size:.9rem; line-height:1.28; overflow-wrap:anywhere;}
.urg-sub{margin-top:3px; font-size:.76rem; color:var(--ink-soft); overflow-wrap:anywhere;}
.urg-act{flex:none; display:flex; flex-direction:column; align-items:center; gap:6px;}
.urg-mas{grid-column:1 / -1; justify-self:start; border-radius:999px;}
.urg-manana{margin-top:22px;}
.urg-manana .stats-subhead{margin:0 0 6px;}

/* ---------- Ajustes: enlace de reseñas ---------- */
.ajustes-form.ajustes-form-resenas{grid-template-columns:minmax(0,3.6fr) auto;}
@media (max-width:760px){ .ajustes-form.ajustes-form-resenas{grid-template-columns:1fr;} }
.field-hint{margin:4px 0 0; font-size:.74rem; color:var(--ink-soft); text-transform:none; letter-spacing:0;}

/* Logo por tema: crema en Noche, negro (logo-dia.png) en Día. Mismo tamaño. */
.logo-dia{display:none !important;}
:root[data-theme="light"] .logo-noche{display:none !important;}
:root[data-theme="light"] .logo-chip img.logo-dia{display:block !important;}
:root[data-theme="light"] img.auth-logo.logo-dia{display:block !important;}

/* En la línea de postventa, si ya se muestra "Atrasado desde", no repetir la etiqueta de vencida. */
.pv-card.overdue .fecha-rel.vencida{display:none;}

/* ---------- globo: pantalla de carga y celebración ---------- */
.carga-globo{
  position:fixed; inset:0; z-index:40; pointer-events:none;
  display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:6px;
  padding-top:clamp(70px,16vh,150px);
  background:linear-gradient(var(--bg) 0, var(--bg) 45%, transparent 72%);
  opacity:1; transition:opacity .3s ease;
}
.carga-globo.saliendo{opacity:0;}
.carga-globo img{display:block; height:160px; width:auto; aspect-ratio:2/3;}
.carga-globo p{margin:0; font-weight:700; font-size:.95rem; color:var(--ink-soft); letter-spacing:.01em;}
.dia-hero-anillo{position:relative;}
.dia-cumplido{font-weight:800; font-size:.86rem; color:var(--info-ink, var(--info)); letter-spacing:.01em;}
.dia-cumplido[hidden]{display:none;}
.dia-despegue{
  position:absolute; left:0; top:0; width:132px; height:132px; pointer-events:none; z-index:2;
  display:none;
}
.dia-despegue img{position:absolute; left:50%; bottom:20px; height:120px; width:auto; aspect-ratio:2/3; margin-left:-40px; opacity:0;}
@media (prefers-reduced-motion:no-preference){
  .dia-despegue.activo{display:block;}
  .dia-despegue.activo img{animation:diaDespegue 2.5s ease-in forwards;}
}
@keyframes diaDespegue{
  0%{transform:translate3d(0,30px,0) scale(.6); opacity:0;}
  12%{opacity:1;}
  70%{opacity:.9;}
  100%{transform:translate3d(0,-260px,0) scale(1); opacity:0;}
}
@media (max-width:520px){ .dia-despegue{width:112px; height:112px;} }
@media (prefers-reduced-motion:reduce){ .carga-globo{transition:none;} }

/* =====================================================================
   Pestaña Tareas: matriz prioridad × de quién depende, lista y tarjetas.
   Solo tokens de :root (Noche y Día).
   ===================================================================== */
.tareas-titulo{display:flex; align-items:center; gap:14px;}
.tareas-ico{
  flex:none; width:48px; height:48px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:var(--surface-2); border:1px solid var(--line); color:var(--accent);
}
.tareas-barra{display:flex; flex-wrap:wrap; align-items:center; gap:10px 18px; margin-bottom:16px;}
.tareas-barra .filters{margin-bottom:0;}
.tareas-guia{margin:0; font-size:.8rem; color:var(--ink-soft);}
.tareas-guia[hidden], .tareas-matriz-wrap[hidden]{display:none;}
.tm-cols{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-bottom:8px;}
.tm-cols span{font-size:.76rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft); padding-left:4px;}
.tareas-matriz{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; align-items:stretch;}
.tm-cel{
  display:flex; flex-direction:column; min-width:0; min-height:120px;
  background:var(--surface-2); border:1px dashed var(--line-strong); padding:10px;
  background:color-mix(in srgb,var(--surface) 45%,var(--bg));
  border-top:3px solid var(--line-strong);
}
.tm-cel.prio-urgente{border-top-color:var(--accent);}
.tm-cel.prio-media{border-top-color:var(--info);}
.tm-cel.sobre{background:var(--info-bg); border-color:var(--info); border-style:solid;}
.tareas-matriz.arrastrando .tm-cel{border-style:solid;}
.tm-cel-head{display:flex; align-items:center; gap:8px; margin-bottom:10px;}
.tm-cel-tit{flex:1; min-width:0; font-size:.7rem; font-weight:800; letter-spacing:.09em;}
.tm-cel-n{
  min-width:22px; padding:1px 7px; border-radius:999px; text-align:center;
  font-size:.7rem; font-weight:700; background:var(--bg); color:var(--ink); border:1px solid var(--line);
}
.tm-cel-cuerpo{display:flex; flex-direction:column; gap:8px; flex:1;}
.tm-vacia{margin:auto; font-size:.76rem; color:var(--ink-soft);}
.tareas-toolbar{display:flex; flex-wrap:wrap; gap:10px 14px; align-items:center; margin-bottom:16px;}
.tareas-toolbar .filters{margin-bottom:0;}
.tareas-toolbar .search{flex:0 1 260px; border-radius:999px; padding:8px 16px;}
.tareas-lista{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; align-items:start;}
@media (max-width:760px){ .tareas-lista{grid-template-columns:1fr;} }
@media (max-width:900px){
  .tm-cols{display:none;}
  .tareas-matriz{grid-template-columns:1fr;}
}

.tarea-card{
  position:relative; display:flex; gap:12px; align-items:flex-start; min-width:0;
  background:var(--surface); border:1px solid var(--line); border-left:4px solid var(--line-strong);
  box-shadow:var(--shadow); padding:12px 12px 12px 14px; cursor:pointer;
}
.tarea-card.prio-urgente{border-left-color:var(--accent);}
.tarea-card.prio-media{border-left-color:var(--info);}
.tarea-card.prio-baja{border-left-color:var(--ink-soft);}
.tarea-card:hover{border-color:var(--ink-soft);}
.tarea-card:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
.tarea-card[draggable="true"]{cursor:grab;}
.tarea-card[draggable="true"]:active{cursor:grabbing;}
.tarea-card.dragging{opacity:.45;}
.tarea-card.menu-abierto{z-index:6;}
.tarea-card.hecha{opacity:.7;}
.tarea-card.hecha .tarea-tit{text-decoration:line-through; text-decoration-thickness:1px;}
.tarea-card.atrasada, .tarea-card.atrasada:hover{border-color:var(--accent); border-left-color:var(--accent); box-shadow:0 0 0 1px var(--accent), var(--shadow);}
.tarea-body{flex:1; min-width:0;}
.tarea-tit{font-weight:700; font-size:.9rem; line-height:1.28; overflow-wrap:anywhere;}
.tarea-cli{margin-top:3px; font-size:.78rem; color:var(--ink-soft); overflow-wrap:anywhere;}
button.tarea-cli-link{
  appearance:none; background:none; border:0; padding:0; font:inherit; font-size:.78rem; text-align:left;
  color:var(--info-ink); cursor:pointer; text-decoration:underline; text-underline-offset:2px;
}
button.tarea-cli-link:hover{color:var(--ink);}
button.tarea-cli-link:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
.tarea-tags{margin-top:8px;}
.t-chip{
  display:inline-flex; align-items:center; box-sizing:border-box; height:22px; padding:0 10px; border-radius:999px;
  font-size:.68rem; font-weight:700; letter-spacing:.02em; line-height:1; white-space:nowrap; max-width:100%;
  border:1px solid var(--line-strong); color:var(--ink-soft); background:var(--surface-2);
}
.t-chip.prio-urgente{color:var(--warn-ink); background:var(--warn-bg); border-color:var(--warn-line);}
.t-chip.prio-media{color:var(--info-ink); background:var(--info-bg); border-color:var(--info-line);}
.t-chip.en-curso{color:var(--ink); background:var(--ok-bg);}
.tarea-parada{margin-top:8px; font-size:.76rem; font-weight:700; color:var(--warn-ink);}
.tarea-act{flex:none; display:flex; flex-direction:column; align-items:center; gap:6px;}
.tarea-mas{font-size:1rem; line-height:1; letter-spacing:.05em;}
.tarea-menu{
  position:absolute; top:46px; right:10px; z-index:10; min-width:210px;
  display:flex; flex-direction:column; padding:6px 0;
  background:var(--surface); border:1px solid var(--line-strong); box-shadow:var(--shadow); cursor:default;
}
.tm-sec{padding:8px 14px 3px; font-size:.62rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-soft);}
.tm-item{
  appearance:none; background:none; border:0; color:var(--ink); text-align:left; cursor:pointer;
  padding:7px 14px; font:inherit; font-size:.82rem;
}
.tm-item:hover, .tm-item:focus-visible{background:var(--surface-2); outline:none;}
.tm-item[aria-checked="true"]{font-weight:800;}
.tm-item[aria-checked="true"]::after{content:" ✓";}
.tm-item.danger{color:var(--warn-ink);}
.tm-item.danger.confirming{background:var(--accent); color:var(--accent-ink);}
.field-error{margin:0; font-size:.8rem; font-weight:600; color:var(--warn-ink);}
.field-error[hidden]{display:none;}
.field input[aria-invalid="true"]{border-color:var(--accent);}
.toast-action{
  flex:none; appearance:none; background:transparent; border:1px solid var(--line-strong); color:var(--ink);
  border-radius:999px; padding:2px 12px; font:inherit; font-size:.76rem; font-weight:700; cursor:pointer;
}
.toast-action:hover, .toast-action:focus-visible{background:var(--ink); color:var(--bg);}
@media (prefers-reduced-motion:no-preference){
  /* Las atrasadas llaman la atención: sacudida de 2° cada ~6 s */
  .tarea-card.atrasada{animation:tareaNudge 6s ease-in-out infinite;}
  .tarea-card.atrasada:hover, .tarea-card.dragging{animation:none;}
  @keyframes tareaNudge{
    0%, 88%, 100%{transform:none;}
    90%{transform:rotate(-2deg);}
    93%{transform:rotate(2deg);}
    96%{transform:rotate(-1deg);}
  }
  .tarea-card.recien-hecho{animation:hechoAnillo .9s ease-out;}
  .tarea-card.recien-hecho .btn-check .check-ico path{animation:hechoTick .5s ease-out both;}
}

/* Ayuda de la pestaña Tareas */
.tareas-ayuda{margin:0 0 16px;}
.tareas-ayuda-txt{padding:4px 2px 2px; color:var(--ink-soft); font-size:.88rem; line-height:1.55;}
.tareas-ayuda-txt p{margin:0 0 10px;}
.tareas-ayuda-txt b{color:var(--ink);}

/* =====================================================================
   Formularios estilo "Pulso": bloques redondeados, etiquetas en negrita,
   inputs en píldora, selectores de tarjetas (montarSelectorTarjetas en
   app.js) y selector segmentado. Tokens de :root: valen en Noche y Día.
   ===================================================================== */
:root{
  --sel-rojo:#ff1200;   --sel-rojo-on:#ffffff;
  --sel-ambar:#ffc94d;  --sel-ambar-on:#000e35;
  --sel-verde:#00a37a;  --sel-verde-on:#000e35;
  --sel-azul:#0043ff;   --sel-azul-on:#ffffff;
  --sel-marino:#4a6aa5; --sel-marino-on:#ffffff;
  --sel-morado:#a06bd6; --sel-morado-on:#000e35;
  --sel-gris:#8a93a8;   --sel-gris-on:#000e35;
}
:root[data-theme="light"]{
  --sel-rojo:#c80e00;   --sel-rojo-on:#ffffff;
  --sel-ambar:#a35f00;  --sel-ambar-on:#ffffff;
  --sel-verde:#006b4f;  --sel-verde-on:#ffffff;
  --sel-azul:#0037d6;   --sel-azul-on:#ffffff;
  --sel-marino:#1f3a6e; --sel-marino-on:#ffffff;
  --sel-morado:#6d32a8; --sel-morado-on:#ffffff;
  --sel-gris:#5b6478;   --sel-gris-on:#ffffff;
}
.field[hidden], .field-group[hidden]{display:none;}

.panel-pulso{background:var(--bg); gap:12px;}
.panel-pulso .row2{grid-template-columns:1fr; gap:12px;}
.panel-pulso .field{
  background:var(--surface); border:1px solid var(--line); border-radius:18px;
  padding:14px 16px 16px; gap:9px;
}
.panel-pulso .field-group{
  background:var(--surface); border:1px solid var(--line); border-radius:18px; padding:14px 16px 8px; margin-bottom:0;
}
.panel-pulso .field .field{background:none; border:0; padding:0; border-radius:0;}
.panel-pulso .field label{
  font-size:.92rem; font-weight:700; text-transform:none; letter-spacing:0; color:var(--ink);
}
.panel-pulso .field label .opt{font-weight:400; color:var(--ink-soft); font-size:.82rem;}
.panel-pulso .field input:not([type=checkbox]):not([type=radio]),
.panel-pulso .field select,
.panel-pulso .field textarea{
  border:1.5px solid var(--line-strong); border-radius:999px; background:var(--bg);
  padding:11px 16px; font-size:.92rem; min-height:44px; box-sizing:border-box; width:100%;
}
.panel-pulso .field textarea{border-radius:18px; min-height:92px; padding:12px 16px;}
.panel-pulso .field input:not([type=checkbox]):not([type=radio]):focus,
.panel-pulso .field select:focus,
.panel-pulso .field textarea:focus{
  outline:none; border-color:var(--info-ink); box-shadow:0 0 0 3px var(--info-line);
}
.panel-pulso .field select.sr-only{width:1px; min-height:0; padding:0; border:0;}
.panel-pulso input[type=date]{color-scheme:inherit;}
.panel-pulso .update-add select{border-radius:999px; padding:9px 14px;}
.panel-pulso .update-add textarea{border-radius:18px;}
.panel-pulso .field-hint{margin:0; font-size:.78rem; color:var(--ink-soft);}
.panel-pulso .panel-actions .btn{min-height:44px;}

/* input con icono a la izquierda (lupa roja, calendario) */
.inp-icon{position:relative; display:block;}
.inp-icon .ico{
  position:absolute; left:8px; top:50%; transform:translateY(-50%);
  width:30px; height:30px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  pointer-events:none;
}
.inp-icon .ico-lupa{background:var(--accent); color:var(--accent-ink);}
.inp-icon .ico-cal{color:var(--ink);}
.panel-pulso .field .inp-icon input{padding-left:48px;}

/* tarjetas */
.tarj-grupo{display:grid; gap:10px; grid-template-columns:repeat(3,1fr);}
.tarj-grupo[hidden]{display:none;}
.tarj-grupo[data-n="2"], .tarj-grupo[data-n="4"]{grid-template-columns:repeat(2,1fr);}
.tarj{
  --c:var(--sel-azul); --c-on:var(--sel-azul-on);
  position:relative; box-sizing:border-box; min-height:84px; padding:14px 8px 12px;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; text-align:center;
  border:2px dashed var(--c); border-radius:16px; cursor:pointer; user-select:none;
  background:color-mix(in srgb, var(--c) 12%, transparent); color:var(--ink);
  font-size:.86rem; font-weight:700; line-height:1.2;
  transition:background .15s, color .15s, border-color .15s, transform .1s;
}
.tarj:hover{background:color-mix(in srgb, var(--c) 22%, transparent);}
.tarj:active{transform:scale(.98);}
.tarj:focus-visible{outline:3px solid var(--info-ink); outline-offset:3px;}
.tarj-ico{font-size:1.6rem; line-height:1;}
.tarj-txt{overflow-wrap:anywhere;}
.tarj-sub{font-size:.68rem; font-weight:500; opacity:.8;}
.tarj[aria-checked="true"]{background:var(--c); border-style:solid; color:var(--c-on);}
.tarj-check{
  position:absolute; top:7px; right:7px; width:20px; height:20px; border-radius:50%;
  background:var(--c-on); color:var(--c); font-size:.72rem; font-weight:800; line-height:20px; text-align:center;
  display:none;
}
.tarj[aria-checked="true"] .tarj-check{display:block;}
.tarj-rojo{--c:var(--sel-rojo); --c-on:var(--sel-rojo-on);}
.tarj-ambar{--c:var(--sel-ambar); --c-on:var(--sel-ambar-on);}
.tarj-verde{--c:var(--sel-verde); --c-on:var(--sel-verde-on);}
.tarj-azul{--c:var(--sel-azul); --c-on:var(--sel-azul-on);}
.tarj-marino{--c:var(--sel-marino); --c-on:var(--sel-marino-on);}
.tarj-morado{--c:var(--sel-morado); --c-on:var(--sel-morado-on);}
.tarj-gris{--c:var(--sel-gris); --c-on:var(--sel-gris-on);}

/* segmentado (estado) */
.tarj-segmentado{
  display:flex; gap:4px; padding:4px; border:1.5px solid var(--line-strong); border-radius:999px; background:var(--bg);
}
.tarj-segmentado .tarj{
  flex:1; min-height:40px; padding:6px 10px; flex-direction:row; gap:6px; border:0; border-radius:999px;
  background:transparent; font-size:.84rem;
}
.tarj-segmentado .tarj:hover{background:color-mix(in srgb, var(--c) 18%, transparent);}
.tarj-segmentado .tarj[aria-checked="true"]{background:var(--c); color:var(--c-on);}
.tarj-segmentado .tarj-ico{font-size:.95rem;}

@media (max-width:520px){
  .tarj-grupo, .tarj-grupo[data-n="4"]{grid-template-columns:repeat(2,1fr);}
  .tarj-grupo[data-n="3"] .tarj:last-child, .tarj-grupo[data-n="5"] .tarj:last-child{grid-column:1 / -1;}
  .panel-pulso{padding:20px 14px 18px;}
}
@media (prefers-reduced-motion:reduce){ .tarj{transition:none;} }
.panel-pulso .field .inp-icon input:not([type=checkbox]):not([type=radio]){padding-left:48px;}
.panel-pulso .inp-icon input[type=date]{position:relative;}
.panel-pulso .inp-icon input[type=date]::-webkit-calendar-picker-indicator{
  position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer;
}
.tarj-segmentado .tarj{white-space:nowrap; padding:6px 6px; font-size:.8rem;}
.tarj-segmentado .tarj-txt{overflow-wrap:normal;}
.inp-icon .ico{z-index:1;}

/* =====================================================================
   REDISEÑO v2 — navegación de 5 pestañas, botón rápido "+", sistema único
   de botones redondos y animaciones sobrias.
   Botones: .btn (primario) · .btn-sec / .btn.ghost (secundario) ·
   .btn-ico (circular, solo icono) · .btn-pill (primario con flecha).
   Noche: crema/rojo de siempre. Día: primarios azules #0043ff con texto
   crema #f7f5ee (5.9:1) y secundarios con borde y texto azul.
   Todo movimiento vive dentro de prefers-reduced-motion:no-preference.
   ===================================================================== */
:root{
  --btn-bg:#f7f5ee;  --btn-fg:#000e35;  --btn-bd:#f7f5ee;
  --btn-hover-bg:#c80e00; --btn-hover-fg:#f7f5ee; --btn-hover-bd:#c80e00;
  --btn-sec-fg:#f7f5ee; --btn-sec-bd:rgba(247,245,238,.46); --btn-sec-hover-bg:rgba(247,245,238,.12); --btn-sec-hover-bd:#f7f5ee;
  --btn-pill-hover:#f7f5ee; --btn-pill-dot:#ff1200; --btn-pill-arrow:#f7f5ee;
  --ripple:rgba(0,14,53,.26);
  --nav-ind:#ff1200;
  --badge-bg:#AA1120; --badge-fg:#f7f5ee;
  --nav-bar-h:62px;
}
:root[data-theme="light"]{
  --btn-bg:#0043ff;  --btn-fg:#f7f5ee;  --btn-bd:#0043ff;
  --btn-hover-bg:#0C2749; --btn-hover-fg:#f7f5ee; --btn-hover-bd:#0C2749;
  --btn-sec-fg:#0043ff; --btn-sec-bd:#0043ff; --btn-sec-hover-bg:rgba(0,67,255,.09); --btn-sec-hover-bd:#0C2749;
  --btn-pill-hover:#0C2749; --btn-pill-dot:#f7f5ee; --btn-pill-arrow:#0043ff;
  --ripple:rgba(247,245,238,.38);
  --nav-ind:#0043ff;
  --badge-bg:#c80e00; --badge-fg:#ffffff;
}

/* ---------- botones: núcleo común (alto, tipografía, redondeo) ---------- */
.btn, .btn-sec, .btn-pill{
  appearance:none; position:relative; overflow:hidden; box-sizing:border-box;
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:40px; padding:9px 20px;
  border-radius:999px; border:1.5px solid var(--btn-bd);
  background:var(--btn-bg); color:var(--btn-fg);
  font-family:"Montserrat",sans-serif; font-size:.84rem; font-weight:700; letter-spacing:.01em; line-height:1.15;
  text-decoration:none; cursor:pointer; -webkit-tap-highlight-color:transparent;
}
.btn:hover, .btn:focus-visible{background:var(--btn-hover-bg); border-color:var(--btn-hover-bd); color:var(--btn-hover-fg);}
.btn:active{background:var(--btn-hover-bg); border-color:var(--btn-hover-bd); color:var(--btn-hover-fg);}
.btn:focus-visible, .btn-sec:focus-visible, .btn-ico:focus-visible, .fab-main:focus-visible, .nav-tab:focus-visible, .user-item:focus-visible, .cita-hoy:focus-visible, .llamada-op:focus-visible{
  outline:2px solid var(--accent); outline-offset:2px;
}
/* secundario */
.btn.ghost, .btn-sec{
  background:transparent; color:var(--btn-sec-fg); border-color:var(--btn-sec-bd);
}
.btn.ghost:hover, .btn.ghost:focus-visible, .btn.ghost:active, .btn-sec:hover, .btn-sec:focus-visible, .btn-sec:active{
  background:var(--btn-sec-hover-bg); color:var(--btn-sec-fg); border-color:var(--btn-sec-hover-bd);
}
.btn:disabled, .btn-sec:disabled, .btn-pill:disabled, .btn-ico:disabled{opacity:.5; cursor:not-allowed; transform:none; box-shadow:none;}
/* píldora con flecha: mismo primario; la flecha y el círculo son decorativos */
.btn-pill{padding:9px 50px 9px 20px; background:var(--btn-bg); border-color:var(--btn-bd); color:var(--btn-fg);}
.btn-pill::after{background:var(--btn-pill-dot);}
.btn-pill::before{background:var(--btn-pill-arrow);}
.btn-pill:hover, .btn-pill:focus-visible, .btn-pill:active{background:var(--btn-pill-hover); border-color:var(--btn-pill-hover); color:var(--btn-fg);}
:root[data-theme="light"] .btn-pill:hover, :root[data-theme="light"] .btn-pill:focus-visible, :root[data-theme="light"] .btn-pill:active{color:var(--btn-hover-fg);}
/* circular solo icono */
.btn-ico, .icon-btn, .minical-nav, .btn-check, .panel-close{border-radius:50%;}
.btn-ico{
  appearance:none; position:relative; box-sizing:border-box; flex:none;
  width:40px; height:40px; padding:0; display:inline-flex; align-items:center; justify-content:center;
  border:1.5px solid var(--btn-bd); background:var(--btn-bg); color:var(--btn-fg);
  font-family:"Montserrat",sans-serif; font-weight:800; font-size:.85rem; line-height:1; cursor:pointer;
}
.btn-ico:hover, .btn-ico:focus-visible{background:var(--btn-hover-bg); border-color:var(--btn-hover-bd); color:var(--btn-hover-fg);}
.btn-ico.sec{background:transparent; color:var(--btn-sec-fg); border-color:var(--btn-sec-bd);}
.btn-ico.sec:hover, .btn-ico.sec:focus-visible{background:var(--btn-sec-hover-bg); color:var(--btn-sec-fg); border-color:var(--btn-sec-hover-bd);}
.icon-btn{width:30px; height:30px;}
.minical-nav{width:30px; height:30px;}
.icon-btn:focus-visible, .minical-nav:focus-visible, .panel-close:focus-visible, .btn-editar-nombre:focus-visible, .btn-editar-email:focus-visible, .dropdown-item:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}
.panel-close{width:36px; height:36px; padding:0; display:inline-flex; align-items:center; justify-content:center;}
.panel-close:hover{background:var(--surface-2); color:var(--ink);}
.btn-editar-nombre, .btn-editar-email{border-radius:999px; padding:3px 10px;}
.toast-action{border-radius:999px;}
.dropdown-menu{border-radius:18px;}
.dropdown-item{border-radius:12px;}
.tarea-del, .bloque-add{border-radius:999px;}
/* ripple (lo crea app.js al pulsar un primario) */
.ripple{position:absolute; border-radius:50%; background:var(--ripple); transform:scale(0); opacity:.7; pointer-events:none; z-index:0;}
@media (prefers-reduced-motion:reduce){ .ripple{display:none;} }

@media (prefers-reduced-motion:no-preference){
  .btn, .btn-sec, .btn-pill, .btn-ico, .icon-btn, .minical-nav, .panel-close, .btn-editar-nombre, .btn-editar-email, .nav-tab, .user-item, .cita-hoy, .llamada-op{
    transition:background .18s ease, color .18s ease, border-color .18s ease, box-shadow .2s ease, transform .15s cubic-bezier(.2,.7,.2,1);
  }
  .btn:hover, .btn-sec:hover, .btn-pill:hover, .btn-ico:hover, .cita-hoy:hover{transform:translateY(-1px); box-shadow:var(--shadow);}
  .btn:active, .btn-sec:active, .btn-pill:active, .btn-ico:active, .icon-btn:active, .minical-nav:active, .cita-hoy:active{transform:scale(.97); box-shadow:none;}
  .btn:disabled:hover, .btn-sec:disabled:hover, .btn-pill:disabled:hover, .btn-ico:disabled:hover{transform:none; box-shadow:none;}
  .ripple{animation:rippleExpande .6s ease-out forwards;}
  @keyframes rippleExpande{to{transform:scale(1); opacity:0;}}
  .btn-pill::before{transition:transform .22s cubic-bezier(.2,.7,.2,1);}
  .btn-pill:hover::before, .btn-pill:focus-visible::before{transform:translateX(4px);}
  .anim-in{animation:entradaSuave .34s cubic-bezier(.2,.7,.2,1) both;}
  @keyframes entradaSuave{from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:none;}}
  .pop{animation:contadorSalto .42s cubic-bezier(.3,1.6,.5,1);}
  @keyframes contadorSalto{0%{transform:scale(.4);} 60%{transform:scale(1.35);} 100%{transform:scale(1);}}
}

/* ---------- navegación principal: 5 pestañas ---------- */
.nav-main{
  position:relative; display:flex; align-items:stretch; gap:4px;
  margin:0 0 14px; padding:0 0 2px; border-bottom:1px solid var(--line);
  overflow-x:auto; scrollbar-width:none;
}
.nav-main::-webkit-scrollbar{display:none;}
.nav-tab{
  appearance:none; position:relative; flex:none; display:inline-flex; align-items:center; gap:9px;
  padding:12px 18px; border:0; border-radius:999px; background:transparent; color:var(--ink-soft);
  font-family:"Montserrat",sans-serif; font-size:.9rem; font-weight:700; cursor:pointer; white-space:nowrap;
  -webkit-tap-highlight-color:transparent;
}
.nav-tab:hover{color:var(--ink); background:var(--surface-2);}
.nav-tab.active{color:var(--ink);}
.nav-ico{flex:none; display:block;}
.nav-lbl-short{display:none;}
.nav-ind{
  position:absolute; left:0; bottom:0; height:3px; width:0; border-radius:3px;
  background:var(--nav-ind); pointer-events:none; opacity:0;
}
@media (prefers-reduced-motion:no-preference){
  .nav-main.nav-ready .nav-ind{transition:transform .32s cubic-bezier(.2,.7,.2,1), width .32s cubic-bezier(.2,.7,.2,1), opacity .2s ease;}
}
.nav-badge, .user-badge{
  display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box;
  min-width:19px; height:19px; padding:0 5px; border-radius:10px;
  background:var(--badge-bg); color:var(--badge-fg); border:0;
  font-size:.68rem; font-weight:800; line-height:1; font-variant-numeric:tabular-nums;
}
.user-badge{position:absolute; top:-5px; right:-5px; margin:0; border:2px solid var(--bg);}
.user-item-badge{margin:0 0 0 auto; background:var(--badge-bg); color:var(--badge-fg); border:0;}

/* subsecciones (selector segmentado) */
.subnav{margin:0 0 20px; max-width:100%;}
.subnav[hidden]{display:none;}
.subnav .filters.seg{margin-bottom:0; scrollbar-width:none;}
.subnav .filters.seg::-webkit-scrollbar{display:none;}
.subnav .filters.seg[hidden]{display:none;}
.subnav-grupo .chip{flex:none;}

/* alias de compatibilidad (data-tab antiguos): invisibles, 2 px, clicables por código/pruebas */
.tabnav.tabnav-legacy{
  position:fixed; top:0; left:0; width:0; height:2px; margin:0; padding:0; border:0; display:block;
  overflow:visible; z-index:2147483000; -webkit-mask-image:none; mask-image:none; background:none;
}
.tabnav-legacy .tabnav-btn{
  position:absolute; top:0; width:2px; height:2px; min-width:0; margin:0; padding:0; border:0;
  font-size:0; line-height:0; opacity:0; overflow:hidden; background:transparent;
}
.tabnav-legacy .tab-badge{display:none;}

/* vistas de Negocio > Captaciones / Cartera / Compradores (un panel, secciones filtradas) */
#tab-general > .quicknav{display:none;}
#referidosSeccionesNav{display:none;}
/* Negocio: Captaciones (sus cifras + tablero) · Cartera (sus cifras + tablero y, al final, Compradores) ·
   sin subsección (alias antiguo «general») se ven todas, cada bloque de cifras encima de su sección */
#tab-general[data-sub="captaciones"] > #kpiCartera, #tab-general[data-sub="captaciones"] > #sec-cartera,
#tab-general[data-sub="captaciones"] > #kpiCompradores, #tab-general[data-sub="captaciones"] > #sec-compradores,
#tab-general[data-sub="cartera"] > #kpiCaptaciones, #tab-general[data-sub="cartera"] > #sec-captaciones{display:none;}
/* cifras de cada subsección de Negocio */
.stats-kpi{margin-bottom:26px;}
.stats-kpi.stats-2{grid-template-columns:repeat(2,1fr);}
.stats-kpi.stats-3{grid-template-columns:repeat(3,1fr);}
@media (max-width:620px){ .stats-kpi.stats-3{grid-template-columns:1fr;} }
#tab-general > .stats-kpi + .block, #tab-seguimiento > .stats-kpi + [data-referidos-panel]{margin-top:0;}
#tab-seguimiento > [data-referidos-panel] + [data-referidos-panel]{margin-top:10px;}

/* ---------- menú de usuario ---------- */
.user-menu{position:relative; display:flex; justify-content:flex-end; margin-top:10px;}
.user-avatar{overflow:visible;}
.user-pop{
  position:absolute; top:calc(100% + 8px); right:0; z-index:50; min-width:236px; text-align:left;
  background:var(--surface); border:1px solid var(--line-strong); border-radius:20px; box-shadow:var(--shadow);
  padding:8px; display:flex; flex-direction:column; gap:2px;
}
.user-pop[hidden]{display:none;}
.user-pop-head{display:flex; flex-direction:column; gap:2px; padding:8px 12px 10px; margin-bottom:4px; border-bottom:1px solid var(--line);}
.user-pop-head strong{font-size:.92rem; color:var(--ink); overflow-wrap:anywhere;}
.user-pop-head strong:empty{display:none;}
.masthead .fecha .user-pop .sesion-email{display:block; font-size:.76rem;}
.user-item{
  appearance:none; display:flex; align-items:center; gap:10px; width:100%; box-sizing:border-box; min-height:42px;
  padding:9px 12px; border:0; border-radius:14px; background:transparent; color:var(--ink);
  font-family:"Montserrat",sans-serif; font-size:.86rem; font-weight:600; text-align:left; cursor:pointer;
}
.user-item:hover{background:var(--surface-2);}
.user-item-ico{flex:none; display:block; color:var(--ink-soft);}
.user-item.tema-btn{gap:10px; border-radius:14px; padding:9px 12px; font-size:.86rem;}
.sesion-box .user-item.tema-btn{padding:9px 12px;}

/* ---------- botón rápido "+" ---------- */
.fab{position:fixed; right:24px; bottom:24px; z-index:35; display:flex; flex-direction:column; align-items:flex-end; gap:12px; pointer-events:none;}
.fab > *{pointer-events:auto;}
.fab-scrim{position:fixed; inset:0; background:var(--scrim); opacity:0; visibility:hidden; pointer-events:none; z-index:0;}
.fab.abierto .fab-scrim{opacity:1; visibility:visible; pointer-events:auto;}
.fab-menu{position:relative; z-index:1; display:flex; flex-direction:column; align-items:flex-end; gap:8px; visibility:hidden; pointer-events:none;}
.fab.abierto .fab-menu{visibility:visible; pointer-events:auto;}
.fab-item{background:var(--surface); box-shadow:var(--shadow); justify-content:flex-start; padding:9px 20px 9px 14px; white-space:nowrap; opacity:0;}
.fab.abierto .fab-item{opacity:1;}
.fab-item-ico{flex:none; display:block;}
.fab-main{
  appearance:none; position:relative; z-index:2; overflow:hidden; box-sizing:border-box;
  width:58px; height:58px; padding:0; border:0; border-radius:50%;
  background:var(--accent); color:var(--accent-ink); cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  box-shadow:0 10px 24px -8px rgba(255,18,0,.55), 0 2px 6px rgba(0,0,0,.35);
  -webkit-tap-highlight-color:transparent;
}
:root[data-theme="light"] .fab-main{box-shadow:0 10px 24px -8px rgba(200,14,0,.5), 0 2px 6px rgba(0,14,53,.25);}
.fab-main::after{
  content:""; position:absolute; top:-20%; bottom:-20%; left:-60%; width:40%; pointer-events:none; opacity:0;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.55), transparent); transform:skewX(-18deg);
}
.fab-ico{display:block; position:relative; z-index:1;}
.fab.abierto .fab-ico{transform:rotate(45deg);}
.fab-main .ripple{background:rgba(255,255,255,.38);}
@media (prefers-reduced-motion:no-preference){
  .fab-scrim{transition:opacity .22s ease, visibility 0s linear .22s;}
  .fab.abierto .fab-scrim{transition:opacity .22s ease, visibility 0s linear 0s;}
  .fab-menu{transition:visibility 0s linear .3s;}
  .fab.abierto .fab-menu{transition:visibility 0s linear 0s;}
  .fab-item{transform:translateY(14px) scale(.92); transform-origin:100% 100%; transition:opacity .18s ease, transform .26s cubic-bezier(.2,.9,.3,1.2), background .18s ease, border-color .18s ease, box-shadow .2s ease;}
  .fab.abierto .fab-item{transform:none;}
  .fab.abierto .fab-item:nth-child(6){transition-delay:0s;}
  .fab.abierto .fab-item:nth-child(5){transition-delay:.035s;}
  .fab.abierto .fab-item:nth-child(4){transition-delay:.07s;}
  .fab.abierto .fab-item:nth-child(3){transition-delay:.105s;}
  .fab.abierto .fab-item:nth-child(2){transition-delay:.14s;}
  .fab.abierto .fab-item:nth-child(1){transition-delay:.175s;}
  .fab.abierto .fab-item:hover{transform:translateY(-1px);}
  .fab-ico{transition:transform .28s cubic-bezier(.2,.9,.3,1.3);}
  .fab-main{transition:transform .15s cubic-bezier(.2,.7,.2,1), box-shadow .2s ease;}
  .fab-main:hover{transform:scale(1.06);} /* crece en vez de subir: con el puntero en el borde inferior, subir 2 px lo sacaba del hover y el botón temblaba */
  .fab-main:active{transform:scale(.94);}
  .fab-main::after{animation:fabBrillo 4.8s ease-in-out 1.6s infinite;}
  @keyframes fabBrillo{0%{transform:translateX(0) skewX(-18deg); opacity:0;} 6%{opacity:1;} 26%{transform:translateX(430%) skewX(-18deg); opacity:0;} 100%{transform:translateX(430%) skewX(-18deg); opacity:0;}}
}

/* ---------- Hoy: citas de hoy ---------- */
.citas-hoy{display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:10px;}
.cita-hoy{
  appearance:none; display:flex; flex-direction:column; gap:3px; text-align:left; cursor:pointer;
  padding:12px 16px; border:1px solid var(--line-strong); border-radius:18px;
  background:var(--surface); color:var(--ink); font:inherit;
}
.cita-hoy strong{font-size:.92rem; font-weight:800;}
.cita-hoy span{font-size:.82rem; color:var(--ink-soft);}
.cita-hoy:hover{border-color:var(--ink);}
.citas-hoy .es-vacio, .citas-hoy .empty-state{grid-column:1 / -1;}

/* ---------- registrar llamada ---------- */
.llamada-lista{display:flex; flex-direction:column; gap:6px; max-height:260px; overflow-y:auto; margin-top:8px; padding:2px;}
.llamada-op{
  appearance:none; display:flex; flex-direction:column; gap:2px; text-align:left; cursor:pointer;
  padding:10px 14px; border:1px solid var(--line-strong); border-radius:16px;
  background:var(--surface); color:var(--ink); font:inherit;
}
.llamada-op strong{font-size:.9rem;}
.llamada-op span{font-size:.76rem; color:var(--ink-soft);}
.llamada-op:hover{border-color:var(--ink);}
.llamada-op.sel{border-color:var(--btn-bd); box-shadow:inset 0 0 0 1.5px var(--btn-bd); background:var(--surface-2);}
.llamada-vacio{margin:6px 2px; font-size:.84rem; color:var(--ink-soft);}

/* ---------- móvil: barra inferior con las 5 pestañas y "+" centrado encima ---------- */
@media (max-width:700px){
  body{padding-inline:14px;}
  .wrap{padding-block:16px calc(var(--nav-bar-h) + 96px + env(safe-area-inset-bottom, 0px));}
  .nav-main{
    position:fixed; left:0; right:0; bottom:0; z-index:34; margin:0; gap:0; overflow:visible;
    padding:0 4px env(safe-area-inset-bottom, 0px);
    background:var(--surface); border:0; border-top:1px solid var(--line-strong);
    box-shadow:0 -10px 28px -14px rgba(0,0,0,.55);
  }
  .nav-tab{
    flex:1 1 0; min-width:0; flex-direction:column; justify-content:center; gap:3px;
    min-height:var(--nav-bar-h); padding:8px 2px 7px; border-radius:0; font-size:.66rem; font-weight:700;
  }
  .nav-tab:hover{background:transparent;}
  .nav-lbl-full{display:none;}
  .nav-lbl-short{display:inline;}
  .nav-ind{top:0; bottom:auto; height:3px; border-radius:0 0 4px 4px;}
  .nav-tab .nav-badge{position:absolute; top:5px; left:calc(50% + 6px); min-width:17px; height:17px; font-size:.62rem;}
  .subnav{margin-bottom:14px;}
  .subnav .filters.seg{display:flex; width:100%; overflow-x:auto;}
  .filters .lineas-btn, .lineas-btn{display:inline-flex; align-items:center; gap:6px; min-height:44px; margin-bottom:10px;}
  .lineas-plegable:not(.abierto){display:none;}
  .fab{left:0; right:0; bottom:calc(var(--nav-bar-h) + env(safe-area-inset-bottom, 0px) + 14px); align-items:center;}
  .fab-menu{align-items:center;}
  .fab-item{transform-origin:50% 100%;}
  .user-pop{right:0;}
}
@media (prefers-reduced-motion:reduce){
  .anim-in, .pop, .fab-main::after{animation:none;}
}
/* el menú de usuario (dentro de la cabecera) queda por encima de las subsecciones (.seg .chip usa z-index 1) */
.masthead > div.fecha{z-index:6;}

/* =====================================================================
   Componentes inspirados en 000h (docs/COMPONENTES_000H.md): calendario,
   campo de fecha con popover, checklist, etapa pulsable, semana de Agenda
   y guía de primeros pasos. Solo tokens de :root: valen en Noche y Día.
   ===================================================================== */
:root{
  --sel-on-bg:#f7f5ee;  --sel-on-fg:#000e35;      /* seleccionado / marcado en Noche: crema con texto marino */
  --cal-rango:rgba(247,245,238,.16);
  --cal-m-azul:var(--info-ink); --cal-m-rojo:var(--sel-rojo); --cal-m-ambar:var(--sel-ambar);
  --cal-m-verde:var(--sel-verde); --cal-m-morado:var(--sel-morado); --cal-m-marino:var(--sel-gris);
}
:root[data-theme="light"]{
  --sel-on-bg:#0037d6;  --sel-on-fg:#ffffff;      /* en Día: azul RE/MAX con texto blanco */
  --cal-rango:rgba(0,55,214,.12);
}

/* ---------- calendario ---------- */
.cal{width:100%; max-width:360px; box-sizing:border-box; color:var(--ink);}
.cal-cab{display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px;}
.cal-titulo{font-family:"Montserrat",sans-serif; font-weight:800; font-size:1rem; text-align:center; flex:1;}
.cal-nav{
  flex:none; width:38px; height:38px; padding:0; border-radius:50%; cursor:pointer;
  display:inline-flex; align-items:center; justify-content:center;
  border:1.5px solid var(--line-strong); background:transparent; color:var(--ink);
}
.cal-nav:hover{background:var(--surface-2); border-color:var(--ink);}
.cal-nav:focus-visible, .cal-btn:focus-visible{outline:3px solid var(--info-ink); outline-offset:2px;}
.cal-grid{display:flex; flex-direction:column; gap:2px;}
.cal-fila{display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:2px;}
.cal-dow{text-align:center; font-size:.7rem; font-weight:700; color:var(--ink-soft); padding:4px 0 6px;}
.cal-hueco{min-height:40px;}
.cal-dia{
  position:relative; width:100%; aspect-ratio:1 / 1; min-height:40px; padding:0; border:0; border-radius:50%;
  display:flex; align-items:center; justify-content:center; background:transparent; color:var(--ink);
  font:inherit; font-size:.88rem; font-variant-numeric:tabular-nums; cursor:pointer; -webkit-tap-highlight-color:transparent;
}
.cal-dia:hover{background:var(--surface-2);}
.cal-dia:focus-visible{outline:3px solid var(--info-ink); outline-offset:1px; z-index:2;}
.cal-dia.hoy{box-shadow:inset 0 0 0 2px var(--accent); font-weight:800;}
.cal-dia.sel, .cal-dia.sel:hover{background:var(--sel-on-bg); color:var(--sel-on-fg); font-weight:800;}
.cal-dia.off{opacity:.35; cursor:not-allowed;}
.cal-dia.off:hover{background:transparent;}
.cal-dia.en-rango{background:var(--cal-rango); border-radius:0;}
.cal-dia.rango-ini{border-radius:50% 0 0 50%;}
.cal-dia.rango-fin{border-radius:0 50% 50% 0;}
.cal-marcas{position:absolute; left:0; right:0; bottom:5px; display:flex; justify-content:center; gap:3px; pointer-events:none;}
.cal-m{display:block; width:6px; height:6px; border-radius:50%; background:var(--cal-m-azul);}
.cal-m-azul{background:var(--cal-m-azul);} .cal-m-rojo{background:var(--cal-m-rojo);} .cal-m-ambar{background:var(--cal-m-ambar);}
.cal-m-verde{background:var(--cal-m-verde);} .cal-m-morado{background:var(--cal-m-morado);} .cal-m-marino{background:var(--cal-m-marino);}
.cal-dia.sel .cal-m{box-shadow:0 0 0 1.5px var(--sel-on-fg);}
.cal-pie{margin-top:10px; display:flex; flex-direction:column; gap:8px;}
.cal-resumen{margin:0; font-size:.84rem; color:var(--ink-soft); min-height:1.3em; overflow-wrap:anywhere;}
.cal-acciones{display:flex; gap:8px; flex-wrap:wrap;}
.cal-btn{
  min-height:36px; padding:6px 16px; border-radius:999px; cursor:pointer; font:inherit; font-size:.8rem; font-weight:700;
  border:1.5px solid var(--line-strong); background:transparent; color:var(--ink);
}
.cal-btn:hover{background:var(--surface-2); border-color:var(--ink);}
.cal-btn:disabled{opacity:.4; cursor:not-allowed; background:transparent; border-color:var(--line-strong);}
@media (prefers-reduced-motion:no-preference){
  .cal-dia, .cal-nav, .cal-btn{transition:background .15s ease, color .15s ease, border-color .15s ease;}
}

/* ---------- campo de fecha con popover (sustituye a input[type=date]) ---------- */
.fecha-campo{position:relative;}
.fecha-btn{
  display:flex; align-items:center; gap:10px; width:100%; min-height:44px; padding:10px 14px; box-sizing:border-box;
  border:1.5px solid var(--line-strong); border-radius:999px; background:var(--bg); color:var(--ink);
  font:inherit; font-size:.92rem; text-align:left; cursor:pointer;
}
.fecha-btn .fecha-txt{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.fecha-btn.vacio .fecha-txt{color:var(--ink-soft);}
.fecha-ico{flex:none; color:var(--ink);}
.fecha-flecha{flex:none; color:var(--ink-soft);}
.fecha-btn:hover{border-color:var(--ink);}
.fecha-btn:focus-visible, .fecha-btn[aria-expanded="true"]{outline:none; border-color:var(--info-ink); box-shadow:0 0 0 3px var(--info-line);}
.fecha-btn.invalido{border-color:var(--warn-ink);}
.fecha-pop{
  position:absolute; z-index:30; left:0; top:calc(100% + 6px); width:min(340px,100%); box-sizing:border-box; padding:14px;
  background:var(--surface); border:1.5px solid var(--line-strong); border-radius:20px; box-shadow:var(--shadow);
}
.fecha-pop[hidden]{display:none;}
.fecha-pop .cal{max-width:none;}
.fecha-oculto{
  position:absolute !important; width:1px !important; height:1px !important; min-height:0 !important; margin:-1px !important;
  padding:0 !important; border:0 !important; overflow:hidden !important; clip:rect(0 0 0 0) !important; clip-path:inset(50%) !important;
}
@media (max-width:520px){ .fecha-pop{width:100%;} }

/* ---------- checklist (casillas orgánicas) ---------- */
.chk-fila{display:flex; flex-direction:column; gap:10px;}
.chk-tarjeta{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px;}
.chk-chip{display:flex; flex-wrap:wrap; gap:8px;}
.chk-item, .panel-pulso .field label.chk-item{
  position:relative; display:flex; align-items:flex-start; gap:12px; margin:0; cursor:pointer;
  font-size:.92rem; font-weight:600; line-height:1.3; text-transform:none; letter-spacing:0; color:var(--ink);
  -webkit-tap-highlight-color:transparent;
}
.chk-item > input.chk-input{
  position:absolute; inset:0; width:100%; height:100%; margin:0; padding:0; border:0; opacity:0; cursor:pointer; z-index:1;
}
.chk-item.deshabilitado, .chk-item.deshabilitado > input.chk-input{cursor:default;}
.chk-caja{flex:none; width:26px; height:26px; color:var(--ink); display:block;}
.chk-svg{display:block; width:100%; height:100%; overflow:visible;}
.chk-blob{fill:transparent; stroke:currentColor; stroke-width:1.8; transform-origin:12px 12px; transform:scale(.94);}
.chk-tick{fill:none; stroke:var(--sel-on-fg); stroke-width:2.6; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:1; stroke-dashoffset:1;}
.chk-item:hover .chk-blob{stroke-width:2.3;}
.chk-item.on .chk-blob{fill:var(--sel-on-bg); stroke:var(--sel-on-bg); transform:scale(1);}
.chk-item.on .chk-tick{stroke-dashoffset:0;}
.chk-input:focus-visible + .chk-caja{outline:3px solid var(--info-ink); outline-offset:3px; border-radius:50%;}
.chk-txt{display:flex; flex-direction:column; gap:2px; min-width:0; padding-top:2px;}
.chk-titulo{overflow-wrap:anywhere;}
.chk-desc{font-size:.78rem; font-weight:400; color:var(--ink-soft); line-height:1.35;}
.chk-tachar.on .chk-titulo{color:var(--ink-soft); text-decoration:line-through;}
.chk-sin-texto{gap:0; align-items:center;}
.chk-sin-texto .chk-caja{width:24px; height:24px;}
.chk-tarjeta .chk-item, .chk-chip .chk-item, .panel-pulso .field .chk-tarjeta label.chk-item, .panel-pulso .field .chk-chip label.chk-item{
  padding:12px 14px; border:1.5px solid var(--line-strong); border-radius:16px; background:var(--bg); align-items:center;
}
.chk-chip .chk-item, .panel-pulso .field .chk-chip label.chk-item{padding:8px 14px 8px 10px; border-radius:999px; gap:8px; font-size:.86rem;}
.chk-chip .chk-caja{width:20px; height:20px;}
.chk-tarjeta .chk-item.on, .chk-chip .chk-item.on{border-color:var(--sel-on-bg); background:color-mix(in srgb, var(--sel-on-bg) 12%, transparent);}
.chk-tarjeta .chk-item:hover, .chk-chip .chk-item:hover{border-color:var(--ink);}
.chk-estado{margin:8px 0 0; font-size:.8rem; color:var(--ink-soft); min-height:1.2em;}
@media (max-width:420px){ .chk-tarjeta{grid-template-columns:1fr;} }
@media (prefers-reduced-motion:no-preference){
  .chk-blob{transition:fill .2s ease, stroke .2s ease, stroke-width .15s ease, transform .32s cubic-bezier(.3,1.7,.5,1);}
  .chk-tick{transition:stroke-dashoffset .3s ease .06s;}
  .chk-tarjeta .chk-item, .chk-chip .chk-item{transition:border-color .15s ease, background .15s ease;}
}

/* filas con otros campos al lado (tareas del bloque, recordatorios) */
.tarea-row .chk-item{flex:none;}

/* ---------- etapa pulsable en las tarjetas del pipeline ---------- */
.etapa-row{margin:2px 0 8px;}
/* Colores de etapa: tokens --b4-* (Noche y Día). Van DESPUÉS del valor por defecto del chip y del
   menú con la misma especificidad: antes iban antes y .etapa-chip los pisaba, así que todas las
   etapas se veían azules (Seguimiento incluida). --cb = fondo suave del chip; el texto es siempre --ink. */
.etapa-chip, .etapa-item{--c:var(--b4-az); --cb:var(--b4-az-bg);}
.etapa-azul{--c:var(--b4-az); --cb:var(--b4-az-bg);}
.etapa-rojo{--c:var(--b4-ro); --cb:var(--b4-ro-bg);}
.etapa-ambar{--c:var(--b4-am); --cb:var(--b4-am-bg);}
.etapa-verde{--c:var(--b4-ok); --cb:var(--b4-ok-bg);}
.etapa-morado{--c:var(--b4-mo); --cb:var(--b4-mo-bg);}
.etapa-marino{--c:var(--sel-marino); --cb:var(--b4-track);}
.etapa-chip{
  display:inline-flex; align-items:center; gap:6px; min-height:28px; padding:3px 10px 3px 9px; max-width:100%; box-sizing:border-box;
  border:1.5px solid var(--c); border-radius:999px; background:var(--cb); color:var(--ink);
  font:inherit; font-size:.74rem; font-weight:700; letter-spacing:.01em; cursor:pointer;
}
.etapa-chip:hover{background:color-mix(in srgb, var(--c) 28%, transparent);}
.etapa-chip:focus-visible, .etapa-item:focus-visible{outline:3px solid var(--info-ink); outline-offset:2px;}
.etapa-dot{flex:none; width:9px; height:9px; border-radius:50%; background:var(--c);}
.etapa-chip-txt{min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.etapa-caret{font-size:.62rem; opacity:.7;}
.etapa-menu{
  position:fixed; z-index:70; min-width:200px; max-width:min(320px, calc(100vw - 16px)); padding:6px; box-sizing:border-box;
  display:flex; flex-direction:column; gap:2px; background:var(--surface); border:1.5px solid var(--line-strong); border-radius:16px; box-shadow:var(--shadow);
}
.etapa-item{
  display:flex; align-items:center; gap:10px; width:100%; padding:10px 12px; border:0; border-radius:12px;
  background:transparent; color:var(--ink); font:inherit; font-size:.88rem; font-weight:600; text-align:left; cursor:pointer;
}
.etapa-item:hover, .etapa-item:focus-visible{background:color-mix(in srgb, var(--c) 18%, transparent);}
.etapa-item[aria-checked="true"]{background:color-mix(in srgb, var(--c) 26%, transparent);}
.etapa-item[aria-checked="true"]::after{content:"✓"; margin-left:auto; font-weight:800;}

/* ---------- Agenda: calendario con marcas + semana ---------- */
.agenda-top{display:flex; flex-wrap:wrap; align-items:flex-start; gap:10px 32px; margin:4px 0 22px;}
.agenda-cal{flex:0 1 340px; min-width:0;}
.agenda-cal .cal-dia{aspect-ratio:auto; height:38px; min-height:38px;}
.agenda-cal .cal-hueco{min-height:38px;}
.agenda-leyenda{display:flex; flex-direction:column; gap:8px; margin:44px 0 0; padding:0; list-style:none; font-size:.8rem; color:var(--ink-soft);}
@media (max-width:700px){ .agenda-leyenda{flex-direction:row; flex-wrap:wrap; gap:6px 16px; margin:0;} }
.agenda-leyenda .cal-m{display:inline-block; margin-right:6px; vertical-align:middle;}
.agenda-barra{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:0 0 14px;}
.sem-wrap{margin-top:6px;}
.sem-cab{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:12px;}
.sem-titulo{flex:1; min-width:200px; margin:0; font-family:"Montserrat",sans-serif; font-weight:800; font-size:1.05rem;}
.sem-grid{display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:8px;}
.sem-dia{display:flex; flex-direction:column; min-width:0; min-height:230px; border:1.5px solid var(--line); border-radius:16px; background:var(--surface); overflow:hidden;}
.sem-dia.resaltado{border-color:var(--info-ink); box-shadow:0 0 0 3px var(--info-line);}
.sem-dia-cab{display:flex; align-items:center; gap:8px; padding:8px 10px; border-bottom:1px solid var(--line);}
.sem-dow{font-size:.7rem; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-soft);}
.sem-num{display:inline-flex; align-items:center; justify-content:center; min-width:28px; height:28px; padding:0 4px; border-radius:50%; font-weight:800; font-size:.95rem; font-variant-numeric:tabular-nums;}
.sem-dia.hoy .sem-num{background:var(--accent); color:var(--accent-ink);}
.sem-dia.hoy .sem-dow{color:var(--ink);}
.sem-items{display:flex; flex-direction:column; gap:6px; padding:8px 8px 0;}
.sem-item{
  --c:var(--sel-azul); display:flex; flex-direction:column; gap:1px; width:100%; padding:6px 8px; text-align:left; cursor:pointer;
  border:0; border-left:4px solid var(--c); border-radius:10px; background:color-mix(in srgb, var(--c) 14%, transparent); color:var(--ink);
  font:inherit; font-size:.78rem; line-height:1.25; overflow-wrap:anywhere; text-decoration:none;
}
.sem-item:hover{background:color-mix(in srgb, var(--c) 26%, transparent);}
.sem-item:focus-visible, .sem-hueco:focus-visible{outline:3px solid var(--info-ink); outline-offset:1px;}
.sem-item-hora{font-weight:700; font-size:.7rem; color:var(--ink-soft);}
.sem-item-tit{font-weight:600;}
.sem-item-sub{font-size:.7rem; color:var(--ink-soft);}
.sem-c-azul{--c:var(--sel-azul);} .sem-c-rojo{--c:var(--sel-rojo);} .sem-c-ambar{--c:var(--sel-ambar);}
.sem-c-verde{--c:var(--sel-verde);} .sem-c-morado{--c:var(--sel-morado);} .sem-c-marino{--c:var(--sel-marino);} .sem-c-gris{--c:var(--sel-gris);}
.sem-hueco{
  flex:1; min-height:44px; width:100%; margin-top:4px; padding:0; border:0; background:transparent; color:var(--ink-soft);
  font:inherit; font-size:.78rem; font-weight:600; cursor:pointer; opacity:0;
}
.sem-dia:hover .sem-hueco, .sem-hueco:focus-visible{opacity:1;}
@media (hover:none){ .sem-hueco{opacity:.7;} }
@media (max-width:900px){
  .sem-grid{grid-template-columns:1fr;}
  .sem-dia{min-height:0;}
  .sem-dia-cab{flex-direction:row;}
  .sem-hueco{min-height:40px; opacity:.7;}
}
.sem-vacio{font-size:.76rem; color:var(--ink-soft); padding:2px 2px 4px;}

/* ---------- guía de primeros pasos (Hoy) ---------- */
.guia{border:1.5px solid var(--line-strong); border-radius:20px; background:var(--surface); padding:18px 20px 16px;}
.guia[hidden]{display:none;}
.guia-cab{display:flex; justify-content:space-between; align-items:flex-start; gap:12px; flex-wrap:wrap;}
.guia-cab h2{margin:0;}
.guia-lista{list-style:none; margin:14px 0 0; padding:0; display:flex; flex-direction:column;}
.guia-paso{display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 0; border-top:1px solid var(--line);}
.guia-paso:first-child{border-top:0;}
.guia-paso .chk-item{flex:1; min-width:0;}
.guia-paso .btn-sec{flex:none; min-height:36px; padding:6px 16px; font-size:.8rem;}
.guia-paso.hecho .btn-sec{visibility:hidden;}
@media (max-width:520px){ .guia{padding:16px 14px 14px;} .guia-paso{flex-wrap:wrap;} }

/* ---------- Ajustes: nada se sale por la derecha en pantallas estrechas ---------- */
#tab-ajustes, #tab-ajustes .block, #tab-ajustes .conexiones-lista, #tab-ajustes .copias-drive{min-width:0; max-width:100%;}
.conexion-row > *{min-width:0;}
.conexion-acciones{min-width:0; max-width:100%;}
.conexion-acciones .btn, .conexion-acciones .btn-pill, .conexion-acciones .btn-sec{max-width:100%; min-width:0; white-space:normal; text-align:left; justify-content:flex-start;}
@media (max-width:520px){
  .conexion-acciones{width:100%;}
  .conexion-acciones .btn, .conexion-acciones .btn-pill, .conexion-acciones .btn-sec{flex:1 1 100%;}
}

/* ---------- iconos de línea del rediseño (Mi día, Briefing, Recordatorios) ---------- */
.ico-set{width:18px; height:18px; flex:none; display:block;}
.ico-inline{display:inline-block; vertical-align:-3px; width:16px; height:16px; margin-right:2px;}
.fc-icon.ico-svg, .bloque-icon.ico-svg, .ui-icon.ico-svg, .urg-ico.ico-svg{display:inline-flex; align-items:center; justify-content:center; color:var(--ink);}
.fc-icon.ico-svg{width:30px; height:30px; border-radius:50%; background:var(--surface-2);}
.fc-icon-aviso{color:var(--warn-ink) !important;}
.bloque-head .bloque-icon.ico-svg .ico-set{width:22px; height:22px;}
.urg-ico .ico-set{width:18px; height:18px;}
.ui-icon.ico-svg .ico-set{width:16px; height:16px;}
.icon-btn .ico-set{width:16px; height:16px; margin:auto;}
.btn-ico .ico-set{width:18px; height:18px;}
.btn-ico.danger:hover, .btn-ico.danger:focus-visible{color:var(--warn-ink); border-color:var(--warn-ink);}
.btn-ico.danger.confirming{background:var(--accent); color:var(--accent-ink); border-color:var(--accent);}
/* Recordatorios como filas del checklist */
.recordatorios-list.chk-fila{gap:0;}
.recordatorio-row .chk-item{flex:1; min-width:0;}
.recordatorio-row .btn-ico{width:36px; height:36px;}
.recordatorio-row .fecha-rel{flex:none;}
.fecha-rel.con-ico::before{display:none;}
.fecha-rel.con-ico .ico-inline{width:13px; height:13px; margin:0 4px 0 0; vertical-align:-2px;}
.sec-icono{display:inline-flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; background:var(--surface-2); color:var(--ink); flex:none;}
.dia-racha .ico-inline{width:15px; height:15px;}

fieldset.fieldset-chk{min-width:0; margin:0;}
.panel-pulso fieldset.fieldset-chk{border:1px solid var(--line);}

/* =====================================================================
   Cajas de cifras (KPI) modernas — .stat y .yp decoradas por decorarKpi()
   Tarjeta con degradado suave del tono, icono en círculo de color, número
   grande, nota y mini gráfico (barra o sparkline). Noche y Día por tokens.
   ===================================================================== */
.stats, .year-progress{background:none; border:0; gap:14px;}
.stats{margin-bottom:34px;}
.stats-kpi{margin-bottom:26px;}
.year-progress{margin-bottom:22px;}
.kpi, .tono-info{
  --k:var(--info); --k-ink:var(--info-ink); --k-bg:var(--info-bg); --k-line:var(--info-line);
}
.kpi.kpi-warn, .tono-warn{--k:var(--warn); --k-ink:var(--warn-ink); --k-bg:var(--warn-bg); --k-line:var(--warn-line);}
.kpi.kpi-ok, .tono-ok{--k:var(--zona-comercial); --k-ink:var(--zona-comercial-ink); --k-bg:var(--zona-comercial-bg); --k-line:var(--zona-comercial-line);}
.kpi.kpi-alq, .tono-alq{--k:var(--zona-alquiler); --k-ink:var(--zona-alquiler-ink); --k-bg:var(--zona-alquiler-bg); --k-line:var(--zona-alquiler-line);}
.kpi.kpi-neutro, .tono-neutro{--k:var(--ink); --k-ink:var(--ink); --k-bg:var(--ok-bg); --k-line:var(--line-strong);}
.stat.kpi, .yp.kpi{
  position:relative; isolation:isolate; overflow:hidden; min-width:0;
  display:flex; flex-direction:column; justify-content:flex-start; gap:2px;
  min-height:128px; padding:16px 16px 14px; border-radius:18px;
  border:1px solid var(--line);
  background:
    radial-gradient(130% 100% at 100% 0%, var(--k-bg), transparent 62%),
    var(--surface);
  box-shadow:var(--shadow);
}
.stat.kpi::before, .yp.kpi::before{
  content:""; position:absolute; inset:0; border-radius:inherit; padding:1px; z-index:1; pointer-events:none;
  background:linear-gradient(135deg, var(--k), transparent 50%, var(--k));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  opacity:0;
}
.stat.kpi:hover, .yp.kpi:hover, .stat.kpi:focus-visible{
  border-color:var(--k-line);
  box-shadow:var(--shadow), 0 16px 36px -16px color-mix(in srgb, var(--k) 60%, transparent);
}
.stat.kpi:hover::before, .yp.kpi:hover::before, .stat.kpi:focus-visible::before{opacity:.85;}
.stat.kpi.clickable, .stat.kpi.es-pulsable{cursor:pointer;}
.stat.kpi:focus-visible{outline:2px solid var(--k-ink); outline-offset:2px;}
.stat.kpi.clickable:hover{background:radial-gradient(130% 100% at 100% 0%, var(--k-bg), transparent 62%), var(--surface);}
.kpi-ico{
  position:absolute; top:13px; right:13px; width:38px; height:38px; border-radius:50%;
  display:grid; place-items:center; color:var(--k-ink); background:var(--k-bg);
  box-shadow:inset 0 0 0 1px var(--k-line);
}
.kpi-ico .ico-set{width:19px; height:19px;}
.kpi .label, .yp.kpi > .label{padding-right:46px; min-height:2.2em; line-height:1.3; font-weight:600;}
.stat.kpi .value{
  font-size:clamp(1.4rem, 1.15rem + .9vw, 2rem); line-height:1.1; margin-top:8px; letter-spacing:-.015em;
  overflow-wrap:anywhere; display:inline-block; transform-origin:left center;
}
.stat.kpi .value.small{font-size:clamp(1.1rem, 1rem + .5vw, 1.4rem);}
.yp.kpi .figures{font-size:clamp(1.3rem, 1.1rem + .8vw, 1.8rem); line-height:1.1; margin-top:8px; flex-wrap:wrap; row-gap:2px; letter-spacing:-.015em;}
.kpi .sub-note{font-size:.76rem; line-height:1.35; color:var(--ink-soft); margin-top:4px;}
.kpi .sub-note[hidden]{display:none;}
.year-progress .yp.kpi .pbar, .kpi-bar{height:7px; border-radius:99px; background:color-mix(in srgb, var(--ink) 12%, transparent); margin-top:auto; position:relative; overflow:hidden;}
.stat.kpi .kpi-bar{margin-top:12px;}
.year-progress .yp.kpi .pbar{margin-top:14px;}
.kpi-bar i, .year-progress .yp.kpi .pbar i{display:block; height:100%; border-radius:99px; background:var(--k);}
.year-progress .yp.kpi .pbar i.behind{background:var(--accent);}
.kpi-spark{display:block; width:100%; height:34px; margin-top:auto; padding-top:10px; color:var(--k); overflow:visible;}
.kpi-spark .a{fill:color-mix(in srgb, var(--k) 20%, transparent); stroke:none;}
.kpi-spark .l{fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; vector-effect:non-scaling-stroke;}
.stat.kpi .sub-note + .kpi-spark{margin-top:8px;}
.kpi-salto{display:inline-block;}

/* 0 en una cifra de alerta: tono verde, sin dramatismo */
.is-loading .stat.kpi .value{color:transparent;}

@media (prefers-reduced-motion:no-preference){
  .stats > .kpi:nth-child(1), .year-progress > .kpi:nth-child(1){--i:0;}
  .stats > .kpi:nth-child(2), .year-progress > .kpi:nth-child(2){--i:1;}
  .stats > .kpi:nth-child(3), .year-progress > .kpi:nth-child(3){--i:2;}
  .stats > .kpi:nth-child(4), .year-progress > .kpi:nth-child(4){--i:3;}
  .stats > .kpi:nth-child(5), .year-progress > .kpi:nth-child(5){--i:4;}
  .stats > .kpi:nth-child(6), .year-progress > .kpi:nth-child(6){--i:5;}
  .stats > .kpi:nth-child(7), .year-progress > .kpi:nth-child(7){--i:6;}
  .stats > .kpi:nth-child(8), .year-progress > .kpi:nth-child(8){--i:7;}
  .kpi:not(.kpi-quieto){animation:kpiIn .6s cubic-bezier(.2,.7,.2,1) both; animation-delay:calc(var(--i, 0) * 70ms);}
  .stat.kpi, .yp.kpi{transition:border-color .25s ease, box-shadow .25s ease;}
  .stat.kpi::before, .yp.kpi::before{transition:opacity .3s ease;}
  .kpi-ico{transition:transform .35s cubic-bezier(.3,1.6,.5,1);}
  .kpi:hover .kpi-ico, .kpi:focus-visible .kpi-ico{transform:translateY(-2px) rotate(-8deg) scale(1.06);}
  .kpi-spark .l{stroke-dasharray:1; stroke-dashoffset:1; animation:kpiTrazo 1.1s .35s ease-out forwards;}
  .kpi-spark .a{animation:kpiFundido .8s .7s ease-out both;}
  .kpi-salto{animation:kpiSalto .5s cubic-bezier(.3,1.6,.5,1);}
  @keyframes kpiIn{from{opacity:0; transform:translateY(16px) scale(.97);} to{opacity:1; transform:none;}}
  @keyframes kpiTrazo{to{stroke-dashoffset:0;}}
  @keyframes kpiFundido{from{opacity:0;} to{opacity:1;}}
  @keyframes kpiSalto{0%{transform:scale(1);} 40%{transform:scale(1.12) translateY(-2px);} 100%{transform:scale(1);}}
}
@media (max-width:520px){
  .stat.kpi, .yp.kpi{min-height:118px; padding:14px 13px 12px; border-radius:16px;}
  .kpi-ico{top:11px; right:11px; width:32px; height:32px;}
  .kpi-ico .ico-set{width:17px; height:17px;}
  .kpi .label, .yp.kpi > .label{padding-right:38px; font-size:.64rem; letter-spacing:.06em;}
  .stats{gap:10px;}
}

/* =====================================================================
   Foto de perfil: avatar redondo (iniciales o imagen) y bloque en Ajustes
   ===================================================================== */
.avatar{
  position:relative; display:inline-grid; place-items:center; flex:none; overflow:hidden;
  width:40px; height:40px; border-radius:50%;
  background:linear-gradient(145deg, var(--info), color-mix(in srgb, var(--info) 55%, #000e35));
  color:#fff; font-family:"Montserrat",sans-serif; font-weight:800; font-size:.85rem; letter-spacing:.02em; line-height:1;
  box-shadow:0 0 0 2px var(--surface), 0 0 0 3.5px var(--line-strong);
  user-select:none;
}
.avatar img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; display:block;}
.avatar-sm{width:30px; height:30px; font-size:.7rem; box-shadow:0 0 0 1.5px var(--surface), 0 0 0 2.5px var(--line-strong);}
.avatar-lg{width:64px; height:64px; font-size:1.25rem;}
.avatar-xl{width:104px; height:104px; font-size:2rem; box-shadow:0 0 0 3px var(--surface), 0 0 0 5px var(--line-strong);}
.avatar.con-foto{background:var(--surface-2);}
/* botón del menú de usuario */
.user-avatar .user-foto{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; border-radius:50%; display:block;}
.user-avatar .nav-badge{z-index:2;}
.user-avatar.con-foto{border-color:var(--line-strong);}
/* Mi día: saludo con foto */
.dia-hero-txt{display:flex; align-items:center; gap:18px;}
.dia-hero-cuerpo{min-width:0; flex:1;}
@media (max-width:520px){ .dia-hero-txt{gap:12px;} .dia-hero-txt .avatar-lg{width:52px; height:52px; font-size:1.05rem;} }
/* Ajustes → Usuarios */
.usuario-row .u-email{display:flex; align-items:center; gap:10px; min-width:0;}
.usuario-row .u-email-txt{min-width:0; overflow-wrap:anywhere;}
/* Ajustes → Mis datos: subir / cambiar / quitar */
.foto-perfil{
  display:flex; align-items:center; gap:22px; flex-wrap:wrap;
  margin:0 0 22px; padding:18px 20px; border-radius:20px;
  border:1.5px dashed var(--line-strong);
  background:radial-gradient(120% 120% at 0% 0%, var(--info-bg), transparent 60%), var(--surface);
}
.foto-perfil.arrastrando{border-style:solid; border-color:var(--info); background:radial-gradient(120% 120% at 0% 0%, var(--info-bg), var(--info-bg)), var(--surface);}
.foto-perfil .avatar-xl{flex:none;}
.foto-cuerpo{flex:1 1 260px; min-width:0; display:flex; flex-direction:column; gap:6px;}
.foto-tit{font-size:1rem; font-weight:800;}
.foto-perfil .field-hint{margin:0; max-width:52ch;}
.foto-acc{display:flex; gap:10px; flex-wrap:wrap; margin-top:6px;}
.foto-estado{margin:0; min-height:1.2em; font-size:.8rem; color:var(--ink-soft);}
.foto-perfil.cargando .avatar-xl{opacity:.6;}
@media (prefers-reduced-motion:no-preference){
  .foto-perfil{transition:border-color .2s ease, background .2s ease;}
  .foto-perfil.cargando .avatar-xl{animation:fotoPulso 1.1s ease-in-out infinite;}
  @keyframes fotoPulso{0%,100%{transform:scale(1);} 50%{transform:scale(.95);}}
  .avatar img{animation:fotoEntra .4s ease-out both;}
  @keyframes fotoEntra{from{opacity:0; transform:scale(1.08);} to{opacity:1; transform:none;}}
}
@media (max-width:520px){
  .foto-perfil{padding:16px 14px; gap:14px; justify-content:center; text-align:center;}
  .foto-cuerpo{align-items:center;}
  .foto-acc{justify-content:center;}
}

/* =====================================================================
   Briefing visual: cabecera, cifras, línea de horas, tarjetas por tipo
   ===================================================================== */
.bf-hero{display:flex; align-items:center; gap:18px; margin:4px 0 24px;}
.bf-hero .briefing-headline{margin:0; max-width:none; font-size:clamp(1.25rem, 1rem + 1.1vw, 1.85rem); line-height:1.25; text-wrap:balance;}
.bf-hola{color:var(--accent);}
.bf-kpis{grid-template-columns:repeat(4, minmax(0,1fr)); margin-bottom:30px;}
@media (max-width:900px){ .bf-kpis{grid-template-columns:repeat(2, minmax(0,1fr));} }
.bf .stats-subhead{margin-top:0;}

/* Tu día */
.bf-dia{
  background:var(--surface); border:1px solid var(--line); border-radius:20px; box-shadow:var(--shadow);
  padding:18px 18px 16px; margin-bottom:34px; overflow:hidden;
}
.bf-todo{display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:14px;}
.bf-todo-tit{font-size:.7rem; text-transform:uppercase; letter-spacing:.09em; color:var(--ink-soft); font-weight:700; margin-right:4px;}
.bf-linea{--alto-carril:48px; position:relative; margin:0 18px;}
.bf-eje{position:relative; height:26px; border-bottom:2px solid var(--line-strong);}
.bf-hora{
  position:absolute; left:calc(var(--p) * 1%); bottom:7px; transform:translateX(-50%);
  font-size:.68rem; font-weight:600; color:var(--ink-soft); font-variant-numeric:tabular-nums; white-space:nowrap;
}
.bf-hora::after{content:""; position:absolute; left:50%; top:100%; margin-top:5px; width:1px; height:6px; background:var(--line-strong);}
.bf-pista{
  position:relative; height:calc(var(--nl) * var(--alto-carril) + 34px);
  background:repeating-linear-gradient(90deg, var(--line) 0 1px, transparent 1px calc(100% / 13));
  border-right:1px solid var(--line);
}
.bf-cita{
  --k:var(--info); --k-ink:var(--info-ink); --k-bg:var(--info-bg); --k-line:var(--info-line);
  position:absolute; box-sizing:border-box; min-width:0; overflow:hidden;
  left:calc(var(--ini) * 1%); top:calc(var(--l) * var(--alto-carril) + 8px);
  width:calc(var(--dur) * 3%); max-width:calc(100% - var(--ini) * 1%); height:42px;
  padding:4px 10px 4px 12px; border-radius:12px;
  display:flex; flex-direction:column; justify-content:center; gap:1px;
  background:linear-gradient(100deg, var(--k-bg), var(--surface) 130%);
  border:1px solid var(--k-line); border-left:4px solid var(--k); color:var(--ink);
}
.bf-cita.bf-fin{left:auto; right:0; max-width:none;}
.bf-cita strong{font-size:.72rem; color:var(--k-ink); font-variant-numeric:tabular-nums; white-space:nowrap; line-height:1.2;}
.bf-cita span{font-size:.8rem; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; line-height:1.25;}
.bf-cita.es-pulsable{cursor:pointer;}
.bf-cita.es-pulsable:hover{border-color:var(--k); z-index:2;}
.bf-cita.es-pulsable:focus-visible{outline:2px solid var(--k-ink); outline-offset:2px; z-index:2;}
.bf-cita.bf-cita-dia{position:static; height:auto; width:auto; max-width:100%; min-width:180px; padding:6px 12px 6px 12px;}
/* marca de "ahora" */
.bf-ahora{
  position:absolute; left:calc(var(--p) * 1%); top:-26px; height:calc(100% + 26px); width:0;
  border-left:2px solid var(--accent); z-index:3; pointer-events:none;
}
.bf-ahora::before{
  content:""; position:absolute; left:-6px; top:-1px; width:10px; height:10px; border-radius:50%;
  background:var(--accent); box-shadow:0 0 0 3px var(--surface);
}
.bf-ahora-txt{
  position:absolute; left:8px; bottom:3px; white-space:nowrap;
  background:var(--accent-hover); color:#fff; font-size:.66rem; font-weight:700; letter-spacing:.02em;
  padding:2px 8px; border-radius:99px; line-height:1.3;
}
.bf-ahora-der .bf-ahora-txt{left:auto; right:8px;}
@media (prefers-reduced-motion:no-preference){
  .bf-ahora::before{animation:bfLatido 2s ease-out infinite;}
  @keyframes bfLatido{0%{box-shadow:0 0 0 3px var(--surface), 0 0 0 3px var(--accent);} 70%,100%{box-shadow:0 0 0 3px var(--surface), 0 0 0 12px transparent;}}
}
@media (max-width:700px){
  .bf-dia{padding:14px 12px;}
  .bf-linea{--h:42px; display:grid; grid-template-columns:48px minmax(0,1fr); margin:0; padding:10px 0;}
  .bf-eje{height:auto; border-bottom:0; border-right:2px solid var(--line-strong);}
  .bf-hora{left:auto; right:10px; bottom:auto; top:calc(var(--p) * 1%); transform:translateY(-50%);}
  .bf-hora::after{left:100%; top:50%; margin:0 0 0 4px; width:6px; height:1px;}
  .bf-pista{
    height:calc(13 * var(--h)); border-right:0;
    background:repeating-linear-gradient(180deg, var(--line) 0 1px, transparent 1px calc(100% / 13));
  }
  .bf-cita, .bf-cita.bf-fin{
    left:calc(var(--lv) * 100% / var(--nlv) + 8px); right:auto; top:calc(var(--ini) * 1% + 2px);
    width:calc(100% / var(--nlv) - 10px); max-width:none; height:calc(var(--h) - 4px);
  }
  .bf-cita.bf-cita-dia{left:auto; top:auto; width:100%; height:auto;}
  .bf-ahora{left:0; right:0; top:calc(var(--p) * 1%); width:auto; height:0; border-left:0; border-top:2px solid var(--accent);}
  .bf-ahora::before{left:-5px; top:-6px;}
  .bf-ahora-txt, .bf-ahora-der .bf-ahora-txt{left:-54px; right:auto; bottom:auto; top:-9px; font-size:.58rem; padding:2px 6px;}
}

/* Necesita atención */
.bf-seccion{margin-bottom:10px;}
.bf-atencion{display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%, 360px), 1fr)); gap:26px 22px; align-items:start; margin-bottom:30px;}
.bf-atencion .briefing-mas{grid-column:1 / -1;}
.bf-grupo-cab{display:flex; align-items:center; gap:10px; margin:0 0 12px; font-size:.95rem; font-weight:800;}
.bf-grupo-ico{
  width:30px; height:30px; border-radius:50%; display:grid; place-items:center; flex:none;
  background:var(--k-bg); color:var(--k-ink); box-shadow:inset 0 0 0 1px var(--k-line);
}
.bf-grupo-ico .ico-set{width:16px; height:16px;}
.bf-grupo-n{
  min-width:22px; box-sizing:border-box; padding:1px 8px; border-radius:99px; text-align:center;
  background:var(--k-bg); color:var(--k-ink); border:1px solid var(--k-line);
  font-size:.72rem; font-weight:800; font-variant-numeric:tabular-nums;
}
.bf-cards{display:grid; grid-template-columns:minmax(0,1fr); gap:12px;}
.bf-card.fecha-clave-item{
  position:relative; display:flex; align-items:center; gap:12px; min-width:0;
  padding:12px 12px 12px 14px; border-radius:16px; border:1px solid var(--line); border-left:4px solid var(--k);
  background:linear-gradient(100deg, var(--k-bg), transparent 60%), var(--surface);
  box-shadow:var(--shadow); font-size:.86rem;
}
.bf-card.fecha-clave-item:last-child{border-bottom:1px solid var(--line);}
.bf-card.fecha-clave-item:hover{background:linear-gradient(100deg, var(--k-bg), transparent 75%), var(--surface); border-color:var(--k-line); border-left-color:var(--k);}
.bf-card.es-pulsable:focus-visible{outline:2px solid var(--k-ink); outline-offset:2px;}
.bf-ico.fc-icon.ico-svg{width:34px; height:34px; background:var(--k-bg); color:var(--k-ink); box-shadow:inset 0 0 0 1px var(--k-line);}
.bf-ico .ico-set{width:17px; height:17px;}
.bf-card .fc-texto{display:flex; flex-direction:column; align-items:flex-start; gap:3px; flex:1; min-width:0;}
.bf-card .fc-texto strong{font-size:.92rem; line-height:1.3; overflow-wrap:anywhere;}
.bf-sub{font-size:.8rem; line-height:1.4; color:var(--ink-soft); overflow-wrap:anywhere;}
.bf-meta{margin-top:4px;}
.bf-accs{display:flex; gap:6px; flex:none;}
.bf-act{width:36px; height:36px;}
.bf-act .ico-set{width:17px; height:17px;}
.bf-hecho{background:var(--k-bg); border-color:var(--k-line); color:var(--k-ink);}
.bf-hecho:hover, .bf-hecho:focus-visible{background:var(--k); border-color:var(--k); color:#fff;}
.bf-saliendo{opacity:0; pointer-events:none;}
@media (max-width:520px){
  .bf-card.fecha-clave-item{flex-wrap:wrap; padding:12px;}
  .bf-card .fc-texto{flex:1 1 calc(100% - 50px);}
  .bf-accs{width:100%; justify-content:flex-end; padding-top:8px; border-top:1px dashed var(--line);}
  .bf-hero{gap:12px;}
  .bf-hero .avatar-lg{width:52px; height:52px; font-size:1.05rem;}
}

/* Nuevo en Betterplace */
.bf-minis{display:grid; grid-template-columns:repeat(auto-fill, minmax(min(100%, 260px), 1fr)); gap:12px; margin-bottom:30px;}
.bf-minis .briefing-mas{grid-column:1 / -1;}
.bf-mini{
  display:flex; flex-direction:column; gap:10px; min-width:0; padding:14px; border-radius:18px;
  border:1px solid var(--line); box-shadow:var(--shadow);
  background:radial-gradient(130% 100% at 100% 0%, var(--k-bg), transparent 62%), var(--surface);
}
.bf-mini.es-pulsable{cursor:pointer;}
.bf-mini.es-pulsable:hover{border-color:var(--k-line);}
.bf-mini.es-pulsable:focus-visible{outline:2px solid var(--k-ink); outline-offset:2px;}
.bf-mini-cab{display:flex; align-items:center; gap:10px; min-width:0;}
.bf-mini-tit{font-size:.7rem; text-transform:uppercase; letter-spacing:.08em; color:var(--k-ink); font-weight:800;}
.bf-mini-linea{margin:0; font-size:.92rem; line-height:1.45; overflow-wrap:anywhere;}
.bf-dir{font-weight:700;}
.bf-precio{font-weight:800; color:var(--k-ink);}
.bf-m2{color:var(--ink-soft);}
.bf-mini-pie{display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:auto; flex-wrap:wrap;}
.bf-zona{font-size:.72rem; font-weight:700; padding:2px 10px; border-radius:99px; border:1px solid var(--k-line); color:var(--k-ink); background:var(--k-bg);}
.bf-ver{min-height:34px; padding:5px 16px; font-size:.78rem; margin-left:auto;}

/* Ayer resolviste */
.bf-resuelto{display:flex; flex-direction:column; gap:8px; margin-bottom:30px;}
.bf-resuelto .briefing-mas{border-radius:12px;}
.bf-hecho-fila{
  display:flex; align-items:flex-start; gap:10px; padding:10px 12px; border-radius:14px;
  background:var(--zona-comercial-bg); border:1px solid var(--zona-comercial-line); font-size:.86rem; line-height:1.4;
}
.bf-hecho-fila.es-pulsable{cursor:pointer;}
.bf-hecho-fila.es-pulsable:focus-visible{outline:2px solid var(--zona-comercial-ink); outline-offset:2px;}
.bf-tick{width:24px; height:24px; flex:none; border-radius:50%; display:grid; place-items:center; background:var(--zona-comercial); color:#fff;}
.bf-tick .ico-set{width:14px; height:14px;}
.bf-hecho-txt{min-width:0; overflow-wrap:anywhere;}

.bf-cierre{
  margin:10px 0 4px; padding:18px 20px; border-radius:18px; text-align:center; text-wrap:balance;
  border:1px dashed var(--line-strong); color:var(--ink-soft); font-weight:600; font-size:.92rem; line-height:1.5;
  background:radial-gradient(100% 140% at 50% 0%, var(--info-bg), transparent 70%);
}

@media (prefers-reduced-motion:no-preference){
  .bf:not(.bf-quieto) .bf-hero{animation:bfIn .6s cubic-bezier(.2,.7,.2,1) backwards;}
  .bf:not(.bf-quieto) .bf-cita, .bf:not(.bf-quieto) .bf-card, .bf:not(.bf-quieto) .bf-mini, .bf:not(.bf-quieto) .bf-hecho-fila, .bf:not(.bf-quieto) .bf-grupo-cab{
    animation:bfIn .55s cubic-bezier(.2,.7,.2,1) backwards; animation-delay:calc(var(--i, 0) * 60ms + 150ms);
  }
  .bf:not(.bf-quieto) .bf-cierre{animation:bfIn .6s .6s cubic-bezier(.2,.7,.2,1) backwards;}
  .bf-card.fecha-clave-item, .bf-mini{transition:border-color .2s ease, box-shadow .25s ease, transform .2s ease, opacity .3s ease;}
  .bf-card.fecha-clave-item:hover, .bf-mini.es-pulsable:hover{transform:translateY(-2px); box-shadow:var(--shadow), 0 14px 30px -16px color-mix(in srgb, var(--k) 60%, transparent);}
  .bf-saliendo{transform:translateX(28px) scale(.96); transition:opacity .3s ease, transform .3s ease;}
  @keyframes bfIn{from{opacity:0; transform:translateY(14px);} to{opacity:1; transform:none;}}
}

/* =====================================================================
   Portada de acceso: tarjeta de cristal, borde de luz rojo/blanco/azul,
   lema que aparece palabra a palabra y botón de Google grande.
   ===================================================================== */
:root{
  --auth-glass:rgba(12,39,73,.62);
  --auth-glass-solid:rgba(12,39,73,.94);
  --auth-halo:rgba(0,67,255,.30);
  --auth-borde-blanco:rgba(247,245,238,.95);
}
:root[data-theme="light"]{
  --auth-glass:rgba(255,255,255,.70);
  --auth-glass-solid:rgba(255,255,255,.96);
  --auth-halo:rgba(0,55,214,.16);
  --auth-borde-blanco:rgba(0,14,53,.55);
}
.auth-card{
  isolation:isolate; max-width:440px; border:0; border-radius:28px;
  padding:40px 32px 30px; gap:14px;
  background:var(--auth-glass-solid);
  box-shadow:var(--auth-shadow), 0 0 70px -10px var(--auth-halo);
}
@supports ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){
  .auth-card{
    background:var(--auth-glass);
    -webkit-backdrop-filter:blur(18px) saturate(1.4); backdrop-filter:blur(18px) saturate(1.4);
  }
}
/* borde fino con degradado rojo · blanco · azul */
.auth-card::before{
  content:""; position:absolute; inset:0; left:0; right:0; top:0; height:auto; z-index:-1; pointer-events:none;
  border-radius:inherit; padding:1.5px;
  background:linear-gradient(135deg, var(--accent) 0%, var(--auth-borde-blanco) 50%, var(--info) 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
}
.auth-card::after{
  content:""; position:absolute; inset:-1px; z-index:-2; pointer-events:none; border-radius:inherit;
  background:linear-gradient(135deg, var(--accent), var(--info));
  filter:blur(18px); opacity:.07;
}
.auth-logo{height:72px; margin-bottom:2px;}
.auth-card .auth-titulo{font-size:clamp(1.55rem, 6vw, 2rem); line-height:1.12; letter-spacing:-.02em; text-wrap:balance; margin:2px 0 0;}
.auth-lema{
  margin:0 0 10px; display:flex; flex-wrap:wrap; justify-content:center; gap:2px 8px;
  font-size:.82rem; font-weight:600; letter-spacing:.06em; color:var(--auth-txt-1);
}
.auth-lema .sep{color:var(--accent); font-weight:800;}
.auth-btn{
  min-height:54px; border-radius:999px; font-size:1rem; font-weight:600; padding:12px 22px;
  margin-top:4px;
}
.auth-btn::after{border-radius:inherit;}
.auth-solo{margin:4px 0 0; font-size:.78rem; font-weight:500; letter-spacing:.01em; color:var(--auth-txt-3);}
@media (max-width:430px){
  .auth-card{padding:32px 20px 24px; border-radius:24px;}
  .auth-lema{font-size:.76rem; letter-spacing:.04em;}
}
@media (prefers-reduced-motion:no-preference){
  .auth-card::after{animation:authBrillo 5s ease-in-out infinite;}
  .auth-lema > span{animation:authPalabra .7s cubic-bezier(.2,.7,.2,1) backwards;}
  .auth-lema > span:nth-child(1){animation-delay:.7s;}
  .auth-lema > span:nth-child(2){animation-delay:1s;}
  .auth-lema > span:nth-child(3){animation-delay:1.3s;}
  .auth-lema > span:nth-child(4){animation-delay:1.6s;}
  .auth-lema > span:nth-child(5){animation-delay:1.9s;}
  .auth-titulo{animation:authPalabra .8s .35s cubic-bezier(.2,.7,.2,1) backwards;}
  .auth-btn{animation:authPalabra .8s 2.1s cubic-bezier(.2,.7,.2,1) backwards;}
  .auth-solo{animation:authPalabra .8s 2.4s cubic-bezier(.2,.7,.2,1) backwards;}
  @keyframes authBrillo{0%,100%{opacity:.04;} 50%{opacity:.18;}}
  @keyframes authPalabra{from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:none;}}
}

/* =====================================================================
   Prospecto: «Pegar datos» de Betterplace
   ===================================================================== */
.pegar-box{
  display:flex; flex-direction:column; gap:12px; margin:4px 0 18px; padding:16px; border-radius:18px;
  border:1.5px dashed var(--info-line);
  background:radial-gradient(120% 120% at 0% 0%, var(--info-bg), transparent 65%), var(--surface);
}
.pegar-cab{display:flex; align-items:flex-start; gap:12px;}
.pegar-ico{
  width:38px; height:38px; flex:none; border-radius:50%; display:grid; place-items:center;
  background:var(--info-bg); color:var(--info-ink); box-shadow:inset 0 0 0 1px var(--info-line);
}
.pegar-ico .ico-set{width:19px; height:19px;}
.pegar-tit{font-size:.95rem; font-weight:800;}
.pegar-cab .field-hint{margin:2px 0 0;}
.pegar-acc{display:flex; flex-wrap:wrap; gap:10px;}
.pegar-box textarea{width:100%; box-sizing:border-box; min-height:84px; resize:vertical;}
.pegar-resultado{
  display:flex; flex-direction:column; gap:10px; padding:14px; border-radius:16px;
  background:var(--zona-comercial-bg); border:1px solid var(--zona-comercial-line);
}
.pegar-tit2{margin:0; font-size:.84rem; font-weight:700; line-height:1.4;}
.pegar-items{display:flex; flex-direction:column; gap:8px;}
.pegar-item{
  display:grid; grid-template-columns:auto auto 1fr; align-items:center; gap:4px 12px;
  padding:10px 12px; border-radius:12px; background:var(--surface); border:1px solid var(--line); cursor:pointer; min-height:44px;
}
.pegar-item input{width:20px; height:20px; margin:0; accent-color:var(--zona-comercial);}
.pegar-campo{font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--ink-soft); font-weight:700; min-width:64px;}
.pegar-valor{font-size:.95rem; overflow-wrap:anywhere;}
.pegar-nota{grid-column:2 / -1; font-size:.74rem; color:var(--ink-soft);}
.pegar-item:has(input:checked){border-color:var(--zona-comercial-line); box-shadow:inset 0 0 0 1px var(--zona-comercial-line);}
.pegar-item:focus-within{outline:2px solid var(--zona-comercial-ink); outline-offset:2px;}
@media (prefers-reduced-motion:no-preference){
  .pegar-resultado{animation:bfIn .4s cubic-bezier(.2,.7,.2,1) backwards;}
  .pegar-item{animation:bfIn .4s cubic-bezier(.2,.7,.2,1) backwards;}
  .pegar-item:nth-child(2){animation-delay:.07s;} .pegar-item:nth-child(3){animation-delay:.14s;} .pegar-item:nth-child(4){animation-delay:.21s;}
}
.dia-kpis{grid-template-columns:repeat(3, minmax(0,1fr)); margin:14px 0 0;}
@media (max-width:700px){ .dia-kpis{grid-template-columns:repeat(2, minmax(0,1fr));} .dia-kpis > .kpi:last-child{grid-column:1 / -1;} }

/* Portada: cubre siempre la ventana (sin depender del relleno del body), tarjeta centrada con 16 px de margen */
.auth-gate{
  position:fixed; inset:0; z-index:40; margin:0; padding:64px 16px 32px; box-sizing:border-box;
  width:100%; max-width:100vw; overflow-x:hidden; overflow-y:auto; min-height:0;
  align-items:center; justify-content:center;
}
.auth-gate[hidden]{display:none;}
.auth-gate > .auth-card{margin:auto; width:100%; max-width:min(440px, calc(100vw - 32px)); box-sizing:border-box;}
.auth-gate .tema-btn-gate{position:absolute; top:16px; right:16px; left:auto; bottom:auto; margin:0;}
.auth-bg{position:fixed;}
@media (max-height:500px){ .auth-gate{padding-top:56px; align-items:flex-start;} }
@media (max-width:360px){ .auth-card{padding:28px 16px 20px;} .auth-logo{height:56px;} .auth-btn{padding:10px 14px; font-size:.92rem;} }

/* =====================================================================
   BLOQUE 3b — Mis clientes (tabla), búsqueda global, chat del equipo,
   banner «Instalar app» y edición del correo. Solo tokens de :root
   (Noche y Día); todo movimiento dentro de prefers-reduced-motion.
   ===================================================================== */
.hdr-ico{display:inline-flex; align-items:center; justify-content:center; flex:none;}
.hdr-ico .ico-set{width:19px; height:19px;}
.hdr-chat .user-badge{top:-4px; right:-4px;}
body.chat-abierto{overflow:hidden;}
.tc-th:focus-visible, .tc-nombre:focus-visible, .tc-fecha:focus-visible, .tc-wa:focus-visible, .chat-item:focus-visible,
.msg-acc:focus-visible, .msg-ref:focus-visible, .bres-item:focus-visible, .chat-ficha-item:focus-visible, .buscador-cerrar:focus-visible,
.msg-enlace:focus-visible, .chat-nuevos:focus-visible, .chat-mas:focus-visible{outline:2px solid var(--accent); outline-offset:2px;}

/* ---------- vista Tabla ("Mis clientes") ---------- */
.vista-barra{display:flex; margin:0 0 14px;}
.vista-toggle{margin:0;}
.mis-clientes[hidden]{display:none;}
.mis-clientes .stats-kpi{margin-bottom:16px;}
.tc-wrap{border:1px solid var(--line); background:var(--surface); border-radius:20px; overflow:hidden;}
.tc-wrap .empty-state{border:0; margin:0;}
.tc{width:100%; border-collapse:separate; border-spacing:0; font-size:.86rem; table-layout:fixed;}
.tc th{
  text-align:left; padding:0; background:var(--surface-2); font-size:.68rem; font-weight:700; letter-spacing:.07em;
  text-transform:uppercase; color:var(--ink-soft); white-space:nowrap;
}
.tc th.tc-th-tel{padding:12px 14px;}
.tc-th{
  appearance:none; display:inline-flex; align-items:center; gap:6px; width:100%; padding:12px 14px; border:0; background:transparent;
  color:inherit; font:inherit; letter-spacing:inherit; text-transform:inherit; cursor:pointer; text-align:left;
}
.tc-th:hover, .tc-th.activo{color:var(--ink);}
.tc-flecha{opacity:.55; font-size:.8rem; letter-spacing:0;}
.tc-th.activo .tc-flecha{opacity:1; color:var(--info-ink);}
.tc-th-corto{display:none;}
.tc td{padding:10px 14px; border-top:1px solid var(--line); vertical-align:middle; overflow-wrap:anywhere;}
.tc thead th{border-bottom:0;}
.tc-th-nombre{width:22%;} .tc-th-tipo{width:18%;} .tc-th-etapa{width:15%;} .tc-th-proximo{width:17%;} .tc-th-tel{width:14%;} .tc-th-ultima{width:14%;}
.tc-fila:hover td{background:var(--surface-2);}
.tc-fila.cerrada .tc-n1{color:var(--ink-soft);}
.tc .etapa-row{margin:0;}
.tc-nombre{
  appearance:none; display:flex; align-items:center; gap:12px; width:100%; padding:0; border:0; background:none; color:var(--ink);
  font:inherit; text-align:left; cursor:pointer; min-width:0;
}
.tc-nombre:hover .tc-n1{text-decoration:underline; text-underline-offset:3px;}
.tc-ini{
  flex:none; display:inline-grid; place-items:center; width:36px; height:36px; border-radius:50%;
  font-size:.74rem; font-weight:800; letter-spacing:.02em;
  background:var(--info-bg); color:var(--info-ink); border:1.5px solid var(--info-line);
}
.tc-ini-compradores{background:var(--zona-comercial-bg); color:var(--zona-comercial-ink); border-color:var(--zona-comercial-line);}
.tc-ini-referidos{background:var(--zona-alquiler-bg); color:var(--zona-alquiler-ink); border-color:var(--zona-alquiler-line);}
.tc-nombre-txt{display:flex; flex-direction:column; min-width:0; gap:1px;}
.tc-n1{font-weight:700; font-size:.92rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.tc-n2{font-size:.76rem; color:var(--ink-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.tc-tipo{
  display:inline-block; max-width:100%; box-sizing:border-box; overflow:hidden; text-overflow:ellipsis; vertical-align:middle;
  padding:3px 10px; border-radius:999px; font-size:.72rem; font-weight:700; white-space:nowrap;
  background:var(--info-bg); color:var(--info-ink); border:1px solid var(--info-line);
}
.tc-tipo-compradores{background:var(--zona-comercial-bg); color:var(--zona-comercial-ink); border-color:var(--zona-comercial-line);}
.tc-tipo-referidos{background:var(--zona-alquiler-bg); color:var(--zona-alquiler-ink); border-color:var(--zona-alquiler-line);}
.tc-fecha{
  appearance:none; display:inline-flex; align-items:center; gap:8px; min-height:34px; max-width:100%; padding:5px 12px 5px 10px;
  border:1.5px solid var(--line-strong); border-radius:999px; background:transparent; color:var(--ink);
  font:inherit; font-size:.78rem; font-weight:600; text-align:left; cursor:pointer;
}
.tc-fecha .ico-set{width:16px; height:16px;}
.tc-fecha:hover{background:var(--surface-2); border-color:var(--ink);}
.tc-fecha[aria-expanded="true"]{border-color:var(--info-ink); box-shadow:0 0 0 3px var(--info-line);}
.tc-fecha.vencida{color:var(--warn-ink); background:var(--warn-bg); border-color:var(--warn-line);}
.tc-fecha.hoy{color:var(--info-ink); background:var(--info-bg); border-color:var(--info-line);}
.tc-fecha.vacia{border-style:dashed; color:var(--info-ink); font-weight:700;}
.tc-fecha.cerrada{color:var(--ink-soft); border-color:var(--line);}
.tc-wa{display:inline-flex; align-items:center; gap:7px; min-height:34px; color:var(--zona-comercial-ink); font-weight:600; text-decoration:none; white-space:nowrap;}
.tc-wa .ico-set{width:17px; height:17px;}
.tc-wa:hover{text-decoration:underline; text-underline-offset:3px;}
.tc-ult{color:var(--ink-soft); font-size:.8rem;}
.tc-vacio{color:var(--ink-soft);}
.tc-cal-pop{
  position:fixed; z-index:75; width:min(340px, calc(100vw - 16px)); box-sizing:border-box; padding:14px;
  background:var(--surface); border:1.5px solid var(--line-strong); border-radius:20px; box-shadow:var(--shadow);
}
.tc-cal-pop .cal{max-width:none;}
.tc-atajos{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:10px;}
.tc-atajo{border-radius:999px; padding:6px 12px; font-size:.76rem;}
@media (prefers-reduced-motion:no-preference){
  .tc-flash td{animation:tcFlash 1.4s ease-out;}
  @keyframes tcFlash{0%{background:var(--info-bg);} 100%{background:transparent;}}
  .tc-cal-pop:not([hidden]){animation:entradaSuave .22s cubic-bezier(.2,.7,.2,1) both;}
}
@media (max-width:1100px){
  .tc td{padding:10px 10px;} .tc-th{padding:12px 10px;}
  .tc-th-nombre{width:21%;} .tc-th-tipo{width:19%;}
}
/* tarjetas apiladas (móvil y tablet): cada fila es una tarjeta con sus datos */
@media (max-width:860px){
  .tc-wrap{border:0; background:transparent; border-radius:0; overflow:visible;}
  .tc, .tc tbody, .tc tr, .tc td, .tc thead{display:block;}
  .tc{table-layout:auto;}
  .tc thead{margin:0 0 12px;}
  .tc thead tr{display:flex; flex-wrap:wrap; gap:6px; align-items:center;}
  .tc thead tr::before{content:"Ordenar"; font-size:.68rem; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-soft); margin-right:2px;}
  .tc thead th{background:transparent; width:auto !important; display:block;}
  .tc thead th.tc-th-tel{display:none;}
  .tc-th{width:auto; padding:6px 12px; border:1px solid var(--line-strong); border-radius:999px; font-size:.7rem; background:var(--surface); min-height:34px;}
  .tc-th.activo{background:var(--ink); color:var(--bg); border-color:var(--ink);}
  .tc-th.activo .tc-flecha{color:inherit;}
  .tc-th-largo{display:none;} .tc-th-corto{display:inline;}
  .tc tbody{display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:12px;}
  .tc tr.tc-fila{
    position:relative; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:12px 14px; padding:16px;
    background:var(--surface); border:1px solid var(--line); border-radius:20px;
  }
  .tc td{padding:0; border:0; background:none !important; min-width:0;}
  .tc td::before{content:attr(data-label); display:block; margin-bottom:5px; font-size:.64rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-soft);}
  .tc-c-nombre{grid-column:1 / -1;}
  .tc td.tc-c-nombre::before, .tc td.tc-c-tipo::before{display:none;}
  /* el tipo va en su propia línea encima del nombre: así no se solapa con nombres largos */
  .tc-c-tipo{grid-column:1 / -1; order:-1;}
  .tc-n1{white-space:normal;}
  .tc-c-tel .tc-wa{min-height:36px;}
}
@media (max-width:620px){
  .tc tbody{grid-template-columns:1fr;}
}

/* ---------- búsqueda global ---------- */
.overlay.buscador{justify-content:center; align-items:flex-start; padding:10vh 16px 16px; box-sizing:border-box; z-index:90;}
.buscador-caja{
  width:min(680px,100%); max-height:min(76vh, 640px); display:flex; flex-direction:column; overflow:hidden;
  background:var(--surface); border:1px solid var(--line-strong); border-radius:24px; box-shadow:0 30px 70px -20px rgba(0,0,0,.65), var(--shadow);
}
.buscador-campo{display:flex; align-items:center; gap:12px; padding:14px 16px; border-bottom:1px solid var(--line);}
.buscador-campo:focus-within{border-bottom-color:var(--info-ink);}
.buscador-ico{display:inline-flex; color:var(--ink-soft);}
.buscador-ico .ico-set{width:22px; height:22px;}
#buscarGlobal{
  flex:1; min-width:0; border:0; outline:0; background:transparent; color:var(--ink); font:inherit; font-size:1.05rem; font-weight:600; padding:6px 0;
}
#buscarGlobal::placeholder{color:var(--ink-soft); font-weight:500;}
.buscador-cerrar{
  appearance:none; flex:none; width:36px; height:36px; padding:0; display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--line-strong); border-radius:50%; background:transparent; color:var(--ink-soft); cursor:pointer;
}
.buscador-cerrar .ico-set{width:18px; height:18px;}
.buscador-cerrar:hover{color:var(--ink); border-color:var(--ink);}
.buscador-res{flex:1; min-height:0; overflow-y:auto; padding:8px 8px 10px; overscroll-behavior:contain;}
.bres-grupo{display:flex; align-items:center; gap:8px; padding:12px 12px 6px; font-size:.68rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-soft);}
.bres-grupo .ico-set{width:14px; height:14px;}
.bres-n{margin-left:auto; min-width:18px; padding:1px 7px; border-radius:999px; background:var(--surface-2); text-align:center; font-size:.66rem; letter-spacing:0;}
.bres-item{display:flex; align-items:center; gap:12px; padding:10px 12px; border-radius:12px; cursor:pointer; color:var(--ink);}
.bres-item.sel{background:var(--surface-2); border-radius:12px;}
.bres-txt{flex:1; min-width:0; display:flex; flex-direction:column; gap:1px;}
.bres-t{font-weight:700; font-size:.92rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.bres-t mark{background:var(--info-bg); color:var(--info-ink); border-radius:4px; padding:0 2px;}
.bres-s{font-size:.78rem; color:var(--ink-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.bres-intro{flex:none; opacity:0; color:var(--ink-soft); font-weight:700;}
.bres-item.sel .bres-intro{opacity:1;}
@media (hover:none){ .bres-intro{display:none;} }
.buscador-vacio{display:flex; flex-direction:column; align-items:center; gap:12px; padding:28px 16px 22px; text-align:center; color:var(--ink-soft);}
.buscador-vacio p{margin:0; max-width:36ch; font-size:.9rem; line-height:1.45;}
.buscador-vacio-ico{width:32px; height:32px; opacity:.8;}
.buscador-atajos{display:flex; flex-wrap:wrap; justify-content:center; gap:8px;}
.buscador-atajo{border-radius:999px; padding:8px 14px; font-size:.78rem; font-weight:700;}
.buscador-sin{border:0; margin:8px;}
@media (max-width:700px){
  .overlay.buscador{padding:8px;}
  .buscador-caja{max-height:calc(100dvh - 16px); border-radius:20px;}
  #buscarGlobal{font-size:16px;}
  .bres-item{min-height:52px;}
}

/* ---------- chat del equipo ---------- */
.overlay.chat-overlay{justify-content:flex-end; z-index:45;}
.chat-panel{
  position:relative; display:grid; grid-template-columns:minmax(0,1fr); grid-template-rows:minmax(0,1fr);
  width:min(440px,100%); height:100%; background:var(--surface); border-left:1px solid var(--line-strong);
  box-shadow:-24px 0 60px -28px rgba(0,0,0,.7); overflow:hidden;
}
.chat-panel > section{grid-area:1 / 1; display:flex; flex-direction:column; min-width:0; min-height:0; background:var(--surface); position:relative;}
.chat-cab{display:flex; align-items:center; gap:10px; flex:none; min-height:68px; padding:12px 14px 12px 18px; border-bottom:1px solid var(--line);}
.chat-cab h3{margin:0; flex:1; font-size:1.15rem;}
.chat-cab .panel-close{align-self:center; margin-left:auto;}
.chat-cab .panel-close .ico-set{width:20px; height:20px;}
.chat-cab-quien{flex:1; min-width:0; display:flex; align-items:center; gap:12px;}
.chat-cab-txt{display:flex; flex-direction:column; min-width:0;}
.chat-cab-txt strong{font-size:1rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.chat-cab-txt span{font-size:.76rem; color:var(--ink-soft);}
.chat-atras .ico-set{width:20px; height:20px;}
.chat-convs{flex:1; min-height:0; overflow-y:auto; padding:8px; display:flex; flex-direction:column; gap:2px;}
.chat-sec{margin:16px 12px 6px; font-size:.68rem; font-weight:700; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-soft);}
.chat-item{
  appearance:none; display:flex; align-items:center; gap:12px; width:100%; min-height:66px; padding:10px 12px; border:0; border-radius:18px;
  background:transparent; color:var(--ink); font:inherit; text-align:left; cursor:pointer;
}
.chat-item:hover{background:var(--surface-2);}
.chat-item.activa{background:var(--surface-2); box-shadow:inset 3px 0 0 var(--accent);}
.chat-item-txt{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px;}
.chat-item-nom{font-weight:700; font-size:.92rem; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.chat-item-ult{font-size:.8rem; color:var(--ink-soft); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.chat-item.con-nuevos .chat-item-ult{color:var(--ink); font-weight:600;}
.chat-item-meta{flex:none; display:flex; flex-direction:column; align-items:flex-end; gap:5px;}
.chat-item-hora{font-size:.7rem; color:var(--ink-soft); font-variant-numeric:tabular-nums;}
.chat-item-badge{position:static;}
.chat-av-general{background:linear-gradient(145deg, var(--accent), var(--accent-hover)); color:#fff;}
.chat-av-general .ico-set{width:20px; height:20px;}
.chat-vacio-lista{border:0; margin:10px 0;}
.chat-msgs{
  flex:1; min-height:0; overflow-y:auto; padding:14px 14px 18px; display:flex; flex-direction:column; gap:3px;
  background:var(--bg); overscroll-behavior:contain; scroll-behavior:auto;
}
.chat-msgs:focus-visible{outline:2px solid var(--accent); outline-offset:-2px;}
.chat-skel{padding:18px;}
.chat-mas{align-self:center; margin:0 0 8px; border-radius:999px; padding:7px 16px; font-size:.76rem;}
.chat-vacio{margin:auto; border:0;}
.msg-dia{display:flex; justify-content:center; margin:14px 0 8px;}
.msg-dia span{font-size:.7rem; font-weight:700; color:var(--ink-soft); background:var(--surface-2); padding:4px 12px; border-radius:999px;}
.msg{display:flex; align-items:flex-end; gap:8px; min-width:0;}
.msg.propio{justify-content:flex-end;}
.msg.racha{margin-top:10px;}
.msg-av{width:30px; flex:none;}
.msg-burbuja{
  min-width:0; max-width:min(78%, 480px); box-sizing:border-box; padding:9px 13px 6px; border-radius:18px; overflow-wrap:anywhere;
  background:var(--surface); border:1px solid var(--line); color:var(--ink);
}
.msg.ajeno .msg-burbuja{border-bottom-left-radius:6px;}
.msg.propio .msg-burbuja{background:var(--sel-on-bg); color:var(--sel-on-fg); border-color:transparent; border-bottom-right-radius:6px;}
.msg-autor{font-size:.72rem; font-weight:800; color:var(--info-ink); margin-bottom:2px;}
.msg-texto{white-space:pre-wrap; font-size:.9rem; line-height:1.45;}
.msg-enlace{color:var(--info-ink); text-decoration:underline; text-underline-offset:2px; overflow-wrap:anywhere;}
.msg.propio .msg-enlace{color:inherit;}
.msg-eliminado{font-style:italic; opacity:.75;}
.msg.borrado .msg-burbuja, .msg.propio.borrado .msg-burbuja{background:transparent; color:var(--ink-soft); border:1px dashed var(--line-strong);}
.msg-pie{display:flex; align-items:center; justify-content:flex-end; gap:6px; margin-top:3px; font-size:.68rem;}
.msg-hora, .msg-editado{opacity:.78; font-variant-numeric:tabular-nums;}
.msg-editado{font-style:italic;}
.msg-acc{
  appearance:none; display:inline-grid; place-items:center; width:26px; height:26px; margin:-3px 0; padding:0; border:0; border-radius:50%;
  background:transparent; color:inherit; cursor:pointer; opacity:0;
}
.msg-acc .ico-set{width:15px; height:15px;}
.msg:hover .msg-acc, .msg:focus-within .msg-acc, .msg-acc.confirming{opacity:.9;}
.msg-acc:hover{background:color-mix(in srgb, currentColor 14%, transparent);}
.msg-acc.confirming{background:var(--warn-bg); color:var(--warn-ink);}
.msg.propio .msg-acc.confirming{background:var(--accent); color:#fff;}
@media (hover:none){ .msg-acc{opacity:.8; width:32px; height:32px;} }
.msg-ref{
  appearance:none; display:flex; align-items:center; gap:10px; width:100%; margin-top:6px; padding:8px 10px; border-radius:12px;
  border:1px solid color-mix(in srgb, currentColor 32%, transparent); background:color-mix(in srgb, currentColor 8%, transparent);
  color:inherit; font:inherit; text-align:left; cursor:pointer;
}
.msg-ref:hover{background:color-mix(in srgb, currentColor 16%, transparent);}
.msg-ref .ico-set{width:20px; height:20px;}
.msg-ref-txt{display:flex; flex-direction:column; min-width:0;}
.msg-ref-t{font-weight:700; font-size:.82rem; overflow-wrap:anywhere;}
.msg-ref-s{font-size:.7rem; opacity:.78;}
.msg.pendiente .msg-burbuja{opacity:.65;}
.msg.propio .msg-burbuja:has(.msg-edicion){background:var(--surface); color:var(--ink); border:1.5px solid var(--line-strong); width:min(78%, 480px);}
.msg-edit-ta{
  width:100%; box-sizing:border-box; min-height:56px; resize:vertical; padding:8px 10px; border:1.5px solid var(--line-strong); border-radius:12px;
  background:var(--bg); color:var(--ink); font:inherit; font-size:.9rem; line-height:1.4;
}
.msg-edit-btns{display:flex; gap:6px; margin:6px 0 4px;}
.msg-edit-ok{min-height:34px; padding:6px 16px; font-size:.78rem;}
.msg-edit-no{border-radius:999px; padding:6px 14px;}
.chat-nuevos{
  appearance:none; flex:none; align-self:center; z-index:3; margin:-48px auto 12px; padding:8px 18px; border:0; border-radius:999px;
  background:var(--btn-bg); color:var(--btn-fg); font:inherit; font-size:.78rem; font-weight:700; cursor:pointer; box-shadow:var(--shadow);
}
.chat-form{
  position:relative; flex:none; display:flex; flex-direction:column; gap:8px; padding:10px 12px calc(10px + env(safe-area-inset-bottom, 0px));
  border-top:1px solid var(--line); background:var(--surface);
}
.chat-form-fila{display:flex; align-items:flex-end; gap:8px;}
.chat-form .btn-ico{width:44px; height:44px;}
.chat-form .btn-ico .ico-set{width:20px; height:20px;}
#chatTexto{
  flex:1; min-width:0; min-height:44px; max-height:132px; box-sizing:border-box; resize:none; padding:11px 16px;
  border:1.5px solid var(--line-strong); border-radius:22px; background:var(--bg); color:var(--ink); font:inherit; font-size:.92rem; line-height:1.35;
}
#chatTexto::placeholder{color:var(--ink-soft);}
#chatTexto:focus{outline:none; border-color:var(--info-ink); box-shadow:0 0 0 3px var(--info-line);}
.chat-contador{font-size:.7rem; color:var(--ink-soft); text-align:right; margin-top:-2px;}
.chat-contador.limite{color:var(--warn-ink); font-weight:700;}
.chat-ref-adj{
  display:flex; align-items:center; gap:8px; padding:5px 6px 5px 12px; border-radius:14px; background:var(--info-bg); color:var(--info-ink);
  border:1px solid var(--info-line); font-size:.8rem; font-weight:700;
}
.chat-ref-adj .ico-set{width:18px; height:18px;}
.chat-ref-adj-t{flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.chat-ref-quitar{border:0; background:transparent; color:inherit;}
.chat-ficha-pop{
  position:absolute; left:12px; right:12px; bottom:calc(100% - 2px); z-index:6; display:flex; flex-direction:column; max-height:min(340px, 50vh);
  background:var(--surface); border:1.5px solid var(--line-strong); border-radius:18px; box-shadow:var(--shadow); overflow:hidden;
}
.chat-ficha-pop input{border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--ink); font:inherit; font-size:.9rem; padding:13px 16px; outline:0;}
.chat-ficha-lista{overflow-y:auto; padding:6px;}
.chat-ficha-item{
  appearance:none; display:flex; flex-direction:column; gap:1px; width:100%; padding:9px 12px; border:0; border-radius:12px; background:transparent;
  color:var(--ink); font:inherit; text-align:left; cursor:pointer;
}
.chat-ficha-item:hover{background:var(--surface-2);}
.cf-t{font-weight:700; font-size:.88rem; overflow-wrap:anywhere;}
.cf-s{font-size:.74rem; color:var(--ink-soft);}
.chat-ficha-vacio{margin:0; padding:14px 16px; font-size:.84rem; color:var(--ink-soft);}
/* estrecho: una sola columna; la conversación se desliza sobre la lista */
@media (max-width:999px){
  .chat-conv{transform:none;}
  .chat-panel[data-vista="lista"] .chat-conv{transform:translateX(100%); visibility:hidden;}
  .chat-panel[data-vista="conv"] .chat-lista{visibility:hidden;}
}
@media (max-width:999px) and (prefers-reduced-motion:no-preference){
  .chat-conv{transition:transform .3s cubic-bezier(.2,.7,.2,1), visibility 0s linear 0s;}
  .chat-panel[data-vista="lista"] .chat-conv{transition:transform .3s cubic-bezier(.2,.7,.2,1), visibility 0s linear .3s;}
  .chat-lista{transition:visibility 0s linear 0s;}
  .chat-panel[data-vista="conv"] .chat-lista{transition:visibility 0s linear .3s;}
}
/* ancho: lista y conversación lado a lado */
@media (min-width:1000px){
  .chat-panel{width:min(920px, 94vw); grid-template-columns:minmax(300px, 340px) minmax(0,1fr);}
  .chat-panel > section{grid-area:auto;}
  .chat-lista{border-right:1px solid var(--line);}
  .chat-atras{display:none;}
  .chat-lista .chat-cerrar{display:none;}
}
@media (max-width:700px){
  .chat-panel{width:100%; height:100dvh; border-left:0;}
  #chatTexto{font-size:16px;}
  .msg-burbuja{max-width:84%;}
}
@media (prefers-reduced-motion:no-preference){
  .msg.nuevo .msg-burbuja{animation:msgEntra .3s cubic-bezier(.2,.8,.3,1.1) both;}
  @keyframes msgEntra{from{opacity:0; transform:translateY(10px) scale(.97);} to{opacity:1; transform:none;}}
  .chat-nuevos:not([hidden]){animation:entradaSuave .25s ease both;}
  .chat-item{transition:background .15s ease;}
  .chat-overlay:not([hidden]) .chat-panel{animation:chatDesliza .32s cubic-bezier(.2,.7,.2,1) both;}
  @keyframes chatDesliza{from{transform:translateX(40px); opacity:0;} to{transform:none; opacity:1;}}
}

/* ---------- Instalar app ---------- */
.pwa-banner{
  position:fixed; left:16px; bottom:16px; z-index:36; width:min(440px, calc(100vw - 32px)); box-sizing:border-box;
  display:flex; align-items:center; gap:12px; padding:12px 12px 12px 14px;
  background:var(--surface); border:1.5px solid var(--line-strong); border-radius:22px; box-shadow:var(--shadow);
}
.pwa-icono{flex:none; width:44px; height:44px; border-radius:12px; display:block;}
.pwa-txt{flex:1; min-width:0; display:flex; flex-direction:column; gap:2px;}
.pwa-txt strong{font-size:.9rem;}
.pwa-txt span{font-size:.76rem; color:var(--ink-soft); line-height:1.35;}
.pwa-acc{flex:none; display:flex; align-items:center; gap:6px;}
.pwa-acc .btn{min-height:38px; padding:6px 16px; font-size:.8rem;}
.pwa-cerrar{width:36px; height:36px;}
.pwa-cerrar .ico-set{width:16px; height:16px;}
.pwa-share{display:inline-flex; vertical-align:-3px; color:var(--info-ink);}
.pwa-share .ico-set{width:16px; height:16px; display:inline-block;}
@media (max-width:700px){
  .pwa-banner{left:12px; right:12px; width:auto; bottom:calc(var(--nav-bar-h) + env(safe-area-inset-bottom, 0px) + 92px); flex-wrap:wrap;}
  .pwa-acc{width:100%; justify-content:flex-end;}
  .pwa-txt{flex-basis:calc(100% - 60px);}
}

/* ---------- editar el correo (Ajustes → Usuarios) ---------- */
.u-email .nombre-edit{flex:1;}
.nombre-edit input{border-radius:10px;}
.email-edit .ee-input{min-height:40px;}
.btn-editar-email{margin-left:2px;}
.ne-ayuda.err{color:var(--warn-ink); font-weight:600;}
.nombre-edit input[aria-invalid="true"]{border-color:var(--warn-ink);}
@media (hover:none){ .btn-editar-email{min-width:40px; min-height:36px;} }

/* Espacio final para que el botón flotante "+" no tape las últimas filas */
#appRoot .wrap{padding-bottom:112px;}
@media (max-width:700px){ #appRoot .wrap{padding-bottom:168px;} }
