/* ═══════════════════════════════════════════════════════════════════════════════════════════════
   APPLE.CSS — piel iOS/Apple de Mi Ceta (Ernesto 17/08/2026). CAPA VISUAL: tokens + componentes.
   Cómo funciona: apple.js pone en <html> data-apple + data-tema="claro|oscuro" (auto por sistema,
   con override "Apariencia" en Más). Este archivo (1) define los tokens Apple, (2) los REMAPEA sobre
   las variables-contrato que ya usan las páginas (--bg --ink --muted --line --panel --card…) —igual
   que hacía neo-theme— para que el markup viejo siga andando, y (3) trae los componentes iOS con
   prefijo .ap-* que usan launcher, tab bar, Agenda y Solicitudes. Reemplaza a neo-theme (no conviven).
   Reglas del mock: -apple-system, letter-spacing -.012em, pesos 400/500/590 (700 solo large title),
   tabular-nums, motion 180-350ms cubic-bezier(.32,.72,0,1), un solo acento primario (azul).
   ═══════════════════════════════════════════════════════════════════════════════════════════════ */

/* ── 1) TOKENS ─────────────────────────────────────────────────────────────────────────────── */
html[data-apple]{
  /* 🐛 --text-3 ERA #8e8e93 EN LOS DOS TEMAS: es el gris terciario de iOS, calibrado para
     fondo NEGRO. Sobre el blanco de este bloque —que es el tema CLARO— mide 2,9:1 contra el
     4,5:1 que pide AA, y de este token cuelgan --muted, --mut, --gris, --suave y --c-muted,
     o sea 624 usos como `color` en 60 archivos: prácticamente toda la letra chica del
     portal. Medido en los paneles de gastos antes de tocarlo: el centro de costo 2,92 · la
     hora y los encabezados de tabla 3,26 · el «Ver los N viajes del mes» 2,83.
     #65656a es el mismo gris, un poco más oscuro: sobre blanco da 5,5, y sobre las
     superficies que llevan --fill encima —los chips de área, por ejemplo— 4,8. Con #6b6b70,
     que fue el primer intento, esos chips quedaban en 4,16: cerca, pero abajo del mínimo.
     En OSCURO el token está bien (5,2 a 6,4) y el bloque
     de abajo lo redefine, así que este cambio no lo toca.
     Se revisó antes de cambiarlo QUE NO ROMPA: de los 638 usos, 624 son `color` —donde un
     gris más oscuro sólo puede mejorar—, 9 son bordes y 1 un `fill` de SVG, donde oscurecer
     un gris de apoyo es inocuo. Ninguno lo usa como fondo, que era el único caso en el que
     esto habría cambiado un diseño en vez de arreglarlo. */
  --bg:#f2f2f7; --card:#ffffff; --card-2:#ffffff; --text:#000; --text-2:#3c3c43; --text-3:#65656a;
  --sep:rgba(60,60,67,.16); --fill:rgba(120,120,128,.12); --fill-2:rgba(120,120,128,.2);
  --blue:#007AFF; --green:#34C759; --orange:#FF9500; --red:#FF3B30; --purple:#AF52DE; --teal:#30B0C7; --indigo:#5856D6; --pink:#FF2D55; --gray:#8e8e93;
  --blue-soft:rgba(0,122,255,.14); --green-soft:rgba(52,199,89,.16); --orange-soft:rgba(255,149,0,.16); --red-soft:rgba(255,59,48,.14); --purple-soft:rgba(175,82,222,.16); --teal-soft:rgba(48,176,199,.16); --indigo-soft:rgba(88,86,214,.16);
  --bar:rgba(242,242,247,.78); --shadow:0 1px 2px rgba(0,0,0,.05),0 8px 24px rgba(0,0,0,.05);
  --ease:cubic-bezier(.32,.72,0,1); --dur:.24s;
  --safe-b:env(safe-area-inset-bottom,0px); --tab-h:61px; --top-h:52px;
  color-scheme:light;
}
html[data-apple][data-tema="oscuro"]{
  --bg:#000; --card:#1c1c1e; --card-2:#2c2c2e; --text:#fff; --text-2:#ebebf5; --text-3:#8e8e93;
  --sep:rgba(84,84,88,.65); --fill:rgba(120,120,128,.24); --fill-2:rgba(120,120,128,.32);
  --blue:#0A84FF; --green:#30D158; --orange:#FF9F0A; --red:#FF453A; --purple:#BF5AF2; --teal:#40C8E0; --indigo:#5E5CE6; --pink:#FF375F;
  --blue-soft:rgba(10,132,255,.22); --green-soft:rgba(48,209,88,.2); --orange-soft:rgba(255,159,10,.2); --red-soft:rgba(255,69,58,.2); --purple-soft:rgba(191,90,242,.2); --teal-soft:rgba(64,200,224,.2); --indigo-soft:rgba(94,92,230,.22);
  --bar:rgba(0,0,0,.72); --shadow:0 1px 2px rgba(0,0,0,.4),0 8px 24px rgba(0,0,0,.35);
  color-scheme:dark;
}
/* CONTROLES NATIVOS (Ernesto 17/08: el popup del <select> de «Función» salía en CLARO sobre la página oscura).
   El menú desplegable, el tilde del checkbox y el calendario los dibuja el motor según `color-scheme`, no según
   nuestro CSS. Está declarado en el <html>, pero varios de nuestros select llevan `appearance:none` y ahí algunos
   motores dejan de heredarlo → se declara también en el control, y se pintan las <option> (Chrome/Edge respetan
   ese color en el popup). OJO: Safari dibuja ese menú con la apariencia del SISTEMA y lo ignora — si el Mac está
   en claro y Mi Ceta forzada a oscuro, ese popup va a seguir saliendo claro en Safari. */
html[data-apple] select, html[data-apple] input, html[data-apple] textarea, html[data-apple] button{ color-scheme: inherit; }
html[data-apple] select option, html[data-apple] select optgroup{ background: var(--card) !important; color: var(--text) !important; }

/* ── 2) REMAP del contrato legado (lo que ya leen las páginas y neo-theme redefinía) ────────── */
html[data-apple]{
  --ink:var(--text); --muted:var(--text-3); --line:var(--sep); --panel:var(--card); --bd:var(--sep); --mut:var(--text-3);
  --accent:var(--blue); --fondo:var(--bg); --crema:var(--bg); --c-bg:var(--bg); --azul:var(--blue); --azul2:var(--blue); --teal2:var(--teal); --acc:var(--blue);
  --gris:var(--text-3); --linea:var(--sep); --gris-cl:var(--sep); --negro:var(--text); --txt:var(--text); --tinta:var(--text); --suave:var(--text-3); --borde:var(--sep);
  --blanco:var(--card); --burbuja:var(--card); --c-card:var(--card); --c-text:var(--text); --c-border:var(--sep); --c-muted:var(--text-3);
  --surface:var(--bg); --surface2:var(--card); --line2:var(--sep); --accent-ink:var(--blue); --accent-tint:var(--blue-soft); --accent-soft:var(--blue-soft);
  --panel2:var(--card-2); --chip:var(--fill); --hl:var(--orange-soft); --soft:var(--fill); --hover:var(--fill); --sel:var(--blue-soft);
  --ok:var(--green); --ok-soft:var(--green-soft); --warn:var(--orange); --warn-soft:var(--orange-soft);
  --neo-shd:transparent; --neo-shl:transparent;
}
/* ── 3) BASE ───────────────────────────────────────────────────────────────────────────────── */
/* ── 🐛 «SE VE BORROSO» EN WINDOWS (26/08/2026) ─────────────────────────────────────────────
   Keni: «arreglar lo de paneles, se ve borroso». No era del panel: era de esta regla, y
   afectaba a las 73 páginas que cargan este archivo. Medido en el navegador, en Windows 11:

   1. NINGUNA de las cinco primeras fuentes del stack existe en Windows, así que caía a
      **Arial** (verificado midiendo el ancho de un texto: 192,13 px, idéntico a Arial y
      distinto de los 186,55 de Segoe UI). O sea que la tipografía del diseño no se estaba
      viendo: se veía Arial.
   2. `-webkit-font-smoothing: antialiased` **apaga el subpixel-antialiasing (ClearType)** y
      fuerza escala de grises. En macOS es lo que hace que el texto se vea como en el mock;
      en Windows adelgaza los trazos y el texto se lee **borroso**. Con Arial —que en Windows
      está hinteada para ClearType— el efecto es máximo, y `letter-spacing:-.012em` encima
      junta las letras.

   El arreglo NO cambia nada en Mac: `Segoe UI` va después de las de Apple (allá no existe,
   así que no se elige nunca) y el suavizado queda condicionado a `data-os="apple"`, que
   estampa apple.js. En Windows entra Segoe UI —la fuente de sistema, que se parece bastante
   más a SF Pro que Arial— y vuelve ClearType.
   Si alguna vez hay que volver atrás, son estas dos líneas y nada más. */
html[data-apple], html[data-apple] body{
  background:var(--bg) !important; color:var(--text) !important;
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI","Helvetica Neue",Helvetica,Arial,sans-serif !important;
  letter-spacing:-.012em;
}
/* El suavizado de Apple, SÓLO en Apple. En Windows y Linux el default del sistema se ve
   mejor que el greyscale, y es la diferencia entre «nítido» y «borroso». */
html[data-apple][data-os="apple"], html[data-apple][data-os="apple"] body{
  -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale;
}
html[data-apple] body{ font-size:16px; line-height:1.35; margin:0; }
html[data-apple] body::before{ display:none !important; }   /* app.html: gradiente oscuro fijo del fondo viejo */
html[data-apple] *{ transition-timing-function:var(--ease); }
html[data-apple] a{ color:var(--blue); }
html[data-apple] h1,html[data-apple] h2,html[data-apple] h3,html[data-apple] h4{ color:var(--text); font-weight:590; letter-spacing:-.02em; }
html[data-apple] .muted, html[data-apple] .mut{ color:var(--text-3) !important; }
html[data-apple] .n, html[data-apple] .num, html[data-apple] .kpi .n, html[data-apple] td, html[data-apple] .saldo .n, html[data-apple] .tabnum{ font-variant-numeric:tabular-nums; }
html[data-apple].ap-has-tab body{ padding-bottom:calc(var(--tab-h) + var(--safe-b) + 6px); }
html[data-apple] #cetaMarcasBar, html[data-apple] #legajoBanner, html[data-apple] #docsBanner, html[data-apple] .neo-x{ display:none !important; }   /* la banda de marcas y los banners fijos de abajo se pisan con la tab bar; sus datos van a «Para vos» */
html[data-apple] ::selection{ background:var(--blue-soft); }
@media (prefers-reduced-motion:reduce){ html[data-apple] *{ transition:none !important; animation:none !important; } }

/* ── 4) COMPONENTES .ap-* ──────────────────────────────────────────────────────────────────── */
/* barra superior translúcida */
html[data-apple] .ap-top{ position:sticky; top:0; z-index:40; display:flex; align-items:center; gap:10px; min-height:52px; padding:calc(env(safe-area-inset-top,0px) + 8px) 16px 8px;
  background:var(--bar); -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px); border-bottom:.5px solid var(--sep); }
html[data-apple] .ap-top .ap-back{ color:var(--blue); text-decoration:none; font-size:17px; display:inline-flex; align-items:center; gap:2px; min-width:44px; min-height:44px; padding:0 4px; margin-left:-8px; }
html[data-apple] .ap-top .ap-back svg{ width:22px; height:22px; }
html[data-apple] .ap-top .ap-ttl{ font-size:17px; font-weight:590; flex:1; text-align:center; letter-spacing:-.02em; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-apple] .ap-top .ap-act{ color:var(--blue); font-size:17px; min-width:44px; min-height:44px; display:inline-flex; align-items:center; justify-content:flex-end; text-decoration:none; background:none; border:0; padding:0; font-weight:500; cursor:pointer; }
html[data-apple] .ap-top .ap-act svg{ width:24px; height:24px; }
/* large title */
html[data-apple] .ap-title{ font-size:34px; font-weight:700; letter-spacing:-.03em; margin:14px 16px 2px; line-height:1.15; color:var(--text); }
html[data-apple] .ap-sub{ font-size:15px; color:var(--text-3); margin:0 16px 14px; }
html[data-apple] .ap-h1{ display:flex; align-items:flex-end; gap:10px; }
html[data-apple] .ap-h1 .ap-title{ flex:1; }
/* encabezado de grupo (mayúsculas 12.5px gris) */
html[data-apple] .ap-grp{ font-size:12.5px; font-weight:500; text-transform:uppercase; letter-spacing:.02em; color:var(--text-3); margin:20px 32px 7px; }
html[data-apple] .ap-grp:first-child{ margin-top:6px; }
/* lista inset grouped */
html[data-apple] .ap-list{ background:var(--card); border-radius:12px; margin:0 16px; overflow:hidden; box-shadow:0 0 0 .5px var(--sep) inset; }
html[data-apple] .ap-row{ display:flex; align-items:center; gap:12px; min-height:46px; padding:9px 16px 9px 16px; position:relative; color:var(--text); text-decoration:none; background:transparent; border:0; width:100%; text-align:left; font:inherit; cursor:pointer; }
html[data-apple] .ap-row + .ap-row::before, html[data-apple] .ap-row + a.ap-row::before, html[data-apple] .ap-list > *:not(:first-child)::before{ content:""; position:absolute; left:16px; right:0; top:0; height:.5px; background:var(--sep); }
html[data-apple] .ap-list.ico > *:not(:first-child)::before{ left:58px; }   /* el separador arranca DESPUÉS del ícono */
html[data-apple] .ap-row:active{ background:var(--fill); }
html[data-apple] .ap-row .ap-ic{ width:30px; height:30px; border-radius:7px; flex:none; display:grid; place-items:center; color:#fff; }
html[data-apple] .ap-row .ap-ic svg{ width:18px; height:18px; }
html[data-apple] .ap-row .ap-tx{ flex:1; min-width:0; }
html[data-apple] .ap-row .ap-tx b{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; font-size:16px; font-weight:400; letter-spacing:-.015em; overflow:hidden; line-height:1.25; }
html[data-apple] .ap-row .ap-tx span{ display:block; font-size:13px; color:var(--text-3); margin-top:1px; }
html[data-apple] .ap-row .ap-val{ font-size:15px; color:var(--text-3); white-space:nowrap; }
html[data-apple] .ap-row .ap-chev{ width:14px; height:14px; color:var(--text-3); opacity:.7; flex:none; }
html[data-apple] .ap-row.static{ cursor:default; } html[data-apple] .ap-row.static:active{ background:transparent; }
html[data-apple] .ap-note{ font-size:13px; color:var(--text-3); margin:6px 32px 0; line-height:1.4; }
/* springboard */
html[data-apple] .ap-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px 8px; padding:6px 16px 4px; }
html[data-apple] .ap-app{ display:grid; justify-items:center; gap:6px; text-decoration:none; color:var(--text); position:relative; cursor:pointer; -webkit-tap-highlight-color:transparent; }
html[data-apple] .ap-app .ap-tile{ width:60px; height:60px; border-radius:15px; display:grid; place-items:center; color:#fff; box-shadow:0 1px 2px rgba(0,0,0,.12), inset 0 0 0 .5px rgba(255,255,255,.18); position:relative; transition:transform var(--dur), filter var(--dur); }
html[data-apple] .ap-app .ap-tile svg, html[data-apple] .ap-app .ap-tile i{ width:30px; height:30px; font-size:30px; line-height:1; color:#fff; }
html[data-apple] .ap-app:active .ap-tile{ transform:scale(.94); filter:brightness(.92); }
html[data-apple] .ap-app .ap-nm{ font-size:11.5px; font-weight:400; text-align:center; line-height:1.15; max-width:88px; letter-spacing:-.01em; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow-wrap:break-word; hyphens:auto; }
html[data-apple] .ap-badge{ position:absolute; top:-5px; right:-5px; min-width:21px; height:21px; border-radius:11px; background:var(--red); color:#fff; font-size:12px; font-weight:590; display:grid; place-items:center; padding:0 5px; border:2px solid var(--bg); font-variant-numeric:tabular-nums; }
/* gradientes de dos tonos (por familia) */
html[data-apple] .g-blue{ background:linear-gradient(160deg,#5AC8FA,#007AFF) !important; }
html[data-apple] .g-green{ background:linear-gradient(160deg,#4CD964,#28A745) !important; }
html[data-apple] .g-orange{ background:linear-gradient(160deg,#FFB340,#FF7A00) !important; }
html[data-apple] .g-red{ background:linear-gradient(160deg,#FF6B6B,#E5343A) !important; }
html[data-apple] .g-purple{ background:linear-gradient(160deg,#C77DFF,#8E44AD) !important; }
html[data-apple] .g-teal{ background:linear-gradient(160deg,#5AD1E6,#1FA6C4) !important; }
html[data-apple] .g-indigo{ background:linear-gradient(160deg,#7D7AFF,#4A48C9) !important; }
html[data-apple] .g-pink{ background:linear-gradient(160deg,#FF6B9A,#E5304C) !important; }
html[data-apple] .g-gray{ background:linear-gradient(160deg,#A8AEB8,#6B7280) !important; }
html[data-apple] .g-mint{ background:linear-gradient(160deg,#66E3C4,#12A88A) !important; }
html[data-apple] .g-brown{ background:linear-gradient(160deg,#C69C7A,#8A5A3C) !important; }
html[data-apple] .g-yellow{ background:linear-gradient(160deg,#FFD84D,#F5A600) !important; }
/* tarjeta */
html[data-apple] .ap-card{ background:var(--card); border-radius:12px; margin:0 16px; padding:14px 16px; box-shadow:0 0 0 .5px var(--sep) inset; }
html[data-apple] .ap-card .lab{ font-size:12.5px; color:var(--text-3); }
html[data-apple] .ap-card .big{ font-size:34px; font-weight:590; letter-spacing:-.03em; font-variant-numeric:tabular-nums; line-height:1.1; }
/* botones */
html[data-apple] .ap-btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; min-height:44px; padding:0 18px; border-radius:12px; font:inherit; font-size:16px; font-weight:590; letter-spacing:-.01em; border:0; cursor:pointer; text-decoration:none; background:var(--fill); color:var(--blue); transition:filter var(--dur), transform var(--dur); }
html[data-apple] .ap-btn.primary{ background:var(--blue); color:#fff; }
html[data-apple] .ap-btn.danger{ background:var(--red-soft); color:var(--red); }
html[data-apple] .ap-btn.block{ display:flex; width:100%; }
html[data-apple] .ap-btn:active{ filter:brightness(.9); transform:scale(.99); }
html[data-apple] .ap-btn.sm{ min-height:34px; padding:0 12px; font-size:14px; border-radius:9px; }
/* segmented control */
html[data-apple] .ap-seg{ display:flex; background:var(--fill); border-radius:9px; padding:2px; margin:6px 16px 14px; }
html[data-apple] .ap-seg > *{ flex:1; border:0; background:transparent; font:inherit; font-size:13px; font-weight:500; color:var(--text); padding:6px 4px; border-radius:7px; cursor:pointer; text-align:center; text-decoration:none; transition:background var(--dur), box-shadow var(--dur); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-apple] .ap-seg > .on{ background:var(--card-2); box-shadow:0 1px 3px rgba(0,0,0,.16); font-weight:590; }
html[data-apple][data-tema="oscuro"] .ap-seg > .on{ background:#636366; }
/* pills de estado */
html[data-apple] .ap-pill{ display:inline-flex; align-items:center; font-size:12px; font-weight:590; padding:3px 8px; border-radius:999px; white-space:nowrap; background:var(--fill); color:var(--text-3); line-height:1.3; }
html[data-apple] .ap-pill.blue{ background:var(--blue-soft); color:var(--blue); }
html[data-apple] .ap-pill.green{ background:var(--green-soft); color:var(--green); }
html[data-apple] .ap-pill.orange{ background:var(--orange-soft); color:var(--orange); }
html[data-apple] .ap-pill.red{ background:var(--red-soft); color:var(--red); }
html[data-apple] .ap-pill.purple{ background:var(--purple-soft); color:var(--purple); }
html[data-apple] .ap-pill.teal{ background:var(--teal-soft); color:var(--teal); }
html[data-apple][data-tema="claro"] .ap-pill.green{ color:#248A3D; } html[data-apple][data-tema="claro"] .ap-pill.orange{ color:#B25E00; } html[data-apple][data-tema="claro"] .ap-pill.teal{ color:#1A8FA6; }
/* íconos SVG de trazo */
html[data-apple] .ap-i{ width:22px; height:22px; stroke:currentColor; fill:none; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; flex:none; }
/* formularios como filas de lista */
html[data-apple] .ap-form .ap-row{ cursor:default; padding-top:6px; padding-bottom:6px; }
html[data-apple] .ap-form label.ap-lab{ font-size:16px; color:var(--text); flex:1; }
html[data-apple] .ap-form input, html[data-apple] .ap-form select, html[data-apple] .ap-form textarea{ border:0 !important; background:transparent !important; color:var(--text) !important; font:inherit; font-size:16px; text-align:right; padding:8px 0; width:auto; max-width:60%; box-shadow:none !important; outline:none; -webkit-appearance:none; appearance:none; border-radius:0 !important; }
html[data-apple] .ap-form textarea{ text-align:left; width:100%; max-width:100%; min-height:70px; }
html[data-apple] .ap-form input::placeholder{ color:var(--text-3); }
html[data-apple] .ap-form select{ color:var(--blue) !important; }
/* tab bar inferior */
html[data-apple] .ap-tabbar{ position:fixed; left:0; right:0; bottom:0; z-index:50; display:flex; box-sizing:content-box; height:var(--tab-h); padding:0 0 var(--safe-b); border-top:.5px solid var(--sep);
  background:var(--bar); -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px); }
html[data-apple] .ap-tab{ flex:1; display:grid; justify-items:center; align-content:center; gap:3px; color:var(--text-3); text-decoration:none; padding-top:6px; position:relative; -webkit-tap-highlight-color:transparent; transition:color var(--dur); }
html[data-apple] .ap-tab.on{ color:var(--blue); }
html[data-apple] .ap-tab svg{ width:25px; height:25px; stroke-width:1.7; }
html[data-apple] .ap-tab b{ font-size:10px; font-weight:500; letter-spacing:0; }
html[data-apple] .ap-tab .ap-badge{ top:2px; right:calc(50% - 22px); }
/* agenda: tira de semana */
html[data-apple] .ap-week{ display:flex; padding:4px 10px 12px; align-items:center; }
html[data-apple] .ap-week .nav{ width:34px; height:34px; border:0; background:transparent; color:var(--blue); display:grid; place-items:center; cursor:pointer; border-radius:50%; padding:0; }
html[data-apple] .ap-week .nav:active{ background:var(--fill); }
html[data-apple] .ap-day{ flex:1; display:grid; justify-items:center; gap:5px; font-size:12px; color:var(--text-3); font-weight:500; cursor:pointer; text-decoration:none; -webkit-tap-highlight-color:transparent; }
html[data-apple] .ap-day b{ font-size:16.5px; font-weight:500; color:var(--text); width:33px; height:33px; border-radius:50%; display:grid; place-items:center; font-variant-numeric:tabular-nums; transition:background var(--dur), color var(--dur); }
html[data-apple] .ap-day.on{ color:var(--blue); }
html[data-apple] .ap-day.on b{ background:var(--blue); color:#fff; font-weight:590; }
html[data-apple] .ap-day.sel:not(.on) b{ background:var(--fill); }
html[data-apple] .ap-day u{ width:5px; height:5px; border-radius:50%; background:var(--text-3); display:block; opacity:.55; text-decoration:none; }
html[data-apple] .ap-day.on u{ background:var(--blue); opacity:1; }
html[data-apple] .ap-day u.no{ opacity:0; }
/* agenda: filas de evento */
html[data-apple] .ap-evt{ display:flex; gap:11px; padding:11px 15px; position:relative; align-items:stretch; color:inherit; text-decoration:none; }
html[data-apple] .ap-evt + .ap-evt::before{ content:""; position:absolute; left:15px; right:0; top:0; height:.5px; background:var(--sep); }
html[data-apple] .ap-evt .tm{ width:52px; flex:none; font-size:12.5px; color:var(--text-3); font-variant-numeric:tabular-nums; line-height:1.35; padding-top:1px; }
html[data-apple] .ap-evt .tm b{ display:block; font-weight:500; color:var(--text-2); }
html[data-apple] .ap-evt .st{ width:4px; border-radius:2px; flex:none; background:var(--blue); }
html[data-apple] .ap-evt .tx{ flex:1; min-width:0; }
html[data-apple] .ap-evt .tx b{ font-size:15.5px; font-weight:500; display:block; letter-spacing:-.02em; }
html[data-apple] .ap-evt .tx span{ font-size:13px; color:var(--text-3); display:block; margin-top:1px; }
html[data-apple] .c-pink{ background:var(--pink) !important; } html[data-apple] .c-blue{ background:var(--blue) !important; } html[data-apple] .c-green{ background:var(--green) !important; } html[data-apple] .c-orange{ background:var(--orange) !important; } html[data-apple] .c-red{ background:var(--red) !important; } html[data-apple] .c-purple{ background:var(--purple) !important; } html[data-apple] .c-teal{ background:var(--teal) !important; } html[data-apple] .c-indigo{ background:var(--indigo) !important; } html[data-apple] .c-gray{ background:var(--gray) !important; }
/* sheet / modal */
html[data-apple] .ap-sheet-bg{ position:fixed; inset:0; background:rgba(0,0,0,.35); z-index:60; display:flex; align-items:flex-end; justify-content:center; }
html[data-apple] .ap-sheet{ background:var(--bg); border-radius:14px 14px 0 0; width:100%; max-width:640px; max-height:92vh; overflow:auto; padding:8px 0 calc(16px + var(--safe-b)); animation:apUp .32s var(--ease); }
html[data-apple] .ap-sheet .ap-grab{ width:36px; height:5px; border-radius:3px; background:var(--fill-2); margin:4px auto 10px; }
html[data-apple] .ap-sheet h2{ font-size:20px; font-weight:590; margin:6px 16px 12px; }
@keyframes apUp{ from{ transform:translateY(24px); opacity:0; } to{ transform:none; opacity:1; } }
html[data-apple] .ap-empty{ text-align:center; color:var(--text-3); padding:28px 16px; font-size:15px; }
html[data-apple] .ap-empty svg{ width:36px; height:36px; stroke-width:1.5; opacity:.6; margin-bottom:8px; }
html[data-apple] .ap-skel{ background:linear-gradient(90deg,var(--fill) 25%,var(--fill-2) 50%,var(--fill) 75%); background-size:200% 100%; animation:apSk 1.2s infinite linear; border-radius:8px; height:14px; }
@keyframes apSk{ from{ background-position:200% 0; } to{ background-position:-200% 0; } }
html[data-apple] .ap-toast{ position:fixed; left:50%; bottom:calc(var(--tab-h) + var(--safe-b) + 10px); transform:translateX(-50%); background:var(--text); color:var(--bg); padding:9px 14px; border-radius:12px; font-size:14px; z-index:70; opacity:0; transition:opacity var(--dur); pointer-events:none; }
html[data-apple] .ap-toast.on{ opacity:1; }
/* apariencia (Más) */
html[data-apple] .ap-list .ap-seg{ margin:8px 16px; }

/* ── 5) ESCRITORIO (≥ 820px): la tab bar pasa arriba, contenido centrado ────────────────────── */
html[data-apple] .ap-page{ max-width:640px; margin:0 auto; }
@media (min-width:820px){
  html[data-apple] .ap-page{ max-width:980px; }
  html[data-apple] .ap-tabbar{ position:sticky; top:var(--top-h); bottom:auto; height:52px; padding:0; justify-content:center; gap:4px; border-top:0; border-bottom:.5px solid var(--sep); z-index:39; }
  html[data-apple] .ap-tab{ flex:0 0 auto; grid-auto-flow:column; align-items:center; gap:7px; padding:0 14px; border-radius:9px; margin:8px 0; }
  html[data-apple] .ap-tab.on{ background:var(--blue-soft); }
  html[data-apple] .ap-tab svg{ width:20px; height:20px; }
  html[data-apple] .ap-tab b{ font-size:14px; }
  html[data-apple] .ap-tab .ap-badge{ position:static; margin-left:2px; border:0; height:18px; min-width:18px; font-size:11px; }
  html[data-apple].ap-has-tab body{ padding-bottom:24px; }
  html[data-apple] .ap-grid{ grid-template-columns:repeat(8,1fr); gap:22px 10px; }
  html[data-apple] .ap-title{ font-size:34px; }
  html[data-apple] .ap-sheet{ border-radius:14px; margin-bottom:8vh; }
  html[data-apple] .ap-sheet-bg{ align-items:center; }
  html[data-apple] .ap-toast{ bottom:24px; }
}
@media (min-width:1100px){ html[data-apple] .ap-grid{ grid-template-columns:repeat(10,1fr); } }

/* ── 6) OVERRIDES: app.html (launcher) ─────────────────────────────────────────────────────── */
html[data-apple] header{ background:var(--bar) !important; -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px); border-bottom:.5px solid var(--sep) !important; box-shadow:none !important; color:var(--text) !important; padding:calc(env(safe-area-inset-top,0px) + 8px) 16px 8px !important; min-height:52px; justify-content:space-between !important; position:sticky; top:0; z-index:40; }
html[data-apple] header .fusion, html[data-apple] header .gptw{ display:none !important; }
html[data-apple] header .hleft{ display:flex; align-items:center; gap:8px; }
html[data-apple] header .hleft::before{ content:"Mi Ceta"; font-size:17px; font-weight:590; letter-spacing:-.02em; color:var(--text); }
html[data-apple] header .cliente{ color:var(--text-3) !important; font-weight:400 !important; }
html[data-apple] header .cliente:empty, html[data-apple] header .cliente:is(:not(:empty)):where([data-vacio]){ display:none; }
html[data-apple] header .userchip{ background:var(--fill) !important; color:var(--text) !important; border:0 !important; border-radius:999px; padding:6px 12px; font-size:13px; font-weight:500; display:inline-flex; gap:8px; align-items:center; }
html[data-apple] header .userchip .out{ color:var(--blue) !important; font-weight:590; cursor:pointer; }
html[data-apple] nav#nav{ background:transparent !important; border:0 !important; padding:6px 16px 0 !important; gap:6px !important; -webkit-backdrop-filter:none; backdrop-filter:none; }
html[data-apple] nav#nav:empty{ display:none; }
html[data-apple] nav#nav button{ color:var(--text-3) !important; border:0 !important; border-radius:9px !important; padding:7px 12px !important; font-weight:500 !important; background:transparent !important; }
html[data-apple] nav#nav button.on{ color:var(--blue) !important; background:var(--blue-soft) !important; }
html[data-apple] main{ padding:0 0 24px !important; max-width:none !important; }
html[data-apple] #viewProc, html[data-apple] #viewBo{ padding:12px 16px; max-width:1200px; margin:0 auto; }
html[data-apple] #viewProcesos{ max-width:640px; margin:0 auto; }
@media (min-width:820px){ html[data-apple] #viewProcesos{ max-width:980px; } }
html[data-apple].ap-pi #welcomeHero{ display:none !important; }
html[data-apple]:not(.ap-pi) .hero{ background:var(--card) !important; border:0 !important; box-shadow:0 0 0 .5px var(--sep) inset; border-radius:12px !important; margin:14px 16px 12px; padding:16px !important; -webkit-backdrop-filter:none; backdrop-filter:none; }
html[data-apple]:not(.ap-pi) .hero .hhi{ color:var(--text) !important; text-shadow:none !important; font-size:28px !important; font-weight:700 !important; letter-spacing:-.03em; }
html[data-apple]:not(.ap-pi) .hero .hsub{ color:var(--text-3) !important; font-weight:400 !important; } html[data-apple]:not(.ap-pi) .hero .hsub b{ color:var(--text) !important; }
html[data-apple] .apptitle{ font-size:12.5px !important; font-weight:500 !important; text-transform:uppercase; letter-spacing:.02em; color:var(--text-3) !important; margin:20px 32px 7px !important; }
html[data-apple] .apptitle .ph{ display:none; }
html[data-apple] .cardgrid{ display:block !important; background:var(--card); border-radius:12px; margin:0 16px !important; padding:0 !important; box-shadow:0 0 0 .5px var(--sep) inset; }
html[data-apple] .proccard{ display:flex !important; flex-direction:row !important; align-items:center !important; gap:12px !important; padding:9px 16px !important; background:transparent !important; border:0 !important; border-radius:0 !important; box-shadow:none !important; min-height:52px; position:relative; transform:none !important; }
html[data-apple] .proccard + .proccard::before{ content:""; position:absolute; left:58px; right:0; top:0; height:.5px; background:var(--sep); }
html[data-apple] .proccard:hover{ transform:none !important; box-shadow:none !important; background:var(--fill) !important; }
html[data-apple] .proccard .ico{ width:30px !important; height:30px !important; border-radius:7px !important; border:0 !important; background:linear-gradient(160deg,#5AC8FA,#007AFF); font-size:16px !important; flex:none; }
html[data-apple] .proccard .ico .ph{ color:#fff !important; font-size:18px !important; }
html[data-apple] .proccard.bo .ico{ background:linear-gradient(160deg,#FFB340,#FF7A00); }
html[data-apple] .proccard .nm{ font-size:16px !important; font-weight:400 !important; color:var(--text) !important; flex:1; }
html[data-apple] .proccard .ds{ display:none !important; }
html[data-apple] .proccard .go{ font-size:0 !important; color:var(--text-3) !important; width:8px; height:8px; border-right:1.8px solid currentColor; border-top:1.8px solid currentColor; transform:rotate(45deg); opacity:.7; flex:none; }
html[data-apple] .proccard .cardedit{ position:static !important; opacity:.5 !important; background:transparent !important; border:0 !important; color:var(--text-3) !important; }
html[data-apple] .grupo{ background:transparent !important; border:0 !important; border-radius:0 !important; margin:0 0 6px !important; overflow:visible !important; }
html[data-apple] .grupohdr{ font-size:12.5px !important; font-weight:500 !important; text-transform:uppercase; letter-spacing:.02em; color:var(--text-3) !important; padding:20px 32px 7px !important; background:transparent !important; border:0 !important; }
html[data-apple] .grupohdr .gi{ display:none !important; }
html[data-apple] .grupohdr .gc{ background:var(--fill) !important; color:var(--text-3) !important; font-weight:500 !important; }
html[data-apple] .grupohdr .cv{ color:var(--text-3) !important; }
html[data-apple] .grupo[open] .grupohdr{ border:0 !important; }
/* CARPETAS EN BLOQUE (opción B, elegida por Ernesto 17/08). Primero fueron una línea fina entre secciones, pero
   en oscuro la línea sobre negro puro quedaba dura. Ahora cada carpeta encajona SUS TILES en un bloque
   translúcido (--fill) con esquinas grandes, y el título queda afuera y arriba, como en Ajustes de iOS.
   Va sobre `> .appicons` (la grilla), no sobre el <details>: así una carpeta plegada no deja una caja vacía. */
html[data-apple] .grupo{ margin:0 0 18px !important; }
html[data-apple] .grupohdr{ padding:4px 34px 9px !important; }
html[data-apple] .grupo > .appicons{ background:var(--fill) !important; border-radius:22px !important; margin:0 22px !important; padding:18px 10px !important; }
html[data-apple] .grupo .cardgrid{ padding:0 !important; }
/* en móvil el bloque se pega más a los bordes y el título acompaña */
@media (max-width:520px){
  html[data-apple] .grupohdr{ padding:4px 20px 8px !important; }
  html[data-apple] .grupo > .appicons{ margin:0 10px !important; padding:14px 4px !important; border-radius:18px !important; }
}
/* carpetas de «Más»: la grilla .appicons pasa a tiles de springboard */
html[data-apple] .appicons{ display:grid !important; grid-template-columns:repeat(4,1fr); gap:18px 8px !important; padding:6px 16px 4px !important; margin:0 !important; }
@media (min-width:820px){ html[data-apple] .appicons{ grid-template-columns:repeat(8,1fr) !important; } }
html[data-apple] .appicon{ width:auto !important; display:grid !important; justify-items:center; gap:6px; }
html[data-apple] .appicon .ico{ width:60px !important; height:60px !important; border-radius:15px !important; border:0 !important; margin:0 !important; background:linear-gradient(160deg,#5AC8FA,#007AFF); box-shadow:0 1px 2px rgba(0,0,0,.12), inset 0 0 0 .5px rgba(255,255,255,.18); transition:transform var(--dur); }
html[data-apple] .appicon .ico .ph{ color:#fff !important; font-size:30px !important; }
html[data-apple] .appicon:active .ico{ transform:scale(.94); }
html[data-apple] .appicon:hover .ico{ transform:none !important; box-shadow:0 1px 2px rgba(0,0,0,.12), inset 0 0 0 .5px rgba(255,255,255,.18) !important; }
html[data-apple] .appicon .il{ font-size:11.5px !important; font-weight:400 !important; color:var(--text) !important; margin:0 !important; line-height:1.15; max-width:88px; overflow-wrap:break-word; hyphens:auto; }
html[data-apple] .appicon .iconedit{ top:-6px !important; right:6px !important; width:20px; height:20px; border-radius:50%; background:var(--card) !important; color:var(--text-3) !important; border:0 !important; box-shadow:0 1px 3px rgba(0,0,0,.2); font-size:11px; opacity:.85; }
html[data-apple] .avisoTk{ display:none !important; }   /* el aviso de tickets va a «Para vos» */
html[data-apple] .pihome-mlbl, html[data-apple] .muroframe{ display:none !important; }   /* el Muro deja la home: vive en Comunidad (launcher y Más) */
html[data-apple] .state{ color:var(--text-3) !important; background:transparent !important; text-align:center; padding:24px 16px; }
/* Back Office / vista proceso: superficies neutras */
html[data-apple] #viewBo .card, html[data-apple] #viewProc .card, html[data-apple] .card{ background:var(--card) !important; border:0 !important; box-shadow:0 0 0 .5px var(--sep) inset !important; border-radius:12px !important; }
html[data-apple] .card h2, html[data-apple] .card h3{ color:var(--text) !important; }
html[data-apple] .card, html[data-apple] .card *{ color:inherit; }
html[data-apple] .card{ color:var(--text) !important; }
html[data-apple] .card .muted, html[data-apple] .card small{ color:var(--text-3) !important; }
/* 🐛 25/08: `.card *{color:inherit}` de dos líneas más arriba (0,2,1) le gana a
   `.det{color:var(--muted)}` de las páginas (0,1,0), así que TODO `.det` adentro de una
   card salía en negro pleno —o blanco pleno en oscuro— con el mismo peso que el nombre y
   el importe que acompaña. Acá al lado ya se parchean `.muted`, `small`, `p`, `li`, `th`,
   `td` y hasta `.card h3 small`: `.det` se había quedado afuera, y es la clase que usan
   para la letra chica autorizaciones.html, cabify-panel y tarjetas-panel.
   Especificidad (0,3,1): le gana a `.card p` (0,2,1) y a `.card td` (0,2,2). Los links
   siguen azules, porque un match directo le gana a la herencia. */
html[data-apple] .card .det{ color:var(--text-3) !important; }
html[data-apple] .card label{ color:var(--text-2) !important; }
html[data-apple] .card p, html[data-apple] .card li{ color:var(--text-2); }
html[data-apple] .card th{ color:var(--text-3) !important; }
html[data-apple] .card td{ color:var(--text) !important; }
html[data-apple] .card a{ color:var(--blue) !important; }
html[data-apple] .card .kpi{ background:var(--fill) !important; }
html[data-apple] .card .kpi .n{ color:var(--text) !important; }
html[data-apple] .card .kpi .l{ color:var(--text-3) !important; }
html[data-apple] .card ul, html[data-apple] .card ol{ padding-left:20px; }
html[data-apple] .card hr{ border:0; border-top:.5px solid var(--sep); }
html[data-apple] .card pre, html[data-apple] .card code{ color:var(--text) !important; background:var(--fill) !important; }

/* oscuro: fondos claros hardcodeados de app.html (flujo cliente + BO) → tints (lo que hacía neo-theme) */
html[data-apple][data-tema="oscuro"] .lic-warn{ background:var(--orange-soft) !important; border-color:transparent !important; }
html[data-apple][data-tema="oscuro"] .lic-ok{ background:var(--green-soft) !important; border-color:transparent !important; }
html[data-apple][data-tema="oscuro"] .flow-step{ background:var(--fill) !important; border-color:var(--sep) !important; color:var(--text) !important; }
html[data-apple][data-tema="oscuro"] .flow-step.dec{ background:var(--orange-soft) !important; color:var(--orange) !important; }
html[data-apple][data-tema="oscuro"] .card .tag:not([style]), html[data-apple][data-tema="oscuro"] .card .pill.admin, html[data-apple][data-tema="oscuro"] .card .pill.cliente{ background:var(--fill) !important; color:var(--text-2) !important; }
html[data-apple][data-tema="claro"]:not(.ap-pi) .hero .hlogo{ content:url("/logo-dark.png"); }
html[data-apple]:not(.ap-pi) .hero .badge{ background:var(--blue-soft) !important; border-color:transparent !important; color:var(--blue) !important; }
/* ── 7) OVERRIDES genéricos de las páginas del portal (patrón .top/.tabs/.wrap/.card/.btn) ─── */
html[data-apple] .top{ background:var(--bar) !important; color:var(--text) !important; -webkit-backdrop-filter:saturate(180%) blur(20px); backdrop-filter:saturate(180%) blur(20px); border-bottom:.5px solid var(--sep); padding:calc(env(safe-area-inset-top,0px) + 8px) 16px 8px !important; min-height:52px; }
html[data-apple] .top .back{ color:var(--blue) !important; border:0 !important; padding:0 6px !important; font-size:20px !important; min-width:44px; min-height:44px; display:inline-flex; align-items:center; margin-left:-8px; }
html[data-apple] .top .back:hover{ background:transparent !important; }
html[data-apple] .top .logo{ color:var(--text) !important; font-weight:590 !important; font-size:17px !important; letter-spacing:-.02em; flex:1; display:block !important; text-align:center; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; min-width:0; }
@media (max-width:819px){ html[data-apple] .top .puser{ display:none !important; } }
html[data-apple] .top .logo span:first-child{ display:none; }   /* el emoji del título */
html[data-apple] .top .spacer{ display:none !important; }   /* el título toma el ancho (el .spacer competía por el flex) */
html[data-apple] .top .puser{ color:var(--text-3) !important; font-size:12.5px !important; }
html[data-apple] .tabs{ position:relative !important; top:auto !important; background:var(--fill) !important; border:0 !important; border-radius:9px; padding:2px !important; margin:14px 16px 12px; gap:0 !important; flex-wrap:nowrap !important; z-index:1 !important; max-width:608px; }
@media (min-width:640px){ html[data-apple] .tabs{ margin-left:auto; margin-right:auto; } }
@media (min-width:820px){ html[data-apple] .tabs{ max-width:948px; } }
html[data-apple] .tabs .t{ flex:1; text-align:center; padding:6px 4px !important; font-size:13px !important; font-weight:500 !important; color:var(--text) !important; border:0 !important; border-radius:7px !important; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; transition:background var(--dur); }
html[data-apple] .tabs .t.active{ background:var(--card-2) !important; box-shadow:0 1px 3px rgba(0,0,0,.16); font-weight:590 !important; }
html[data-apple][data-tema="oscuro"] .tabs .t.active{ background:#636366 !important; }
html[data-apple] .tabs.solo{ display:none !important; }
html[data-apple] .wrap{ max-width:640px !important; margin:0 auto !important; padding:8px 0 30px !important; }
html[data-apple] .wrap > .card, html[data-apple] .wrap > div > .card{ margin-left:16px !important; margin-right:16px !important; }
/* 🐛 EL MARGEN DE ARRIBA SE SUMABA AL PADDING DEL WRAP EN ESCRITORIO, y de ahí el escalonado
   que se ve en cualquier pantalla del portal: el h1 y los chips alineados en una vertical, y
   las tarjetas 16px más adentro, en otra.
   La regla de arriba existe por el CELULAR, donde apple.css le saca el padding lateral al
   .wrap a propósito (padding:8px 0) para la estética de lista a pantalla completa: ahí, sin
   ese margen, las tarjetas quedarían pegadas al vidrio. Pero desde 820px apple.css le
   DEVUELVE el padding al wrap (padding:8px 16px 30px !important) y nadie sacó el margen, así
   que los 16 del wrap y los 16 de la tarjeta se apilan.
   Medido en autorizaciones.html a 1280: el wrap arranca en 6 con 16 de padding —o sea el
   contenido en 22— y ahí quedaban el título y los chips; el banner, la barra de filtros y la
   tarjeta de la tabla arrancaban en 38. Reportado por Agustín el 25/08 («debería estar
   alineado») con una captura donde el escalón se ve en cinco bloques seguidos.
   Va acotado a >=820px para no tocar el celular, que es donde ese margen hace falta. */
@media (min-width:820px){
  html[data-apple] .wrap > .card, html[data-apple] .wrap > div > .card{ margin-left:0 !important; margin-right:0 !important; }
}
@media (min-width:820px){ html[data-apple] .wrap{ max-width:980px !important; padding:8px 16px 30px !important; } }
html[data-apple] h2.page{ font-size:34px !important; font-weight:700 !important; letter-spacing:-.03em; margin:8px 16px 2px !important; }
html[data-apple] h2.page + .muted, html[data-apple] h2.page + p.muted{ margin:0 16px 14px !important; font-size:15px; }
html[data-apple] .btn{ background:var(--fill) !important; color:var(--blue) !important; border:0 !important; border-radius:12px !important; min-height:44px; padding:0 16px !important; font-weight:590 !important; font-size:15px !important; display:inline-flex; align-items:center; justify-content:center; gap:6px; box-shadow:none !important; }
/* 🐛 EL TEXTO DE LOS BOTONES SECUNDARIOS NO SE LEE EN TEMA CLARO. El .btn base es gris con
   texto var(--blue) = #007AFF, y sobre ese gris mide 3,15:1 con fuente de 15px, contra el
   4,5:1 de AA. Medido en el panel de Cabify, tema claro: 26 elementos por debajo del mínimo
   y TODOS eran botones — «Marcar todas» 2,79 · «⬇️ CSV», «📊 Excel», «🖨️ PDF», «← Volver»
   3,15. En oscuro el mismo azul da 4,62 y pasa, así que se corrige sólo el claro.
   NO se toca el token --blue a propósito: se usa como BACKGROUND en 20 lugares (los botones
   primarios, entre otros), así que oscurecerlo cambiaría el azul de marca de todo el portal
   en vez de arreglar un contraste de texto.
   Las variantes quedan excluidas por el :not(): tienen su propio color y su propio fondo, y
   el selector de la variante (html[data-apple] .btn.primary) EMPATA en especificidad (0,3,1)
   con esta regla. Sin el :not(), la que quede después en el archivo le pisaría el blanco al
   botón primario. */
html[data-apple][data-tema="claro"] .btn:not(.primary):not(.red):not(.rej):not(.danger):not(.green){ color:#0a53c4 !important; }
html[data-apple] .btn.primary{ background:var(--blue) !important; color:#fff !important; }
html[data-apple] .btn.green{ background:var(--green) !important; color:#fff !important; }
html[data-apple] .btn.red{ background:var(--red-soft) !important; color:var(--red) !important; }
html[data-apple] .btn.ghost{ background:transparent !important; color:var(--blue) !important; box-shadow:0 0 0 .5px var(--sep) inset !important; }
html[data-apple] .btn.danger{ background:var(--red-soft) !important; color:var(--red) !important; }
/* 🐛 25/08: `.btn.rej` es la convención de «rechazar / dar de baja» de tres pantallas
   (flota 5 usos, tarjetas 6, motomensajería 2) y NO existía acá: caía en el `.btn` base,
   o sea gris con texto AZUL. En la tarjeta de vehículo era encima el único con relleno
   sólido entre tres `ghost` transparentes — el mayor peso visual sobre la acción más
   riesgosa. Se suma como variante, no se renombra el markup: `.btn.rej` también está
   definida localmente en flota.html, y sacarla del HTML dejaría esa regla huérfana. */
html[data-apple] .btn.rej{ background:var(--red-soft) !important; color:var(--red) !important; }
/* Y el mismo oscurecido del tema claro que necesitó `.pill.red`: --red sobre --red-soft
   da 2,66:1. Vale para las tres variantes rojas, no sólo para la nueva. */
html[data-apple][data-tema="claro"] .btn.rej,
html[data-apple][data-tema="claro"] .btn.red,
html[data-apple][data-tema="claro"] .btn.danger{ color:#C1170C !important; }
html[data-apple] .btn.sm{ min-height:34px; padding:0 12px !important; font-size:14px !important; border-radius:9px !important; }
html[data-apple] .pill{ border-radius:999px !important; font-weight:590 !important; font-size:12px !important; padding:3px 8px !important; }
html[data-apple] .pill.ok{ background:var(--green-soft) !important; color:var(--green) !important; }
html[data-apple] .pill.warn{ background:var(--orange-soft) !important; color:var(--orange) !important; }
html[data-apple] .pill.red{ background:var(--red-soft) !important; color:var(--red) !important; }
html[data-apple][data-tema="claro"] .pill.ok{ color:#248A3D !important; } html[data-apple][data-tema="claro"] .pill.warn{ color:#8a4600 !important; }  /* 🐛 #B25E00 daba 4,11:1 sobre --orange-soft compuesto (rgb(255,238,214)): el parche existia pero se quedaba corto del 4,5 de AA. #8a4600 da 6,24. Medido en el panel de Cabify con datos reales, en las pildoras «importe alto»/«a revisar», que son de 11px. */
/* 🐛 25/08: el rojo se había quedado AFUERA de este oscurecido para tema claro. Con --red
   (#FF3B30) sobre --red-soft el contraste daba 2,66:1 — un pill de 10,5 px en negrita que
   había que adivinar, justo el que marca «a explicar» en Cabify y en el resumen del banco.
   Mismo criterio y misma familia que el verde y el ámbar de arriba: 5,4:1. */
html[data-apple][data-tema="claro"] .pill.red{ color:#C1170C !important; }
html[data-apple] table{ background:var(--card) !important; border:0 !important; box-shadow:0 0 0 .5px var(--sep) inset; border-radius:12px !important; }
html[data-apple] th{ background:var(--card) !important; color:var(--text-3) !important; font-weight:500 !important; text-transform:uppercase; font-size:11.5px !important; letter-spacing:.02em; border-bottom:.5px solid var(--sep) !important; }
html[data-apple] td{ border-bottom:.5px solid var(--sep) !important; color:var(--text) !important; }
html[data-apple] .modal-bg{ background:rgba(0,0,0,.35) !important; align-items:flex-end !important; padding:0 !important; z-index:60 !important; }
html[data-apple] .modal{ background:var(--bg) !important; border-radius:14px 14px 0 0 !important; max-width:640px !important; padding:14px 16px calc(16px + var(--safe-b)) !important; animation:apUp .32s var(--ease); max-height:92vh; overflow:auto; }
html[data-apple].ap-has-tab .modal{ padding-bottom:calc(16px + var(--tab-h) + var(--safe-b)) !important; }
@media (min-width:820px){ html[data-apple] .modal-bg{ align-items:center !important; } html[data-apple] .modal, html[data-apple].ap-has-tab .modal{ border-radius:14px !important; padding-bottom:16px !important; } }
html[data-apple] .modal h2{ font-size:20px !important; font-weight:590 !important; }
html[data-apple] .field{ background:var(--card); border-radius:12px; padding:8px 14px; margin-bottom:8px !important; box-shadow:0 0 0 .5px var(--sep) inset; }
html[data-apple] .field label{ font-size:12.5px !important; font-weight:500 !important; color:var(--text-3) !important; text-transform:uppercase; letter-spacing:.02em; margin-bottom:2px !important; }
html[data-apple] .field label:has(input){ font-size:15px !important; font-weight:400 !important; color:var(--text) !important; text-transform:none; letter-spacing:0; margin-bottom:0 !important; }
html[data-apple] .field input, html[data-apple] .field select, html[data-apple] .field textarea{ border:0 !important; background:transparent !important; color:var(--text) !important; padding:6px 0 !important; font-size:16px !important; outline:none; box-shadow:none !important; }
html[data-apple] .field select{ color:var(--blue) !important; -webkit-appearance:none; appearance:none; }
html[data-apple] .field input[type="date"]{ color:var(--text) !important; }
html[data-apple] .foot .btn{ flex:1; }
html[data-apple] .row2{ gap:8px !important; }
html[data-apple] .field:has(#s_hint), html[data-apple] #s_hint:empty{ display:none; }
html[data-apple] #s_hint{ background:transparent; box-shadow:none; padding:0; }
html[data-apple] #s_hint > div{ background:var(--blue-soft) !important; border:0 !important; color:var(--text-2) !important; border-radius:12px !important; }
html[data-apple] .field:has(> #s_hint > div){ display:block; }
/* Solicitudes: saldos → tarjetas horizontales; historial → lista inset */
html[data-apple] .saldos{ display:flex !important; gap:8px; overflow-x:auto; padding:2px 16px 8px !important; margin:0 -16px 6px !important; scroll-snap-type:x mandatory; -webkit-overflow-scrolling:touch; scrollbar-width:none; }
html[data-apple] .saldos::-webkit-scrollbar{ display:none; }
/* Desktop con mouse (reporte vía Sofía 26/08): la fila de saldos escondía la barra y la última
   tarjeta quedaba CORTADA sin pista de que había más. Con puntero fino, las tarjetas envuelven
   a otra fila; el swipe horizontal queda solo para touch. */
@media (pointer:fine){
  html[data-apple] .saldos{ flex-wrap:wrap; overflow-x:visible; scroll-snap-type:none; }
}
html[data-apple] .saldo{ flex:0 0 132px; scroll-snap-align:start; background:var(--fill) !important; border:0 !important; border-top:3px solid var(--blue) !important; border-radius:12px !important; padding:11px 12px !important; }
html[data-apple] .saldo .n{ font-size:26px !important; font-weight:590 !important; letter-spacing:-.03em; }
html[data-apple] .req{ background:var(--card) !important; border:0 !important; border-radius:12px !important; margin:0 16px 8px !important; padding:11px 15px !important; box-shadow:0 0 0 .5px var(--sep) inset; }
html[data-apple] .req .h b{ font-size:16px; font-weight:500; }
html[data-apple] .card > div:first-child > b:first-child{ font-size:16px; font-weight:590; }
html[data-apple] .kpis{ margin:0 16px 12px !important; }
html[data-apple] .kpi{ background:var(--card) !important; border:0 !important; box-shadow:0 0 0 .5px var(--sep) inset; }
html[data-apple] .kpi .n{ font-weight:590 !important; letter-spacing:-.03em; }
html[data-apple] div[style*="font-weight:700;margin:16px 0 8px"]{ font-size:12.5px !important; font-weight:500 !important; text-transform:uppercase; letter-spacing:.02em; color:var(--text-3) !important; margin:20px 32px 7px !important; }
html[data-apple] .card[style*="border-left"]{ border-left:0 !important; }
html[data-apple] .card[style*="background:#fffbeb"]{ background:var(--orange-soft) !important; color:var(--text) !important; }

/* ── 8) PATRONES compartidos por las demás páginas del portal (modales .ov, chips, headers propios) ─ */
html[data-apple] .ov{ background:rgba(0,0,0,.35) !important; align-items:flex-end !important; justify-content:center !important; padding:0 !important; z-index:60 !important; }
html[data-apple] .ov .modal, html[data-apple] .ov > .modal{ background:var(--bg) !important; border-radius:14px 14px 0 0 !important; box-shadow:none !important; max-height:92vh; overflow:auto; animation:apUp .32s var(--ease); max-width:640px !important; width:100% !important; }
@media (min-width:820px){ html[data-apple] .ov{ align-items:center !important; } html[data-apple] .ov .modal, html[data-apple] .ov > .modal{ border-radius:14px !important; } }
html[data-apple] .mh{ border-bottom:.5px solid var(--sep) !important; padding:12px 16px !important; background:transparent !important; }
html[data-apple] .mh b, html[data-apple] .mh h2, html[data-apple] .mh h3{ font-size:17px !important; font-weight:590 !important; color:var(--text) !important; }
html[data-apple] .mb{ padding:12px 16px !important; }
html[data-apple] .x{ background:var(--fill) !important; color:var(--blue) !important; border-radius:50% !important; border:0 !important; }
html[data-apple] .chip{ background:var(--fill) !important; color:var(--text-2) !important; border:0 !important; border-radius:999px !important; font-size:12px !important; font-weight:500 !important; }
html[data-apple] header a{ color:var(--blue) !important; }
html[data-apple] header b, html[data-apple] header h1, html[data-apple] header .ttl{ color:var(--text) !important; }
html[data-apple] .tabbar .tab{ border:0 !important; background:var(--fill) !important; color:var(--text-2) !important; border-radius:999px !important; font-weight:500 !important; }
html[data-apple] .tabbar .tab.on{ background:var(--blue) !important; color:#fff !important; }
html[data-apple] .card h2 small, html[data-apple] .card h3 small{ color:var(--text-3) !important; }
html[data-apple] .banner{ border:0 !important; }
html[data-apple] .toast{ background:var(--text) !important; color:var(--bg) !important; border-radius:12px !important; }
html[data-apple] input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]), html[data-apple] select, html[data-apple] textarea{ background:var(--card) !important; color:var(--text) !important; border:.5px solid var(--sep) !important; border-radius:9px !important; font-family:inherit; }
html[data-apple] .ap-form input, html[data-apple] .ap-form select, html[data-apple] .ap-form textarea, html[data-apple] .field input, html[data-apple] .field select, html[data-apple] .field textarea{ border:0 !important; background:transparent !important; }
html[data-apple] .compose input{ border:0 !important; }
html[data-apple] .empty, html[data-apple] .vacio, html[data-apple] .state{ color:var(--text-3) !important; }

/* ── 9) POR PÁGINA — fixes de la QA visual multi-agente (17/08): validados inyectándolos en las capturas ─ */
/* [novedades.html · m-dark · alta] La novedad fijada (.nov.pin) tiene fondo #fffafa hardcodeado: el título queda BLANCO sobre rosa claro (invisible) y el botón .btn (fill) cas */
html[data-apple] .nov{ background:var(--card) !important; border:0 !important; box-shadow:0 0 0 .5px var(--sep) inset; border-radius:12px !important; }
html[data-apple] .nov.pin{ box-shadow:0 0 0 1px var(--red) inset; }
html[data-apple] .nb{ color:var(--text-2) !important; }
html[data-apple] .pinb{ background:var(--red-soft) !important; color:var(--red) !important; }
html[data-apple][data-tema="oscuro"] .b-leida{ background:var(--green-soft) !important; color:var(--green) !important; }

/* [onboarding.html · m-light · alta] El hero de «Mi onboarding» (.hero, gradiente oscuro + texto #fff) es pisado por el override de app.html `html[data-apple]:not(.ap-pi) .hero{ */
html[data-apple] #v-mio .hero{ background:var(--card) !important; color:var(--text) !important; box-shadow:0 0 0 .5px var(--sep) inset; border-radius:12px !important; margin:0 0 14px !important; padding:16px !important; }
html[data-apple] #v-mio .hero .bar{ background:var(--fill) !important; }
html[data-apple] #v-mio .hero .bar > i{ background:var(--green) !important; }
html[data-apple] .ck{ background:var(--card) !important; border-color:var(--sep) !important; }
html[data-apple] .ck.on{ background:var(--green) !important; border-color:var(--green) !important; }
html[data-apple] .task .ic{ background:var(--fill) !important; }
html[data-apple] .ghead{ background:var(--fill) !important; }

/* [reconocimientos.html · m-light · alta] La tarjeta de puntos (.saldo, originalmente gradiente oscuro + texto #fff) choca con la regla genérica `.saldo` de Solicitudes en apple.css  */
html[data-apple] .wrap > .saldo{ flex:none; display:flex; background:var(--card) !important; color:var(--text) !important; border:0 !important; box-shadow:0 0 0 .5px var(--sep) inset; border-radius:12px !important; margin:0 16px 12px !important; padding:16px !important; }
html[data-apple] .wrap > .saldo .l{ opacity:1; color:var(--text-3); }
html[data-apple] .wrap > .cols{ margin:0 16px; }

/* [documentos.html · m-light · alta] La fila de documento (.doc, flex sin wrap) desborda el ancho: el nombre del PDF queda partido en una columna de 60px, «Firmar conforme» se c */
@media (max-width:819px){
  html[data-apple] .doc{ flex-wrap:wrap; }
  html[data-apple] .doc > div:not(.ic):not(.actions){ flex:1 1 0; min-width:0; }
  html[data-apple] .doc .actions{ flex:1 0 100%; margin-left:0 !important; flex-wrap:wrap; gap:6px 8px; padding-left:46px; }
}
html[data-apple] .doc .ic{ background:var(--red-soft) !important; color:var(--red) !important; }

/* [asistencia.html · m-dark · alta] El pill de estado «● En jornada · Oficina/base · desde 08:42» (.estado.in) mantiene color #166534 (verde oscuro) sobre --ok-soft remapeado a */
html[data-apple][data-tema="oscuro"] .estado.in, html[data-apple][data-tema="oscuro"] .msg.ok{ color:var(--green) !important; }
html[data-apple][data-tema="oscuro"] .msg.err{ color:var(--red) !important; }
html[data-apple][data-tema="oscuro"] .estado.off, html[data-apple][data-tema="oscuro"] .pill.gray{ background:var(--fill) !important; color:var(--text-2) !important; }
html[data-apple][data-tema="oscuro"] .pill.blue{ background:var(--blue-soft) !important; color:var(--blue) !important; }

/* [eventos.html, celebraciones.html, novedades.html, onboarding · m-light · media] Familia «Humand» (.wrap con h1/section/.head directos, sin .card): apple.css pone `.wrap{padding:8px 0 30px !important}` y solo devuelve mar */
@media (max-width:819px){
  html[data-apple] .wrap:has(> h1), html[data-apple] .wrap:has(> section), html[data-apple] .wrap:has(> .head){ padding-left:16px !important; padding-right:16px !important; }
  html[data-apple] .wrap > .tabs{ margin-left:0; margin-right:0; }
}

/* [eventos.html, onboarding.html, servicios.html · d-light · media] Solapas a medio convertir: estas páginas usan `.tabs > button.tab` / `.tab.on` (no `.t.active`), así que el contenedor recibe el look de seg */
html[data-apple] .tabs > .tab{ flex:1; text-align:center; padding:6px 4px !important; font-family:inherit; font-size:13px !important; font-weight:500 !important; color:var(--text) !important; border:0 !important; border-radius:7px !important; background:transparent !important; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
html[data-apple] .tabs > .tab.on{ background:var(--card-2) !important; box-shadow:0 1px 3px rgba(0,0,0,.16); font-weight:590 !important; }
html[data-apple][data-tema="oscuro"] .tabs > .tab.on{ background:#636366 !important; }

/* [legajos.html · m-light · media] Tablero RRHH: los KPIs vienen con `style="grid-template-columns:repeat(4,1fr)"` inline → en 390px la 4ª tarjeta («Obligatorios pendientes»)  */
@media (max-width:600px){ html[data-apple] .kpis{ grid-template-columns:repeat(2,1fr) !important; } }
html[data-apple] .folder{ flex-wrap:wrap; }
html[data-apple] .wrap > div[style*="display:flex;gap:8px;margin-bottom:14px"]{ margin-left:16px; margin-right:16px; }

/* [asistencia.html · m-light · media] La tarjeta de fichada (.jcard, no es .card) queda pegada a los bordes laterales (0-2px de margen) porque .wrap perdió el padding; lo mismo l */
html[data-apple] .jcard{ background:var(--card) !important; border:0 !important; box-shadow:0 0 0 .5px var(--sep) inset; border-radius:14px !important; margin:0 16px 14px !important; }
html[data-apple] .wrap > .msg{ max-width:min(380px, calc(100% - 32px)) !important; }

/* [documentos.html · m-light · baja] En «Mis documentos» el JS oculta las 3 solapas (display:none) pero el contenedor .tabs sigue pintado con el look de segmented (fill + paddin */
html[data-apple] .tabs:not(:has(> *:not([style*="none"]))){ display:none !important; }

/* [eventos.html · m-dark · baja] Badges con fondos claros hardcodeados en oscuro: .b-pre (#fce7f3), .b-vir (#dbeafe), .b-can (#fee2e2), .b-voy (#dcfce7) quedan como parches  */
html[data-apple][data-tema="oscuro"] .b-vir{ background:var(--blue-soft) !important; color:var(--blue) !important; }
html[data-apple][data-tema="oscuro"] .b-pre{ background:var(--purple-soft) !important; color:var(--purple) !important; }
html[data-apple][data-tema="oscuro"] .b-can{ background:var(--red-soft) !important; color:var(--red) !important; }
html[data-apple][data-tema="oscuro"] .b-voy, html[data-apple][data-tema="oscuro"] .b-leida{ background:var(--green-soft) !important; color:var(--green) !important; }

/* [lms, librerias, formularios, encuestas, clima, objetivos, de · m-light + m-dark · alta] Contenido pegado a los bordes: apple.css pone .wrap{padding:8px 0 30px} y solo da margen a .wrap>.card; en estas páginas el contenido cuelga */
@media (max-width:819px){
  html[data-apple] .wrap > section, html[data-apple] .wrap > h1, html[data-apple] .wrap > .sub, html[data-apple] .wrap > .head, html[data-apple] .wrap > .filtros, html[data-apple] .wrap > .grid, html[data-apple] .wrap > #view, html[data-apple] .wrap > #cont, html[data-apple] .wrap > .crumb, html[data-apple] .wrap > .layout{ padding-left:16px; padding-right:16px; }
  html[data-apple] .wrap > .grid > .card{ margin-left:0 !important; margin-right:0 !important; }
  html[data-apple] .wrap > section .kpis, html[data-apple] .wrap > #cont .kpis{ margin-left:0 !important; margin-right:0 !important; }
}

/* [encuestas.html (Responder), clima.html (Responder), desempen · m-dark (y d-dark) · alta] Los modales de respuesta usan cajas con fondo claro hardcodeado (.qbox/.fbox/.lecbox #fcfcfd, .modhead #f8fafc, botones de puntaje .sc/.lk/. */
html[data-apple] .qbox, html[data-apple] .fbox, html[data-apple] .lecbox, html[data-apple] .modcard{ background:var(--card) !important; border-color:var(--sep) !important; color:var(--text) !important; }
html[data-apple] .modhead{ background:var(--fill) !important; color:var(--text) !important; }
html[data-apple] .lec{ border-color:var(--sep) !important; } html[data-apple] .lec:hover{ background:var(--fill) !important; }
html[data-apple] .lec .ic{ background:var(--indigo-soft) !important; }
html[data-apple] .sc, html[data-apple] .lk, html[data-apple] .en{ background:var(--card-2) !important; border-color:var(--sep) !important; color:var(--text) !important; }
html[data-apple] .sc.on, html[data-apple] .lk.on, html[data-apple] .en.on{ background:var(--blue) !important; color:#fff !important; border-color:transparent !important; }
html[data-apple] .opt, html[data-apple] .q-opt{ color:var(--text) !important; }

/* [formularios.html (modal Completar) · m-light + m-dark + d · alta] Colisión de clase: el asterisco de campo obligatorio es <span class="req">*</span> y apple.css estiliza .req como tarjeta de Solicitudes (fo */
html[data-apple] .fl .req, html[data-apple] span.req{ background:transparent !important; box-shadow:none !important; padding:0 !important; margin:0 !important; border-radius:0 !important; display:inline !important; color:var(--red) !important; }

/* [chats.html (con una conversación abierta) · m-light + m-dark · alta] En móvil el panel de chat abierto es position:fixed; inset:48px 0 0 (z-index 20) y la tab bar fija (z-index 50) tapa la fila de envío: el in */
@media (max-width:680px){ html[data-apple].ap-has-tab .panel.chat.open{ top:calc(var(--top-h) + 8px) !important; bottom:calc(var(--tab-h) + var(--safe-b)) !important; } }

/* [chats.html (hilo de mensajes y lista de conversaciones) · m-dark (y d-dark) · alta] Fondos hardcodeados: .msgs #f7f8fa (área del hilo gris claro), .m.them #fff y .m.me #dbeafe con texto heredado blanco → los mensajes propios */
html[data-apple] .msgs{ background:var(--bg) !important; }
html[data-apple] .m.them{ background:var(--card-2) !important; border:0 !important; color:var(--text) !important; }
html[data-apple] .m.me{ background:var(--blue-soft) !important; color:var(--text) !important; }
html[data-apple] .conv:hover, html[data-apple] .conv.on{ background:var(--fill) !important; }

/* [marketplace.html (filtros) y desempeno.html (solapas .stab d · m-dark (y d-dark) · alta] Chip activo invisible: .fchip.on y .stab.on usan background:var(--ink) + color:#fff; con la piel Apple --ink pasa a ser blanco en oscuro → p */
html[data-apple] .fchip, html[data-apple] .stab{ background:var(--fill) !important; border:0 !important; color:var(--text-2) !important; }
html[data-apple] .fchip.on, html[data-apple] .stab.on{ background:var(--blue) !important; color:#fff !important; }

/* [lms.html («Nuevo»/«En curso»/«Finalizado»), encuestas.html y · m-dark (y d-dark) · media] Badges de estado con fondo pastel hardcodeado (#e0e7ff, #dcfce7, #fef3c7, #ede9fe…) dentro de .card: la regla html[data-apple] .card *{color */
html[data-apple][data-tema="oscuro"] .badge, html[data-apple][data-tema="oscuro"] .mchip{ background:var(--fill) !important; color:var(--text-2) !important; }
html[data-apple][data-tema="oscuro"] .b-fin, html[data-apple][data-tema="oscuro"] .b-act, html[data-apple][data-tema="oscuro"] .b-ok, html[data-apple][data-tema="oscuro"] .b-list, html[data-apple][data-tema="oscuro"] .b-log, html[data-apple][data-tema="oscuro"] .b-pub{ background:var(--green-soft) !important; color:var(--green) !important; }
html[data-apple][data-tema="oscuro"] .b-prog, html[data-apple][data-tema="oscuro"] .b-proc, html[data-apple][data-tema="oscuro"] .b-pend, html[data-apple][data-tema="oscuro"] .b-cur, html[data-apple][data-tema="oscuro"] .b-priv{ background:var(--orange-soft) !important; color:var(--orange) !important; }
html[data-apple][data-tema="oscuro"] .b-new, html[data-apple][data-tema="oscuro"] .b-anon, html[data-apple][data-tema="oscuro"] .b-rec, html[data-apple][data-tema="oscuro"] .b-mem, html[data-apple][data-tema="oscuro"] .b-mio, html[data-apple][data-tema="oscuro"] .mchip{ background:var(--indigo-soft) !important; color:var(--indigo) !important; }
html[data-apple][data-tema="oscuro"] .b-ina, html[data-apple][data-tema="oscuro"] .b-cer, html[data-apple][data-tema="oscuro"] .b-vend{ background:var(--red-soft) !important; color:var(--red) !important; }

/* [grupos.html (dentro de un grupo: reacciones de los posts) · m-dark (y d-dark) · media] Pastillas de reacción .rb con background:#fff y .rb.on #eef2ff hardcodeados: en oscuro el contador («👍 2») queda blanco sobre blanco. */
html[data-apple] .rb{ background:var(--fill) !important; border:0 !important; color:var(--text) !important; }
html[data-apple] .rb.on{ background:var(--blue-soft) !important; color:var(--blue) !important; }

/* [lms.html (tarjetas de curso y visor), objetivos.html, estadi · m-dark (y d-dark) · media] Pista de las barras de progreso .bar con background:#eceff3 hardcodeado → en oscuro es una banda blanca brillante sobre la tarjeta. */
html[data-apple] .bar{ background:var(--fill) !important; }

/* [librerias.html (.libcard .ic, .frow/.artrow hover, .avisobox · m-dark (y d-dark) · baja] Fondos claros hardcodeados menores: tiles de ícono #ecfeff/#eef2ff quedan como cuadrados blancos en oscuro; el hover de filas de archivo/art */
html[data-apple][data-tema="oscuro"] .libcard .ic, html[data-apple][data-tema="oscuro"] .gcard .ic{ background:var(--fill) !important; }
html[data-apple] .frow:hover, html[data-apple] .artrow:hover{ background:var(--fill) !important; border-color:var(--sep) !important; }
html[data-apple] .avisobox{ background:var(--orange-soft) !important; border-color:transparent !important; color:var(--text) !important; }

/* [tickets.html, tickets-kpis.html, tablero.html, reglas.html,  · m-dark · alta] Todos los botones secundarios (button.sec: Guardar vista, Spam, Elegir valores, Limpiar, ↻, Ver SLA, Excel, Unificar, Actualizar, 7 días/30  */
/* botones secundarios de la familia tickets: pasan a tinted button Apple (fill + azul) */
html[data-apple] button.sec, html[data-apple] .wh .hb button, html[data-apple] .quick button, html[data-apple] .node .tools button, html[data-apple] .menu button, html[data-apple] .addrow .add{ background:var(--fill) !important; color:var(--blue) !important; border-color:transparent !important; }
html[data-apple] .menu button small{ color:var(--text-3) !important; }
html[data-apple] button.dan{ background:var(--red-soft) !important; color:var(--red) !important; }
/* guiones rápidos de bot-consola (.chips > span sin clase; los .chip de atencion-virtual NO se tocan) */
html[data-apple] .chips > span:not(.chip){ background:var(--fill) !important; color:var(--blue) !important; border-color:transparent !important; }

/* [atencion-virtual.html, escalamiento.html · m-dark · alta] Los recuadros .note (texto explicativo punteado: «Todo lo que diga simulado…», «Cuando una conversación del bot contiene la frase…») quedan  */
html[data-apple] .note{ background:var(--fill) !important; color:var(--text-3) !important; border:1px dashed var(--sep) !important; }
html[data-apple] .note b{ color:var(--text-2) !important; }

/* [bot-consola.html · d-light y m-dark · alta] El teléfono simulado se rompe con la piel: (a) apple.css pisa .phone .top con la barra translúcida genérica → en claro el subtítulo «+54 9 1 */
/* el teléfono conserva su look WhatsApp en ambos temas */
html[data-apple] .phone .top{ background:#075e54 !important; color:#fff !important; padding:12px 14px !important; min-height:0; border-bottom:0 !important; -webkit-backdrop-filter:none; backdrop-filter:none; }
html[data-apple] .phone .top b{ color:#fff !important; } html[data-apple] .phone .top small{ color:#cfe9e4 !important; }
html[data-apple] .phone #chat{ background:#e5ddd5 !important; }
html[data-apple] .phone #chat .bub{ color:#111 !important; } html[data-apple] .phone #chat .bub.bot{ background:#fff !important; } html[data-apple] .phone #chat .bub.me{ background:#dcf8c6 !important; }
html[data-apple] .phone #chat .bub .t, html[data-apple] .phone #chat .bub .lab{ color:#8b8b8b !important; } html[data-apple] .phone #chat .bub.sys{ color:#7a5b00 !important; background:#fff8e1 !important; }
html[data-apple] .phone .typing{ color:#667085 !important; }
html[data-apple] .phone #chipsQuick{ background:#f7f7f7 !important; } html[data-apple] .phone #chipsQuick span{ background:#fff !important; color:#164a7c !important; border:1px solid #e3e6ea !important; }
html[data-apple] .phone .compose{ background:#f0f0f0 !important; } html[data-apple] .phone .compose input{ background:#fff !important; color:#111 !important; border-color:#e3e6ea !important; }
html[data-apple] .phone .compose button{ background:#128c7e !important; color:#fff !important; }

/* [tablero.html · m-dark · alta] Fila de semáforos: las .tile neutras (ABIERTOS, VENCEN EN 10 MIN, SLA CUMPLIDO) tienen fondo hardcodeado #fafbfc y el número grande hereda b */
html[data-apple][data-tema="oscuro"] .tile{ background:var(--card-2) !important; border-color:var(--sep) !important; color:var(--text) !important; }
html[data-apple][data-tema="oscuro"] .tile.ok{ background:var(--green-soft) !important; }
html[data-apple][data-tema="oscuro"] .tile.warn{ background:var(--orange-soft) !important; }
html[data-apple][data-tema="oscuro"] .tile.bad{ background:var(--red-soft) !important; }
html[data-apple][data-tema="claro"] .tile{ background:var(--fill) !important; }   /* mismo neutro que los .kpi */

/* [tickets.html · d-light y m-light/m- · media] Filtro de fechas: el span.flt que envuelve los dos datetime-local hereda max-width:175px, así que los inputs desbordan el span. En escritori */
html[data-apple] span.flt:has(> #fDesde){ max-width:none !important; flex-wrap:wrap; }
html[data-apple] #fDesde, html[data-apple] #fHasta{ max-width:150px !important; }
html[data-apple] #fColab{ max-width:100% !important; flex:1 1 200px; }

/* [tickets.html, atencion-virtual.html, conversaciones.html, es · m-light y d-light · media] El header usa <img src="/logo.png"> (logo blanco pensado para la barra negra vieja); con la barra clara de la piel el logo queda blanco sobr */
html[data-apple][data-tema="claro"] header > img[src="/logo.png"]{ content:url("/logo-dark.png"); }

/* [tickets.html, bot-consola.html, conversaciones.html (y en me · m-light y m-dark · media] Header en móvil: título + spacer + 3-4 links en una sola fila flex sin wrap → el título se parte en 3 líneas, los links caen en 2 líneas cad */
@media (max-width:819px){
  html[data-apple] header:has(> .sp){ flex-wrap:wrap; row-gap:2px; }
  html[data-apple] header > .sp{ flex:1 1 100% !important; height:0; }   /* título arriba, links en 2ª fila */
  html[data-apple] header a{ font-size:14px !important; white-space:nowrap; margin-right:12px !important; }
  html[data-apple] header > span[style*="font-weight:700"], html[data-apple] header > b{ font-size:17px !important; min-width:0; }
}

/* [reglas.html, bot-consola.html, conversaciones.html, tablero. · m-light y m-dark · media] Contenido pegado a los bordes: apple.css deja .wrap con padding lateral 0 en móvil y solo re-margina .wrap > .card y .wrap > div > .card; to */
@media (max-width:819px){
  html[data-apple] .wrap > .tabbar, html[data-apple] .wrap > .layout, html[data-apple] .wrap > .banner, html[data-apple] .wrap > #bannerMotor, html[data-apple] .wrap > #armBar, html[data-apple] .wrap > .stats, html[data-apple] .wrap > .grid, html[data-apple] .wrap > #cfgLineas, html[data-apple] .wrap > #modoNota{ margin-left:16px !important; margin-right:16px !important; }
  html[data-apple] .wrap > .grid-stack{ margin-left:10px !important; margin-right:10px !important; }   /* el grid ya trae margin:0 -6px */
}

/* [tickets.html, tablero.html, reglas.html, bot-consola.html, a · m-dark · media] Islas claras hardcodeadas dentro de tarjetas oscuras: panel de filtros de tickets (div style background:#f7f8fa), #slabox, burbujas .bub (ti */
html[data-apple][data-tema="oscuro"] .card div[style*="background:#f7f8fa"], html[data-apple][data-tema="oscuro"] #slabox, html[data-apple][data-tema="oscuro"] .bub, html[data-apple][data-tema="oscuro"] details.col, html[data-apple][data-tema="oscuro"] .rl, html[data-apple][data-tema="oscuro"] .tk, html[data-apple][data-tema="oscuro"] .num, html[data-apple][data-tema="oscuro"] .node, html[data-apple][data-tema="oscuro"] .trace div, html[data-apple][data-tema="oscuro"] .menu, html[data-apple][data-tema="oscuro"] .kv code, html[data-apple][data-tema="oscuro"] pre.js, html[data-apple][data-tema="oscuro"] .chat, html[data-apple][data-tema="oscuro"] .thread, html[data-apple][data-tema="oscuro"] .win, html[data-apple][data-tema="oscuro"] .nota, html[data-apple][data-tema="oscuro"] #pal, html[data-apple][data-tema="oscuro"] #pal .it, html[data-apple][data-tema="oscuro"] #cfg{ background:var(--card-2) !important; border-color:var(--sep) !important; color:var(--text) !important; }
html[data-apple][data-tema="oscuro"] .rl.on, html[data-apple][data-tema="oscuro"] .tk.on, html[data-apple][data-tema="oscuro"] .num.on, html[data-apple][data-tema="oscuro"] .node.trig{ background:var(--blue-soft) !important; }
html[data-apple][data-tema="oscuro"] .bub.r, html[data-apple][data-tema="oscuro"] .node.act, html[data-apple][data-tema="oscuro"] .msg.in .bub, html[data-apple][data-tema="oscuro"] .bub.out{ background:var(--green-soft) !important; }
html[data-apple][data-tema="oscuro"] .node.cond, html[data-apple][data-tema="oscuro"] details.col.esc, html[data-apple][data-tema="oscuro"] .win.cl, html[data-apple][data-tema="oscuro"] .banner.warn{ background:var(--orange-soft) !important; color:var(--orange) !important; border-color:transparent !important; }
html[data-apple][data-tema="oscuro"] .banner.ok, html[data-apple][data-tema="oscuro"] .wrap > .banner{ background:var(--green-soft) !important; color:var(--green) !important; border-color:transparent !important; }
html[data-apple][data-tema="oscuro"] .bar .tr{ background:var(--fill) !important; }
html[data-apple][data-tema="oscuro"] .bub .meta, html[data-apple][data-tema="oscuro"] .bub .tag, html[data-apple][data-tema="oscuro"] .bub.out .meta{ color:var(--text-3) !important; }

/* [conversaciones.html · m-light, m-dark y d- · media] Cada ítem de la lista tiene una fila .conv .top (nombre + hora) que apple.css confunde con la barra superior genérica .top: le pone fondo tr */
html[data-apple] .conv .top{ background:transparent !important; padding:0 !important; min-height:0 !important; border-bottom:0 !important; -webkit-backdrop-filter:none; backdrop-filter:none; position:static !important; }
html[data-apple][data-tema="oscuro"] .stat .v.dng, html[data-apple][data-tema="oscuro"] .dot{ color:var(--red) !important; }

/* [bot-consola.html, escalamiento.html, tablero.html, reglas.ht · d-light y m-light · media] Texto en verde «ok» sobre fondos claros con contraste ~2:1: apple.css remapea --ok/--green al verde Apple #34C759 y las páginas lo usan como */
html[data-apple][data-tema="claro"]{ --ok:#248A3D; --warn:#B25E00; }   /* texto ok/warn del contrato legado sobre fondos claros */
html[data-apple][data-tema="claro"] .wrap > .banner, html[data-apple][data-tema="claro"] .banner.ok{ color:#248A3D !important; }
html[data-apple] details > summary[style*="color:var(--green)"]{ color:var(--blue) !important; }

/* [tickets.html, atencion-virtual.html · m-light y m-dark · baja] Tablas anchas dentro de .card sin contenedor de scroll: la bandeja de tickets (7 columnas: FECHA…ESTADO cortada) y el maestro de Canales (US */
html[data-apple] .card:has(> table), html[data-apple] .card > div:has(> table){ overflow-x:auto; -webkit-overflow-scrolling:touch; }

/* [control-fichada.html, infracciones.html, postulantes.html, o · m-light + m-dark · alta] Contenido más ancho que 390px (tablas anchas dentro de .wrap; en organigrama la .ficha de 480px + la barra .top) expande el layout viewport  */
@media (max-width:819px){
  html[data-apple] .wrap{ overflow-x:auto; }
  /* organigrama.html (BO): árbol arriba, ficha abajo, cada uno con su scroll; barra superior envuelve */
  html[data-apple] .main:has(> #treewrap):has(> #ficha){ flex-direction:column; }
  html[data-apple] .main > #treewrap{ flex:1 1 40% !important; }
  html[data-apple] .main > #ficha{ width:auto !important; flex:1 1 60% !important; border-left:0 !important; border-top:.5px solid var(--sep); }
  html[data-apple] .top .logo .mklogo{ display:inline-block !important; vertical-align:middle; height:18px !important; margin-right:6px; }
  html[data-apple] .top:has(> .stats){ flex-wrap:wrap; }
  html[data-apple] .top .actions{ flex-wrap:wrap; max-width:100%; }
  html[data-apple] .top .actions select{ max-width:150px; }
  html[data-apple] .top .stats{ display:none !important; }
}

/* [organigrama-vista.html, reporte-fichada.html, infracciones.h · d-light · alta] En escritorio la tab bar (sticky top:52px) tapa el encabezado propio de la página (título, eyebrow, «Volver al portal»): estas páginas no ti */
@media (min-width:820px){
  html[data-apple] body > .ap-tabbar:first-child{ top:0 !important; }
}

/* [control-fichada.html · m-dark · alta] Fondos blancos hardcodeados con texto que hereda blanco: la tarjeta .filtros (#fff), los botones inline «Aplicar» (background:var(--ink)+col */
html[data-apple] .filtros:has(button.rg){ background:var(--card) !important; border-color:var(--sep) !important; }
html[data-apple] .filtros button.rg{ background:var(--blue) !important; color:#fff !important; border:0 !important; }
html[data-apple] .filtros #btnRefresh{ background:var(--fill) !important; color:var(--blue) !important; border:0 !important; }
html[data-apple] .infchip{ background:var(--card) !important; border-color:var(--sep) !important; color:var(--text-2) !important; }
html[data-apple] .infchip b{ color:var(--text) !important; }
html[data-apple] .infchip.has{ border-color:color-mix(in srgb, var(--red) 40%, transparent) !important; }
html[data-apple] .infchip.has b{ color:var(--red) !important; }
html[data-apple] .infchip.on, html[data-apple] .infchip.on:hover{ background:var(--blue) !important; color:#fff !important; border-color:var(--blue) !important; }
html[data-apple] .infchip.on b{ color:#fff !important; }
html[data-apple] details.sitios{ background:var(--card) !important; border-color:var(--sep) !important; }
html[data-apple] .sitios-body{ border-color:var(--sep) !important; }
html[data-apple] .sform{ background:var(--fill) !important; border-color:var(--sep) !important; }
html[data-apple] .sbtn{ background:var(--blue) !important; color:#fff !important; border:0 !important; }
html[data-apple] .sbtn.ghost{ background:var(--fill) !important; color:var(--blue) !important; }
html[data-apple] .sbtn.danger{ background:var(--red-soft) !important; color:var(--red) !important; }
html[data-apple] .rg .save{ background:var(--blue) !important; color:#fff !important; border:0 !important; }
html[data-apple] .srow{ border-color:var(--sep) !important; }
html[data-apple] .modal-h, html[data-apple] .modal-x{ background:var(--bg) !important; border-color:var(--sep) !important; }
html[data-apple] .asig-list{ background:var(--card) !important; border-color:var(--sep) !important; }
html[data-apple] .asig-list label:hover{ background:var(--fill) !important; }
html[data-apple] .ge-lbl{ color:var(--text-2) !important; }
html[data-apple] .coord{ background:var(--fill) !important; color:var(--text) !important; border-color:var(--sep) !important; }

/* [organigrama.html · m-dark + d-dark · alta] Pill «Todos» del filtro ¿Qué falta? (.pill.on = background var(--ink) + color #fff → en oscuro --ink es blanco: pill blanca con texto blanco */
html[data-apple] .dq .pill.on{ background:var(--blue) !important; color:#fff !important; border-color:var(--blue) !important; }
html[data-apple] .dq .pill.on b{ background:rgba(255,255,255,.25) !important; color:#fff !important; }
html[data-apple] .row .team, html[data-apple] .bdg .team{ background:var(--fill-2) !important; color:var(--text) !important; }
html[data-apple] .fhead .tags .tag:not([style]){ background:var(--fill) !important; color:var(--text-2) !important; }
html[data-apple] .fhead .tags .tag.green{ background:var(--green-soft) !important; color:var(--green) !important; }
html[data-apple] .fhead .tags .tag.blue{ background:var(--blue-soft) !important; color:var(--blue) !important; }
html[data-apple] .fhead .tags .tag.amber{ background:var(--orange-soft) !important; color:var(--orange) !important; }
html[data-apple] .fhead .tags .tag.red{ background:var(--red-soft) !important; color:var(--red) !important; }
html[data-apple][data-tema="claro"] .fhead .tags .tag.green{ color:#248A3D !important; } html[data-apple][data-tema="claro"] .fhead .tags .tag.amber{ color:#B25E00 !important; }
html[data-apple] .row.sel{ box-shadow:inset 0 0 0 1px var(--blue-soft) !important; }

/* [organigrama.html, sucursales.html · m-light + d-light · media] Los contadores de la barra superior (.top .stats: «1 personas · 1 activas» / «25 bases · 16 sucursales · 0 geolocalizadas») quedan con color */
html[data-apple] .top .stats{ color:var(--text-3) !important; }
html[data-apple] .top .stats b{ color:var(--text) !important; }
@media (max-width:819px){ html[data-apple] .top .stats{ display:none !important; } }

/* [sucursales.html · m-dark (+ sticky en  · media] Dentro de .card, apple.css fuerza color:inherit a todo → los chips «— Sin dirección» (.st.sin, fondo #eef1f4), «Sucursal · …» (.sucbadge, fo */
html[data-apple] .card .st.sin, html[data-apple] .st.sin{ background:var(--fill) !important; color:var(--text-3) !important; }
html[data-apple] .card .st.validada{ background:var(--green-soft) !important; color:var(--green) !important; }
html[data-apple] .card .st.provisoria{ background:var(--orange-soft) !important; color:var(--orange) !important; }
html[data-apple] .card .st.rechazada{ background:var(--red-soft) !important; color:var(--red) !important; }
html[data-apple][data-tema="claro"] .card .st.validada{ color:#248A3D !important; } html[data-apple][data-tema="claro"] .card .st.provisoria{ color:#B25E00 !important; }
html[data-apple] .card .sucbadge{ background:var(--indigo-soft) !important; color:var(--indigo) !important; border-color:transparent !important; }
html[data-apple] .card .cpa{ background:var(--blue-soft) !important; color:var(--blue) !important; border-color:transparent !important; }
html[data-apple] .card .gcl{ background:var(--fill) !important; color:var(--text-2) !important; }
html[data-apple] .card .cardmap{ background:var(--fill) !important; border-color:var(--sep) !important; }
html[data-apple] .card .cardmap.nomap{ color:var(--text-3) !important; }
html[data-apple] .resbox{ background:var(--fill) !important; border-color:var(--sep) !important; }
html[data-apple] .tools{ top:61px !important; }
@media (min-width:820px){ html[data-apple] .tools{ top:105px !important; } }

/* [auditoria-rrhh.html · m-dark · media] Pill del tipo de evento (.p-firma: background var(--ok-bg)=#e5f4ea claro + color var(--ok) que apple remapea a verde claro #30D158) → texto  */
html[data-apple] .p-firma{ background:var(--green-soft) !important; color:var(--green) !important; }
html[data-apple] .p-disc{ background:var(--red-soft) !important; color:var(--red) !important; }
html[data-apple] .p-dom{ background:var(--blue-soft) !important; color:var(--blue) !important; }
html[data-apple] .p-mod{ background:var(--orange-soft) !important; color:var(--orange) !important; }
html[data-apple] .p-otro{ background:var(--fill) !important; color:var(--text-3) !important; }
html[data-apple][data-tema="claro"] .p-firma{ color:#248A3D !important; } html[data-apple][data-tema="claro"] .p-mod{ color:#B25E00 !important; }
html[data-apple] .ev .cambio{ background:var(--fill) !important; border-color:var(--sep) !important; }

/* [feriados.html (+ organigrama.html logo) · m-dark + m-light/d-l · media] Oscuro: la caja .note «Esta es la fuente única…» tiene fondo #fafbfc hardcodeado y hereda texto blanco de .card → ilegible; los botones ✕ de */
html[data-apple] .note{ background:var(--fill) !important; border-color:var(--sep) !important; color:var(--text-2) !important; }
html[data-apple] button.sec{ background:var(--fill) !important; color:var(--blue) !important; }
html[data-apple][data-tema="claro"] .top .logo img[src$="/logo.png"], html[data-apple][data-tema="claro"] header > img[src$="/logo.png"]{ content:url("/logo-dark.png"); }

/* [postulantes.html · m-dark · media] tbody tr:hover pinta la fila con #f8fafc (clara) mientras el texto de la celda es blanco → la fila desaparece al pasar el mouse. En el modal */
html[data-apple] tbody tr:hover{ background:var(--fill) !important; }
html[data-apple] .modal .foot{ background:var(--bg) !important; border-color:var(--sep) !important; }
html[data-apple] .refbox{ background:var(--green-soft) !important; border-color:transparent !important; }
html[data-apple] .notas .nota{ background:var(--fill) !important; border-color:var(--sep) !important; }

/* [organigrama-vista.html, control-fichada.html, reporte-fichad · m-light + m-dark · media] apple.css deja .wrap con padding lateral 0 en móvil y solo da margen a .wrap > .card; estas páginas usan otros hijos directos (.masthead/.he */
@media (max-width:819px){
  html[data-apple] .wrap > .masthead, html[data-apple] .wrap > .head, html[data-apple] .wrap > .sub, html[data-apple] .wrap > p.sub,
  html[data-apple] .wrap > .toolbar, html[data-apple] .wrap > .count, html[data-apple] .wrap > .tree, html[data-apple] .wrap > .graphwrap,
  html[data-apple] .wrap > .legend, html[data-apple] .wrap > .panel, html[data-apple] .wrap > .cols, html[data-apple] .wrap > .bar,
  html[data-apple] .wrap > .filtros, html[data-apple] .wrap > .infbar, html[data-apple] .wrap > details.sitios, html[data-apple] .wrap > #cont,
  html[data-apple] .wrap > #tableWrap, html[data-apple] .wrap > h1, html[data-apple] .wrap > .hist, html[data-apple] .wrap > .empty,
  html[data-apple] .wrap > #host, html[data-apple] .wrap > .state{ margin-left:16px !important; margin-right:16px !important; }
  html[data-apple] .wrap > table{ width:calc(100% - 32px) !important; margin-left:16px !important; margin-right:16px !important; }
}

/* [reporte-fichada.html, infracciones.html, auditoria-rrhh.html · m-light + m-dark + d · baja] El .masthead cierra con border-bottom 2px solid var(--ink): raya gruesa negra en claro y blanca en oscuro, ajena al lenguaje Apple (separado */
html[data-apple] .masthead{ border-bottom:.5px solid var(--sep) !important; }
html[data-apple] .masthead .eyebrow, html[data-apple] .eyebrow{ color:var(--text-3) !important; letter-spacing:.06em !important; }

/* [reporte-drive.html, nosis-monitor.html · d-light (también d-d · alta] En escritorio la tab bar (sticky top:52px) queda como PRIMER hijo del body porque estas páginas no tienen header/.top: se monta sobre el mas */
@media (min-width:820px){ html[data-apple] body > .ap-tabbar:first-child{ top:0; } }

/* [delegaciones.html (y reporte-drive.html; el selector .panel  · m-dark / d-dark · alta] Los bloques .panel («Alertas y pendientes», «Cobertura por empresa», tablas de Delegaciones/Empresas) tienen background:#fff hardcodeado (de */
html[data-apple] .panel{ background:var(--card) !important; border-color:var(--sep) !important; box-shadow:0 0 0 .5px var(--sep) inset !important; }
html[data-apple] .panel-h, html[data-apple] .filters{ background:transparent !important; border-color:var(--sep) !important; }

/* [delegaciones.html, bodfe.html · m-light, m-dark, d-l · alta] La regla del launcher `html[data-apple] main{ padding:0 0 24px !important; max-width:none !important; }` (apple.css sección 6) pisa a TODAS  */
/* main: solo el launcher tiene #viewProcesos; el resto recupera padding y ancho */
html[data-apple] body:not(:has(#viewProcesos)) main{ padding:8px 16px 30px !important; max-width:980px !important; margin:0 auto !important; }
/* nav.tabs (delegaciones/bodfe): segmented scrolleable, sin subrayado */
html[data-apple] nav.tabs{ overflow-x:auto; scrollbar-width:none; }
html[data-apple] nav.tabs::-webkit-scrollbar{ display:none; }
html[data-apple] nav.tabs button{ flex:1 0 auto; padding:6px 10px !important; font-size:13px !important; font-weight:500 !important; color:var(--text) !important; border:0 !important; border-radius:7px !important; }
html[data-apple] nav.tabs button.active{ background:var(--card-2) !important; box-shadow:0 1px 3px rgba(0,0,0,.16); font-weight:590 !important; }
html[data-apple][data-tema="oscuro"] nav.tabs button.active{ background:#636366 !important; }

/* [radar.html, embajadores.html · m-light, d-light (se · alta] Segmented .seg: el botón activo («Todas» en radar, «Todos» en el ranking de embajadores) tiene background:#191919 y color:#fff, pero `html[d */
html[data-apple] .seg{ border:0 !important; background:var(--fill); border-radius:9px; padding:2px; gap:2px !important; }
html[data-apple] .seg button{ background:transparent !important; color:var(--text) !important; border:0 !important; border-radius:7px !important; }
html[data-apple] .seg button.on{ background:var(--card-2) !important; color:var(--text) !important; box-shadow:0 1px 3px rgba(0,0,0,.16); font-weight:590; }
html[data-apple][data-tema="oscuro"] .seg button.on{ background:#636366 !important; }
html[data-apple] .funnel .fbar{ background:var(--blue-soft) !important; color:var(--blue) !important; }
html[data-apple] #correrBtn{ background:var(--fill) !important; color:var(--blue) !important; border:0 !important; border-radius:9px !important; font-weight:590 !important; }
html[data-apple][data-tema="oscuro"] .note:not([style*="fffaf2"]){ background:var(--fill) !important; border-color:var(--sep) !important; }
html[data-apple] .note:empty{ display:none; }

/* [panel.html · m-light, m-dark · alta] Overflow horizontal: las grillas .g2/.g3 (1fr) tienen ítems con min-width:auto y adentro filas .mini con textos white-space:nowrap («Trabaja */
html[data-apple] .g2 > *, html[data-apple] .g3 > *, html[data-apple] .kpis > *, html[data-apple] .mini > .mtx{ min-width:0; }
html[data-apple] .wrap:has(> .phead){ padding:8px 16px 30px !important; }
html[data-apple] .wrap:has(> .phead) .kpis{ margin-left:0 !important; margin-right:0 !important; }
html[data-apple] .wrap:has(> .phead) > .tabs{ margin-left:0; margin-right:0; max-width:none; }

/* [historico-atv.html · m-light, m-dark · alta] El layout de dos columnas .grid{display:flex} con .left{min-width:340px} y .right{min-width:360px} no colapsa en móvil: la página mide 764px */
@media (max-width:819px){ html[data-apple] .grid:has(> .left){ flex-wrap:wrap; } html[data-apple] .grid > .left, html[data-apple] .grid > .right{ min-width:0 !important; flex:1 1 100% !important; } }

/* [radar.html · m-light, m-dark · media] Las tablas «Desempeño por referente» (#tabRef) y «Fuentes monitoreadas» (#fuentes) tienen un min-content de ~420–440px: se salen de la .card */
html[data-apple] .card:has(> table), html[data-apple] #fuentes{ overflow-x:auto; }
html[data-apple] .wrap > .metrics, html[data-apple] .wrap > .row{ margin-left:16px !important; margin-right:16px !important; }

/* [nosis-monitor.html, reporte-drive.html · m-light, m-dark · media] Estas páginas no tienen .top: el .masthead (eyebrow + h1 + «Volver al portal»), el párrafo .sub, la fila .bar con «Actualizar ahora», la .no */
html[data-apple] .wrap > .masthead, html[data-apple] .wrap > .sub, html[data-apple] .wrap > .bar, html[data-apple] .wrap > .nota, html[data-apple] .wrap > .panel, html[data-apple] .wrap > .cols{ margin-left:16px !important; margin-right:16px !important; }
html[data-apple] .masthead{ border-bottom-color:var(--sep) !important; }

/* [pedidos-personal.html (toast: también panel.html, reporte-dr · m-light, m-dark · media] En móvil (≤640px) #btnGuardia («🔕 Fuera de guardia») pasa a position:fixed; bottom:16px; z-index:40 y la tab bar (z-index 50, 61px) lo tapa  */
@media (max-width:640px){ html[data-apple].ap-has-tab #btnGuardia{ bottom:calc(var(--tab-h) + var(--safe-b) + 12px) !important; } }
@media (max-width:819px){ html[data-apple].ap-has-tab .toast{ bottom:calc(var(--tab-h) + var(--safe-b) + 12px) !important; } }
html[data-apple] .wrap > section{ padding-left:16px; padding-right:16px; }
html[data-apple] .wrap > section .kpis{ margin-left:0 !important; margin-right:0 !important; }

/* [embajadores.html · m-dark, d-dark · media] El track de las barras de progreso `.bar{background:#edeef1}` («Compromiso por área/marca», campañas) queda casi blanco sobre la card oscura */
html[data-apple] .bar:has(> i){ background:var(--fill) !important; }

/* [historico-atv.html · m-dark, d-dark · media] Dentro de la nota clara «Semáforo antes de borrar» (inline bg #fffaf2) el <code>tipo_de_contacto</code> recibe de apple.css color:var(--text */
html[data-apple][data-tema="oscuro"] .note[style*="fffaf2"]{ background:var(--orange-soft) !important; border-color:transparent !important; color:var(--text) !important; }
html[data-apple][data-tema="oscuro"] .thread .msg.in{ background:var(--fill) !important; }
html[data-apple][data-tema="oscuro"] .thread .msg.out{ background:var(--green-soft) !important; }
html[data-apple][data-tema="oscuro"] .thread h4, html[data-apple][data-tema="oscuro"] .thread .msgs{ background:var(--card-2) !important; }
html[data-apple][data-tema="oscuro"] button.sec{ background:var(--fill) !important; color:var(--text) !important; }

/* [ceti.html · m-dark · alta] Las burbujas del bot (.msg.ceti, var --burbuja-ceti:#fff no remapeada) y la tarjeta selector de voz (.selector, fondo #fff) quedan BLANCAS c */
html[data-apple] .msg.ceti, html[data-apple] .selector{ background:var(--card) !important; border-color:var(--sep) !important; color:var(--text) !important; }
html[data-apple] .selector button:not(:hover){ background:var(--card-2); }
html[data-apple] .app > form{ background:var(--card) !important; border-top:.5px solid var(--sep) !important; }
html[data-apple] .app > form input{ background:var(--fill) !important; }

/* [ceti.html + cetahub.html · m-light / m-dark · alta] El composer (input «Escribile a Ceti…» + botón Enviar) queda TAPADO por la tab bar inferior: .app{height:100vh} y el body suma el padding de */
@media (max-width:819px){
  html[data-apple].ap-has-tab .app{ height:calc(100vh - var(--tab-h) - var(--safe-b) - 6px); height:calc(100dvh - var(--tab-h) - var(--safe-b) - 6px); }
}
html[data-apple] .app > form{ background:var(--card) !important; border-top:.5px solid var(--sep) !important; }

/* [convenios.html · m-light / m-dark · alta] Tabla ROTA en móvil: table-layout:fixed + colgroup (78+auto+96+96+78 px) dentro de una card de 358 px deja la columna «Convenio» en ~10 px y */
html[data-apple] .wrap > .head, html[data-apple] .wrap > .sub, html[data-apple] .wrap > .bar, html[data-apple] .wrap > .prog, html[data-apple] .wrap > .foot{ margin-left:16px !important; margin-right:16px !important; }
html[data-apple] .card:has(> table > colgroup){ overflow-x:auto; -webkit-overflow-scrolling:touch; }
html[data-apple] .card > table:has(> colgroup){ min-width:560px; }

/* [operaciones.html · m-dark · alta] En «4 · Resultado — precio por pedido», las filas impares (.res tbody tr:nth-child(odd){background:#fafcfd}) quedan BLANCAS con el texto bla */
html[data-apple] .res tbody tr:nth-child(odd){ background:var(--fill) !important; }

/* [esquema-autorizacion-bys.html · m-dark · alta] El recuadro de introducción (.intro{background:#eff6ff}) queda celeste claro con el texto en blanco (--text remapeado): el párrafo «Cómo se  */
html[data-apple] .intro{ background:var(--blue-soft) !important; color:var(--text) !important; border-left-color:var(--blue) !important; }
html[data-apple][data-tema="oscuro"] svg text.ts[text-anchor="start"]{ fill:var(--text-3); }

/* [convenios.html · m-dark · media] El botón de expandir fila (.lk{background:#f1f5f9}) queda como cuadrado blanco con la flecha blanca (hereda color de .card * de apple.css):  */
html[data-apple] .lk{ background:var(--fill) !important; color:var(--blue) !important; }
html[data-apple] tr.exp{ background:transparent !important; }
html[data-apple] .detbox{ background:var(--card-2) !important; border-color:var(--sep) !important; color:var(--text) !important; }
html[data-apple] .esc-grid .e{ background:var(--fill) !important; }

/* [cetahub.html · m-light / m-dark / d · media] La banda «Modelo de Negocios · Cuenta · Producto · Lugar» (a.pipelines, fondo naranja #ff7a59 hardcodeado) pierde su color:#fff por la regla */
html[data-apple] .pipelines, html[data-apple] .descarga{ background:var(--card) !important; color:var(--text) !important; border-bottom:.5px solid var(--sep) !important; }
html[data-apple] .pipelines .txt .sub, html[data-apple] .descarga .txt .sub{ color:var(--text-3) !important; opacity:1; }
html[data-apple] .pipelines:hover, html[data-apple] .descarga:hover{ background:var(--fill) !important; filter:none; }
html[data-apple] .pipelines > span[style*="margin-left:auto"]{ color:var(--blue); }

/* [ceti.html · m-light / d-light · media] En el header, el botón «🔊 elegir voz» (.voz-chip{background:rgba(255,255,255,.22);color:#fff}) queda texto blanco sobre pastilla blanca tran */
html[data-apple] header .voz-chip, html[data-apple] header .estado{ background:var(--fill) !important; color:var(--text) !important; }
html[data-apple] header .voz-chip:hover{ background:var(--fill-2) !important; }

/* [operaciones.html · m-light / m-dark · media] Las tablas de «3 · Relevamiento» y «4 · Resultado» son más anchas que la card y se DESBORDAN: la columna Jornales/×, «Jornales/día» y los bo */
html[data-apple] .card:has(> table > #svcBody), html[data-apple] .card:has(> table > #resBody){ overflow-x:auto; -webkit-overflow-scrolling:touch; }
html[data-apple] table:has(> #svcBody), html[data-apple] table:has(> #resBody){ min-width:600px; }
html[data-apple] .top .sub{ color:var(--text-3) !important; }

/* [esquema-autorizacion-bys.html · m-light / m-dark / d · media] El botón «← CetaHub» conserva su fondo azul marino (.back{background:#0f3d5c}) pero apple.css le pone color:var(--blue) → azul sobre azul ma */
html[data-apple] .top .back{ background:transparent !important; }

/* [ceti-compliance.html + ceti-conversaciones.html · d-light · baja] En escritorio (1280 px) el título y subtítulo del header quedan pegados al borde DERECHO de la pantalla, lejos de la flecha «←» de la izquie */
html[data-apple] header:has(> .volver + div > h1) > div{ flex:1; min-width:0; }

/* ══════════════════════════════════════════════════════════════════════════════
   PARCHE DE TEMA · 18/08/2026 — «revisá la estética de todo el portal» (Ernesto)
   Auditoría de las 75 páginas: 53 roturas confirmadas en 19 archivos, casi todas
   la MISMA. Alguien escribió un fondo claro a mano (#fff, #fafafa, #eef1f4…) sin
   fijar el color del texto; en oscuro apple.css pinta el texto de BLANCO y queda
   blanco sobre blanco. Se arregla acá y no en los 19 archivos: es una cosa sola,
   vive en un solo lugar y se revierte borrando esta sección.
   ══════════════════════════════════════════════════════════════════════════════ */

/* ── 1) Fondos claros escritos en el atributo style="" ─────────────────────────
   Cubre de una todos los chips, tarjetas, filas y paneles que los arma el JS con
   el color adentro del string. Van con el fondo neutro del tema y texto legible. */
html[data-apple][data-tema="oscuro"] [style*="background:#fff"],
html[data-apple][data-tema="oscuro"] [style*="background: #fff"],
html[data-apple][data-tema="oscuro"] [style*="background:#eef1f4"],
html[data-apple][data-tema="oscuro"] [style*="background:#fafafa"],
html[data-apple][data-tema="oscuro"] [style*="background:#fafbfc"],
html[data-apple][data-tema="oscuro"] [style*="background:#f8fafb"],
html[data-apple][data-tema="oscuro"] [style*="background:#f8fafc"],
html[data-apple][data-tema="oscuro"] [style*="background:#f5f5f7"],
html[data-apple][data-tema="oscuro"] [style*="background:#f6f9fb"],
html[data-apple][data-tema="oscuro"] [style*="background:#f7f8fa"],
html[data-apple][data-tema="oscuro"] [style*="background:#f3f8ff"],
html[data-apple][data-tema="oscuro"] [style*="background:#eee"],
html[data-apple][data-tema="oscuro"] [style*="background:#fef2f2"]{
  background:var(--card-2) !important;
  color:var(--text) !important;
  border-color:var(--sep) !important;
}
/* el texto de adentro también: si el hijo no declara color propio, que herede */
html[data-apple][data-tema="oscuro"] [style*="background:#eef1f4"] *,
html[data-apple][data-tema="oscuro"] [style*="background:#fafafa"] > div,
html[data-apple][data-tema="oscuro"] [style*="background:#f8fafb"] *{ color:inherit; }

/* ── 2) background:var(--ink) — la trampa más fea ──────────────────────────────
   --ink se remapea a var(--text), que en OSCURO es BLANCO. Todo lo que usaba
   «fondo tinta + texto blanco» queda blanco sobre blanco: contadores de gente a
   cargo, pastillas de subordinados, botones de control. */
html[data-apple][data-tema="oscuro"] [style*="background:var(--ink)"],
html[data-apple][data-tema="oscuro"] .gcnt,
html[data-apple][data-tema="oscuro"] .tcnt,
html[data-apple][data-tema="oscuro"] .eqcnt{
  background:var(--fill-2) !important; color:var(--text) !important;
}

/* ── 3) Bloques con clase propia que la auditoría marcó uno por uno ────────────
   organigrama (vista gráfica + modal de maestros) · asistencia (fichada y Mi
   equipo) · onboarding · legajos · embajadores · conversaciones · comunidad. */
html[data-apple][data-tema="oscuro"] .gnode,
html[data-apple][data-tema="oscuro"] .gtoggle,
html[data-apple][data-tema="oscuro"] .pitem,
html[data-apple][data-tema="oscuro"] .trow,
html[data-apple][data-tema="oscuro"] .task.done,
html[data-apple][data-tema="oscuro"] .cmt,
html[data-apple][data-tema="oscuro"] .conv.sel,
html[data-apple][data-tema="oscuro"] .camp{
  background:var(--card-2) !important; color:var(--text) !important; border-color:var(--sep) !important;
}
html[data-apple][data-tema="oscuro"] .gnode *,
html[data-apple][data-tema="oscuro"] .pitem *,
html[data-apple][data-tema="oscuro"] .trow *,
html[data-apple][data-tema="oscuro"] .task.done *,
html[data-apple][data-tema="oscuro"] .cmt *,
html[data-apple][data-tema="oscuro"] .conv.sel *{ color:inherit; }

/* la solapa activa del modal de Maestros quedaba BLANCA SOBRE BLANCA */
html[data-apple] .mtabs{ background:transparent !important; border-bottom:.5px solid var(--sep) !important; }
html[data-apple] .mtab{ color:var(--text-2) !important; }
html[data-apple] .mtab.on{ background:var(--card-2) !important; color:var(--text) !important; }
html[data-apple][data-tema="oscuro"] .mtab.on{ background:#636366 !important; }

/* ── 4) Textos de color fijo sobre tintes del tema ─────────────────────────────
   Los tints (--warn-soft, --ok-soft…) en oscuro son translúcidos sobre negro; el
   texto marrón/verde oscuro que traían encima queda en ~1.4:1. */
html[data-apple][data-tema="oscuro"] [style*="color:#92400e"],
html[data-apple][data-tema="oscuro"] .ro-banner{ color:var(--orange) !important; }
html[data-apple][data-tema="oscuro"] [style*="color:#166534"],
html[data-apple][data-tema="oscuro"] [style*="color:#15803d"]{ color:var(--green) !important; }
html[data-apple][data-tema="oscuro"] [style*="color:#b91c1c"],
html[data-apple][data-tema="oscuro"] [style*="color:#c0392b"]{ color:var(--red) !important; }
html[data-apple][data-tema="oscuro"] [style*="color:#1a2733"],
html[data-apple][data-tema="oscuro"] [style*="color:var(--ink)"]{ color:var(--text) !important; }

/* ── 5) Filas de tabla pintadas a mano (tickets, escalamiento) ─────────────────
   apple.css ya fuerza td{color:var(--text)!important}; sin esto el fondo claro
   se queda y la fila entera es blanco sobre blanco. */
html[data-apple][data-tema="oscuro"] tr[style*="background:#f"],
html[data-apple][data-tema="oscuro"] td[style*="background:#f"],
html[data-apple][data-tema="oscuro"] tr.win24,
html[data-apple][data-tema="oscuro"] tr.tk.win24,
html[data-apple][data-tema="oscuro"] tr.tkg.win24{
  background:var(--fill) !important;
}

/* ── 6) Lo que la lectura del código no vio y sí apareció con la página andando ──
   Barrido en vivo: se recorre el DOM en oscuro y se marca todo elemento con fondo
   claro y texto claro encima. Salieron avatares con iniciales invisibles, chips de
   empresa del organigrama y los botones de control del gráfico. */
html[data-apple][data-tema="oscuro"] .avatar{ background:var(--fill-2) !important; color:var(--text-2) !important; }
html[data-apple][data-tema="oscuro"] .gchip{ background:var(--fill) !important; color:var(--text-2) !important; }
html[data-apple][data-tema="oscuro"] .gwrap button,
html[data-apple][data-tema="oscuro"] button.w{ background:var(--card-2) !important; color:var(--text) !important; border-color:var(--sep) !important; }
/* pastillas verde/ámbar/rojo con par de colores fijo: en oscuro el tinte claro sigue,
   pero apple.css pinta el texto y el número se pierde (ej. el «0%» de Embajadores) */
html[data-apple][data-tema="oscuro"] .pill.g{ background:var(--green-soft) !important; color:var(--green) !important; }
html[data-apple][data-tema="oscuro"] .pill.a{ background:var(--orange-soft) !important; color:var(--orange) !important; }
html[data-apple][data-tema="oscuro"] .pill.r{ background:var(--red-soft) !important; color:var(--red) !important; }

/* ── SELECT PROPIO (ver apple.js) ─────────────────────────────────────────────
   El popup del <select> lo dibuja el sistema y Safari ignora color-scheme, así que
   el desplegable salía blanco sobre la app oscura. Esta es la lista que lo reemplaza.
   El <select> se queda VISIBLE y con el estilo de su página —no se toca el DOM—: lo
   único que hace apple.js es tapar el menú del sistema y abrir esta lista en su lugar.
   (Esconder el select y poner un <button> rompió el organigrama: cada página los estila
   con reglas de elemento —`.tools select`, `.fld select`— que un <button> no matchea.) */
html[data-apple] .ap-sel-pop{
  /* z-index por encima de TODO lo que dibuja el portal: hay modales en 10000 y barras fijas en 99999
     (app.html:1790, 1977, 2054). Con 9999 el desplegable de un modal quedaba tapado por el modal mismo. */
  position:fixed; z-index:2147483000; max-height:min(320px,60vh); overflow:auto;
  background:var(--card-2); color:var(--text);
  border:.5px solid var(--sep); border-radius:11px; padding:5px;
  box-shadow:0 10px 34px rgba(0,0,0,.28), 0 0 0 .5px var(--sep);
  font-size:14px; -webkit-overflow-scrolling:touch;
}
html[data-apple] .ap-sel-it{ padding:8px 11px; border-radius:7px; cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--text); }
html[data-apple] .ap-sel-it:hover{ background:var(--fill); }
html[data-apple] .ap-sel-it.on{ background:var(--blue); color:#fff; font-weight:600; }
/* resaltado que se mueve con las flechas (distinto del hover y de la elegida) */
html[data-apple] .ap-sel-it.cur{ background:var(--fill); }
html[data-apple] .ap-sel-it.cur.on{ background:var(--blue); color:#fff; box-shadow:0 0 0 2px var(--blue); }
html[data-apple] .ap-sel-it.off{ opacity:.45; cursor:default; }
