/* GENERADO por bin/build_assets.php — no editar: editar assets-src/css/ */

/* ── 00-base.css ── */
/* GARCA — un solo CSS. Tokens sacados del diseño (design/Garca - E1…E9, dirección A "crema evolucionado").
   Claro y oscuro: prefers-color-scheme, con override por [data-theme]. */

:root {
  --bg: #FAF7F1; --surface: #FFFFFF; --surface-2: #FAF7F1;
  --line: #EFE9DF; --line-2: #E3DACB; --track: #F0E8DC; --bar: #DDD3C4;
  --ink: #17140F; --ink-2: #453D31; --ink-3: #5E5545; --ink-4: #756B5C;
  --brand: #1B5BE3; --on-brand: #FFFFFF;
  --accent: #1B5BE3; --accent-hover: #1746B4; --accent-soft: #E8EEFD; --accent-line: #D4E0FB; --accent-ink: #1746B4;
  --ok: #157F4C; --ok-ink: #10613C; --ok-soft: #E4F2EA;
  --warn: #925A0C; --warn-ink: #7A4A08; --warn-soft: #F8EEDC;
  --hot: #C2410C; --hot-soft: #FAE9E0;
  --bad: #B3261E; --bad-ink: #98211A; --bad-soft: #F8E3E1;
  --scrim: rgba(23, 20, 15, .5); --scrim-desk: rgba(23, 20, 15, .42); --sh-panel: rgba(70, 55, 30, .5);
  --sh-card: 0 1px 2px rgba(70, 55, 30, .04), 0 14px 30px -22px rgba(70, 55, 30, .14);
  --sh-float: 0 1px 2px rgba(70, 55, 30, .04), 0 18px 40px -26px rgba(70, 55, 30, .26);
  --sh-sheet: 0 -10px 34px -18px rgba(70, 55, 30, .45);
  --sh-cta: 0 10px 22px -12px rgba(27, 91, 227, .6);
  --f-ui: 'Plus Jakarta Sans', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --f-num: 'Bricolage Grotesque', 'Plus Jakarta Sans', system-ui, sans-serif;
  --f-mono: 'Geist Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
  --r-card: 22px; --r-btn: 14px; --r-cta: 18px;
  /* tokens del diseño exacto (tools/portar.py) */
  --ink-5: #938B7B; --ink-6: #B0A797; --ink-7: #B0A899; --line-3: #C9C0B0; --line-4: #4A4238; --accent-line-2: #9CBBFF; --noche: #1E1B16;
  --page: #FAF7F1; --card: #FFFFFF; --bg-2: #FAF7F1; --on-ink: #FAF7F1; --ink-bg: #17140F; --ink-0: #17140F; --ink-00: #17140F; --negro: #14120E; --track-2: #F5F1E9; --line-5: #D9CFC0; --accent-line-3: #9CBBFF; --sh-g: rgba(70,55,30,.45); --sh-h: rgba(70,55,30,.26); --sh-i: rgba(70,55,30,.3); --scrim-2: rgba(23,20,15,.55); --sh-card-a: rgba(70,55,30,.04); --sh-card-b: rgba(70,55,30,.14); --sh-fab: rgba(27,91,227,.6); --sh-fab-rail: rgba(27,91,227,.55); --qr-fondo: #FAF7F1; --sh-brand-8: rgba(27,91,227,.6); --num-vacio: #C9C0B0;
  --sh-a: rgba(70,55,30,.04); --sh-b: rgba(70,55,30,.14); --sh-c: rgba(70,55,30,.28); --sh-d: rgba(70,55,30,.45); --sh-e: rgba(70,55,30,.08); --sh-f: rgba(70,55,30,.5); --sh-brand: rgba(27,91,227,.6);
  color-scheme: light;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #23201A; --surface: #1E1B16; --surface-2: #23201A;
    --line: #322D25; --line-2: #3C362D; --track: #2A251E; --bar: #3C362D;
    --ink: #F6F2E9; --ink-2: #D2CABA; --ink-3: #B0A797; --ink-4: #938B7B;
    --accent: #7DA5FF; --accent-hover: #9CBBFF; --accent-soft: #1E2842; --accent-line: #2D3A5C; --accent-ink: #9CBBFF;
    --ok: #4BC486; --ok-ink: #74D3A0; --ok-soft: #17301F;
    --warn: #E0A040; --warn-ink: #E0A040; --warn-soft: #3A2E12;
    --hot: #FF8A4C; --hot-soft: #3A2417;
    --bad: #FF6B5E; --bad-ink: #FF8E84; --bad-soft: #3A1F1C;
    --scrim: rgba(0, 0, 0, .62); --scrim-desk: rgba(0, 0, 0, .6); --sh-panel: rgba(0, 0, 0, .75);
    --ink-5: #938B7B; --ink-6: #B0A797; --ink-7: #6B6355; --line-3: #8E8575; --line-4: #3C362D; --accent-line-2: #5C79B8; --noche: #1E1B16;
    --page: #14120E; --card: #23201A; --bg-2: #1E1B16; --on-ink: #F6F2E9; --ink-bg: #2A251E; --ink-0: #000000; --ink-00: #0C0A08; --negro: #000000; --track-2: #2A251E; --line-5: #3C362D; --accent-line-3: #3E5A99; --sh-g: rgba(0,0,0,.6); --sh-h: rgba(0,0,0,.6); --sh-i: rgba(0,0,0,.7); --scrim-2: rgba(0,0,0,.7); --sh-card-a: transparent; --sh-card-b: transparent; --sh-fab: rgba(27,91,227,.6); --sh-fab-rail: rgba(27,91,227,.55); /* E10: .55 también en oscuro */ --qr-fondo: #FFFFFF; /* el QR tiene que poder leerse */ --sh-brand-8: rgba(27,91,227,.8); --num-vacio: #938B7B;
    --sh-a: rgba(0,0,0,.4); --sh-b: rgba(0,0,0,.5); --sh-c: rgba(0,0,0,.6); --sh-d: rgba(0,0,0,.75); --sh-e: rgba(0,0,0,.5); --sh-f: rgba(0,0,0,.8);
    --sh-card: 0 1px 2px rgba(0, 0, 0, .4), 0 14px 30px -22px rgba(0, 0, 0, .5);
    --sh-float: 0 1px 2px rgba(0, 0, 0, .4), 0 18px 40px -26px rgba(0, 0, 0, .6);
    --sh-sheet: 0 -10px 34px -18px rgba(0, 0, 0, .75);
    color-scheme: dark;
  }
}
:root[data-theme="dark"] {
  --bg: #23201A; --surface: #1E1B16; --surface-2: #23201A;
  --line: #322D25; --line-2: #3C362D; --track: #2A251E; --bar: #3C362D;
  --ink: #F6F2E9; --ink-2: #D2CABA; --ink-3: #B0A797; --ink-4: #938B7B;
  --accent: #7DA5FF; --accent-hover: #9CBBFF; --accent-soft: #1E2842; --accent-line: #2D3A5C; --accent-ink: #9CBBFF;
  --ok: #4BC486; --ok-ink: #74D3A0; --ok-soft: #17301F;
  --warn: #E0A040; --warn-ink: #E0A040; --warn-soft: #3A2E12;
  --hot: #FF8A4C; --hot-soft: #3A2417;
  --bad: #FF6B5E; --bad-ink: #FF8E84; --bad-soft: #3A1F1C;
  --scrim: rgba(0, 0, 0, .62); --scrim-desk: rgba(0, 0, 0, .6); --sh-panel: rgba(0, 0, 0, .75);
  --ink-5: #938B7B; --ink-6: #B0A797; --ink-7: #6B6355; --line-3: #8E8575; --line-4: #3C362D; --accent-line-2: #5C79B8; --noche: #1E1B16;
  --page: #14120E; --card: #23201A; --bg-2: #1E1B16; --on-ink: #F6F2E9; --ink-bg: #2A251E; --ink-0: #000000; --ink-00: #0C0A08; --negro: #000000; --track-2: #2A251E; --line-5: #3C362D; --accent-line-3: #3E5A99; --sh-g: rgba(0,0,0,.6); --sh-h: rgba(0,0,0,.6); --sh-i: rgba(0,0,0,.7); --scrim-2: rgba(0,0,0,.7); --sh-card-a: transparent; --sh-card-b: transparent; --sh-fab: rgba(27,91,227,.6); --sh-fab-rail: rgba(27,91,227,.55); /* E10: .55 también en oscuro */ --qr-fondo: #FFFFFF; /* el QR tiene que poder leerse */ --sh-brand-8: rgba(27,91,227,.8); --num-vacio: #938B7B;
  --sh-a: rgba(0,0,0,.4); --sh-b: rgba(0,0,0,.5); --sh-c: rgba(0,0,0,.6); --sh-d: rgba(0,0,0,.75); --sh-e: rgba(0,0,0,.5); --sh-f: rgba(0,0,0,.8);
  --sh-card: 0 1px 2px rgba(0, 0, 0, .4), 0 14px 30px -22px rgba(0, 0, 0, .5);
  --sh-float: 0 1px 2px rgba(0, 0, 0, .4), 0 18px 40px -26px rgba(0, 0, 0, .6);
  --sh-sheet: 0 -10px 34px -18px rgba(0, 0, 0, .75);
  color-scheme: dark;
}

/* ── Base ───────────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }   /* el atributo hidden le gana a cualquier display de las clases */
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--page); color: var(--ink); font: 500 15px var(--f-ui); /* line-height normal, como los artboards */ -webkit-font-smoothing: antialiased; }
a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--accent-hover); }
button { font: inherit; color: inherit; }
img, svg { display: block; }
.num { font-variant-numeric: tabular-nums; }
.mono { font-family: var(--f-mono); }
.eyebrow { font: 500 11px var(--f-mono); letter-spacing: .11em; text-transform: uppercase; color: var(--ink-4); }
.eyebrow-sm { font: 500 10px var(--f-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-4); }
.muted { color: var(--ink-3); }
.note { font: 500 11px var(--f-ui); color: var(--ink-4); }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 6px; }

/* ── Shell ──────────────────────────────────────────────────────────────── */
.app { min-height: 100dvh; display: flex; flex-direction: column; }
.topbar { height: 56px; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; }
.logo { width: 26px; height: 26px; border-radius: 8px; object-fit: cover; }
.avatar { width: 34px; height: 34px; border-radius: 999px; background: var(--accent-soft); border: 1px solid var(--accent-line);
  display: flex; align-items: center; justify-content: center; font: 600 11px var(--f-mono); color: var(--accent); cursor: pointer; }
.page-head { display: none; }
.app-main { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.main { flex: 1; display: flex; flex-direction: column; gap: 12px; padding: 4px 20px 108px; max-width: 560px; width: 100%; margin: 0 auto; }
.col-side { display: flex; flex-direction: column; gap: 12px; }

/* Barra inferior (celular) */
.tabbar { position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; }
.tab { display: flex; flex-direction: column; align-items: center; gap: 3px; color: var(--ink-3); font: 500 10.5px var(--f-ui); }
.tab.on { color: var(--accent); font-weight: 600; }
.tab svg { width: 22px; height: 22px; }
.fab { width: 56px; height: 56px; margin: 0 auto; border: 0; border-radius: 20px; background: var(--brand); color: var(--on-brand);
  display: flex; align-items: center; justify-content: center; box-shadow: var(--sh-cta); cursor: pointer; }
.fab svg { width: 26px; height: 26px; }
.rail { display: none; }

/* ── Tarjetas y piezas ──────────────────────────────────────────────────── */
.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-card); padding: 12px 16px;
  display: flex; flex-direction: column; gap: 8px; box-shadow: var(--sh-card); }
.card-title { font: 600 17px var(--f-num); color: var(--ink); }
.row-between { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.tag { font: 500 10px var(--f-mono); letter-spacing: .05em; color: var(--ink-3); background: var(--surface-2);
  border: 1px solid var(--line); border-radius: 999px; padding: 3px 8px; white-space: nowrap; }
.pill { display: inline-flex; align-items: center; gap: 6px; padding: 5px 11px 5px 8px; border-radius: 999px; font: 600 12px var(--f-ui); }
.pill svg { width: 14px; height: 14px; }
.pill.bien { background: var(--ok-soft); color: var(--ok-ink); }
.pill.atencion { background: var(--warn-soft); color: var(--warn-ink); }
.pill.alto { background: var(--hot-soft); color: var(--hot); }
.pill.pasado { background: var(--bad-soft); color: var(--bad-ink); }
.pill.sin_datos { background: var(--surface-2); color: var(--ink-3); border: 1px solid var(--line); }
.minibar { position: relative; height: 6px; border-radius: 3px; background: var(--track); overflow: hidden; }
.minibar > i { position: absolute; inset: 0 auto 0 0; border-radius: 3px; background: var(--ink-2); }
.dots { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; font: 500 11px var(--f-mono); color: var(--ink-3); }
.dot { display: inline-flex; align-items: center; gap: 5px; }
.dot::before { content: ""; width: 7px; height: 7px; border-radius: 999px; background: var(--ok); }
.dot.no::before { background: var(--warn); }
.dot.off::before { background: var(--line-2); }
.hito { display: inline-flex; align-items: flex-start; gap: 7px; font: 600 12.5px/1.35 var(--f-ui); color: var(--ink-2); }
.hito svg { width: 15px; height: 15px; flex: none; margin-top: 1px; color: var(--accent); }

/* Botones */
.btn { height: 44px; padding: 0 16px; border-radius: var(--r-btn); border: 1.5px solid var(--accent); background: var(--surface);
  color: var(--accent); font: 600 14.5px var(--f-ui); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.btn:hover { border-color: var(--accent-hover); color: var(--accent-hover); }
.btn-cta { height: 56px; width: 100%; border: 0; border-radius: var(--r-cta); background: var(--brand); color: var(--on-brand);
  font: 700 17px var(--f-ui); cursor: pointer; box-shadow: var(--sh-cta); }
.btn-cta:disabled { opacity: .55; cursor: default; box-shadow: none; }
.btn-link { background: none; border: 0; color: var(--accent); font: 600 14.5px var(--f-ui); cursor: pointer; padding: 8px; }
.btn-ghost { height: 64px; border: 1.5px solid var(--line); background: var(--surface); border-radius: 16px; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 5px; cursor: pointer; font: 600 12px var(--f-ui); color: var(--ink); }
.btn-ghost svg { width: 22px; height: 22px; color: var(--accent); }

/* ── Inicio (Guardián) ──────────────────────────────────────────────────── */
.hero { display: flex; flex-direction: column; animation: up .5s ease-out both; }
.hero .lbl { font: 500 15px/1.3 var(--f-ui); color: var(--ink-2); margin-top: 3px; }
.hero .big { font: 700 44px/1.05 var(--f-num); letter-spacing: -.03em; color: var(--ink); font-variant-numeric: tabular-nums; }
.hero .big.neg { color: var(--bad); }
.medidor { display: flex; flex-direction: column; gap: 9px; }
.medidor .leyenda { display: flex; justify-content: space-between; align-items: baseline; font: 600 12.5px var(--f-ui); color: var(--ink-2); }
.medidor .leyenda span:last-child { font-weight: 500; color: var(--ink-3); }
.barra { position: relative; height: 22px; border-radius: 11px; background: var(--track); }
.barra .lleno { position: absolute; inset: 0 auto 0 0; border-radius: 11px; background: var(--brand); transform-origin: left; animation: grow .85s cubic-bezier(.2, .75, .2, 1) both; max-width: 100%; }
.barra .lleno.pasado { background: var(--bad); }
.barra .proy { position: absolute; top: -8px; bottom: -8px; border-left: 2px dashed var(--hot); }
.barra .tope { position: absolute; right: 0; top: -8px; bottom: -8px; width: 2px; border-radius: 1px; background: var(--ink); }
.medidor .pie { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.proy-txt { font: 500 11.5px var(--f-ui); color: var(--ink-3); text-align: right; }
.proy-txt b { color: var(--hot); font-weight: 600; font-variant-numeric: tabular-nums; }
.conclusion { margin: 0; font: 600 15px/1.35 var(--f-ui); color: var(--ink); text-wrap: pretty; }
.meses { position: relative; height: 46px; display: flex; align-items: flex-end; gap: 6px; }
.meses .linea { position: absolute; left: 0; right: 0; border-top: 1px dashed var(--hot); }
.meses i { flex: 1; min-height: 2px; background: var(--bar); border-radius: 3px 3px 0 0; transform-origin: bottom; animation: rise .5s ease-out both; }
.meses i.hoy { background: var(--brand); }
.meses-lbl { display: flex; gap: 6px; font: 500 9.5px var(--f-mono); color: var(--ink-4); }
.meses-lbl span { flex: 1; text-align: center; }
.meses-lbl span.hoy { color: var(--accent); }
.leyenda-tope { display: inline-flex; align-items: center; gap: 5px; font: 500 10px var(--f-mono); color: var(--ink-4); }
.leyenda-tope::before { content: ""; width: 14px; border-top: 1px dashed var(--hot); }
.kv { display: flex; justify-content: space-between; font: 500 13.5px var(--f-ui); color: var(--ink-2); }
.kv b { color: var(--ink); font-variant-numeric: tabular-nums; }

/* ── Hoja Facturar ──────────────────────────────────────────────────────── */
.scrim { position: fixed; inset: 0; z-index: 40; background: var(--scrim); opacity: 0; pointer-events: none; transition: opacity .2s; }
.scrim.on { opacity: 1; pointer-events: auto; }
.x { width: 30px; height: 30px; border-radius: 999px; background: var(--surface-2); border: 1px solid var(--line); display: flex;
  align-items: center; justify-content: center; cursor: pointer; color: var(--ink-3); }
.x svg { width: 14px; height: 14px; }
.chip { display: inline-flex; align-items: center; gap: 6px; background: var(--accent-soft); border: 1px solid var(--accent-line);
  border-radius: 999px; padding: 5px 11px; font: 600 12.5px var(--f-ui); color: var(--accent-ink); }
.editor { display: none; flex-direction: column; gap: 10px; padding: 4px 0 14px; border-bottom: 1px solid var(--line); }
.editor.on { display: flex; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chips button { height: 36px; padding: 0 14px; border-radius: 999px; border: 1px solid var(--line); background: var(--surface); color: var(--ink-2); font: 600 13px var(--f-ui); cursor: pointer; }
.chips button.on { background: var(--accent-soft); border-color: var(--accent-line); color: var(--accent-ink); }
.campo { display: flex; flex-direction: column; gap: 6px; }
.campo label { font: 500 12px var(--f-ui); color: var(--ink-3); }
.input { height: 46px; border-radius: 12px; border: 1px solid var(--line-2); background: var(--surface); color: var(--ink); padding: 0 14px; font: 500 15px var(--f-ui); width: 100%; }
.input.mono { font-family: var(--f-mono); letter-spacing: .02em; }
.input:focus { outline: 0; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.input.err { border-color: var(--bad); }
.ayuda { font: 500 12px var(--f-ui); color: var(--ink-3); }
.ayuda.ok { color: var(--ok-ink); }
.ayuda.err { color: var(--bad-ink); }

.acciones3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; width: 100%; padding-top: 14px; }
.spin { width: 30px; height: 30px; border-radius: 999px; border: 3px solid var(--accent-soft); border-top-color: var(--accent); animation: spin .8s linear infinite; }

.toast { position: fixed; left: 50%; bottom: 96px; z-index: 60; transform: translate(-50%, 20px); opacity: 0; transition: .2s; background: var(--ink);
  color: var(--bg); padding: 10px 16px; border-radius: 12px; font: 600 13px var(--f-ui); pointer-events: none; max-width: 90vw; }
.toast.on { opacity: 1; transform: translate(-50%, 0); }

/* ── Páginas simples (entrar, error, próximamente) ─────────────────────── */
.solo { min-height: 100dvh; display: flex; align-items: center; justify-content: center; padding: 24px 20px; }
.solo .caja { width: 100%; max-width: 380px; display: flex; flex-direction: column; gap: 14px; }
.solo h1 { margin: 6px 0 0; font: 700 30px/1.1 var(--f-num); letter-spacing: -.02em; }
.aviso { padding: 10px 12px; border-radius: 12px; font: 600 13px var(--f-ui); }
.aviso.bad { background: var(--bad-soft); color: var(--bad-ink); }
.vacio { display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center; padding: 60px 10px; color: var(--ink-3); }
.vacio h2 { margin: 0; font: 600 20px var(--f-num); color: var(--ink); }

/* ── Escritorio ─────────────────────────────────────────────────────────── */
@media (min-width: 900px) {
  .app { flex-direction: row; }
  .tabbar { display: none !important; }
  .rail { display: flex; position: sticky; top: 0; height: 100dvh; width: 104px; flex: none; z-index: 30; flex-direction: column; align-items: center;
    gap: 26px; padding: 22px 0; background: var(--surface); border-right: 1px solid var(--line); }
  .page-head { display: flex; }
  .main { max-width: none; padding: 0 44px 44px; margin: 0; display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 24px; align-items: start; }
  .main.una-col { display: flex; max-width: 900px; }
  .col-main { display: flex; flex-direction: column; gap: 14px; }
  .hero .big { font-size: 76px; }
  .meses { height: 230px; gap: 12px; }
  .meses-lbl { gap: 12px; font-size: 10.5px; }
  .solo-cel { display: none !important; }
  .toast { bottom: 32px; }
}
@media (max-width: 899px) {
  .col-main { display: contents; }
  .solo-desk { display: none !important; }
}

/* sombras de los FAB por página, como en cada artboard (E5 tabla: sin sombra; E5 lista: .6 en los dos temas) */
body[data-page="facturas"] .rail-fab { box-shadow: none !important; }
/* el FAB del celular en oscuro: .6 en todos los artboards menos Inicio (.8) */
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) body[data-page="inicio"] { --sh-fab: rgba(27,91,227,.8); } }
:root[data-theme="dark"] body[data-page="inicio"] { --sh-fab: rgba(27,91,227,.8); }

@keyframes up { from { opacity: 0; transform: translateY(6px); } }
/* nombres del diseño (Claude Design) */
@keyframes om-up { from { opacity: 0; transform: translateY(6px); } }
@keyframes om-grow { from { transform: scaleX(0); } }
@keyframes om-rise { from { transform: scaleY(0); } }
@keyframes om-pop { from { transform: scale(.6); opacity: 0; } }
@keyframes grow { from { transform: scaleX(0); } }
@keyframes rise { from { transform: scaleY(0); } }
@keyframes pop { from { transform: scale(.6); opacity: 0; } }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ── 01-pares.css ── */
/* Tokens por PAR claro/oscuro de los artboards (los genera tools/portar2.py; no editar a mano). */
/* --p-0b0d10-f7f9fb #0B0D10 #F7F9FB */
/* --p-0f7b43-0e2a1c #0F7B43 #0E2A1C */
/* --p-0f7b43-3fcb86 #0F7B43 #3FCB86 */
/* --p-1b5be3-5b8cff #1B5BE3 #5B8CFF */
/* --p-2e343c-c7cdd5 #2E343C #C7CDD5 */
/* --p-49515b-9aa3ad #49515B #9AA3AD */
/* --p-626a74-7c8794 #626A74 #7C8794 */
/* --p-8f5300-e3a63f #8F5300 #E3A63F */
/* --p-c13a0b-ff8552 #C13A0B #FF8552 */
/* --p-c9c0b0-b0a797 #C9C0B0 #B0A797 */
/* --p-d7dce3-262b32 #D7DCE3 #262B32 */
/* --p-dde5f5-23304a #DDE5F5 #23304A */
/* --p-e3e6eb-202429 #E3E6EB #202429 */
/* --p-edeff2-1b1f25 #EDEFF2 #1B1F25 */
/* --p-f2f5fb-141c2e #F2F5FB #141C2E */
/* --p-f6f2e9-f6f2e9 #F6F2E9 #F6F2E9 */
/* --p-f6f9ff-1a2333 #F6F9FF #1A2333 */
/* --p-f7f8fa-101216 #F7F8FA #101216 */
/* --p-fffcf5-23201a #FFFCF5 #23201A */
/* --p-ffffff-07080a #FFFFFF #07080A */
/* --p-ffffff-101216 #FFFFFF #101216 */
/* --p-ffffff-3fcb86 #FFFFFF #3FCB86 */
/* --p-r27-91-227-5-r27-91-227-8 RGBA(27,91,227,.5) RGBA(27,91,227,.8) */
/* --p-r27-91-227-55-r27-91-227-8 RGBA(27,91,227,.55) RGBA(27,91,227,.8) */
/* --p-r27-91-227-6-r27-91-227-8 RGBA(27,91,227,.6) RGBA(27,91,227,.8) */
/* --p-r70-55-30-35-r0-0-0-72 RGBA(70,55,30,.35) RGBA(0,0,0,.72) */
/* --p-r70-55-30-4-r0-0-0-75 RGBA(70,55,30,.4) RGBA(0,0,0,.75) */
:root { --p-0b0d10-f7f9fb: #0B0D10; --p-0f7b43-0e2a1c: #0F7B43; --p-0f7b43-3fcb86: #0F7B43; --p-1b5be3-5b8cff: #1B5BE3; --p-2e343c-c7cdd5: #2E343C; --p-49515b-9aa3ad: #49515B; --p-626a74-7c8794: #626A74; --p-8f5300-e3a63f: #8F5300; --p-c13a0b-ff8552: #C13A0B; --p-c9c0b0-b0a797: #C9C0B0; --p-d7dce3-262b32: #D7DCE3; --p-dde5f5-23304a: #DDE5F5; --p-e3e6eb-202429: #E3E6EB; --p-edeff2-1b1f25: #EDEFF2; --p-f2f5fb-141c2e: #F2F5FB; --p-f6f2e9-f6f2e9: #F6F2E9; --p-f6f9ff-1a2333: #F6F9FF; --p-f7f8fa-101216: #F7F8FA; --p-fffcf5-23201a: #FFFCF5; --p-ffffff-07080a: #FFFFFF; --p-ffffff-101216: #FFFFFF; --p-ffffff-3fcb86: #FFFFFF; --p-r27-91-227-5-r27-91-227-8: rgba(27,91,227,.5); --p-r27-91-227-55-r27-91-227-8: rgba(27,91,227,.55); --p-r27-91-227-6-r27-91-227-8: rgba(27,91,227,.6); --p-r70-55-30-35-r0-0-0-72: rgba(70,55,30,.35); --p-r70-55-30-4-r0-0-0-75: rgba(70,55,30,.4); }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) { --p-0b0d10-f7f9fb: #F7F9FB; --p-0f7b43-0e2a1c: #0E2A1C; --p-0f7b43-3fcb86: #3FCB86; --p-1b5be3-5b8cff: #5B8CFF; --p-2e343c-c7cdd5: #C7CDD5; --p-49515b-9aa3ad: #9AA3AD; --p-626a74-7c8794: #7C8794; --p-8f5300-e3a63f: #E3A63F; --p-c13a0b-ff8552: #FF8552; --p-c9c0b0-b0a797: #B0A797; --p-d7dce3-262b32: #262B32; --p-dde5f5-23304a: #23304A; --p-e3e6eb-202429: #202429; --p-edeff2-1b1f25: #1B1F25; --p-f2f5fb-141c2e: #141C2E; --p-f6f2e9-f6f2e9: #F6F2E9; --p-f6f9ff-1a2333: #1A2333; --p-f7f8fa-101216: #101216; --p-fffcf5-23201a: #23201A; --p-ffffff-07080a: #07080A; --p-ffffff-101216: #101216; --p-ffffff-3fcb86: #3FCB86; --p-r27-91-227-5-r27-91-227-8: rgba(27,91,227,.8); --p-r27-91-227-55-r27-91-227-8: rgba(27,91,227,.8); --p-r27-91-227-6-r27-91-227-8: rgba(27,91,227,.8); --p-r70-55-30-35-r0-0-0-72: rgba(0,0,0,.72); --p-r70-55-30-4-r0-0-0-75: rgba(0,0,0,.75); } }
:root[data-theme="dark"] { --p-0b0d10-f7f9fb: #F7F9FB; --p-0f7b43-0e2a1c: #0E2A1C; --p-0f7b43-3fcb86: #3FCB86; --p-1b5be3-5b8cff: #5B8CFF; --p-2e343c-c7cdd5: #C7CDD5; --p-49515b-9aa3ad: #9AA3AD; --p-626a74-7c8794: #7C8794; --p-8f5300-e3a63f: #E3A63F; --p-c13a0b-ff8552: #FF8552; --p-c9c0b0-b0a797: #B0A797; --p-d7dce3-262b32: #262B32; --p-dde5f5-23304a: #23304A; --p-e3e6eb-202429: #202429; --p-edeff2-1b1f25: #1B1F25; --p-f2f5fb-141c2e: #141C2E; --p-f6f2e9-f6f2e9: #F6F2E9; --p-f6f9ff-1a2333: #1A2333; --p-f7f8fa-101216: #101216; --p-fffcf5-23201a: #23201A; --p-ffffff-07080a: #07080A; --p-ffffff-101216: #101216; --p-ffffff-3fcb86: #3FCB86; --p-r27-91-227-5-r27-91-227-8: rgba(27,91,227,.8); --p-r27-91-227-55-r27-91-227-8: rgba(27,91,227,.8); --p-r27-91-227-6-r27-91-227-8: rgba(27,91,227,.8); --p-r70-55-30-35-r0-0-0-72: rgba(0,0,0,.72); --p-r70-55-30-4-r0-0-0-75: rgba(0,0,0,.75); }

/* ── 05-hoja.css ── */
/* ── Hoja Facturar → Una (E2). Celular por defecto; escritorio en el @media de abajo. Medidas de los artboards. ── */
.hj { position: fixed; z-index: 41; left: 0; right: 0; bottom: 0; top: auto; max-height: calc(100dvh - 24px); display: flex; flex-direction: column;
  background: var(--surface); border-radius: 28px 28px 0 0; box-shadow: 0 -10px 34px -18px var(--sh-g);
  transform: translateY(105%); transition: transform .28s cubic-bezier(.2, .8, .2, 1); padding-bottom: env(safe-area-inset-bottom); }
.hj.on { transform: none; }
.hj[data-estado="form"] { top: max(24px, calc(100dvh - 748px)); }
.hj[data-estado="rechazada"], .hj.hj-abierto[data-estado="form"] { top: max(24px, calc(100dvh - 774px)); }
.hj button { font-family: inherit; }

/* formulario */
.hj-form { display: none; flex: 1; min-height: 0; flex-direction: column; }
.hj[data-estado="form"] .hj-form, .hj[data-estado="rechazada"] .hj-form { display: flex; }
.hj-handle { padding: 9px 0 0; display: flex; justify-content: center; flex: none; }
.hj-head { height: 48px; flex: none; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; }
.hj-titulo { font-family: 'Bricolage Grotesque', sans-serif; font-weight: 600; font-size: 19px; color: var(--ink); }
.hj-bajada { display: none; font: 500 13px 'Plus Jakarta Sans', sans-serif; color: var(--ink-3); }
.hj-x { width: 30px; height: 30px; border-radius: 999px; background: var(--bg); border: 1px solid var(--line); display: flex;
  align-items: center; justify-content: center; cursor: pointer; padding: 0; flex: none; }
.hj-x svg { width: 15px; height: 15px; }
.hj-error { display: none; flex: none; margin: 0 20px 14px; align-items: flex-start; gap: 10px; background: var(--bad-soft); border-radius: 16px; padding: 13px 14px; }
.hj[data-estado="rechazada"] .hj-error { display: flex; }
.hj-seg { flex: none; padding: 0 20px 12px; }
.hj[data-estado="rechazada"] .hj-seg { display: none; }
.hj-pista { flex: none; margin: 0 20px 10px; background: var(--accent-soft); color: var(--accent-ink); border-radius: 12px; padding: 10px 12px; font: 600 12.5px/1.4 'Plus Jakarta Sans', sans-serif; }
.hj-cuerpo { flex: 1; display: flex; flex-direction: column; padding: 0 20px; min-height: 0; overflow-y: auto; }

/* monto: el número y el cursor son del diseño; el input real queda encima, transparente */
.hj-monto { position: relative; flex: none; padding: 4px 0 14px; border-bottom: 2px solid var(--accent); display: flex; flex-direction: column; gap: 3px; cursor: text; }
.hj-eti { font: 500 10px 'Geist Mono', monospace; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-4); }
.hj-pesos { display: flex; align-items: baseline; gap: 4px; }
.hj-signo { font-family: 'Bricolage Grotesque', sans-serif; font-weight: 600; font-size: 26px; color: var(--ink-3); }
.hj-num { font-family: 'Bricolage Grotesque', sans-serif; font-weight: 700; font-size: 46px; line-height: 1.05; letter-spacing: -.03em; color: var(--ink); font-variant-numeric: tabular-nums; white-space: nowrap; }
.hj-num.vacio { color: var(--num-vacio); }   /* E3 Alta 7: #C9C0B0 claro · #938B7B oscuro */
.hj-caret { width: 2px; height: 38px; background: var(--brand); border-radius: 1px; margin-left: 2px; align-self: center; animation: hj-blink 1.1s steps(1) infinite; }
.hj-monto-in { position: absolute; inset: 0; width: 100%; opacity: 0; border: 0; padding: 0; background: none; font-size: 16px; cursor: text; }
@keyframes hj-blink { 50% { opacity: 0; } }

/* filas (celular) */
.hj-fila { flex: none; display: flex; align-items: center; justify-content: space-between; gap: 10px; height: 54px; width: 100%; padding: 0;
  background: none; border: 0; border-bottom: 1px solid var(--line); cursor: pointer; text-align: left; }
.hj-campo:last-child .hj-fila { border-bottom: 0; }
.hj-k { font: 500 14px 'Plus Jakarta Sans', sans-serif; color: var(--ink-2); flex: none; }
.hj-v { display: flex; align-items: center; gap: 7px; min-width: 0; }
.hj-val { font: 600 13.5px 'Plus Jakarta Sans', sans-serif; color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hj-chip-sel { display: inline-flex; align-items: center; gap: 6px; background: var(--accent-soft); border: 1px solid var(--accent-line); border-radius: 999px;
  padding: 5px 11px; font: 600 12.5px 'Plus Jakarta Sans', sans-serif; color: var(--accent-ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 210px; }
.hj-eti-campo { display: none; }
.hj-editor { display: none; flex-direction: column; gap: 7px; }

/* un campo abierto en el celular (y el receptor en "rechazada"): layout del artboard rechazada */
.hj-campo.abierto { padding: 14px 0 12px; display: flex; flex-direction: column; gap: 7px; }
.hj-campo.abierto .hj-fila { display: none; }
.hj-campo.abierto .hj-eti-campo, .hj-campo.abierto .hj-editor { display: flex; }
.hj.hj-abierto .hj-monto, .hj[data-estado="rechazada"] .hj-monto { padding: 0 0 14px; border-bottom: 1px solid var(--line); }
.hj.hj-abierto .hj-signo, .hj[data-estado="rechazada"] .hj-signo { font-size: 24px; }
.hj.hj-abierto .hj-num, .hj[data-estado="rechazada"] .hj-num { font-size: 40px; }
.hj.hj-abierto .hj-caret, .hj[data-estado="rechazada"] .hj-caret { display: none; }
.hj.hj-abierto .hj-fila, .hj[data-estado="rechazada"] .hj-fila { height: 52px; border-bottom: 0; border-top: 1px solid var(--line); }
.hj.hj-abierto .hj-monto + .hj-campo .hj-fila, .hj[data-estado="rechazada"] .hj-monto + .hj-campo .hj-fila { border-top: 0; }
.hj.hj-abierto .hj-campo.abierto + .hj-campo .hj-fila { border-top: 1px solid var(--line); }

/* chips (A quién) — medidas del panel de escritorio, iguales en el celular */
.hj-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.hj-chips button { display: inline-flex; align-items: center; gap: 7px; background: var(--surface); border: 1px solid var(--line); border-radius: 999px;
  padding: 8px 14px; font: 500 13.5px 'Plus Jakarta Sans', sans-serif; color: var(--ink-2); cursor: pointer; line-height: normal; }
.hj-chips button.on { background: var(--accent-soft); border: 1.5px solid var(--accent); padding: 7.5px 13.5px; font-weight: 600; color: var(--accent-ink); }
.hj-chips .hj-chip-otro { gap: 6px; border: 1px dashed var(--line-2); color: var(--ink-3); }
.hj-chips .hj-chip-otro.on { border-style: solid; }
.hj-doc { display: flex; flex-direction: column; gap: 7px; }
.hj-doc[hidden] { display: none; }

/* cajas (DNI/CUIT, Qué, Fecha) */
.hj-caja { display: flex; align-items: center; justify-content: space-between; gap: 12px; height: 54px; border: 1px solid var(--line); border-radius: 16px;
  padding: 0 15px; background: var(--surface); }
.hj-caja:focus-within { border-color: var(--accent); }
.hj-caja.err { border: 2px solid var(--bad); padding: 0 14px; }
.hj-caja-in { flex: 1; min-width: 0; height: 100%; border: 0; outline: 0; background: none; padding: 0; font: 500 16px 'Plus Jakarta Sans', sans-serif; color: var(--ink);
  -webkit-appearance: none; appearance: none; }
.hj-caja-in::placeholder { color: var(--ink-5); }
.hj-caja-in.hj-mono { font: 500 16px 'Geist Mono', monospace; letter-spacing: .02em; }
select.hj-caja-in { cursor: pointer; }
.hj-caja-ico { display: none; }
.hj-caja.err .hj-caja-ico { display: flex; }
.hj-ayuda { font: 500 12px 'Plus Jakarta Sans', sans-serif; color: var(--ink-3); }
.hj-ayuda:empty { display: none; }
.hj-ayuda.ok { color: var(--ok-ink); }
.hj-ayuda.err { font: 600 12.5px 'Plus Jakarta Sans', sans-serif; color: var(--bad-ink); }
.hj-concepto { display: inline-flex; align-items: center; gap: 8px; border: 0; background: none; padding: 0; cursor: pointer; flex: none;
  font: 500 12px 'Geist Mono', monospace; color: var(--ink-3); }

/* Fecha: selector propio (10-facturar.js). Cerrado, #f-fecha (botón) se ve igual que la caja de siempre; abierto, #f-fecha-pop es un
   panel con la estética de .bf-pop del buscador, ubicado contra la hoja (.hj es su bloque contenedor: no lo corta el scroll de .hj-cuerpo).
   .hj-fvelo toma el toque de afuera para cerrar sin que ese toque llegue a otro botón (Emitir, la X). */
.hj .hj-fsel { font-family: 'Plus Jakarta Sans', sans-serif; display: flex; align-items: center; text-align: left; cursor: pointer;
  -webkit-tap-highlight-color: transparent; }
.hj-fsel-txt { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hj-caja.abierta { border-color: var(--accent); }
.hj-fvelo { position: fixed; inset: 0; z-index: 4; -webkit-tap-highlight-color: transparent; }
.hj-fpop { position: absolute; z-index: 5; box-sizing: border-box; overflow-y: auto; overscroll-behavior: contain; background: var(--surface);
  border: 1px solid var(--line); border-radius: 18px; box-shadow: 0 1px 2px var(--sh-a), 0 20px 44px -22px var(--sh-c); padding: 8px;
  display: flex; flex-direction: column; animation: hj-fpop .14s ease-out; }
.hj-fpop.arriba { animation-name: hj-fpop-arriba; }
@keyframes hj-fpop { from { opacity: 0; transform: translateY(-4px); } }
@keyframes hj-fpop-arriba { from { opacity: 0; transform: translateY(4px); } }
.hj-fpop [role="listbox"] { display: flex; flex-direction: column; gap: 2px; outline: 0; }
.hj-fop { flex: none; min-height: 44px; padding: 0 12px; border-radius: 10px; display: flex; align-items: center; justify-content: space-between; gap: 10px;
  font: 600 14px 'Plus Jakarta Sans', sans-serif; color: var(--ink); cursor: pointer; user-select: none; -webkit-tap-highlight-color: transparent; }
.hj-fop.activa { background: var(--bg); }
.hj-fop[aria-selected="true"] { background: var(--accent-soft); color: var(--accent-hover); }
.hj-fop svg { flex: none; stroke: currentColor; }
.hj-fpop-motivo { margin: 6px 4px 0; padding: 10px 8px 4px; border-top: 1px solid var(--line); font: 500 12px/1.45 'Plus Jakarta Sans', sans-serif;
  color: var(--ink-4); cursor: default; text-wrap: pretty; }

/* pie + teclado */
.hj-pie { flex: none; padding: 10px 20px 12px; display: flex; flex-direction: column; gap: 7px; }
.hj-cta { height: 56px; border: 0; border-radius: 18px; background: var(--brand); color: #FFFFFF; font: 700 17px 'Plus Jakarta Sans', sans-serif; cursor: pointer;
  box-shadow: 0 10px 22px -12px var(--sh-brand); }
.hj-cta:disabled { opacity: .45; cursor: default; box-shadow: none; }
.hj-nota { text-align: center; font: 500 11px 'Plus Jakarta Sans', sans-serif; color: var(--ink-4); }
.hj[data-estado="rechazada"] .hj-pie, .hj.hj-abierto .hj-pie { padding: 12px 20px 26px; gap: 9px; }
.hj[data-estado="rechazada"] .hj-cta { box-shadow: none; }
.hj[data-estado="rechazada"] .hj-nota { font-size: 11.5px; }
.hj-teclado { height: 214px; flex: none; background: var(--bg); border-top: 1px solid var(--line); display: grid; grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(4, 1fr); gap: 1px; }
.hj[data-estado="rechazada"] .hj-teclado, .hj.hj-abierto .hj-teclado { display: none; }
.hj-teclado button { border: 0; background: none; display: flex; align-items: center; justify-content: center; font: 500 23px 'Geist Mono', monospace;
  color: var(--ink); cursor: pointer; padding: 0; -webkit-tap-highlight-color: transparent; }
.hj-teclado button:active { background: var(--line); }

/* estados: emitiendo · emitida · lenta (hoja de alto automático en el celular) */
.hj-est { display: none; flex-direction: column; padding: 9px 20px 24px; }
.hj[data-estado="emitiendo"] .hj-est[data-est="emitiendo"] { display: flex; padding-bottom: 28px; }
.hj[data-estado="emitida"] .hj-est[data-est="emitida"], .hj[data-estado="lenta"] .hj-est[data-est="lenta"],
.hj[data-estado="bloqueada"] .hj-est[data-est="bloqueada"] { display: flex; }
.hj-est-manija { display: flex; justify-content: center; }
.hj-ok-cerrar { display: none; }
.hj-ok-cab { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 26px 0 0; text-align: center; }
.hj-ok-ico { width: 62px; height: 62px; border-radius: 999px; background: var(--ok-soft); display: flex; align-items: center; justify-content: center;
  animation: om-pop .5s cubic-bezier(.2, .8, .2, 1) both; }
.hj-ok-tit { font-family: 'Bricolage Grotesque', sans-serif; font-weight: 600; font-size: 21px; color: var(--ink); }
.hj-ok-nro { font: 500 12.5px 'Geist Mono', monospace; letter-spacing: .04em; color: var(--ink-3); }
.hj-ok-imp { font-family: 'Bricolage Grotesque', sans-serif; font-weight: 700; font-size: 44px; letter-spacing: -.03em; color: var(--ink); font-variant-numeric: tabular-nums; }
.hj-ok-quien { font: 500 13px 'Plus Jakarta Sans', sans-serif; color: var(--ink-3); }
.hj-ok-btns { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; padding: 24px 0 0; }
.hj-ok-btn { height: 64px; border: 1.5px solid var(--line); background: var(--card); border-radius: 16px; display: flex; flex-direction: column; align-items: center;
  justify-content: center; gap: 5px; cursor: pointer; font: 600 12px 'Plus Jakarta Sans', sans-serif; color: var(--ink); }
.hj-ok-pie { display: flex; flex-direction: column; align-items: center; }
.hj-otra { border: 0; background: none; padding: 18px 0 0; font: 600 14.5px 'Plus Jakarta Sans', sans-serif; color: var(--accent); cursor: pointer; }
.hj-ok-queda { display: none; }
.hj[data-estado="rechazada"] .hj-chips { display: none; }

/* ── Escritorio: panel lateral de 520 px (E2 completo/emitida escritorio) ── */
@media (min-width: 900px) {
  .hj-scrim { background: var(--scrim-desk); }
  .hj, .hj[data-estado] { top: 0; right: 0; bottom: 0; left: auto; width: 520px; max-height: none; border-radius: 26px 0 0 26px;
    box-shadow: -24px 0 60px -30px var(--sh-panel); padding: 30px 36px 32px; transform: translateX(105%); }
  .hj.on { transform: none; }
  .hj-handle, .hj-teclado, .hj-est-manija { display: none !important; }
  .hj-head { height: auto; padding: 0; align-items: flex-start; gap: 12px; }
  .hj-titulo { font-size: 26px; letter-spacing: -.01em; }
  .hj-bajada { display: block; }
  .hj-x { width: 36px; height: 36px; }
  .hj-x svg { width: 16px; height: 16px; }
  .hj-error { margin: 20px 0 0; }
  .hj-seg { padding: 22px 0 0; width: 280px; }
  .hj-pista { margin: 16px 0 0; }
  .hj-cuerpo { padding: 0; }
  .hj-monto, .hj[data-estado="rechazada"] .hj-monto { padding: 26px 0 18px; gap: 4px; border-bottom: 2px solid var(--accent); }
  .hj-eti { font-size: 10.5px; }
  .hj-pesos { gap: 6px; }
  .hj-signo, .hj[data-estado="rechazada"] .hj-signo { font-size: 30px; }
  .hj-num, .hj[data-estado="rechazada"] .hj-num { font-size: 58px; line-height: 1.02; letter-spacing: -.035em; }
  .hj-caret, .hj[data-estado="rechazada"] .hj-caret { display: block; height: 46px; margin-left: 0; }
  /* en escritorio los tres campos están siempre abiertos, como en el artboard */
  .hj-campo, .hj-campo.abierto { display: flex; flex-direction: column; gap: 9px; padding: 18px 0 0; }
  .hj-monto + .hj-campo { padding-top: 22px; }
  .hj-fila { display: none !important; }
  .hj-eti-campo, .hj-editor { display: flex; }
  .hj-editor { gap: 9px; }
  .hj-caja { height: 52px; padding: 0 16px; }
  .hj-caja.err { padding: 0 15px; }
  .hj-caja-in { font-size: 15px; }
  .hj-fop { min-height: 40px; }
  .hj-pie, .hj[data-estado="rechazada"] .hj-pie { padding: 18px 0 0; gap: 9px; }
  .hj-cta { height: 58px; font-size: 18px; box-shadow: 0 12px 26px -14px var(--sh-brand); }
  .hj-nota, .hj[data-estado="rechazada"] .hj-nota { font-size: 12px; }
  .hj-est { padding: 0; flex: 1; min-height: 0; }
  .hj[data-estado="emitiendo"] .hj-est[data-est="emitiendo"] { padding: 0; justify-content: center; }
  .hj[data-estado="lenta"] .hj-est[data-est="lenta"], .hj[data-estado="bloqueada"] .hj-est[data-est="bloqueada"] { justify-content: center; }
  .hj-ok-cerrar { display: flex; flex: none; align-items: center; justify-content: flex-end; }
  .hj-ok-cab { gap: 12px; padding: 44px 0 0; }
  .hj-ok-ico { width: 76px; height: 76px; }
  .hj-ok-ico svg { width: 38px; height: 38px; }
  .hj-ok-tit { font-size: 26px; }
  .hj-ok-nro { font-size: 13px; }
  .hj-ok-imp { font-size: 62px; line-height: 1.02; letter-spacing: -.035em; }
  .hj-ok-quien { font-size: 14px; }
  .hj-ok-btns { gap: 10px; padding: 34px 0 0; }
  .hj-ok-btn { height: 72px; border-radius: 18px; gap: 6px; font-size: 13px; }
  .hj-ok-btn svg { width: 22px; height: 22px; }
  .hj-ok-pie { flex: 1; justify-content: flex-end; gap: 12px; }
  .hj-otra { width: 100%; height: 58px; border: 1.5px solid var(--accent); border-radius: 18px; background: var(--surface); color: var(--accent);
    font: 700 17px 'Plus Jakarta Sans', sans-serif; padding: 0; }
  .hj-ok-queda { display: block; font: 500 12px 'Plus Jakarta Sans', sans-serif; color: var(--ink-4); }
  .hj-ok-queda:empty { display: none; }
}

/* ── 08-busqueda.css ── */
/* Buscador en vivo + fechas (Facturas y Cobros): lib/Busqueda.php arma el marcado, 08-busqueda.js lo maneja.
   El campo es el de Facturas E5/E10 con sus estilos inline (no se mueve un píxel); acá solo lo que el inline no puede.
   Colores SOLO con tokens (00-base / 01-pares): así el oscuro sale solo. */

/* ── Campo ─────────────────────────────────────────────────────────────── */
form[data-bf-form]:focus-within { border-color: var(--accent) !important; box-shadow: 0 0 0 1px var(--accent); }   /* el borde de 2 px de E9 "Con foco" sin correr nada */
.bf-borrar { width: 28px; height: 28px; flex: none; margin-right: -6px; border: 0; border-radius: 999px; background: none; padding: 0;
  display: flex; align-items: center; justify-content: center; color: var(--ink-4); cursor: pointer; }
.bf-borrar svg { stroke: var(--ink-4); }
.bf-borrar:hover { background: var(--bg); }
/* iPhone: con menos de 16 px enfoca con zoom. El placeholder queda del tamaño del diseño. */
@supports (-webkit-touch-callout: none) {
  input[data-bf-q] { font-size: 16px !important; }
  input[data-bf-q]::placeholder { font-size: 14px; }
  .bf-campo-desk input[data-bf-q]::placeholder { font-size: 13.5px; }
}

/* ── Fechas en escritorio: botón + popover ──────────────────────────────── */
.bf-fechas { position: relative; flex: none; }
.bf-fechas-btn { height: 42px; border: 1px solid var(--line); border-radius: 14px; background: var(--card); display: flex; align-items: center; gap: 8px;
  padding: 0 14px; font: 600 13px var(--f-ui); color: var(--ink); cursor: pointer; list-style: none; white-space: nowrap; user-select: none; }
.bf-fechas-btn::-webkit-details-marker { display: none; }
.bf-fechas-btn::marker { content: ''; }
.bf-fechas-btn > svg { stroke: var(--ink); flex: none; }
.bf-fechas-btn .bf-chev { stroke: var(--ink-4); transition: transform .15s; }
.bf-fechas[open] .bf-chev { transform: rotate(180deg); }
.bf-rotulo { max-width: 170px; overflow: hidden; text-overflow: ellipsis; }
.bf-fechas-btn.bf-on { background: var(--accent-soft); border-color: var(--accent-line); color: var(--accent-hover); }
.bf-fechas-btn.bf-on > svg { stroke: var(--accent-hover); }
.bf-fechas:not([open]) .bf-pop { display: none; }   /* cerrado no existe (Chrome deja medible el contenido de un details cerrado) */
.bf-pop { position: absolute; right: 0; top: calc(100% + 8px); z-index: 25; width: 340px; background: var(--surface); border: 1px solid var(--line);
  border-radius: 18px; box-shadow: 0 1px 2px var(--sh-a), 0 18px 40px -26px var(--sh-c); padding: 8px; display: flex; flex-direction: column; gap: 2px; }
.bf-pop .bf-atajo { height: 40px; width: 100%; padding: 0 12px; border-radius: 10px; border: 0; background: none; display: flex; align-items: center;
  justify-content: space-between; gap: 10px; font: 600 13.5px var(--f-ui); color: var(--ink); cursor: pointer; text-align: left; }
.bf-pista { font: 500 11.5px var(--f-mono); color: var(--ink-4); font-variant-numeric: tabular-nums; white-space: nowrap; }
.bf-pop .bf-atajo:hover { background: var(--bg); }
.bf-pop .bf-atajo[aria-pressed="true"] { background: var(--accent-soft); color: var(--accent-hover); }
.bf-pop .bf-atajo[aria-pressed="true"] .bf-pista { color: var(--accent-hover); }
.bf-sep { border: 0; height: 1px; background: var(--line); margin: 6px 4px; }
.bf-ayuda { margin: 2px 6px 4px; }

/* Cajas DESDE / HASTA (lenguaje de E4 Varias, E5 Automático y E10 simulación). El calendario nativo va encima, transparente. */
.bf-cajas { display: flex; gap: 10px; padding: 6px 4px 4px; }
.bf-panel .bf-cajas { padding: 0; }
.bf-caja { position: relative; flex: 1; min-width: 0; height: 58px; border-radius: 16px; background: var(--bg); border: 1px solid var(--line);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; cursor: pointer; }
.bf-valor { font: 700 16px var(--f-ui); color: var(--ink); font-variant-numeric: tabular-nums; }
.bf-valor.bf-vacio { color: var(--ink-4); }
.bf-caja:focus-within { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); background: var(--card); }
.bf-caja input[type="date"] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; font-size: 16px; margin: 0; padding: 0; border: 0;
  -webkit-appearance: none; appearance: none; cursor: pointer; background: none; color: transparent; }
.bf-caja input[type="date"]::-webkit-calendar-picker-indicator { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }

/* ── Fechas en el celular: ícono en la cabecera + panel en la página ────── */
.bf-cal { width: 30px; height: 34px; border: 0; background: none; padding: 0; display: flex; align-items: center; justify-content: center;
  position: relative; cursor: pointer; }
.bf-cal svg { stroke: var(--ink-2); }
.bf-cal.bf-on svg { stroke: var(--accent); }
.bf-punto { position: absolute; top: 5px; right: 3px; width: 7px; height: 7px; border-radius: 999px; background: var(--accent); }
.bf-panel { background: var(--card); border: 1px solid var(--line); border-radius: 20px; padding: 14px 15px; display: flex; flex-direction: column; gap: 12px;
  box-shadow: 0 1px 2px var(--sh-a), 0 14px 30px -22px var(--sh-b); }
.bf-panel-cab { display: flex; align-items: center; justify-content: space-between; }
.bf-cerrar { width: 26px; height: 26px; border-radius: 999px; background: var(--bg); border: 1px solid var(--line); padding: 0; display: flex;
  align-items: center; justify-content: center; cursor: pointer; }
.bf-cerrar svg { stroke: var(--ink-3); }
.bf-atajos { display: flex; flex-wrap: wrap; gap: 7px; }
.bf-atajos .bf-atajo { padding: 7px 13px; border-radius: 999px; font: 500 12.5px var(--f-ui); color: var(--ink-2); background: var(--bg);
  border: 1px solid var(--line); cursor: pointer; }
/* activo = chip de E5 (fondo ink, texto page: el chip activo del artboard E9 oscuro no se ve) */
.bf-atajos .bf-atajo[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--page); font-weight: 600; }

/* ── Resultados ────────────────────────────────────────────────────────── */
.bf-cargando, .bf-cargando[style*="contents"] > * { opacity: .5; transition: opacity .12s .15s; }   /* < 150 ms no parpadea */
.bf-link { border: 0; background: none; padding: 0; font: 600 12px var(--f-ui); color: var(--accent); cursor: pointer; }
.bf-link:hover { color: var(--accent-hover); }
.bf-salidas { display: inline-flex; gap: 16px; }
.bf-vacio-cel { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 40px 0; text-align: center; }
.bf-vacio-txt { font: 500 14px/1.5 var(--f-ui); color: var(--ink-3); }
.bf-vacio-cel .bf-link, .bf-vacio-desk .bf-link { font-size: 13px; }
.bf-vacio-desk { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 16px; }
.bf-tope { margin: 4px 0 6px; text-align: center; }
.bf-tope .bf-link { margin-left: 4px; }
.bf-error { font: 500 13px var(--f-ui); color: var(--bad-ink); display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 12px; }
.bf-error .bf-link, .bf-error a { font-size: 13px; }

/* Tarjeta del período (celular): lenguaje de la tarjeta del mes de Cobros E5 */
.bf-resumen { background: var(--card); border: 1px solid var(--line); border-radius: 20px; padding: 14px 15px; display: flex; flex-direction: column; gap: 10px;
  box-shadow: 0 1px 2px var(--sh-a), 0 14px 30px -22px var(--sh-b); flex: none; }
.bf-res-cab { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 16px; }
.bf-res-cols { display: flex; gap: 22px; }
.bf-res-col { display: flex; flex-direction: column; gap: 3px; }
.bf-res-k { font: 500 11.5px var(--f-ui); color: var(--ink-3); }
.bf-res-v { font: 700 15px var(--f-ui); color: var(--ink); font-variant-numeric: tabular-nums; }
.bf-resumen .ayuda { margin: 0; }

/* Total del período (escritorio): al final de la fila de chips */
.bf-chips { flex-wrap: wrap; row-gap: 10px !important; }
.bf-total { margin-left: auto; display: flex; align-items: baseline; gap: 10px; align-self: center; white-space: nowrap; }
.bf-total-txt { font: 500 13px var(--f-ui); color: var(--ink-3); }
.bf-total-v { font: 700 15px var(--f-ui); color: var(--ink); font-variant-numeric: tabular-nums; }

/* Menú ⋮ del celular: el período que exporta, debajo de "Exportar libro de ventas (CSV)" */
.bf-exp-periodo { display: block; margin-top: 2px; }

/* ── Escritorio angosto: que la cabecera entre sin scroll horizontal ────── */
@media (min-width: 900px) and (max-width: 1099px) {
  .bf-rotulo, .bf-chev, .bf-accion-txt { display: none !important; }
  .bf-fechas-btn, .bf-accion { width: 42px; padding: 0 !important; justify-content: center; }
  .bf-campo-desk { width: auto !important; flex: 0 1 200px; min-width: 140px; }
}
/* Facturas 1100–1279: Fechas + buscador de 320 + avatar no entran con "Exportar libro de ventas" escrito: queda el ícono
   (title y aria-label lo nombran). Así la cabecera no parte el eyebrow en dos líneas. */
@media (min-width: 1100px) and (max-width: 1279px) {
  body[data-page="facturas"] .bf-accion-txt { display: none !important; }
  body[data-page="facturas"] .bf-accion { width: 42px; padding: 0 !important; justify-content: center; }
}
/* Cobros: la cabecera se ajusta en 70-cobros.css (su eyebrow es largo). */

/* ── 09-google.css ── */
/* Entrar con Google (Entrar y el primer paso del alta; app/views/google_boton.php). Solo aparece si Google está prendido.
   Pautas de marca de Google para botones propios: texto "Continuar con Google" y el logo "G" oficial, sin alterar, SIEMPRE sobre
   blanco. Por eso el logo va en su círculo blanco (.ggl-logo): en claro se funde con el botón; en oscuro es la marca sobre la
   tarjeta oscura de GARCA. El resto del botón habla el idioma de GARCA (tarjeta, borde cálido, sombra de tarjeta, 56 px, radio 18,
   600 16 px) para que no parezca un pegote de otro sitio; toma los tokens, así que el tema oscuro sale solo. */
.ggl-btn { position: relative; width: 100%; height: 56px; box-sizing: border-box; flex: none; display: flex; align-items: center;
  justify-content: center; gap: 12px; padding: 0 20px; border: 1px solid var(--line-2); border-radius: 18px; background: var(--card);
  color: var(--ink); font: 600 16px var(--f-ui); letter-spacing: -.005em; text-decoration: none; cursor: pointer;
  box-shadow: 0 1px 2px var(--sh-card-a), 0 10px 22px -16px var(--sh-card-b);
  transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .1s ease; -webkit-tap-highlight-color: transparent; }
.ggl-btn:hover { background: var(--bg-2); border-color: var(--line-5); box-shadow: 0 1px 2px var(--sh-card-a), 0 14px 26px -16px var(--sh-card-b); }
.ggl-btn:active { transform: scale(.99); }
.ggl-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.ggl-logo { width: 30px; height: 30px; flex: none; display: grid; place-items: center; border-radius: 50%; background: #FFFFFF; margin-left: -6px; }
.ggl-logo .ggl-g { width: 18px; height: 18px; display: block; }
.ggl-sep { display: flex; align-items: center; gap: 14px; margin: 2px 0; font: 500 13px var(--f-ui); color: var(--ink-4); }
.ggl-sep::before, .ggl-sep::after { content: ""; flex: 1; height: 1px; background: var(--line); }

/* ── 10-facturas.css ── */
/* Facturas: lista EXACTA al diseño (estilos inline en la vista); acá solo lo que el inline no puede: hover, menú, placeholder. */
.fx-q::placeholder { color: var(--ink-4); }
.fx-tr:hover { background: var(--bg); }
.fx-menu { position: relative; }
.fx-menu summary::-webkit-details-marker { display: none; }
.fx-menu-pop { position: absolute; right: 0; top: 30px; z-index: 20; min-width: 230px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
  box-shadow: 0 1px 2px var(--sh-a), 0 18px 40px -26px var(--sh-c); padding: 6px; }
.fx-menu-pop a { display: block; padding: 10px 12px; border-radius: 10px; font: 600 13.5px var(--f-ui); color: var(--ink); }
.fx-menu-pop a:hover { background: var(--bg); }
/* Detalle */
.fx-det-head { display: flex; align-items: center; gap: 10px; }
.fx-det-head .x { width: 32px; height: 32px; flex: none; }
.fx-det-head .x svg { width: 16px; height: 16px; }
.fx-acciones { padding: 0 15px; gap: 0; }
.fx-acc { display: flex; align-items: center; gap: 10px; min-height: 52px; width: 100%; border: 0; background: none; padding: 0; cursor: pointer;
  font: 600 14px var(--f-ui); color: var(--ink); text-align: left; }
.fx-acciones .fx-acc + .fx-acc { border-top: 1px solid var(--line); }
.fx-acc > span { flex: 1; }
.fx-acc svg { width: 18px; height: 18px; color: var(--ink-4); flex: none; }
.fx-acc.bad, .fx-acc.bad svg:first-child { color: var(--bad-ink); }
a.fx-acc.card { padding: 0 15px; }

/* Tarjeta de comprobante (detalle y vista pública) */
.cp { padding: 18px; gap: 11px; }
.cp-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.cp-emisor { display: flex; flex-direction: column; gap: 2px; font: 500 10.5px var(--f-ui); color: var(--ink-4); }
.cp-emisor b { font: 700 13px var(--f-ui); color: var(--ink); }
.cp-emisor .cp-nombre { font: 700 19px var(--f-num); letter-spacing: -.01em; }
.cp-emisor .mono { font-size: 10.5px; color: var(--ink-3); }
.cp-letra { width: 44px; height: 52px; border: 1.5px solid var(--ink); border-radius: 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; flex: none; }
.cp-letra b { font: 700 26px/1 var(--f-num); }
.cp-letra small { font: 500 7px var(--f-mono); color: var(--ink-3); }
.cp-linea { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; border-top: 1px solid var(--line); padding-top: 10px; font-size: 11px; color: var(--ink-3); }
.cp-bloque { display: flex; flex-direction: column; gap: 3px; }
.cp-bloque b { font: 600 13.5px var(--f-ui); color: var(--ink); }
.cp-total { align-items: flex-end; font-size: 12.5px; }
.cp-total > span:first-child { display: flex; flex-direction: column; gap: 2px; color: var(--ink-2); }
.cp-total b { font: 700 26px var(--f-num); letter-spacing: -.02em; color: var(--ink); }
.cp-tot { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; }
.cp-tot b { font-size: 34px; line-height: 1.05; }
.cp-qr { display: flex; align-items: center; gap: 12px; border-top: 1px solid var(--line); padding-top: 10px; }
.cp-qr > .mono { display: flex; flex-direction: column; gap: 2px; font-size: 10.5px; color: var(--ink-3); }
.cp-qr-img { width: 64px; height: 64px; flex: none; background: #fff; border-radius: 6px; padding: 3px; }
.cp-qr-img.grande { width: 84px; height: 84px; }
.cp-qr-img svg { width: 100%; height: 100%; }
.fx-nc { gap: 10px; }

/* Vista pública */
.pub { max-width: 440px; margin: 0 auto; min-height: 100dvh; display: flex; flex-direction: column; gap: 12px; padding: 10px 18px 26px; }
.pub-top { height: 42px; display: flex; align-items: center; gap: 9px; }
.pub-top .logo { width: 22px; height: 22px; border-radius: 7px; }
.pub-top .mono { flex: 1; font-size: 11.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pub-card { border-radius: 24px; padding: 20px 18px; gap: 13px; }
.pub-ok { display: flex; align-items: center; gap: 10px; background: var(--ok-soft); color: var(--ok-ink); border-radius: 16px; padding: 12px 14px; font: 600 12.5px var(--f-ui); }
.pub-ok svg { width: 18px; height: 18px; flex: none; }
.pub-acc { display: flex; flex-direction: column; gap: 10px; margin-top: auto; }
.pub-btn { display: flex; align-items: center; justify-content: center; gap: 9px; color: var(--on-brand); }
.pub-btn:hover { color: var(--on-brand); }
.pub-btn svg, .pub-btn2 svg { width: 20px; height: 20px; }
.pub-btn2 { height: 52px; border-radius: 18px; border: 1.5px solid var(--line); color: var(--ink); font-size: 15.5px; }

@media (min-width: 900px) {
  .fx .fx-buscar { max-width: 520px; }
  .fx-th { display: grid; grid-template-columns: 34px minmax(0, 1.6fr) 110px 170px 120px 110px 120px; gap: 14px; padding: 0 15px 4px;
    font: 600 10.5px var(--f-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-4); }
  .fx-th .r { text-align: right; }
  .fx-tabla { gap: 0; background: var(--surface); border: 1px solid var(--line); border-radius: var(--r-card); padding: 12px 0 4px; box-shadow: var(--sh-card); }
  .fx-fila { display: grid; grid-template-columns: 34px minmax(0, 1.6fr) 110px 170px 120px 110px 120px; gap: 14px; border: 0; border-top: 1px solid var(--line);
    border-radius: 0; padding: 10px 15px; background: none; font-size: 13px; }
  .fx-fila:hover { background: var(--surface-2); }
  .fx-fila .mono { font-size: 12px; color: var(--ink-2); }
  .fx-imp b { font-size: 14px; }
}
.fx-qr svg { width: 100%; height: 100%; display: block; }
/* Detalle de factura en escritorio: con comprobante emitido manda el bloque E10 "Factura corta" (.fx-e10). Lo de abajo es solo
   para las que todavía no tienen CAE (en fila o rechazadas): la tarjeta del celular a la izquierda y las acciones a la derecha. */
@media (min-width: 900px) {
  .fx-det > .solo-cel { display: none !important; }
  .fx-det-cuerpo:not(.solo-cel) { display: grid !important; grid-template-columns: minmax(0, 1fr) 360px; column-gap: 36px; row-gap: 14px; align-items: start;
    padding: 32px 44px 36px !important; }
  .fx-det-cuerpo:not(.solo-cel) > :first-child { grid-column: 1; grid-row: 1 / span 8; max-width: 660px; width: 100%; box-sizing: border-box; }
  .fx-det-cuerpo:not(.solo-cel) > :not(:first-child) { grid-column: 2; }
  .fx-e10 { min-height: calc(100dvh - 88px); box-sizing: border-box; }
}
/* Escritorio angosto (900–1279): el artboard es de 1440; sin la columna "Origen" y más angostas, para que la tabla entre */
@media (min-width: 900px) and (max-width: 1279px) {
  .fx-cab, .fx-tr { grid-template-columns: 76px minmax(0, 1fr) 120px 150px 120px !important; gap: 14px !important; }
  .fx-cab > :nth-child(5), .fx-tr > :nth-child(5) { display: none !important; }
}

/* ── 15-inicio.css ── */
/* Inicio (opción 1b con la paleta de la app). El medidor anima el arco igual que el diseño (om-dash) y la píldora del
   semáforo va llena en claro y suave en oscuro, como en 1b, con los colores de cada estado. */
@keyframes om-dash { from { stroke-dashoffset: var(--len); } to { stroke-dashoffset: 0; } }
.in-sem { background: var(--in-sem-bg); color: var(--in-sem-fg); }
.in-sem[data-sem="bien"]      { --in-sem-bg: var(--ok);   --in-sem-fg: #FFFFFF; }
.in-sem[data-sem="atencion"]  { --in-sem-bg: var(--warn); --in-sem-fg: #FFFFFF; }
.in-sem[data-sem="alto"]      { --in-sem-bg: var(--hot);  --in-sem-fg: #FFFFFF; }
.in-sem[data-sem="pasado"]    { --in-sem-bg: var(--bad);  --in-sem-fg: #FFFFFF; }
.in-sem[data-sem="sin_datos"] { --in-sem-bg: var(--track); --in-sem-fg: var(--ink-3); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .in-sem[data-sem="bien"]     { --in-sem-bg: var(--ok-soft);   --in-sem-fg: var(--ok); }
  :root:not([data-theme="light"]) .in-sem[data-sem="atencion"] { --in-sem-bg: var(--warn-soft); --in-sem-fg: var(--warn); }
  :root:not([data-theme="light"]) .in-sem[data-sem="alto"]     { --in-sem-bg: var(--hot-soft);  --in-sem-fg: var(--hot); }
  :root:not([data-theme="light"]) .in-sem[data-sem="pasado"]   { --in-sem-bg: var(--bad-soft);  --in-sem-fg: var(--bad); }
}
:root[data-theme="dark"] .in-sem[data-sem="bien"]     { --in-sem-bg: var(--ok-soft);   --in-sem-fg: var(--ok); }
:root[data-theme="dark"] .in-sem[data-sem="atencion"] { --in-sem-bg: var(--warn-soft); --in-sem-fg: var(--warn); }
:root[data-theme="dark"] .in-sem[data-sem="alto"]     { --in-sem-bg: var(--hot-soft);  --in-sem-fg: var(--hot); }
:root[data-theme="dark"] .in-sem[data-sem="pasado"]   { --in-sem-bg: var(--bad-soft);  --in-sem-fg: var(--bad); }
/* el gráfico llena el alto de la pantalla, como en el artboard de 1440×1024 */
@media (min-width: 900px) { .in-escritorio { min-height: calc(100dvh - 84px); box-sizing: border-box; } }

/* ── 20-alta.css ── */
/* ── Alta (E3) ─────────────────────────────────────────────────────────────
   Las vistas llevan los estilos inline portados de los artboards (tools/portar2.py). Acá solo lo que cambia con el estado
   (foco, error, elegido, pasos) con los mismos valores del artboard, y las animaciones. */
@keyframes om-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

/* Campos: caja de 54 px; con foco, borde 2 px azul (artboards 1, 2 y 3b); con error, borde 2 px rojo (3c). */
.al-in { flex: 1; min-width: 0; width: 100%; height: 100%; border: 0; outline: 0; background: transparent; padding: 0; margin: 0; }
.al-in::placeholder { color: var(--ink-4); opacity: 1; }
.al-pass::placeholder { font: 500 15px 'Plus Jakarta Sans', sans-serif; letter-spacing: 0; }
.al-caja:focus-within { border: 2px solid var(--accent) !important; }
.al-caja.mal { border: 2px solid var(--bad) !important; }
.al-oculto { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; margin: 0; }

/* Casillas (la autorización del artboard 2, y desde el 19/09 las tres del alta y la de "Traerlo de ARCA": al_casilla en
   _partes.php): tildada = cuadrado azul con el check; sin tildar al intentar seguir = borde rojo de 2 px, como un campo con error. */
.al-tilde { background: var(--card); box-shadow: inset 0 0 0 1.5px var(--line-2); }
.al-tilde svg { opacity: 0; }
.al-chk:checked + .al-tilde { background: var(--brand); box-shadow: none; }
.al-chk:checked + .al-tilde svg { opacity: 1; }
.al-chk:focus-visible + .al-tilde { outline: 2px solid var(--accent); outline-offset: 2px; }
.al-casilla.mal .al-chk:not(:checked) + .al-tilde { box-shadow: inset 0 0 0 2px var(--bad); }

/* "Crear cuenta" apagado hasta tildar las tres casillas (aria-disabled: se puede tocar y dice cuál falta). Mismo apagado que .btn-cta. */
.al-cta[aria-disabled="true"] { opacity: .55; box-shadow: none !important; cursor: default; }

/* Resumen de las cláusulas más importantes (al_tyc): el texto publicado (ol.lg-ol de Legal::html) en un recuadro que scrollea,
   con la letra de la caja del artboard 2. Las marcas numeradas en mono azul vienen de .lg-ol (55-legal.css). */
.al-tyc-txt { max-height: 188px; overflow-y: auto; overscroll-behavior: contain; margin: 0 -4px; padding: 0 4px 16px;
  font: 500 12.5px/1.5 'Plus Jakarta Sans', sans-serif; color: var(--ink-2);
  -webkit-mask-image: linear-gradient(#000 calc(100% - 20px), transparent); mask-image: linear-gradient(#000 calc(100% - 20px), transparent); }
.al-tyc-txt:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 6px; }
.al-tyc-txt .lg-ol { margin: 0; padding-left: 24px; }
.al-tyc-txt .lg-ol > li::marker { font-size: 11px; }
.al-tyc-txt .lg-ol > li + li { margin-top: 8px; }
.al-tyc-txt strong { font-weight: 700; color: var(--ink); }
.al-tyc-txt a { color: var(--accent); }

/* Actos del robot en Conectar ARCA (artboard 2, recuadro del candado): lista numerada con la marca en gris. */
.al-actos-l > li::marker { font: 600 11.5px 'Geist Mono', monospace; color: var(--ink-4); }

/* Pie con los textos legales, fuera de la pantalla del artboard (se ve al bajar). */
.al-pie-legal { max-width: 390px; margin: 0 auto; padding: 14px 20px calc(18px + env(safe-area-inset-bottom)); }

/* Tira "Conectando tu ARCA" (artboard 4). */
.al-tira-ic { border: 2px solid var(--accent); animation: om-pulse 1.4s ease-in-out infinite; }
.al-tira-pt { background: var(--brand); }
.al-tira[data-st="bad"] .al-tira-ic { border-color: var(--bad); animation: none; }
.al-tira[data-st="bad"] .al-tira-pt { background: var(--bad); }
.al-tira[data-st="bad"] .al-tira-barra { display: none !important; }

/* Pasos de la conexión (artboard 3): hecho · ahora · pendiente. */
.al-paso .i-hecho, .al-paso .i-ahora, .al-paso .i-pend { display: none; }
.al-paso.hecho .i-hecho, .al-paso.ahora .i-ahora { display: flex; }
.al-paso.pend .i-pend { display: block; }
.al-paso-t { flex: 1; font: 500 14px 'Plus Jakarta Sans', sans-serif; color: var(--ink-4); }
.al-paso.hecho .al-paso-t { color: var(--ink-3); }
.al-paso.ahora .al-paso-t { font-weight: 600; color: var(--ink); }
.al-paso-e { font: 500 11px 'Geist Mono', monospace; color: var(--ink-4); }
.al-paso.ahora .al-paso-e { color: var(--accent); }
.al-paso.pend .al-paso-e { display: none; }

/* Token (artboard 3a): 6 casillas; la que sigue, con borde azul y el cursor. El input real va encima, invisible. */
.al-otp-in { position: absolute; left: 0; right: 0; bottom: 0; height: 60px; width: 100%; opacity: 0; border: 0; padding: 0; font-size: 16px; z-index: 1; }
.al-otp-c { border: 1px solid var(--line); background: var(--bg); }
.al-otp-c.cursor { border: 2px solid var(--accent); background: var(--card); }

/* Otro lado (artboard 5): opción elegida con borde azul de 1,5 px y sombra. */
.al-op { display: flex; align-items: center; gap: 13px; text-align: left; height: 76px; width: 100%; margin: 0; background: var(--card); border: 1px solid var(--line); border-radius: 20px; padding: 0 16px; cursor: pointer; }
.al-op.on { border: 1.5px solid var(--accent); box-shadow: 0 1px 2px rgba(70,55,30,.04), 0 14px 30px -22px rgba(70,55,30,.14); }
.al-op-ic { width: 40px; height: 40px; border-radius: 13px; background: var(--bg); display: flex; align-items: center; justify-content: center; flex: none; color: var(--ink-2); }
.al-op.on .al-op-ic { background: var(--accent-soft); color: var(--accent); }
.al-op-ic svg { stroke: currentColor; }

/* Categoría: corregir (letras A–K y actividad). */
.al-chip { height: 44px; margin: 0; padding: 0; border: 1.5px solid var(--line); border-radius: 12px; background: var(--bg); color: var(--ink-2); font: 600 15px 'Plus Jakarta Sans', sans-serif; cursor: pointer; }
.al-chip.on { border-color: var(--accent); background: var(--accent-soft); color: var(--accent); }

@media (prefers-reduced-motion: reduce) { .al-tira-ic, .al-paso .i-ahora { animation: none !important; } }

/* ── ESCRITORIO (≥900 px) · artboards E10 "Alta crear cuenta escritorio" y "Alta conectando ARCA escritorio" ──────────────
   Barra de 80 px (_partes.php: al_dtop) y una grilla minmax(0,1fr) + 560 px, gap 60, padding 0/48/48, centrada en alto.
   Izquierda: el título (al_intro, solo-desk). Derecha: el MISMO formulario del celular, que acá se vuelve la tarjeta de 560 px
   (surface, borde, radio 28, padding 36, gap 20): sus envoltorios pasan a display:contents para que cada campo sea hijo directo.
   Conectando trae su propia copia de escritorio (.al-dcon); las hojas 3a–3d van como la tarjeta de la derecha.
   La sombra usa el par --p-r70-55-30-35-r0-0-0-72 con su valor claro de respaldo: en 01-pares.css el :root claro no se aplica
   (los comentarios de arriba dejan texto suelto que se come el selector), así que en claro la variable llega vacía. */
.al-paso-d .al-paso-t { font-size: 15.5px; }
.al-paso-d .al-paso-e { font-size: 12px; }
.al-dtira-pt { background: var(--brand); }
.al-dtira[data-st="curso"] .al-dtira-pt { animation: om-pulse 1.4s ease-in-out infinite; }
.al-dtira[data-st="bad"] .al-dtira-pt { background: var(--bad); }
@media (min-width: 900px) {
  #al { max-width: none !important; background: transparent !important; }   /* fondo: el del body (--page), como el artboard */
  #al-top, #al-tira, .al-tit, #al-entrar { display: none !important; }

  .al-grid { display: grid !important; grid-template-columns: minmax(0, 1fr) 560px; align-items: center; gap: 60px; padding: 0 48px 48px; }
  .al-grid > .al-tarjeta { flex: none !important; width: 560px; background: var(--surface); border: 1px solid var(--line); border-radius: 28px; padding: 36px;
    display: flex !important; flex-direction: column; gap: 20px; box-shadow: 0 1px 2px var(--sh-a), 0 24px 50px -30px var(--p-r70-55-30-35-r0-0-0-72, rgba(70,55,30,.35)); }
  .al-tarjeta .al-cuerpo, .al-tarjeta .al-campos, .al-tarjeta .al-pie { display: contents !important; }

  /* Campos (E10 crear cuenta): caja de 58 px con fondo --bg; con foco, fondo --card y borde 2 px azul. Rótulo 10,5 px, gap 8. */
  #al .al-campo { gap: 8px !important; }
  #al .al-rot { font-size: 10.5px !important; }
  #al .al-caja, #al .al-caja-ro { height: 58px !important; padding: 0 18px !important; }
  #al .al-caja { background: var(--bg) !important; }
  #al .al-caja:focus-within { background: var(--card) !important; }
  #al .al-in, #al .al-in-txt { font-size: 16px !important; }
  #al .al-pass { font-size: 18px !important; }
  #al .al-pass::placeholder { color: transparent; }
  #al .al-ver { font-size: 13px !important; }
  #al .al-ayuda { font-size: 12.5px !important; }
  #al .al-cta { height: 58px !important; box-shadow: 0 12px 26px -14px var(--sh-fab) !important; }
  #al .al-nota { font-size: 12px !important; }
  #al .al-cta[aria-disabled="true"] { box-shadow: none !important; }
  .al-tyc-d { max-width: 460px; }                 /* paso 1: el resumen va en la columna izquierda, debajo de los puntos */
  #al .al-tyc-d .al-tyc-txt { max-height: 232px; font-size: 13px; }
  .al-pie-legal { max-width: none; padding: 0 48px 28px; }
  #al .al-resumen { margin: 0 !important; }

  /* Conectando: las hojas 3a–3d (token, cambiar clave, no coincide, ARCA no responde) como la tarjeta de la derecha,
     con el título de la pantalla a la izquierda (mismas medidas que .al-dcon). */
  #con-hoja:not([hidden]) { display: grid !important; grid-template-columns: minmax(0, 1fr) 560px; align-items: center; gap: 60px; padding: 0 48px 48px; }
  #con-hoja .al-hoja-fondo { grid-column: 1; grid-row: 1; flex: none !important; overflow: visible !important; }
  #con-hoja .al-hoja-tit { padding: 0 0 0 56px !important; gap: 24px !important; }
  #con-hoja .al-hoja-tit .al-h1 { font-size: 48px !important; line-height: 1.06 !important; letter-spacing: -.035em !important; text-wrap: pretty; }
  #hoja-paso { font: 500 17px/1.5 'Plus Jakarta Sans', sans-serif !important; }
  .al-velo, .al-agarre { display: none !important; }
  #con-hoja .al-estado { grid-column: 2; grid-row: 1; width: 560px; border: 1px solid var(--line); border-radius: 28px !important; padding: 36px !important;
    box-shadow: 0 1px 2px var(--sh-a), 0 24px 50px -30px var(--p-r70-55-30-35-r0-0-0-72, rgba(70,55,30,.35)) !important; }
  #con-hoja .al-estado > .al-agarre + * { padding-top: 0 !important; }
}

/* Escritorio angosto (900–1279 px): el artboard es de 1440 y ahí no cambia nada. Más angosto, la columna del título quedaba
   en 130–500 px (títulos de 54 px en tres renglones, botones de Conectando partidos): tarjeta de 480, márgenes de 32 y títulos
   de 40–42 px. Los botones de Conectando bajan de renglón en vez de partirse. */
.al-dbot { flex-wrap: wrap; }
.al-dbot > a { white-space: nowrap; }
@media (min-width: 900px) and (max-width: 1279px) {
  .al-dtop { padding: 0 32px !important; }
  .al-grid, .al-dcon, #con-hoja:not([hidden]) { grid-template-columns: minmax(0, 1fr) 480px !important; gap: 40px !important; padding: 0 32px 40px !important; }
  .al-grid > .al-tarjeta, #con-pasos-d, #con-hoja .al-estado { width: 480px !important; }
  .al-intro, .al-dizq, #con-hoja .al-hoja-tit { padding-left: 0 !important; }
  .al-intro-t { font-size: 42px !important; }
  .al-dtit, #con-hoja .al-hoja-tit .al-h1 { font-size: 40px !important; }
}

/* ── 40-ajustes.css ── */
/* ── Ajustes (artboards E7) ──────────────────────────────────────────────
   Las vistas llevan los estilos inline del artboard (portados con tools/portar.py). Acá solo va lo que el inline no
   puede: el contenedor, los estados que cambia el JS (con los MISMOS valores del artboard), hover y los banners. */

/* Contenedor: columna del celular; en escritorio, centrada hasta 560 px. Abajo deja lugar a la barra del celular. */
.aj-cab { width: 100%; max-width: 560px; margin: 0 auto; }
.aj-wrap { flex: 1; width: 100%; max-width: 560px; margin: 0 auto; display: flex; flex-direction: column;
  padding-bottom: env(safe-area-inset-bottom); }
/* Celular: los artboards E7 no tienen la barra de abajo; cada pantalla tiene su "volver" arriba */
@media (max-width: 899px) { body[data-page="ajustes"] .tabbar { display: none !important; } }
.aj-wrap [hidden] { display: none !important; }
.aj-wrap button:disabled { opacity: .55; cursor: default; box-shadow: none !important; }
.aj-ocupado { opacity: .6; pointer-events: none; }
@media (hover: hover) {
  .aj-fila:hover .aj-t { color: var(--accent) !important; }
  .aj-wrap [data-ed]:hover span:first-child { color: var(--ink) !important; }
  .aj-peligro:hover { border-color: var(--bad) !important; }
}

/* Chips Servicios / Productos (artboard "categoría corregida") */
.aj-chip { display: inline-flex; align-items: center; background: var(--bg); border: 1px solid var(--line); border-radius: 999px; padding: 5px 11px;
  font: 500 12px 'Plus Jakarta Sans', sans-serif; color: var(--ink-3); cursor: pointer; }
.aj-chip.on { background: var(--accent-soft); border-color: var(--accent-line); font-weight: 600; color: var(--accent-ink); }

/* Opciones del tope (artboard "tope del mes"): elegida = borde 1.5 azul, radio lleno, título 700 y monto a la derecha */
.aj-op { display: flex; align-items: center; gap: 12px; height: 62px; background: var(--surface); border: 1px solid var(--line); border-radius: 18px;
  padding: 0 15px; cursor: pointer; }
.aj-op.on { border: 1.5px solid var(--accent); padding: 0 14.5px; }
.aj-op:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.aj-radio { width: 22px; height: 22px; border-radius: 999px; border: 2px solid var(--line-2); display: flex; align-items: center; justify-content: center; flex: none; }
.aj-op.on .aj-radio { border-color: var(--accent); }
.aj-op.on .aj-radio::after { content: ""; width: 10px; height: 10px; border-radius: 999px; background: var(--accent); }
.aj-op-t { font: 600 14px 'Plus Jakarta Sans', sans-serif; color: var(--ink); }
.aj-op.on .aj-op-t { font-weight: 700; }
.aj-op-m { font: 700 15px 'Plus Jakarta Sans', sans-serif; color: var(--ink); font-variant-numeric: tabular-nums; flex: none; }
.aj-op:not(.on) .aj-op-m { display: none; }
.aj-op-in { display: inline-flex; align-items: baseline; gap: 2px; }
.aj-op-in input { font: inherit; color: inherit; background: none; border: 0; border-bottom: 1.5px dashed var(--accent); padding: 0 0 1px; outline: 0;
  font-variant-numeric: tabular-nums; }
.aj-op-in input:focus { border-bottom-style: solid; }

/* Porcentaje de cada aviso: ocupa el lugar (46×28) del interruptor del artboard */
.aj-pill { width: 46px; height: 28px; flex: none; border: 0; border-radius: 999px; background: var(--brand); color: #FFFFFF; text-align: center; padding: 0;
  font: 700 13px 'Plus Jakarta Sans', sans-serif; font-variant-numeric: tabular-nums; }
.aj-pill:focus { outline: 2px solid var(--accent); outline-offset: 2px; }

/* Selector de categoría (se abre con "Corregir categoría") */
.aj-cats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.aj-cats button { display: flex; flex-direction: column; align-items: center; gap: 2px; padding: 8px 2px; border-radius: 14px; cursor: pointer; min-width: 0;
  border: 1px solid var(--line); background: var(--surface); }
.aj-cats b { font: 700 20px 'Bricolage Grotesque', sans-serif; color: var(--ink); }
.aj-cats span { font: 500 9.5px 'Geist Mono', monospace; color: var(--ink-4); letter-spacing: -.02em; }
.aj-cats button.on { background: var(--accent-soft); border: 1.5px solid var(--accent); padding: 7.5px 1.5px; }
.aj-cats button.on b { color: var(--accent-ink); }

/* Formularios (campos del sistema: .campo/.input del núcleo) */
.aj-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.aj-2 > .campo { min-width: 0; }
.aj-wrap select.input { appearance: none; -webkit-appearance: none; padding-right: 34px; cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, var(--ink-4) 50%), linear-gradient(135deg, var(--ink-4) 50%, transparent 50%);
  background-position: calc(100% - 18px) 50%, calc(100% - 13px) 50%; background-size: 5px 5px; background-repeat: no-repeat; }
.aj-borrar { width: 32px; height: 32px; flex: none; border-radius: 999px; border: 1px solid var(--line); background: var(--bg); color: var(--ink-3);
  display: flex; align-items: center; justify-content: center; cursor: pointer; }
.aj-borrar svg { width: 13px; height: 13px; }
.aj-borrar:hover { color: var(--bad); border-color: var(--bad); }
.armado { background: var(--bad-soft) !important; border-color: var(--bad) !important; color: var(--bad-ink) !important; }

@media (max-width: 360px) {
  .aj-2 { grid-template-columns: 1fr; }
  .aj-cats { grid-template-columns: repeat(3, 1fr); }
}
/* Escritorio: E10 "Ajustes escritorio". Grilla de la página = la del artboard: 44 | navegación 260 | 36 | sección | 28 | resumen 360 | 44,
   debajo de la cabecera de 88 px. La navegación y el resumen van en todas las secciones (Ajustes::vista). */
@media (min-width: 900px) {
  body[data-page="ajustes"] .app-main { display: grid; grid-template-columns: 44px 260px 36px minmax(0, 1fr) 28px 360px 44px; grid-template-rows: auto auto 1fr; min-height: 100dvh; }
  body[data-page="ajustes"] .app-main > * { grid-column: 1 / -1; }
  body[data-page="ajustes"] .app-main > .page-head { grid-row: 1; }
  body[data-page="ajustes"] .app-main > .banners { grid-row: 2; }
  body[data-page="ajustes"] .app-main > .aj-nav { grid-column: 2; grid-row: 3; display: flex; flex-direction: column; gap: 5px; padding: 28px 0 32px; min-width: 0; }
  body[data-page="ajustes"] .app-main > .aj-wrap { grid-column: 4; grid-row: 3; max-width: none; margin: 0; padding: 28px 0 32px; min-width: 0; }
  body[data-page="ajustes"] .app-main > .aj-resumen { grid-column: 6; grid-row: 3; display: flex; flex-direction: column; gap: 16px; padding: 28px 0 32px; min-width: 0; }
  body[data-page="ajustes"] .aj-wrap > div { padding-left: 0 !important; padding-right: 0 !important; }
  body[data-page="ajustes"] .aj-wrap > div:first-child { padding-top: 0 !important; }
  .aj-nav a:not([aria-current]):hover { background: var(--surface); }
  .aj-resumen a:hover { border-color: var(--line-2) !important; }

  /* "Mis datos y categoría" con las medidas de E10 (mismo marcado que el celular) */
  .aj-datos .aj-cuerpo { gap: 16px !important; }
  .aj-catc { padding: 24px !important; gap: 16px !important; }
  .aj-catc .aj-eti { font-size: 10.5px !important; }
  .aj-catpill { gap: 7px !important; padding: 5px 12px !important; font-size: 11.5px !important; }
  .aj-letra-w { gap: 14px !important; }
  .aj-letra-w > span:last-child { gap: 3px !important; }
  .aj-letra { font-size: 64px !important; }
  #cat-act { font-size: 20px !important; }
  .aj-topet { font-size: 12.5px !important; }
  .aj-cat-pie { flex-direction: row !important; align-items: center; justify-content: space-between; gap: 16px !important; padding-top: 16px !important; }
  .aj-explica { font-size: 13px !important; max-width: 420px; }
  .aj-cat-acc { display: flex; gap: 18px; flex: none; }
  .aj-cat-acc button { font-size: 13.5px !important; }
  /* "Corregir categoría" sube a la tarjeta como enlace (40-ajustes.js lo mueve) */
  .aj-cat-acc #cat-corregir { width: auto !important; height: auto !important; border: 0 !important; border-radius: 0 !important; background: none !important; padding: 0 !important;
    font: 600 13.5px 'Plus Jakarta Sans', sans-serif !important; color: var(--accent) !important; }
  .aj-datos .aj-datc { flex: 1; padding: 0 24px !important; border-radius: 22px !important; min-height: 0; }
  .aj-datos .aj-row { height: 66px !important; gap: 16px !important; }
  .aj-datos .aj-k, .aj-datos .aj-v { font-size: 14px !important; }
  .aj-datos .aj-v { max-width: 70% !important; }
  .aj-chev { display: flex; }
  .aj-datos .aj-chip { gap: 7px; padding: 6px 13px; font-size: 12.5px; }
  .aj-datos .aj-chip.on { border: 1.5px solid var(--accent); color: var(--accent-hover); }
  .aj-datos .aj-pie { padding: 0 !important; }
  .aj-datos .aj-pie:has(#datos-guardar:not([hidden])) { padding-top: 16px !important; }
}

/* ── Banners globales (artboard E7 "Banners globales"; ubicación del artboard "Inicio con banner ARCA") ── */
.banners { flex: none; width: 100%; padding: 0 18px 12px; }
/* En el celular va DEBAJO de la cabecera de la vista, como en el artboard. Si la vista marca su cabecera con
   data-cabecera y la pone primera, se reordena solo con CSS; si no, el banner queda arriba de todo. */
@media (max-width: 899px) {
  .app-main > .banners:has(+ [data-cabecera]) { order: 1; }
  .app-main > .banners + [data-cabecera] { order: 0; }
  .app-main > .banners:has(+ [data-cabecera]) ~ :not([data-cabecera]) { order: 2; }
  .banners { max-width: 560px; margin: 0 auto; }
}
@media (min-width: 900px) {
  .banners { padding: 0 44px 16px; }
}

/* ── 50-landing.css ── */
/* ── Landing pública (design/Garca - E8 Landing.dc.html) ─────────────────────────
   La vista trae el markup de los artboards con sus estilos inline (tools/portar2.py): celular (.ldc, 390) y
   escritorio (.ldd, 1440) son bloques distintos (.solo-cel / .solo-desk). Acá: lo que el inline no puede
   (márgenes que se ajustan al ancho, grillas que se achican entre 900 y 1199, el velo de la foto del hero por tema,
   estados del buscador de CUIT, preguntas desplegables) y los reseteos de las etiquetas semánticas. */

body.ld { background: var(--bg); overflow-x: hidden; }
@media (max-width: 899px) { body.ld { background: var(--page); } }   /* el celular va sobre el fondo de página (#14120E en oscuro), el escritorio sobre --bg */
.ld h1, .ld h2, .ld h3, .ld p { margin: 0; }
.ld ol, .ld ul { list-style: none; margin: 0; padding: 0; }
.ld a:hover { color: inherit; }
/* los <button> del artboard son links: centrado del texto como un botón */
.ld-boton { display: flex; align-items: center; justify-content: center; }

/* márgenes laterales: los del artboard (20 / 64); más ancho que el artboard, el contenido queda centrado */
.ldc { --cx: max(20px, calc(50% - 280px)); }
.ldd { --gx: max(64px, calc(50% - 656px)); }

/* escritorio: grillas del artboard (1440) */
.ldd-2c { grid-template-columns: minmax(0, 1fr) 420px; gap: 60px; }
.ldd-fc { grid-template-columns: minmax(0, 1fr) 360px; gap: 60px; }
.ldd-faq { grid-template-columns: 340px minmax(0, 1fr); gap: 60px; }
.ldd-h1 { font-size: 62px; }

/* ── Hero con foto (E8 19/09): la foto cubre el bloque; el velo (degradé del color de la página) deja leer el texto.
   Escritorio: la columna de texto mide 660 a 1440 (64 de margen + 532 + 64); más ancho, arranca en el margen de la página. */
.ldd-hero-txt { width: calc(var(--gx) + 596px); padding: 96px 64px 104px var(--gx); }
.ldc-foto { height: clamp(280px, 52vw, 440px); }   /* 280 a 390 (artboard); en tablets crece para no cortar las cabezas */
.ld-velo-d { background: linear-gradient(90deg, #FAF7F1 0%, rgba(250,247,241,.97) 32%, rgba(250,247,241,.72) 48%, rgba(250,247,241,0) 68%); }
.ld-velo-c { background: linear-gradient(180deg, rgba(250,247,241,0) 38%, rgba(250,247,241,.7) 74%, #FAF7F1 100%); }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) .ld-velo-d { background: linear-gradient(90deg, #14120E 0%, rgba(20,18,14,.97) 32%, rgba(20,18,14,.74) 48%, rgba(20,18,14,.15) 74%); }
  :root:not([data-theme="light"]) .ld-velo-c { background: linear-gradient(180deg, rgba(20,18,14,.15) 30%, rgba(20,18,14,.72) 72%, #14120E 100%); }
}
:root[data-theme="dark"] .ld-velo-d { background: linear-gradient(90deg, #14120E 0%, rgba(20,18,14,.97) 32%, rgba(20,18,14,.74) 48%, rgba(20,18,14,.15) 74%); }
:root[data-theme="dark"] .ld-velo-c { background: linear-gradient(180deg, rgba(20,18,14,.15) 30%, rgba(20,18,14,.72) 72%, #14120E 100%); }
@media (max-width: 1199px) {   /* el artboard es de 1440: entre 900 y 1199 se achican márgenes, columnas y el titular */
  .ldd { --gx: 40px; }
  .ldd-2c { grid-template-columns: minmax(0, 1fr) 340px; gap: 40px; }
  .ldd-2c.ldd-g { grid-template-columns: minmax(0, 1fr) 380px; }
  .ldd-fc { gap: 40px; }
  .ldd-faq { grid-template-columns: 240px minmax(0, 1fr); gap: 40px; }
  .ldd-h1 { font-size: clamp(46px, 5vw, 62px); }
}

/* ── Buscador de CUIT del hero (E8 CUIT vacío / resultado / no encontrado) ──
   .lcw-c: celular (E8 Landing celular); de 480 a 899 px, el tamaño de los artboards de 520. .lcw-d: escritorio. */
.lcw-col { display: flex; flex-direction: column; gap: 11px; }
.lcw, .lcw-msgs { display: flex; flex-direction: column; gap: 11px; }
.lcw-campo { display: flex; align-items: center; gap: 12px; height: 70px; padding: 0 17px; border: 1.5px solid var(--line);
  border-radius: 18px; background: var(--surface); cursor: text; }
.lcw-k { font: 500 10px 'Geist Mono', monospace; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-4); flex: none; }
.lcw-in, .lcn-in { flex: 1; min-width: 0; width: 100%; height: auto; margin: 0; padding: 0; border: 0; outline: 0; background: transparent;
  font: 600 22px 'Geist Mono', monospace; letter-spacing: .02em; color: var(--ink); border-radius: 0; -webkit-appearance: none; appearance: none; }
.lcw-in::placeholder { font-weight: 500; color: var(--ink-4); opacity: 1; }
.lcw-in:focus-visible, .lcn-in:focus-visible { outline: 0; }
.lcw-ico, .lcn-ico { flex: none; width: 20px; height: 20px; }
.lcw-ok, .lcn-ok { stroke: var(--ok); }
.lcw-campo:focus-within, .lcw[data-estado="ok"] .lcw-campo { border: 2px solid var(--brand); }
.lcw[data-estado="error"] .lcw-campo { border: 2px solid var(--bad); }
.lcw[data-estado="aviso"] .lcw-campo { border: 2px solid var(--warn); }
.lcw[data-estado="error"] .lcw-ico, .lcn[data-estado="error"] .lcn-ico { stroke: var(--bad); }
.lcw[data-estado="aviso"] .lcw-ico, .lcn[data-estado="aviso"] .lcn-ico { stroke: var(--warn); }
.lcw-spin, .lcn-spin { border-radius: 50%; border: 2px solid var(--line-2); border-top-color: var(--brand); animation: lcw-gira .7s linear infinite; }
@keyframes lcw-gira { to { transform: rotate(360deg); } }
.lcw-ayuda { font: 500 12.5px 'Plus Jakarta Sans', sans-serif; color: var(--ink-3); }
.lcw-res { display: flex; flex-direction: column; gap: 6px; background: var(--surface); border: 1px solid var(--line); border-radius: 18px; padding: 15px 16px; }
.lcw-t { font: 600 14px 'Plus Jakarta Sans', sans-serif; color: var(--ink); }
.lcw-s { font: 500 13px 'Plus Jakarta Sans', sans-serif; color: var(--ink-2); }
.lcw-s b { color: var(--ink); font-variant-numeric: tabular-nums; }
.lcw-cta { display: flex; align-items: center; justify-content: center; height: 58px; border-radius: 18px; background: var(--brand);
  color: var(--on-brand); font: 700 17px 'Plus Jakarta Sans', sans-serif; box-shadow: 0 12px 26px -14px var(--sh-fab); }
.ld .lcw-cta:hover { color: var(--on-brand); }
.lcw-err { font: 600 13px 'Plus Jakarta Sans', sans-serif; color: var(--bad-ink); }
.lcw[data-estado="aviso"] .lcw-err { color: var(--warn-ink); }
.lcw-sec { display: flex; align-items: center; justify-content: center; height: 54px; border: 1.5px solid var(--line); border-radius: 18px;
  background: var(--card); color: var(--ink); font: 600 15.5px 'Plus Jakarta Sans', sans-serif; }
.ld .lcw-sec:hover { color: var(--ink); border-color: var(--line-2); }

@media (min-width: 480px) {   /* E8 CUIT (artboards de 520) */
  .lcw-col, .lcw-c, .lcw-c .lcw-msgs { gap: 12px; }
  .lcw-c .lcw-campo { height: 72px; gap: 14px; padding: 0 20px; }
  .lcw-c .lcw-k { font-size: 10.5px; }
  .lcw-c .lcw-in { font-size: 24px; }
  .lcw-c .lcw-ico { width: 22px; height: 22px; }
  .lcw-c .lcw-res { gap: 8px; padding: 16px 18px; }
  .lcw-c .lcw-s { display: flex; align-items: baseline; gap: 8px; }
  .lcw-c .lcw-s b { font: 700 28px 'Bricolage Grotesque', sans-serif; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
}

.lcw-d, .lcw-d .lcw-msgs { gap: 14px; }
.lcw-d .lcw-campo { height: 80px; gap: 16px; padding: 0 22px; border-radius: 20px; box-shadow: 0 1px 2px rgba(0,0,0,.05), 0 18px 36px -22px rgba(0,0,0,.28); }
.lcw-d .lcw-campo:focus-within, .lcw-d[data-estado="ok"] .lcw-campo { border-color: var(--accent); }   /* sobre la foto: el azul claro en oscuro */
.lcw-d .lcw-k { font-size: 11px; }
.lcw-d .lcw-in { font-size: 28px; }
.lcw-d .lcw-ico { width: 24px; height: 24px; }
.lcw-d .lcw-res { flex-direction: row; align-items: center; gap: 20px; border-radius: 20px; padding: 18px 22px; box-shadow: 0 1px 2px rgba(0,0,0,.05), 0 18px 36px -22px rgba(0,0,0,.24); }
.lcw-d .lcw-res-txt { display: flex; flex-direction: column; gap: 3px; flex: 1; }
.lcw-d .lcw-t { font-size: 15px; }
.lcw-d .lcw-s { font-size: 13.5px; }
.lcw-d .lcw-cta { display: inline-flex; height: 52px; border-radius: 16px; padding: 0 26px; font-size: 16px; flex: none; }

/* ── Buscador del cierre (sección de noche en los dos temas) ── */
.lcn { display: flex; flex-direction: column; gap: 16px; }
.lcn-campo { display: flex; align-items: center; gap: 12px; height: 64px; padding: 0 17px; border: 1.5px solid var(--line-4);
  border-radius: 18px; background: var(--noche); cursor: text; }
.lcn-k { font: 500 10px 'Geist Mono', monospace; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-5); flex: none; }
.lcn-in { font-size: 21px; color: var(--on-ink); }
.lcn-in::placeholder { font-weight: 500; color: var(--ink-5); opacity: 1; }
.lcn-campo:focus-within, .lcn[data-estado="ok"] .lcn-campo { border: 2px solid var(--brand); }
.lcn[data-estado="error"] .lcn-campo { border: 2px solid var(--bad); }
.lcn[data-estado="aviso"] .lcn-campo { border: 2px solid var(--warn); }
.lcn-msg { font: 600 13px/1.5 'Plus Jakarta Sans', sans-serif; color: var(--on-ink); }
.lcn-msg b { font-variant-numeric: tabular-nums; }
.lcn-err { color: color-mix(in srgb, var(--bad) 55%, var(--on-ink)); }
.lcn-d { align-items: center; gap: 12px; }
.lcn-d .lcn-campo { flex: 1; min-width: 0; height: 72px; gap: 14px; padding: 0 20px; }
.lcn-d .lcn-k { font-size: 10.5px; }
.lcn-d .lcn-in { font-size: 24px; }
.lcn-d .lcn-ico { width: 22px; height: 22px; }
.lcn-d .lcn-msg { font-size: 13.5px; text-align: center; }

/* ── Preguntas frecuentes (la primera abierta; el + solo en las cerradas, como el artboard) ── */
.ld-faq details { border-bottom: 1px solid var(--line); }
.ld-faq details:last-child { border-bottom: 0; }
.ld-faq summary { display: flex; align-items: center; justify-content: space-between; list-style: none; cursor: pointer;
  font-family: 'Plus Jakarta Sans', sans-serif; font-weight: 700; color: var(--ink); }
.ld-faq summary::-webkit-details-marker { display: none; }
.ld-faq details[open] summary svg { display: none; }
.ld-faq details:not([open]) p { display: none; }
.ld-faq details p { font-family: 'Plus Jakarta Sans', sans-serif; font-weight: 500; color: var(--ink-2); }
.ld-faq-c details { padding: 15px 0; }
.ld-faq-c details[open] { padding: 16px 0; }
.ld-faq-c summary { gap: 12px; font-size: 14.5px; }
.ld-faq-c details p { margin-top: 7px; font-size: 13px; line-height: 1.5; }
.ld-faq-d details { padding: 20px 0; }
.ld-faq-d details[open] { padding: 22px 0; }
.ld-faq-d summary { gap: 16px; font-size: 16.5px; }
.ld-faq-d details p { margin-top: 9px; font-size: 14.5px; line-height: 1.55; }

/* ── WhatsApp flotante: se corre cuando aparece el pie (no tapa el texto de abajo; en el celular, los enlaces legales) ── */
.ld-flota { z-index: 30; transition: opacity .2s, transform .2s; }
.ld-flota.fuera { opacity: 0; transform: translateY(12px); pointer-events: none; }

/* ── Pie (pie_publico.php; también lo usan /terminos y /privacidad): enlaces a los textos legales, del color de la nota ── */
.ld-pie-a { color: inherit; text-decoration: underline; text-decoration-color: color-mix(in srgb, currentColor 45%, transparent); text-underline-offset: 3px; }
.ld-pie .ld-pie-a:hover { color: var(--on-ink); }
.ld-pie-cel .ld-pie-a { display: inline-block; padding: 7px 0; }   /* en el celular: 30 px de alto para el dedo */

@media (prefers-reduced-motion: reduce) { .ld [style*="animation"] { animation: none !important; } }

/* ── 55-legal.css ── */
/* ── Textos legales: /terminos y /privacidad (app/views/legal.php, HTML de lib/Legal.php) ─────────────────────
   Lenguaje de la landing (E8): Bricolage en los títulos, Plus Jakarta en el texto, Geist Mono en rótulos y números,
   mismo pie (pie_publico.php). Prefijo lg-. Márgenes: los de la landing (20 en el celular, 64 / 40 en escritorio). */

body.lg { background: var(--bg); overflow-x: hidden; }
@media (max-width: 899px) { body.lg { background: var(--page); } }   /* como la landing: el celular va sobre el fondo de página */
.lg { --lx: max(20px, calc(50% - 280px)); }
@media (min-width: 900px) { .lg { --lx: max(64px, calc(50% - 656px)); } }
@media (min-width: 900px) and (max-width: 1199px) { .lg { --lx: 40px; } }

/* cabecera: logo a la izquierda, los dos textos a la derecha (control segmentado) */
.lg-top { height: 56px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 var(--lx);
  border-bottom: 1px solid var(--line); background: var(--page); }
.lg-marca { display: inline-flex; align-items: center; gap: 11px; flex: none; }
.lg-marca img { width: 24px; height: 24px; border-radius: 8px; object-fit: cover; }
.lg-marca span { display: none; font: 700 18px var(--f-num); letter-spacing: .14em; color: var(--ink); }
.lg-docs { display: flex; gap: 2px; padding: 3px; border-radius: 999px; background: var(--track); border: 1px solid var(--line); min-width: 0; }
.lg-docs a { display: inline-block; height: 34px; padding: 0 13px; border-radius: 999px; font: 600 13px/34px var(--f-ui);
  color: var(--ink-3); white-space: nowrap; }   /* inline-block, no flex: el espacio de " y condiciones" tiene que quedar */
.lg-docs a:hover { color: var(--ink); }
.lg-docs a[aria-current] { background: var(--card); color: var(--ink); box-shadow: 0 1px 2px var(--sh-card-a), 0 6px 14px -8px var(--sh-card-b); }
@media (max-width: 399px) { .lg-largo { display: none; } }
@media (min-width: 900px) {
  .lg-top { height: 84px; }
  .lg-marca img { width: 30px; height: 30px; border-radius: 9px; }
  .lg-marca span { display: inline; }
  .lg-docs a { height: 38px; padding: 0 17px; font-size: 14px; line-height: 38px; }
}

/* título, versión y acciones */
.lg-main { padding: 0 var(--lx); }
.lg-cab, .lg-grid { max-width: 1112px; margin: 0 auto; }
.lg-cab { display: flex; flex-direction: column; gap: 14px; padding: 30px 0 22px; }
.lg-eyebrow { margin: 0; font: 500 10.5px var(--f-mono); letter-spacing: .09em; text-transform: uppercase; color: var(--ink-4); }
.lg-h1 { margin: 0; font: 700 30px/1.08 var(--f-num); letter-spacing: -.03em; color: var(--ink); text-wrap: balance; }
.lg-intro p { margin: 0; max-width: 760px; font: 500 15px/1.55 var(--f-ui); color: var(--ink-2); text-wrap: pretty; }
.lg-intro a { color: var(--accent); }
.lg-acciones { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 2px; }
.lg-btn { display: inline-flex; align-items: center; gap: 8px; height: 44px; padding: 0 16px; border-radius: 14px; border: 1.5px solid var(--line-2);
  background: var(--card); color: var(--ink); font: 600 14px var(--f-ui); cursor: pointer; }
.lg-btn:hover { color: var(--ink); border-color: var(--ink-4); }
.lg-btn svg { flex: none; stroke: var(--ink-3); }
.lg-fija { margin: 0; font: 500 12.5px/1.6 var(--f-ui); color: var(--ink-4); overflow-wrap: anywhere; }
.lg-fija a { color: var(--ink-3); text-decoration: underline; text-decoration-color: var(--line-3); text-underline-offset: 3px; }
.lg-fija a:hover { color: var(--accent); }
.lg-aviso { margin: 0; padding: 12px 14px; border-radius: 14px; background: var(--warn-soft); color: var(--warn-ink); font: 600 13.5px/1.5 var(--f-ui); }
.lg-aviso a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.lg-aviso a:hover { color: inherit; }

/* grilla: índice fijo a la izquierda (escritorio) y el texto en una columna de lectura */
.lg-grid { padding-bottom: 64px; }
@media (min-width: 900px) {
  .lg-cab { gap: 16px; padding: 56px 0 36px; }
  .lg-eyebrow { font-size: 11px; }
  .lg-h1 { font-size: 44px; }
  .lg-intro p { font-size: 17px; }
  .lg-grid { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 48px; align-items: start;
    border-top: 1px solid var(--line); padding: 40px 0 96px; }
}
@media (min-width: 1200px) { .lg-grid { grid-template-columns: 280px minmax(0, 760px); gap: 72px; } }

/* índice */
.lg-ind { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1px; }
.lg-ind a { display: flex; gap: 10px; padding: 6px 10px; border-radius: 10px; font: 500 13.5px/1.4 var(--f-ui); color: var(--ink-3); }
.lg-ind a:hover { color: var(--ink); background: var(--track); }
.lg-ind a.on { color: var(--accent-ink); background: var(--accent-soft); font-weight: 600; }
.lg-in { flex: none; width: 22px; text-align: right; font: 500 12px/1.6 var(--f-mono); color: var(--ink-4); }
.lg-ind a.on .lg-in { color: var(--accent); }
.lg-ind-2 { padding-left: 28px; }
.lg-ind-2 a { padding: 4px 10px; font-size: 12.5px; }
.lg-ind-2 .lg-in { width: 26px; font-size: 11px; }
.lg-indice { position: sticky; top: 24px; max-height: calc(100dvh - 48px); overflow-y: auto; display: flex; flex-direction: column; gap: 12px;
  padding: 2px 6px 2px 0; scrollbar-width: thin; }
.lg-indice .lg-eyebrow { padding-left: 10px; }

.lg-indice-cel { margin: 0 0 22px; background: var(--card); border: 1px solid var(--line); border-radius: 18px; scroll-margin-top: 12px; }
.lg-indice-cel summary { display: flex; align-items: center; gap: 10px; height: 54px; padding: 0 16px; list-style: none; cursor: pointer;
  font: 700 15px var(--f-ui); color: var(--ink); }
.lg-indice-cel summary::-webkit-details-marker { display: none; }
.lg-cuenta { flex: 1; font: 500 11.5px var(--f-mono); color: var(--ink-4); }
.lg-indice-cel summary svg { flex: none; stroke: var(--ink-3); transition: transform .2s; }
.lg-indice-cel[open] summary svg { transform: rotate(180deg); }
.lg-indice-cel > .lg-ind { border-top: 1px solid var(--line); padding: 8px 6px 10px; }
.lg-indice-cel .lg-ind a { padding: 9px 10px; font-size: 14px; }
.lg-indice-cel .lg-ind-2 a { padding: 7px 10px; font-size: 13px; }

/* el texto */
.lg-texto { min-width: 0; font: 400 15px/1.65 var(--f-ui); color: var(--ink-2); }
.lg-texto p { margin: 0 0 14px; text-wrap: pretty; }
.lg-texto strong { font-weight: 700; color: var(--ink); }
.lg-texto a { color: var(--accent); }
.lg-texto a:hover { color: var(--accent-hover); text-decoration: underline; text-underline-offset: 3px; }
.lg-texto [id] { scroll-margin-top: 20px; }
.lg-sec + .lg-sec { margin-top: 30px; }
.lg-h2 { display: flex; align-items: baseline; gap: 12px; margin: 0 0 14px; font: 700 22px/1.2 var(--f-num); letter-spacing: -.02em;
  color: var(--ink); text-wrap: balance; }
.lg-h3 { display: flex; align-items: baseline; gap: 10px; margin: 24px 0 10px; font: 700 16px/1.35 var(--f-ui); color: var(--ink); }
.lg-hn { flex: none; font: 600 15px var(--f-mono); letter-spacing: 0; color: var(--accent); }
.lg-h3 .lg-hn { font-size: 13px; }
.lg-texto .lg-pn { margin-right: 2px; font: 600 .87em var(--f-mono); color: var(--ink-3); }
.lg-texto .lg-pn:hover { color: var(--accent); text-decoration: none; }
.lg-texto :is(p, h2, h3):target { animation: lg-marca 2.6s ease-out; border-radius: 8px; }
@keyframes lg-marca { 0%, 35% { background: var(--accent-soft); box-shadow: 0 0 0 6px var(--accent-soft); } 100% { background: transparent; box-shadow: 0 0 0 6px transparent; } }

/* listas: viñeta chica; el resumen, numerado en mono */
.lg-ul, .lg-ol { margin: 0 0 14px; }
.lg-ul { list-style: none; padding-left: 20px; }
.lg-ul > li { position: relative; }
.lg-ul > li::before { content: ""; position: absolute; left: -14px; top: .62em; top: calc(.5lh - 2.5px); width: 5px; height: 5px; border-radius: 50%; background: var(--ink-4); }
.lg-ul .lg-ul > li::before { background: transparent; border: 1.2px solid var(--ink-4); }
.lg-ol { padding-left: 30px; }
.lg-ol > li::marker { font: 600 13px var(--f-mono); color: var(--accent); }
.lg-ul li + li, .lg-ol li + li { margin-top: 7px; }
.lg-texto li > p { margin: 0 0 7px; }
.lg-texto li > p:last-child { margin-bottom: 0; }
.lg-texto li > :is(.lg-ul, .lg-ol) { margin: 7px 0 0; }
.lg-texto li > :is(.lg-ul, .lg-ol) + p { margin-top: 7px; }

/* resumen: tarjeta, como las de la landing */
.lg-resumen { background: var(--card); border: 1px solid var(--line); border-radius: 22px; padding: 20px 18px 8px; box-shadow: var(--sh-card); }
.lg-resumen .lg-h2 { font-size: 20px; }
.lg-resumen .lg-ol > li + li { margin-top: 10px; }

/* datos pendientes ({{A_COMPLETAR:…}}): «a completar» en gris */
.lg-falta { display: inline-block; padding: 0 7px; border: 1px dashed var(--line-3); border-radius: 7px; background: var(--track);
  font: 600 .86em/1.5 var(--f-ui); color: var(--ink-4); white-space: nowrap; }

/* tablas: en escritorio, tabla; en el celular, cada fila es una tarjeta con el rótulo arriba de cada dato */
.lg-tabla { margin: 4px 0 18px; overflow-x: auto; border: 1px solid var(--line); border-radius: 16px; background: var(--card); }
.lg-tabla table { width: 100%; border-collapse: collapse; font: 400 14px/1.55 var(--f-ui); }
.lg-tabla th, .lg-tabla td { text-align: left; vertical-align: top; padding: 12px 14px; border-bottom: 1px solid var(--line); }
.lg-tabla tbody tr:last-child > * { border-bottom: 0; }
.lg-tabla thead th { font: 500 10.5px var(--f-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-4); background: var(--surface-2); }
.lg-tabla tbody th { width: 42%; font-weight: 600; color: var(--ink); }
@media (max-width: 599px) {
  .lg-tabla { overflow: visible; }
  .lg-tabla :is(table, tbody, tr, th, td) { display: block; width: auto; }
  .lg-tabla thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .lg-tabla tbody tr { padding: 12px 14px; border-bottom: 1px solid var(--line); }
  .lg-tabla tbody tr:last-child { border-bottom: 0; }
  .lg-tabla tbody :is(th, td) { padding: 0; border: 0; }
  .lg-tabla td + td, .lg-tabla th + td { margin-top: 6px; }
  .lg-tabla td[data-k]::before { content: attr(data-k); display: block; margin-bottom: 1px; font: 500 10px var(--f-mono); letter-spacing: .08em;
    text-transform: uppercase; color: var(--ink-4); }
  .lg-tabla-kv tbody th { font: 500 10px var(--f-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-4); }
  .lg-tabla-kv th + td { margin-top: 2px; }
  .lg-tabla:not(.lg-tabla-kv) td:first-child { font-weight: 600; color: var(--ink); }   /* el dato de la fila, como título de la tarjeta */
}

@media (min-width: 900px) {
  .lg-texto { font-size: 16px; line-height: 1.7; }
  .lg-texto p { margin-bottom: 16px; }
  .lg-sec + .lg-sec { margin-top: 48px; }
  .lg-h2 { font-size: 27px; margin-bottom: 18px; }
  .lg-hn { font-size: 17px; }
  .lg-h3 { font-size: 17px; margin-top: 30px; }
  .lg-resumen { padding: 30px 34px 16px; border-radius: 24px; }
  .lg-resumen .lg-h2 { font-size: 24px; }
  .lg-tabla table { font-size: 14.5px; }
}

/* botón "Índice" del celular: aparece cuando el índice quedó arriba (55-legal.js) */
.lg-subir { position: fixed; right: 16px; bottom: calc(18px + env(safe-area-inset-bottom)); z-index: 30; display: flex; align-items: center; gap: 8px;
  height: 46px; padding: 0 18px 0 15px; border-radius: 999px; background: var(--surface); border: 1px solid var(--line);
  box-shadow: 0 14px 28px -12px var(--sh-f); font: 700 14px var(--f-ui); color: var(--ink);
  opacity: 0; transform: translateY(12px); pointer-events: none; transition: opacity .2s, transform .2s; }
.lg-subir.on { opacity: 1; transform: none; pointer-events: auto; }
.lg-subir:hover { color: var(--ink); }
.lg-subir svg { flex: none; stroke: var(--ink-3); }

@media (prefers-reduced-motion: reduce) { .lg-texto :target { animation: none; } .lg-subir { transition: none; } }

/* imprimir: solo el texto, en negro sobre blanco aunque la pantalla esté en oscuro */
@media print {
  body.lg { background: none; }
  .lg-top, .lg-acciones, .lg-indice, .lg-indice-cel, .lg-subir, body.lg .ldc, body.lg .ldd { display: none !important; }
  .lg-main { padding: 0; }
  .lg-grid { display: block; border: 0; padding: 0; }
  .lg-cab { padding: 0 0 12px; }
  body.lg * { color: black !important; background: none !important; box-shadow: none !important; }
  .lg-texto { font-size: 10.5pt; line-height: 1.5; }
  .lg-sec { break-inside: auto; }
  .lg-h2, .lg-h3 { break-after: avoid; }
  .lg-resumen, .lg-tabla, .lg-falta { border-color: gray; }
}

/* ── Los enlaces a estos textos en el resto de las pantallas ──
   .pie-legal: la línea chica de pie_legal() (pie_publico.php) en Entrar, Clave nueva, la página de error y el final de
   Ajustes en el celular. .rail-legal: el pie del menú lateral del panel en escritorio (layout/header.php), debajo de Ajustes. */
.pie-legal { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0 8px; font: 500 12px var(--f-ui); color: var(--ink-4); }
.pie-legal a { color: inherit; padding: 6px 0; text-decoration: underline; text-decoration-color: color-mix(in srgb, currentColor 40%, transparent); text-underline-offset: 3px; }
.pie-legal a:hover { color: var(--ink-2); }
.rail-legal { display: flex; flex-direction: column; align-items: center; gap: 1px; margin-top: -10px; }
.rail-legal a { padding: 3px 6px; border-radius: 6px; font: 500 10.5px var(--f-ui); color: var(--ink-4); }
.rail-legal a:hover { color: var(--ink-2); text-decoration: underline; text-underline-offset: 3px; }

/* ── 56-botones.css ── */
/* ── BOTÓN DE ARREPENTIMIENTO y BOTÓN DE BAJA DE SERVICIO (T&C 16 y 17; Disp. 954/2025) ─────────────────────────────
   La página (app/views/legal_boton.php, body.lg.gs): cabecera, título y pie de las páginas legales (55-legal.css) + prefijo gs-.
   Los dos enlaces (botones_legales(), app/views/legal_botones.php): .gs-botones + la variante
     -franja  arriba de todo en la landing: a la vista en el primer acceso, en el celular y en el escritorio;
     -pie     al pie de cada pantalla con sesión (layout/footer.php), debajo de la app (no toca el layout de ninguna pantalla);
     -linea   pie de las páginas sin layout (Entrar, Clave nueva, error, alta);
     -oscuro  dentro del pie negro de la landing y de las páginas legales.
   Colores solo con tokens: el oscuro sale solo. */

.gs-botones { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 0 18px; }
.gs-botones a { padding: 7px 0; font: 700 10.5px/1.3 var(--f-ui); letter-spacing: .07em; color: var(--ink-3); white-space: nowrap;
  text-decoration: underline; text-decoration-color: var(--line-3); text-underline-offset: 3px; }
.gs-botones a:hover { color: var(--ink); text-decoration-color: currentColor; }
.gs-botones-franja { min-height: 32px; padding: 0 16px; border-bottom: 1px solid var(--line); background: var(--page); }
.gs-botones-franja a { padding: 8px 0; }
@media (max-width: 899px) {   /* celular: los dos en una fila (a 390 entran en una línea cada uno; más angosto, cada uno se parte en su mitad) */
  .gs-botones-franja { display: grid; grid-template-columns: 1fr 1fr; gap: 0 10px; padding: 0 12px; }
  .gs-botones-franja a { font-size: 10px; letter-spacing: .05em; white-space: normal; text-align: center; }
}
.gs-botones-pie { padding: 14px 20px calc(96px + env(safe-area-inset-bottom)); border-top: 1px solid var(--line); background: var(--bg); }
/* sin la barra de abajo (Ajustes y Varias en el celular), sin el lugar que ella ocupa */
body[data-page="ajustes"] .gs-botones-pie, body[data-page="varias"] .gs-botones-pie { padding-bottom: calc(20px + env(safe-area-inset-bottom)); }
.gs-botones-linea { gap: 0 14px; }
.gs-botones-linea a { color: var(--ink-4); }
.gs-botones-oscuro { justify-content: flex-start; gap: 0 16px; }
.gs-botones-oscuro a { color: var(--ink-5); text-decoration-color: var(--line-4); }
.gs-botones-oscuro a:hover { color: var(--on-ink); }
@media (min-width: 900px) {
  .gs-botones-franja { min-height: 34px; justify-content: flex-end; padding: 0 max(64px, calc(50% - 656px)); gap: 0 24px; }
  .gs-botones-pie { justify-content: flex-start; gap: 0 24px; padding: 18px 44px 22px calc(104px + 44px); }
}
@media (min-width: 900px) and (max-width: 1199px) { .gs-botones-franja { padding: 0 40px; } }

/* ── La página ── */
.gs-grid { max-width: 1112px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; padding-bottom: 48px; }
.gs-que, .gs-caja { background: var(--card); border: 1px solid var(--line); border-radius: 22px; padding: 18px 18px 20px;
  box-shadow: 0 1px 2px var(--sh-card-a), 0 14px 30px -22px var(--sh-card-b); }
.gs-h2 { margin: 0; font: 500 10.5px var(--f-mono); letter-spacing: .09em; text-transform: uppercase; color: var(--ink-4); }
.gs-que .gs-h2 { margin-bottom: 14px; }
.gs-lista { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 11px; }
.gs-lista li { display: flex; gap: 11px; font: 500 14px/1.5 var(--f-ui); color: var(--ink-2); text-wrap: pretty; }
.gs-lista li::before { content: ''; flex: none; width: 6px; height: 6px; margin-top: 8px; border-radius: 999px; background: var(--accent); }
.gs-nota { margin: 14px 0 0; font: 500 12.5px/1.55 var(--f-ui); color: var(--ink-3); text-wrap: pretty; }
.gs-nota a { color: var(--accent); }
.gs-ayuda { margin: -4px 0 0; font: 500 13px/1.5 var(--f-ui); color: var(--ink-3); }
.gs-form { display: flex; flex-direction: column; gap: 14px; }
.gs-form .input { height: 50px; }
.gs-error { padding: 11px 13px; border-radius: 12px; background: var(--bad-soft); color: var(--bad-ink); font: 600 13px/1.5 var(--f-ui); }
.gs-error a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }
.gs-listo { display: flex; flex-direction: column; gap: 14px; outline: 0; }
.gs-listo-ico { width: 44px; height: 44px; border-radius: 14px; background: var(--ok-soft); color: var(--ok); display: flex; align-items: center; justify-content: center; }
.gs-listo-t { margin: 0; font: 700 22px/1.15 var(--f-num); letter-spacing: -.02em; color: var(--ink); }
.gs-codigo-caja { display: flex; flex-direction: column; gap: 6px; padding: 14px 16px; border-radius: 16px; background: var(--bg); border: 1px dashed var(--line-3); }
.gs-codigo { font: 600 24px/1.1 var(--f-mono); letter-spacing: .05em; color: var(--ink); user-select: all; }
.gs-fecha { font: 500 12px var(--f-ui); color: var(--ink-3); }
@media (min-width: 900px) {
  .gs-grid { display: grid; grid-template-columns: minmax(0, 1fr) 420px; gap: 32px; align-items: start; border-top: 1px solid var(--line); padding: 40px 0 96px; }
  .gs-que { padding: 26px 28px 28px; }
  .gs-caja { position: sticky; top: 24px; padding: 24px; }
  .gs-lista li { font-size: 15px; }
}
@media (max-width: 899px) {
  .gs-caja { order: -1; }   /* en el celular, el formulario primero: la lista queda abajo */
}

/* ── 60-varias.css ── */
/* Facturar varias (E4): el diseño va inline en app/views/varias.php; acá solo lo que el inline no puede
   (tokens propios del artboard oscuro, resets de botón/input, hover, arrastrar archivo, animaciones, escritorio E10). */

/* Colores del artboard oscuro que no son los tokens globales: el fondo detrás de la hoja es #14120E, dentro de la hoja
   las tarjetas blancas pasan a #23201A, el tramo "suma este lote" a #3E5A99, el borde del chip a #2D3A5C, el punteado a #3C362D,
   y el velo y la sombra de la hoja son otros. */
:root {
  --vr-fondo: #FAF7F1; --vr-card: #FFFFFF; --vr-lote: #9CBBFF; --vr-chip-line: #D4E0FB; --vr-dash: #D9CFC0;
  --vr-scrim: rgba(23,20,15,.5); --vr-sh-hoja: rgba(70,55,30,.45); --vr-sh-a: rgba(70,55,30,.04); --vr-sh-b: rgba(70,55,30,.14);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --vr-fondo: #14120E; --vr-card: #23201A; --vr-lote: #3E5A99; --vr-chip-line: #2D3A5C; --vr-dash: #3C362D;
    --vr-scrim: rgba(0,0,0,.62); --vr-sh-hoja: rgba(0,0,0,.6);
  }
}
:root[data-theme="dark"] {
  --vr-fondo: #14120E; --vr-card: #23201A; --vr-lote: #3E5A99; --vr-chip-line: #2D3A5C; --vr-dash: #3C362D;
  --vr-scrim: rgba(0,0,0,.62); --vr-sh-hoja: rgba(0,0,0,.6);
}

/* En el diseño la hoja tapa la barra inferior: en esta página no se muestra. */
body[data-page="varias"] .tabbar { display: none !important; }

/* Base tipográfica del artboard (no hereda la del body: ni el 15px/1.4 ni la Jakarta). Todo texto visible declara su fuente inline;
   esto solo fija el renglón base de los bloques con texto en línea (p. ej. la línea de arriba de "Así queda"), igual que en el diseño. */
.vr-pant { min-height: 100dvh; font: 16px serif; }
.vr-btn { border: 0; background: none; padding: 0; margin: 0; cursor: pointer; font: inherit; color: inherit; text-align: inherit; }
.vr-in { border: 0; outline: 0; background: none; padding: 0; margin: 0; min-width: 0; border-radius: 0; -webkit-appearance: none; appearance: none; }
.vr-in::placeholder { color: var(--ink-4); opacity: 1; }
.vr-in:focus-visible { outline: 0; }
[data-caja] { cursor: text; }
.vr-pant button:disabled { opacity: .55; cursor: default; }
.vr-op { transition: border-color .15s; }
.vr-op:hover { border-color: var(--accent-line) !important; }
.vr-drop.encima { border-color: var(--accent) !important; }
.vr-avance { transition: width .5s ease-out; }
.vr-gira { animation: vr-gira .8s linear infinite; }
@keyframes vr-gira { to { transform: rotate(360deg); } }

/* Escritorio (E10 Facturar Varias escritorio): el markup va inline en #vd (varias.php) y la columna derecha la pinta el JS.
   Acá: la base tipográfica del artboard (Jakarta 16 px, renglón normal), las secciones de cada entrada (display:contents para
   que sus piezas caigan en la columna con el mismo gap de 11 px del diseño), hover y, entre 900 y 1179 px, una sola columna. */
.vd { font: 16px 'Plus Jakarta Sans', system-ui, sans-serif; }
.vd-src { display: contents; }
.vd-op[aria-pressed="false"] { transition: border-color .15s; }
.vd-op[aria-pressed="false"]:hover { border-color: var(--accent-line) !important; }
.vd button:disabled { opacity: .55; cursor: default; }
.vd a { color: inherit; }
@media (min-width: 900px) and (max-width: 1179px) {
  #vd { grid-template-columns: minmax(0, 1fr) !important; gap: 28px !important; }
  #vd .vd-izq { max-width: 560px; }
}
/* Sombra del botón Facturar del menú: en todos los artboards E10 es .55 también en oscuro (el layout usa .8 en oscuro). */
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) body[data-page="varias"] { --sh-fab-rail: rgba(27,91,227,.55); } }
:root[data-theme="dark"] body[data-page="varias"] { --sh-fab-rail: rgba(27,91,227,.55); }

/* ── 65-declaracion.css ── */
/* La declaración de las Reglas (65-declaracion.js): hoja de abajo en el celular (como la hoja Facturar), centrado de 480 px en
   escritorio (como los diálogos del panel). Mismo lenguaje: superficie, línea, tipografías y el CTA de la app. Solo tokens. */
.dcl-velo { z-index: 60; }
.dcl { position: fixed; z-index: 61; left: 0; right: 0; bottom: 0; max-height: calc(100dvh - 24px); display: flex; flex-direction: column;
  background: var(--surface); border-radius: 28px 28px 0 0; box-shadow: var(--sh-sheet); padding-bottom: env(safe-area-inset-bottom);
  transform: translateY(105%); transition: transform .26s cubic-bezier(.2, .8, .2, 1); color: var(--ink); }
.dcl.on { transform: none; }
.dcl button { font-family: inherit; }
.dcl-manija { flex: none; align-self: center; width: 38px; height: 4px; margin-top: 9px; border-radius: 2px; background: var(--line-2); }
.dcl-cab { flex: none; display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; padding: 14px 20px 12px; }
.dcl-tit { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.dcl-eyebrow { font: 500 10px var(--f-mono); letter-spacing: .09em; text-transform: uppercase; color: var(--ink-4); }
.dcl-t { margin: 0; font: 600 21px/1.15 var(--f-num); letter-spacing: -.01em; color: var(--ink); }
.dcl-x { flex: none; cursor: pointer; color: var(--ink-2); position: relative; }
.dcl-x::after { content: ""; position: absolute; inset: -7px; }
.dcl-cuerpo { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 12px; padding: 2px 20px 18px; }
.dcl-res { margin: 0; display: flex; flex-direction: column; background: var(--bg); border: 1px solid var(--line); border-radius: 18px; padding: 2px 15px; }
.dcl-fila { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 44px; padding: 7px 0; }
.dcl-fila + .dcl-fila { border-top: 1px solid var(--line); }
.dcl-fila dt { flex: none; font: 500 12.5px var(--f-ui); color: var(--ink-3); }
.dcl-fila dd { margin: 0; min-width: 0; font: 600 13.5px/1.35 var(--f-ui); color: var(--ink); text-align: right; font-variant-numeric: tabular-nums; }
.dcl-nota { margin: 0; font: 500 12.5px/1.5 var(--f-ui); color: var(--ink-2); }
.dcl-casilla { position: relative; display: flex; align-items: flex-start; gap: 12px; padding: 13px 14px; border: 1.5px solid var(--line); border-radius: 16px;
  background: var(--surface); cursor: pointer; transition: border-color .15s, background .15s; }
.dcl-casilla:has(input:checked) { border-color: var(--accent-line); background: var(--accent-soft); }
.dcl-casilla input { position: absolute; left: 14px; top: 13px; width: 24px; height: 24px; margin: 0; opacity: 0; cursor: pointer; }
.dcl-caja { flex: none; width: 24px; height: 24px; border-radius: 8px; border: 1.5px solid var(--line-2); background: var(--surface);
  display: flex; align-items: center; justify-content: center; color: transparent; transition: background .15s, border-color .15s; }
.dcl-caja svg { width: 15px; height: 15px; }
.dcl-casilla input:checked + .dcl-caja { background: var(--brand); border-color: var(--brand); color: var(--on-brand); }
.dcl-casilla input:focus-visible + .dcl-caja { outline: 2px solid var(--accent); outline-offset: 2px; }
.dcl-txt { font: 500 14px/1.5 var(--f-ui); color: var(--ink); }
.dcl-link { color: var(--accent); text-decoration: underline; text-underline-offset: 2px; }
.dcl-reg { margin: -2px 0 0; font: 500 11.5px/1.45 var(--f-ui); color: var(--ink-4); }
.dcl-reg .dcl-link { color: var(--ink-3); }
.dcl-err { margin: 0; padding: 11px 13px; border-radius: 14px; background: var(--bad-soft); font: 600 12.5px/1.45 var(--f-ui); color: var(--bad-ink); }
.dcl-ok { flex: none; margin-top: 2px; }
.dcl-ok:disabled { opacity: .42; box-shadow: none; cursor: default; }
.dcl-no { flex: none; height: 44px; border: 0; background: none; font: 600 14.5px var(--f-ui); color: var(--accent); cursor: pointer; }
@media (min-width: 900px) {
  .dcl-velo { background: var(--scrim-desk); }
  .dcl { left: 50%; right: auto; top: 50%; bottom: auto; width: 480px; max-height: calc(100dvh - 48px); padding: 0; border-radius: 24px;
    box-shadow: 0 24px 60px -24px var(--sh-g); opacity: 0; transform: translate(-50%, -47%); transition: transform .2s ease-out, opacity .2s ease-out; }
  .dcl.on { opacity: 1; transform: translate(-50%, -50%); }
  .dcl-manija { display: none; }
  .dcl-cab { padding: 24px 26px 14px; }
  .dcl-t { font-size: 24px; }
  .dcl-cuerpo { padding: 2px 26px 22px; }
  .dcl-ok { height: 52px; border-radius: 16px; font-size: 15.5px; }
}
@media (prefers-reduced-motion: reduce) { .dcl, .dcl-velo { transition: none; } }

/* ── 70-cobros.css ── */
/* Cobros de Mercado Pago. Lo visual está inline en la vista (portado de los artboards); acá solo estados.
   Celular: E5 (bloques .solo-cel). Escritorio: E10 "Cobros sin conectar escritorio" (.cb-e10) y "Cobros escritorio" (.cbd). */
.cb-switch { width: 46px; height: 28px; border-radius: 999px; border: 0; padding: 3px; flex: none; cursor: pointer; display: flex; align-items: center;
  justify-content: flex-start; background: var(--line-2); transition: background .15s; }
.cb-switch span { width: 22px; height: 22px; border-radius: 999px; background: var(--card); }
.cb-switch[aria-checked="true"] { background: var(--brand); justify-content: flex-end; }
.cb-switch:disabled { opacity: .5; }
.cb-caja { width: 24px; height: 24px; border-radius: 8px; border: 2px solid var(--line-2); flex: none; display: flex; align-items: center; justify-content: center; }
.cb-caja svg { display: none; }
.cb-item[aria-pressed="true"] .cb-caja { background: var(--brand); border: 0; }
.cb-item[aria-pressed="true"] .cb-caja svg { display: block; }
.cb[data-modo="seleccion"] .cb-lista { display: none !important; }
.cb[data-modo="seleccion"] .cb-sel { display: flex !important; }
body.cb-seleccion .tabbar { display: none !important; }
#cb-facturar-sel:disabled { opacity: .5; cursor: default; }
[data-facturar]:disabled { opacity: .6; cursor: default; }
@media (max-width: 899px) { .cb-resumen, .cb-dias { display: contents; } }
/* ── Escritorio (E10) ── */
@media (min-width: 900px) {
  /* la pantalla no scrollea: la tabla llena el alto y lo que no entra queda en "N cobros más…" (70-cobros.js) */
  body[data-page="cobros"] .app-main { height: 100dvh; min-height: 680px; }
  .cb { flex: 1; min-height: 0 !important; padding-bottom: 0 !important; }
  .cb-e10 { box-sizing: border-box; }   /* sin conectar: la tarjeta centrada en el alto de la pantalla */
}
/* filtros: el activo, negro lleno sin borde */
.cbd-chip { display: inline-flex; align-items: center; margin: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 999px; padding: 8px 15px;
  font: 500 13px 'Plus Jakarta Sans', sans-serif; color: var(--ink-2); cursor: pointer; }
.cbd-chip[aria-pressed="true"] { background: var(--ink); border: 0; font-weight: 600; color: var(--page); }
.cbd-todos { display: inline-flex; align-items: center; gap: 9px; font: 600 13px 'Plus Jakarta Sans', sans-serif; color: var(--accent); border: 0; background: none; padding: 0; cursor: pointer; }
/* casilla de 22 px: vacía con borde; marcada, azul con el tilde */
.cbd-caja { width: 22px; height: 22px; border-radius: 7px; border: 2px solid var(--line-2); background: transparent; padding: 0; margin: 0; flex: none;
  display: flex; align-items: center; justify-content: center; cursor: pointer; }
.cbd-caja svg { display: none; }
.cbd-fila[data-sel="1"] .cbd-caja, .cbd-todos:is([aria-pressed="true"], [aria-pressed="mixed"]) .cbd-caja { background: var(--brand); border: 0; }
.cbd-fila[data-sel="1"] .cbd-caja svg, .cbd-todos:is([aria-pressed="true"], [aria-pressed="mixed"]) .cbd-caja svg { display: block; }
.cbd-fila[data-sel] { cursor: pointer; }
.cbd-fila[data-sel="1"] { background: var(--p-f6f9ff-1a2333); }
.cbd-corta { min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cbd-2l { min-width: 0; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }   /* "sin nombre · va a Consumidor final" baja de renglón, como en E10 */
.cbd-pie { min-height: 52px !important; }
.cbd-switch { width: 46px; height: 28px; border-radius: 999px; border: 0; padding: 3px; flex: none; cursor: pointer; display: flex; align-items: center;
  justify-content: flex-start; background: var(--line-2); transition: background .15s; }
.cbd-switch span { width: 22px; height: 22px; border-radius: 999px; background: var(--on-brand); }
.cbd-switch[aria-checked="true"] { background: var(--brand); justify-content: flex-end; }
.cbd-switch:disabled { opacity: .5; }
#cbd-facturar:disabled { opacity: .5; cursor: default; }
/* ── Buscador en vivo + fechas (08-busqueda.css tiene el resto) ── */
/* en el celular .cb-dias es display:contents: el "cargando" atenúa sus hijos */
@media (max-width: 899px) { .cb-dias.bf-cargando > * { opacity: .5; transition: opacity .12s .15s; } }
/* Tarjeta del período (celular): con un período largo las cifras crecen; si las tres no entran, "Sin facturar" baja de renglón */
.cb-cifras { flex-wrap: wrap; row-gap: 8px; }
/* "Borrar búsqueda" / "Quitar fechas" / "Elegir fechas" cuando no hay ningún cobro: del tamaño del texto de al lado */
.cb .bf-salidas .bf-link { font-size: 13px; }
/* Cabecera de escritorio: [Fechas][buscador][Actualizar][avatar]. El eyebrow ("Mercado Pago · <cuenta> · actualizado hace…") es
   largo, así que cede lugar el buscador (de 330 a 120 px: el texto de ayuda termina en "…") y el eyebrow solo se parte si el
   nombre de la cuenta es muy largo (nunca hay scroll horizontal). Hasta 1279 px "Actualizar" queda en ícono (title y aria-label). */
@media (min-width: 900px) {
  body[data-page="cobros"] .page-head > span:first-child { flex-shrink: 0; min-width: 0; max-width: calc(100% - 507px); }
  body[data-page="cobros"] .page-head > span:last-child { min-width: 0; }
  body[data-page="cobros"] .page-head > span:last-child > :not(.bf-campo-desk) { flex-shrink: 0; }
  body[data-page="cobros"] .bf-campo-desk { width: 330px !important; flex: 0 1 auto; min-width: 120px; }
  body[data-page="cobros"] .bf-campo-desk input[data-bf-q] { text-overflow: ellipsis; }
}
@media (min-width: 900px) and (max-width: 1279px) {
  body[data-page="cobros"] .bf-accion-txt { display: none !important; }
  body[data-page="cobros"] .bf-accion { width: 42px; padding: 0 !important; justify-content: center; }
  body[data-page="cobros"] .page-head > span:first-child { max-width: calc(100% - 431px); }
}
@media (min-width: 900px) and (max-width: 1099px) {
  body[data-page="cobros"] .page-head > span:first-child { max-width: calc(100% - 302px); }
}

/* Tabla de Cobros escritorio en pantallas angostas. E10 es de 1440: desde 1400 px no cambia nada. Antes, "De quién" quedaba en
   18 px a 1280 (una notebook común) y en 0 entre 900 y 1099. $GRILLA (app/views/cobros_comun.php) lee --cbd-cols, --cbd-gap y
   --cbd-pad; sus filas (cabecera, cobros y "no se factura") son las únicas con esas variables en el style.
   1280–1399: columnas más justas (la hora, el medio y "No se factura" entran enteros). 1100–1279: sin la columna Medio y con
   la columna derecha de 320 px. 900–1099: además la derecha de 280 px y menos margen. */
.cbd-chip, .cbd-todos { white-space: nowrap; }
@media (min-width: 900px) and (max-width: 1399px) {
  .cbd { --cbd-cols: 32px 84px minmax(0,1fr) 112px 108px 84px; --cbd-gap: 12px; }
}
@media (min-width: 900px) and (max-width: 1279px) {
  .cbd { grid-template-columns: minmax(0,1fr) 320px !important; --cbd-cols: 32px 84px minmax(0,1fr) 108px 84px; }
  .cbd [style*="--cbd-cols"] > :nth-child(4) { display: none; }
}
@media (min-width: 900px) and (max-width: 1099px) {
  .cbd { grid-template-columns: minmax(0,1fr) 280px !important; gap: 28px !important; padding-left: 28px !important; padding-right: 28px !important;
         --cbd-cols: 32px 84px minmax(0,1fr) 100px 76px; --cbd-gap: 10px; --cbd-pad: 14px; }
  .cbd > :first-child > :first-child { flex-wrap: wrap; row-gap: 10px; }      /* chips y "Seleccionar todos": en dos renglones si no entran */
}

/* ── 80-automatico.css ── */
/* Automático. Lo visual está inline en la vista (portado de E5 celular y E10 escritorio); acá, los controles con estado. */
.au-seg button { height: 38px; border: 0; border-radius: 10px; background: none; display: flex; align-items: center; justify-content: center;
  font: 500 12.5px 'Plus Jakarta Sans', sans-serif; color: var(--ink-3); cursor: pointer; padding: 0; }
.au-seg button.on { background: var(--brand); font-weight: 600; color: #FFFFFF; }
/* días — celular (E5): 40 px, radio 12 */
.au-dias button { flex: 1; height: 40px; border-radius: 12px; display: flex; align-items: center; justify-content: center; padding: 0; cursor: pointer;
  background: var(--card); border: 1px solid var(--line); font: 500 12.5px 'Plus Jakarta Sans', sans-serif; color: var(--ink-4); }
.au-dias button[aria-pressed="true"] { background: var(--brand); border: 0; font-weight: 600; color: #FFFFFF; }
/* días — escritorio (E10): 44 px, radio 13 */
.au-dias-d button { flex: 1; height: 44px; border-radius: 13px; display: flex; align-items: center; justify-content: center; padding: 0; cursor: pointer;
  background: var(--bg); border: 1px solid var(--line); font: 500 13px 'Plus Jakarta Sans', sans-serif; color: var(--ink-4); }
.au-dias-d button[aria-pressed="true"] { background: var(--brand); border: 0; font-weight: 600; color: #FFFFFF; }
/* redondeo — escritorio (E10): dos chips */
.au-chip { display: inline-flex; align-items: center; border-radius: 999px; padding: 7px 14px; cursor: pointer;
  background: var(--surface); border: 1px solid var(--line); font: 500 12.5px 'Plus Jakarta Sans', sans-serif; color: var(--ink-2); }
.au-chip[aria-pressed="true"] { background: var(--accent-soft); border: 1.5px solid var(--accent); padding: 6.5px 13.5px; font-weight: 600; color: var(--accent-hover); }
.au-in { border: 0; outline: 0; background: none; padding: 0; margin: 0; min-width: 0; -webkit-appearance: none; appearance: none; }
[data-au="meta"] { width: 9ch; }
.au-hora { font: 600 14px 'Geist Mono', monospace; color: var(--ink); width: 5.4ch; text-align: center; text-align-last: center; cursor: pointer; }
.au-hora-d { font-size: 14.5px; }
[data-au="ir-simulacion"]:disabled, #au-activar:disabled, [data-au="activar"]:disabled { opacity: .5; cursor: default; }
[data-au="sim"].cargando { opacity: .55; transition: opacity .15s; }
@media (max-width: 899px) { .au-lado { display: contents; } }
@media (min-width: 900px) {
  .au { min-height: 0 !important; padding-bottom: 0 !important; }
  /* E10: la grilla ocupa el alto de la pantalla debajo de la cabecera de 88 px, como en el artboard de 1440×1024 */
  .au-e10 { min-height: calc(100dvh - 88px); box-sizing: border-box; }
  /* pausados (sin artboard de escritorio): el markup del celular en dos columnas, con la carcasa de E10 activo */
  .au[data-estado="pausado"] { display: grid !important; grid-template-columns: minmax(0, 1fr) 404px; column-gap: 44px; align-items: start; padding: 30px 44px 40px !important; }
  .au[data-estado="pausado"] > .solo-cel { display: none !important; }
  .au[data-estado="pausado"] .au-izq { grid-column: 1; padding: 0 !important; gap: 18px !important; }
  .au[data-estado="pausado"] .au-tit { font-size: 58px !important; line-height: 1.04 !important; letter-spacing: -.035em !important; }
  .au[data-estado="pausado"] .au-lado { grid-column: 2; display: flex; flex-direction: column; gap: 16px; position: sticky; top: 24px; }
  .au[data-estado="pausado"] .au-lado .au-col { padding: 0 !important; }
}
/* Escritorio angosto (900–1179): la tarjeta y el calendario (o la tabla y la columna) uno debajo del otro */
@media (min-width: 900px) and (max-width: 1179px) {
  .au-e10 { grid-template-columns: minmax(0, 1fr) !important; }
}

/* ── 90-admin.css ── */
/* ── Panel de superadmin (/admin, /admin/entrar, /clave): prefijo adm-. Lenguaje E5 (tabla escritorio y lista celular) y E10.
   Colores SOLO con tokens; el único fijo es el blanco de los CTA de peligro (el mismo #FFFFFF de los botones de los banners E7). ── */

/* Cabecera de escritorio: buscador 320×42 y botones de contorno de 42 px (misma forma que "Exportar libro de ventas") */
.adm-buscar { width: 320px; height: 42px; flex: none; border-radius: 14px; background: var(--surface); border: 1px solid var(--line); display: flex;
  align-items: center; gap: 9px; padding: 0 14px; color: var(--ink-4); margin: 0; }
.adm-buscar:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-soft); }
.adm-buscar svg { flex: none; }
.adm-buscar input { flex: 1; min-width: 0; height: 100%; border: 0; background: none; outline: 0; padding: 0; font: 500 14px var(--f-ui); color: var(--ink); }
.adm-buscar input::placeholder { color: var(--ink-4); opacity: 1; }
.adm-buscar-cel { width: auto; height: 46px; border-radius: 15px; }
.adm-btn-cont { height: 42px; flex: none; border: 1px solid var(--line); border-radius: 14px; background: var(--card); display: inline-flex; align-items: center;
  padding: 0 14px; font: 600 13px var(--f-ui); color: var(--ink); white-space: nowrap; }
.adm-btn-cont:hover { border-color: var(--line-2); color: var(--ink); }

/* Chips de filtro (E5): el activo en tinta; el número en Geist Mono */
.adm-desk { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.adm-chips { flex: none; display: flex; flex-wrap: wrap; gap: 8px; padding: 0 44px 18px; }
.adm-chip { display: inline-flex; align-items: center; gap: 7px; background: var(--card); border: 1px solid var(--line); border-radius: 999px;
  padding: 8px 15px; font: 500 13px var(--f-ui); color: var(--ink-2); white-space: nowrap; }
.adm-chip:hover { color: var(--ink); }
.adm-chip.on { background: var(--ink); border-color: var(--ink); color: var(--page); font-weight: 600; }
.adm-chip-n { font: 500 12px var(--f-mono); color: var(--ink-4); }
.adm-chip.on .adm-chip-n { color: var(--page); opacity: .7; }

/* Tarjeta tabla (E5): banda 54, cabecera 42, filas 62, radio 22 */
.adm-tabla { flex: none; margin: 0 44px 44px; background: var(--surface); border: 1px solid var(--line); border-radius: 22px; overflow: hidden;
  display: flex; flex-direction: column; box-shadow: 0 1px 2px var(--sh-card-a), 0 14px 30px -22px var(--sh-card-b); }
.adm-banda { height: 54px; flex: none; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 0 24px;
  background: var(--bg); border-bottom: 1px solid var(--line); }
.adm-banda-t { font: 600 13px var(--f-ui); color: var(--ink); }
.adm-banda-v { font: 700 14px var(--f-ui); color: var(--ink); font-variant-numeric: tabular-nums; }
.adm-grid { display: grid; grid-template-columns: minmax(0, 1fr) 230px 200px 120px 150px 84px 20px; align-items: center; gap: 16px; padding: 0 24px; }
.adm-grid-reg { display: grid; grid-template-columns: 120px 170px minmax(0, 1fr) 170px minmax(0, 1.2fr) minmax(0, 1fr); align-items: center; gap: 16px; padding: 0 24px; }
.adm-cab { height: 42px; flex: none; border-bottom: 1px solid var(--line); font: 500 10.5px var(--f-mono); letter-spacing: .07em; text-transform: uppercase; color: var(--ink-4); }
.adm-cab .der { text-align: right; }
.adm-fila { min-height: 62px; flex: none; border-bottom: 1px solid var(--line); color: inherit; }
.adm-fila.adm-grid-reg { min-height: 58px; }
a.adm-fila:hover { background: var(--bg); color: inherit; }
.adm-celda { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.adm-celda.der { align-items: flex-end; text-align: right; }
.adm-t { font: 600 14.5px var(--f-ui); color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
a.adm-t-link:hover { color: var(--accent); }
.adm-m { font: 500 11px var(--f-mono); color: var(--ink-4); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.adm-mail { font: 500 12.5px var(--f-ui); color: var(--ink-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.adm-mail-2 { display: none; }
.adm-precio { font: 700 15px var(--f-ui); color: var(--ink); font-variant-numeric: tabular-nums; }
.adm-especial { color: var(--accent-ink); }
.adm-mes { font: 600 13.5px var(--f-ui); color: var(--ink); font-variant-numeric: tabular-nums; }
.adm-fecha { font: 500 12.5px var(--f-mono); color: var(--ink-3); white-space: nowrap; }
.adm-chev { display: flex; color: var(--ink-4); }
.adm-chev svg { width: 18px; height: 18px; }
.adm-accion { font: 600 13px var(--f-ui); color: var(--ink); }
.adm-grid-reg .adm-cambio, .adm-grid-reg .adm-motivo { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; }
.adm-pie { min-height: 60px; flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 24px; }
.adm-tabla .vacio { padding: 44px 10px; }
@media (max-width: 1180px) {
  .adm-grid { grid-template-columns: minmax(0, 1fr) 190px 120px 150px 20px; }
  .adm-c-dueno, .adm-c-alta { display: none !important; }
  .adm-mail-2 { display: inline; }
  .adm-buscar:not(.adm-buscar-cel) { width: 240px; }
  .adm-grid-reg { grid-template-columns: 96px 140px minmax(0, 1fr) 130px minmax(0, 1.2fr); }
  .adm-grid-reg > :last-child { display: none; }
}

/* Estado con marca (mismas formas que E5): círculo 8 px, triángulo y octógono de 10 px */
.adm-estado { display: inline-flex; align-items: center; gap: 8px; min-width: 0; max-width: 100%; font: 600 12.5px var(--f-ui); color: var(--ink-3); white-space: nowrap; }
.adm-estado > span { overflow: hidden; text-overflow: ellipsis; }
.adm-estado i { flex: none; width: 8px; height: 8px; border-radius: 999px; background: var(--ink-4); }
.adm-estado.ok { color: var(--ok-ink); }
.adm-estado.ok i { background: var(--ok); }
.adm-estado.bonif { color: var(--accent-ink); }
.adm-estado.bonif i { background: var(--accent); }
.adm-estado.warn { color: var(--warn-ink); }
.adm-estado.warn i { width: 10px; height: 10px; border-radius: 0; background: var(--warn); clip-path: polygon(50% 0, 100% 100%, 0 100%); }
.adm-estado.bad { color: var(--bad-ink); }
.adm-estado.bad i { width: 10px; height: 10px; border-radius: 0; background: var(--bad); clip-path: polygon(30% 0, 70% 0, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0 70%, 0 30%); }
.adm-estado.chica { gap: 6px; font: 500 11px var(--f-ui); }
.adm-estado.chica i { width: 7px; height: 7px; }
.adm-estado.chica.warn i, .adm-estado.chica.bad i { width: 8px; height: 8px; }

/* Celular (E5 lista): cabecera 46, buscador 46, chips con scroll propio, tarjetas de radio 18 */
.adm-cel { display: flex; flex-direction: column; min-height: 100dvh; padding-bottom: 100px; min-width: 0; }
.adm-cel-cab { height: 46px; flex: none; display: flex; align-items: center; gap: 10px; padding: 0 20px; min-width: 0; }
.adm-cel-tit { flex: 1; min-width: 0; font: 600 21px var(--f-num); color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.adm-cel-tit.chico { font-size: 18px; }
.adm-cel-cab .pill, .adm-cel-cab .chip { flex: none; max-width: 46%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; display: inline-block; }
.adm-volver { width: 36px; height: 36px; flex: none; border-radius: 999px; background: var(--surface); border: 1px solid var(--line); display: flex;
  align-items: center; justify-content: center; color: var(--ink-2); }
.adm-avatar { width: 34px; height: 34px; flex: none; border-radius: 999px; background: var(--accent-soft); border: 1px solid var(--accent-line); display: flex;
  align-items: center; justify-content: center; font: 600 11px var(--f-mono); color: var(--accent); }
.adm-cel-cuerpo { flex: 1; display: flex; flex-direction: column; gap: 12px; padding: 4px 20px 0; min-width: 0; }
.adm-chips-cel { flex-wrap: nowrap; gap: 7px; padding: 0 20px; margin: 0 -20px; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; }
.adm-chips-cel::-webkit-scrollbar { display: none; }
.adm-chips-cel .adm-chip { flex: none; scroll-snap-align: start; padding: 7px 13px; font-size: 12.5px; min-height: 36px; }
/* Área de toque de 44 px sin agrandar lo que se ve (chips de 36, volver de 36, avatar de 34, cerrar de 40) */
.adm-chips-cel .adm-chip, .adm-volver, .adm-avatar, .adm-hoja .x { position: relative; }
.adm-chips-cel .adm-chip::after, .adm-volver::after, .adm-avatar::after, .adm-hoja .x::after { content: ""; position: absolute; inset: -5px -2px; }
.adm-cel-links { display: flex; gap: 4px; margin: -6px 0 -6px -8px; }
.adm-cel-links .btn-link { min-height: 44px; display: inline-flex; align-items: center; }
.adm-rotulo { font: 500 11px var(--f-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--ink-4); }
.adm-rotulo a { text-transform: none; letter-spacing: 0; }
.adm-items { display: flex; flex-direction: column; gap: 9px; }
.adm-item { display: flex; align-items: center; gap: 12px; background: var(--card); border: 1px solid var(--line); border-radius: 18px; padding: 13px 15px; color: inherit; min-width: 0; }
.adm-item:hover { color: inherit; border-color: var(--line-2); }
.adm-ini { width: 34px; height: 34px; flex: none; border-radius: 11px; background: var(--bg); display: flex; align-items: center; justify-content: center;
  font: 600 11px var(--f-mono); color: var(--accent); }
.adm-item-c { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.adm-item-t { font: 600 14px var(--f-ui); color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.adm-item-s { font: 500 11.5px var(--f-mono); color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.adm-item-d { flex: none; max-width: 44%; display: flex; flex-direction: column; align-items: flex-end; gap: 4px; }
.adm-item-p { font: 700 14.5px var(--f-ui); color: var(--ink); font-variant-numeric: tabular-nums; }
.adm-mas { width: 100%; margin-top: 4px; }
.adm-reg-card { display: flex; flex-direction: column; gap: 5px; background: var(--card); border: 1px solid var(--line); border-radius: 18px; padding: 13px 15px; min-width: 0; }
.adm-reg-card .adm-reg-1 { justify-content: space-between; }
.adm-reg-card .adm-m { white-space: normal; overflow-wrap: anywhere; }

/* Ficha: escritorio minmax(0,1fr) 360px (E10); celular, una columna con "Acciones" segunda */
.adm-ficha { display: grid; grid-template-columns: minmax(0, 1fr) 360px; gap: 24px; padding: 0 44px 44px; align-items: start; }
.adm-col { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.adm-col-lado { position: sticky; top: 24px; display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.adm-card { padding: 18px 20px; gap: 0; min-width: 0; }
.adm-card .card-title { margin: 0 0 6px; }
.adm-card-cab { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 6px; }
.adm-card-cab .card-title { margin: 0; }
.adm-grande { margin-top: 2px; font: 600 24px/1.2 var(--f-num); letter-spacing: -.01em; color: var(--ink); }
.adm-grande-28 { margin: 6px 0 2px; font: 600 28px/1.15 var(--f-num); letter-spacing: -.02em; color: var(--ink); font-variant-numeric: tabular-nums; }
.adm-grande-28 span { font: 500 14px var(--f-ui); letter-spacing: 0; color: var(--ink-3); }
.adm-det { margin: 4px 0 10px; font: 500 12.5px/1.45 var(--f-ui); color: var(--ink-3); overflow-wrap: anywhere; }
.adm-warn { color: var(--warn-ink); }
.adm-kvs { display: flex; flex-direction: column; }
.adm-kv { min-height: 48px; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 8px 0; border-top: 1px solid var(--line); }
.adm-kv-col { align-items: flex-start; padding: 12px 0; }
.adm-k { flex: none; max-width: 46%; font: 500 13.5px var(--f-ui); color: var(--ink-3); }
.adm-v { min-width: 0; display: inline-flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 2px 6px; text-align: right;
  font: 600 14px/1.4 var(--f-ui); color: var(--ink); overflow-wrap: anywhere; }
.adm-cobros { display: flex; flex-direction: column; gap: 6px; font: 500 12px var(--f-mono); color: var(--ink-3); }
.adm-cobros > span { display: flex; justify-content: flex-end; gap: 12px; }
.adm-cobros b { font-weight: 600; color: var(--ink); }
.adm-cobros i { font-style: normal; }
.adm-link { display: inline-flex; align-items: center; min-height: 44px; padding: 0 8px; font: 600 13.5px var(--f-ui); color: var(--accent); }
.adm-botones { display: flex; flex-direction: column; gap: 10px; margin-top: 6px; }
.adm-b { height: 48px; width: 100%; }
.adm-b-cta { width: 100%; }
.adm-b-chico { height: 44px; padding: 0 16px; font-size: 14px; }
.adm-btn-peligro { height: 48px; width: 100%; border-radius: var(--r-btn); border: 1.5px solid var(--bad); background: var(--surface); color: var(--bad-ink);
  font: 600 14.5px var(--f-ui); cursor: pointer; }
.adm-btn-peligro:hover { background: var(--bad-soft); }
.adm-mp { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 4px 12px; padding: 12px 0 4px; border-top: 1px solid var(--line); }
.adm-mp-c { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.adm-mp-t { font: 600 14px var(--f-ui); color: var(--ink); }
.adm-mp-err { font: 500 11px/1.4 var(--f-mono); color: var(--bad-ink); overflow-wrap: anywhere; }
.adm-mp-b { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 0 4px; margin-left: -8px; }
.adm-us { display: flex; flex-direction: column; gap: 4px; padding: 12px 0 4px; border-top: 1px solid var(--line); min-width: 0; }
.adm-us-mail { font: 600 14px var(--f-ui); color: var(--ink); overflow-wrap: anywhere; }
.adm-us-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.adm-us-tags:empty { display: none; }
.adm-us .adm-m { white-space: normal; }
.adm-us .adm-det { margin: 2px 0 8px; }
.adm-us-b { display: flex; flex-wrap: wrap; gap: 0 4px; margin-left: -8px; }
.adm-reg-f { display: flex; flex-direction: column; gap: 4px; padding: 12px 0; border-top: 1px solid var(--line); min-width: 0; }
.adm-reg-1 { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px 10px; }
.adm-reg-1 b { font: 600 13.5px var(--f-ui); color: var(--ink); }
.adm-cambio { font: 500 12px/1.45 var(--f-mono); color: var(--ink-2); overflow-wrap: anywhere; }
.adm-motivo { font: 500 13px/1.45 var(--f-ui); color: var(--ink-3); overflow-wrap: anywhere; }

/* Plan general: una columna de tarjetas de hasta 760 px */
.adm-plan .adm-card { width: 100%; max-width: 760px; }
.adm-plan > .adm-det { max-width: 760px; }
.adm-texto { margin: 2px 0 8px; font: 500 13.5px/1.5 var(--f-ui); color: var(--ink-2); }
.adm-sub { margin: 6px 0 4px; font: 500 13.5px var(--f-ui); color: var(--ink-2); }
.adm-sub b { color: var(--ink); }
.adm-imp { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-direction: column; }
.adm-imp li { min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: 1px solid var(--line); font: 600 13.5px var(--f-ui); min-width: 0; }
.adm-imp a { color: var(--ink); min-width: 0; min-height: 44px; display: flex; align-items: center; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.adm-imp a:hover { color: var(--accent); }
.adm-imp .adm-m { flex: none; }
.adm-fila-b { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; margin-top: 8px; }
.adm-fila-b .adm-b-cta, .adm-fila-b .adm-b { max-width: 320px; }

/* Diálogos: hoja inferior en el celular (como .hj), centrado de 480 px en escritorio */
.adm-scrim { z-index: 50; }
.adm-hoja { position: fixed; z-index: 51; left: 0; right: 0; bottom: 0; max-height: calc(100dvh - 24px); display: flex; flex-direction: column;
  background: var(--surface); border-radius: 28px 28px 0 0; box-shadow: 0 -10px 34px -18px var(--sh-g); padding-bottom: env(safe-area-inset-bottom);
  transform: translateY(105%); transition: transform .26s cubic-bezier(.2, .8, .2, 1); }
.adm-hoja.on { transform: none; }
.adm-hoja[hidden], .adm-hoja [hidden] { display: none !important; }
.adm-manija { flex: none; align-self: center; width: 38px; height: 4px; margin-top: 9px; border-radius: 2px; background: var(--line-2); }
.adm-hoja-cab { height: 48px; flex: none; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 0 20px; }
.adm-hoja-t { margin: 0; min-width: 0; font: 600 19px var(--f-num); color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.adm-hoja .x { flex: none; width: 40px; height: 40px; }
.adm-hoja-cuerpo { flex: 1; min-height: 0; overflow-y: auto; display: flex; flex-direction: column; gap: 14px; padding: 4px 20px 20px; }
.adm-hoja .chips button { height: 44px; }
.adm-nota { margin: 0; padding: 12px 14px; background: var(--bg); border: 1px solid var(--line); border-radius: 16px; font: 500 13.5px/1.45 var(--f-ui); color: var(--ink-2); }
.adm-nota:empty { display: none; }
.adm-nota-warn { background: var(--warn-soft); border-color: transparent; color: var(--warn-ink); }
.adm-lista { list-style: none; display: flex; flex-direction: column; gap: 6px; }
.adm-lista li { position: relative; padding-left: 14px; }
.adm-lista li::before { content: ""; position: absolute; left: 0; top: .6em; width: 5px; height: 5px; border-radius: 999px; background: var(--ink-4); }
textarea.adm-motivo-in { height: auto; min-height: 88px; padding: 11px 14px; resize: vertical; font: 500 14.5px/1.45 var(--f-ui); }
.adm-cont { align-self: flex-end; font: 500 11px var(--f-mono); color: var(--ink-4); }
.adm-check { display: flex; align-items: center; gap: 10px; min-height: 44px; font: 600 14px var(--f-ui); color: var(--ink); cursor: pointer; }
.adm-check input { flex: none; width: 20px; height: 20px; margin: 0; accent-color: var(--accent); }
.adm-check-warn { color: var(--warn-ink); }
.adm-hoja .btn-cta { flex: none; }
.btn-cta.adm-cta-peligro { background: var(--bad); color: #FFFFFF; box-shadow: none; }
.adm-hoy { margin: 0; font: 500 13px var(--f-ui); color: var(--ink-3); }
.adm-pesos { display: flex; align-items: center; gap: 8px; }
.adm-pesos > span { font: 600 18px var(--f-mono); color: var(--ink-3); }
.adm-hoja .btn-link.adm-link { align-self: flex-start; margin: -8px 0 -8px -8px; }
.adm-opciones { display: flex; flex-direction: column; gap: 10px; }
.adm-opcion { position: relative; display: flex; flex-direction: column; gap: 4px; padding: 14px 16px 14px 46px; border: 1.5px solid var(--line); border-radius: 16px;
  background: var(--surface); cursor: pointer; }
.adm-opcion input { position: absolute; left: 16px; top: 15px; width: 18px; height: 18px; margin: 0; accent-color: var(--accent); }
.adm-opcion:has(input:checked) { border-color: var(--accent-line); background: var(--accent-soft); }
.adm-op-t { font: 600 14.5px var(--f-ui); color: var(--ink); }
.adm-op-s { font: 500 13px/1.45 var(--f-ui); color: var(--ink-2); overflow-wrap: anywhere; }
.adm-res { display: flex; flex-direction: column; gap: 12px; padding: 4px 20px 20px; }
.adm-clave { padding: 14px; border-radius: 14px; background: var(--bg); font: 600 24px var(--f-mono); letter-spacing: .06em; color: var(--ink); text-align: center;
  user-select: all; overflow-wrap: anywhere; }

/* /admin/entrar */
.adm-bajada { margin: -4px 0 0; font: 500 14px/1.5 var(--f-ui); color: var(--ink-2); }

@media (min-width: 900px) {
  .adm-hoja { left: 50%; right: auto; top: 50%; bottom: auto; width: 480px; max-height: calc(100dvh - 48px); padding: 22px 24px; border-radius: 24px;
    box-shadow: 0 24px 60px -24px var(--sh-g); opacity: 0; transform: translate(-50%, -47%); transition: transform .2s ease-out, opacity .2s ease-out; }
  .adm-hoja.on { opacity: 1; transform: translate(-50%, -50%); }
  .adm-manija { display: none; }
  .adm-hoja-cab { height: auto; padding: 0 0 14px; }
  .adm-hoja-cuerpo, .adm-res { padding: 0; }
  .adm-plan { gap: 16px; }
}
@media (max-width: 899px) {
  .adm-ficha { display: flex; flex-direction: column; align-items: stretch; gap: 12px; padding: 4px 20px 108px; }
  .adm-col, .adm-col-lado { display: contents; }
  .adm-ficha .adm-card { order: 3; }
  .adm-ficha .adm-card-plan { order: 1; }
  .adm-ficha .adm-lado { order: 2; }
  .adm-card { padding: 16px 16px; }
  .adm-grande { font-size: 22px; }
  .adm-plan { padding-top: 4px; }
  /* /admin/plan › Acciones en Mercado Pago: el nombre de la cuenta es un enlace; en el celular, 44 px para tocarlo */
  a.adm-mp-t { display: inline-flex; align-items: center; align-self: flex-start; min-height: 44px; margin: -12px 0 -10px; }
}
