/* ITADI · el estilo propio de la app, sobre Bootstrap 5.3 (decidido por Pablo el 2026-10-15).
   La identidad del logotipo, oliva y oro, con los tonos ajustados para que se lean (WCAG 2.2 AA: 4,5:1 los textos,
   3:1 los bordes de los campos), fondo claro y modo oscuro. Todos los colores salen de las variables de aquí:
   Bootstrap las toma por sus --bs-*, y los componentes propios, directamente.
   Disposición: móvil por debajo de 768 px (barra inferior), tablet hasta 1199 (raíl) y ordenador desde 1200
   (barra lateral). La navegación la pinta templates/base.html con app/interfaz.py. */

@font-face {
  font-family: "Barlow Semi Condensed";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../vendor/barlow-semi-condensed-5.3.0/barlow-semi-condensed-latin-600-normal.woff2") format("woff2");
}
@font-face {
  font-family: "Barlow Semi Condensed";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../vendor/barlow-semi-condensed-5.3.0/barlow-semi-condensed-latin-700-normal.woff2") format("woff2");
}

/* ---- Colores: claro --------------------------------------------------------------------------------------- */
:root,
[data-bs-theme="light"] {
  --itadi-oliva: #77703f;          /* botones; texto blanco encima 5,0:1 */
  --itadi-oliva-osc: #5f5a31;      /* enlaces y botón pulsado; 6,4:1 sobre el fondo */
  --itadi-oliva-suave: #efedde;    /* lo activo, los chips */
  --itadi-sobre-oliva: #ffffff;
  --itadi-oro: #c6ba1f;            /* acento, siempre con texto oscuro (8,2:1) */
  --itadi-carbon: #23241f;         /* menú lateral y cabecera del móvil */
  --itadi-carbon-2: #31322b;
  --itadi-menu-texto: #c9c8bd;     /* 9,3:1 sobre el carbón */
  --itadi-fondo: #f5f4ee;
  --itadi-tarjeta: #ffffff;
  --itadi-tarjeta-2: #fbfaf6;
  --itadi-tinta: #1f2019;          /* 14,9:1 sobre el fondo */
  --itadi-tenue: #5d5e55;          /* 6,0:1 sobre el fondo */
  --itadi-linea: #e3e1d6;
  --itadi-borde-campo: #8c8b7e;    /* 3,3:1 sobre blanco */
  --itadi-foco: rgba(119, 112, 63, .35);
  --itadi-sombra: 0 1px 2px rgba(30, 30, 20, .06), 0 6px 18px rgba(30, 30, 20, .07);
  --itadi-mal: #a3301e;  --itadi-mal-f: #fbe7e2;
  --itadi-bien: #1f6b3e; --itadi-bien-f: #e2f3e8;
  --itadi-ojo: #7a4b00;  --itadi-ojo-f: #fdf1d8;
  --itadi-info: #1d4f9c; --itadi-info-f: #e3edfc;
  /* Estados de una solicitud (app/estados.py) y prioridad (app/prioridades.py): siempre lo mismo en toda la app */
  --itadi-nueva: #2f4a66;     --itadi-nueva-f: #e8edf3;
  --itadi-programada: #1d4f9c; --itadi-programada-f: #e3edfc;
  --itadi-espera: #7a4b00;    --itadi-espera-f: #fdf1d8;
  --itadi-reparada: #1f6b3e;  --itadi-reparada-f: #e2f3e8;
  --itadi-facturada: #4f3a7a; --itadi-facturada-f: #ece6f5;
  --itadi-cancelada: #8f2d26; --itadi-cancelada-f: #f8e3e1;
  --itadi-urgente: #ffffff;   --itadi-urgente-f: #c2361f;
  --itadi-cuando: #4a4b44;    --itadi-cuando-f: #ecebe5;

  --itadi-f-texto: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --itadi-f-titular: "Barlow Semi Condensed", "Arial Narrow", "Roboto Condensed", system-ui, sans-serif;
  --itadi-radio: .75rem;
  --itadi-lateral: 15.5rem;
  --itadi-rail: 5.75rem;
  --itadi-barra: 4.25rem;

  --bs-body-font-family: var(--itadi-f-texto);
  --bs-body-bg: var(--itadi-fondo);
  --bs-body-color: var(--itadi-tinta);
  --bs-emphasis-color: var(--itadi-tinta);
  --bs-secondary-color: var(--itadi-tenue);
  --bs-secondary-bg: var(--itadi-tarjeta-2);
  --bs-tertiary-bg: var(--itadi-tarjeta-2);
  --bs-border-color: var(--itadi-linea);
  --bs-border-radius: .625rem;
  --bs-border-radius-sm: .5rem;
  --bs-border-radius-lg: .875rem;
  --bs-link-color: var(--itadi-oliva-osc);
  --bs-link-color-rgb: 95, 90, 49;
  --bs-link-hover-color: var(--itadi-tinta);
  --bs-link-hover-color-rgb: 31, 32, 25;
  --bs-primary: #77703f;
  --bs-primary-rgb: 119, 112, 63;
  --bs-focus-ring-color: var(--itadi-foco);
  color-scheme: light;
}

/* ---- Colores: oscuro (lo elige cada uno en su menú; de entrada, el de su dispositivo) ---------------------- */
[data-bs-theme="dark"] {
  --itadi-oliva: #c2b96a;          /* en oscuro, el botón es claro y su texto oscuro: 9,0:1 */
  --itadi-oliva-osc: #d8cf86;      /* enlaces: 11,4:1 sobre el fondo */
  --itadi-oliva-suave: #2e2d1e;
  --itadi-sobre-oliva: #151612;
  --itadi-oro: #d8cc4a;
  --itadi-carbon: #0f100c;
  --itadi-carbon-2: #1c1d18;
  --itadi-menu-texto: #c9c8bd;
  --itadi-fondo: #151612;
  --itadi-tarjeta: #1e1f1a;
  --itadi-tarjeta-2: #24251f;
  --itadi-tinta: #ecebe2;
  --itadi-tenue: #b2b1a5;
  --itadi-linea: #36372f;
  --itadi-borde-campo: #707167;
  --itadi-foco: rgba(216, 207, 134, .35);
  --itadi-sombra: 0 1px 2px rgba(0, 0, 0, .35), 0 6px 18px rgba(0, 0, 0, .3);
  --itadi-mal: #f29a88;  --itadi-mal-f: #3a1e18;
  --itadi-bien: #93d4ab; --itadi-bien-f: #17301f;
  --itadi-ojo: #f2c46d;  --itadi-ojo-f: #3a2d10;
  --itadi-info: #a9c8f5; --itadi-info-f: #1b2c47;
  --itadi-nueva: #b9cde0;     --itadi-nueva-f: #22303d;
  --itadi-programada: #a9c8f5; --itadi-programada-f: #1b2c47;
  --itadi-espera: #f2c46d;    --itadi-espera-f: #3a2d10;
  --itadi-reparada: #9fdcb5;  --itadi-reparada-f: #173322;
  --itadi-facturada: #cdb8f0; --itadi-facturada-f: #2e2442;
  --itadi-cancelada: #f0a59a; --itadi-cancelada-f: #3d1d19;
  --itadi-urgente: #ffffff;   --itadi-urgente-f: #c2361f;
  --itadi-cuando: #d0cfc4;    --itadi-cuando-f: #2f302a;

  --bs-body-bg: var(--itadi-fondo);
  --bs-body-color: var(--itadi-tinta);
  --bs-emphasis-color: var(--itadi-tinta);
  --bs-secondary-color: var(--itadi-tenue);
  --bs-secondary-bg: var(--itadi-tarjeta-2);
  --bs-tertiary-bg: var(--itadi-tarjeta-2);
  --bs-border-color: var(--itadi-linea);
  --bs-link-color: var(--itadi-oliva-osc);
  --bs-link-color-rgb: 216, 207, 134;
  --bs-link-hover-color: var(--itadi-tinta);
  --bs-link-hover-color-rgb: 236, 235, 226;
  --bs-primary: #c2b96a;
  --bs-primary-rgb: 194, 185, 106;
  color-scheme: dark;
}

/* ---- Base ------------------------------------------------------------------------------------------------- */
html { -webkit-text-size-adjust: 100%; }
body { background: var(--itadi-fondo); color: var(--itadi-tinta); font-size: 1rem; line-height: 1.5; }
h1, h2, h3, .h1, .h2, .h3 { font-family: var(--itadi-f-titular); font-weight: 700; line-height: 1.1; text-wrap: balance; }
h4, h5, h6, .h4, .h5, .h6 { font-family: var(--itadi-f-titular); font-weight: 600; line-height: 1.2; }
h1, .h1 { font-size: clamp(1.75rem, 1.4rem + 1.4vw, 2.25rem); margin-bottom: .75rem; }
h2, .h2 { font-size: clamp(1.4rem, 1.2rem + .8vw, 1.75rem); }
h3, .h3 { font-size: 1.3rem; }
a { text-underline-offset: .18em; }
.text-muted { color: var(--itadi-tenue) !important; }
:focus-visible { outline: 2px solid var(--itadi-oliva-osc); outline-offset: 2px; }
.ic { width: 1.15em; height: 1.15em; fill: currentColor; flex: none; vertical-align: -.2em; }
.ic.ic-lg { width: 1.45em; height: 1.45em; }
.num, .tabular { font-variant-numeric: tabular-nums; }
.saltar { position: absolute; left: .5rem; top: -3rem; z-index: 2000; padding: .5rem .9rem; border-radius: .5rem;
          background: var(--itadi-oro); color: #1f2019; font-weight: 600; }
.saltar:focus { top: .5rem; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; animation: none !important; } }

/* ---- El armazón: cabecera del móvil, barra lateral (raíl en la tablet) y barra inferior --------------------- */
.cabecera-movil {
  position: sticky; top: 0; z-index: 1030;
  display: flex; align-items: center; justify-content: space-between; gap: .75rem;
  padding: calc(.5rem + env(safe-area-inset-top, 0px)) 1rem .5rem;
  background: var(--itadi-carbon); color: #fff;
}
.cabecera-movil img { height: 2rem; width: auto; }
.persona-boton {
  display: inline-grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: 50%;
  border: 0; background: transparent; padding: 0;
}
.avatar {
  display: inline-grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 50%; flex: none;
  background: var(--itadi-oro); color: #1f2019; font: 700 .8rem/1 var(--itadi-f-texto); letter-spacing: .02em;
}

.app { min-height: 100vh; min-height: 100dvh; }
.lateral { display: none; }
.contenido {
  width: 100%; max-width: 92rem; margin-inline: auto; min-width: 0;
  padding: 1rem 1rem calc(var(--itadi-barra) + 1.5rem + env(safe-area-inset-bottom, 0px));
}
.contenido-solo { padding-bottom: 2rem; }

.barra-inferior {
  position: fixed; left: 0; right: 0; bottom: 0; z-index: 1030;
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); align-items: stretch;
  min-height: var(--itadi-barra);
  padding: .3rem .25rem calc(.3rem + env(safe-area-inset-bottom, 0px));
  background: var(--itadi-tarjeta); border-top: 1px solid var(--itadi-linea);
  box-shadow: 0 -4px 16px rgba(0, 0, 0, .06);
}
.barra-inferior a, .barra-inferior button {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .2rem;
  min-height: 3.25rem; padding: .2rem .1rem; border: 0; background: none;
  color: var(--itadi-tenue); font: 500 .72rem/1.15 var(--itadi-f-texto); text-align: center; text-decoration: none;
}
.barra-inferior .ic { width: 1.35rem; height: 1.35rem; padding: .25rem .9rem; box-sizing: content-box; border-radius: 999px; }
.barra-inferior .activo { color: var(--itadi-oliva-osc); font-weight: 700; }
.barra-inferior .activo .ic { background: var(--itadi-oliva-suave); }
.barra-inferior .central { color: var(--itadi-oliva-osc); font-weight: 700; }
.barra-inferior .central .ic {
  width: 1.5rem; height: 1.5rem; padding: .7rem; margin-top: -1.35rem; border-radius: 50%;
  background: var(--itadi-oliva); color: var(--itadi-sobre-oliva); box-shadow: 0 4px 12px rgba(60, 55, 20, .35);
}

/* El menú completo en una hoja que sube desde abajo (móvil y tablet) */
.hoja-mas.offcanvas-bottom { height: auto; max-height: 88vh; max-height: 88dvh; border-radius: 1.25rem 1.25rem 0 0;
                             background: var(--itadi-tarjeta); color: var(--itadi-tinta); }
.hoja-mas .offcanvas-body { padding-bottom: calc(1.25rem + env(safe-area-inset-bottom, 0px)); }
.hoja-asa { width: 2.5rem; height: .3rem; border-radius: 1rem; background: var(--itadi-linea); margin: .6rem auto 0; }
.menu-grupo { font: 600 .72rem/1 var(--itadi-f-texto); letter-spacing: .1em; text-transform: uppercase;
              color: var(--itadi-tenue); margin: 1rem .25rem .4rem; }
.menu-lista { list-style: none; margin: 0; padding: 0; display: grid; gap: .15rem; }
.menu-lista a, .menu-lista button {
  display: flex; align-items: center; gap: .85rem; width: 100%; min-height: 3rem; padding: .55rem .75rem;
  border: 0; border-radius: .75rem; background: none; color: var(--itadi-tinta); text-align: left; text-decoration: none;
}
.menu-lista a:hover, .menu-lista button:hover { background: var(--itadi-tarjeta-2); }
.menu-lista .activo { background: var(--itadi-oliva-suave); color: var(--itadi-oliva-osc); font-weight: 600; }
.menu-lista .ic { width: 1.25rem; height: 1.25rem; color: var(--itadi-tenue); }
.menu-lista .activo .ic { color: var(--itadi-oliva-osc); }

/* El tema: el del dispositivo, claro u oscuro */
.tema { display: grid; grid-template-columns: repeat(3, 1fr); gap: .25rem; padding: .25rem; border-radius: .75rem;
        background: var(--itadi-tarjeta-2); border: 1px solid var(--itadi-linea); }
.tema button { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .2rem;
               min-height: 3.25rem; padding: .3rem .2rem; border: 0; border-radius: .55rem; background: none;
               color: var(--itadi-tenue); font-size: .78rem; line-height: 1.1; }
.tema button[aria-pressed="true"] { background: var(--itadi-tarjeta); color: var(--itadi-tinta); font-weight: 600;
                                     box-shadow: var(--itadi-sombra); }
.persona-ficha { display: flex; align-items: center; gap: .75rem; padding: .25rem .25rem .75rem; }
.persona-ficha small { display: block; color: var(--itadi-tenue); }

@media (min-width: 768px) {
  .cabecera-movil, .barra-inferior { display: none; }
  .app { display: grid; grid-template-columns: var(--itadi-rail) minmax(0, 1fr); }
  .lateral {
    display: flex; flex-direction: column; gap: .25rem;
    position: sticky; top: 0; height: 100vh; height: 100dvh; overflow-y: auto;
    padding: .75rem .5rem; background: var(--itadi-carbon); color: var(--itadi-menu-texto);
  }
  .lateral-marca { display: grid; place-items: center; padding: .25rem 0 .75rem; }
  .lateral-marca img { height: 2.4rem; width: auto; }
  .lateral-rail { list-style: none; margin: 0; padding: 0; display: grid; gap: .2rem; }
  .lateral-rail a, .lateral-rail button {
    display: flex; flex-direction: column; align-items: center; gap: .25rem; width: 100%;
    padding: .55rem .2rem; border: 0; border-radius: .75rem; background: none;
    color: var(--itadi-menu-texto); font: 500 .7rem/1.15 var(--itadi-f-texto); text-align: center; text-decoration: none;
    overflow-wrap: anywhere;
  }
  .lateral-rail .ic { width: 1.3rem; height: 1.3rem; }
  .lateral-rail a:hover, .lateral-rail button:hover { background: var(--itadi-carbon-2); color: #fff; }
  .lateral-rail .activo { background: rgba(255, 255, 255, .1); color: #fff; font-weight: 700; }
  .lateral-rail .activo .ic { color: var(--itadi-oro); }
  .lateral-completo { display: none; }
  .lateral-persona { margin-top: auto; padding-top: .5rem; border-top: 1px solid rgba(255, 255, 255, .1); }
  .lateral-persona > button { display: flex; align-items: center; justify-content: center; gap: .6rem; width: 100%;
                              padding: .5rem .25rem; border: 0; border-radius: .75rem; background: none; color: #fff; text-align: left; }
  .lateral-persona > button:hover { background: var(--itadi-carbon-2); }
  .lateral-persona .persona-nombre { display: none; }
  .contenido { padding: 1.5rem 1.75rem 3rem; }
}

@media (min-width: 1200px) {
  .app { grid-template-columns: var(--itadi-lateral) minmax(0, 1fr); }
  .lateral { padding: 1rem .75rem; }
  .lateral-marca { justify-items: start; padding: .25rem .6rem 1rem; }
  .lateral-marca img { height: 2.6rem; }
  .lateral-rail { display: none; }
  .lateral-completo { display: block; }
  .lateral-completo .menu-grupo { color: #a3a296; margin: 1.1rem .6rem .35rem; }
  .lateral-completo .menu-lista a {
    min-height: 2.5rem; padding: .45rem .6rem; color: var(--itadi-menu-texto); font-size: .94rem;
  }
  .lateral-completo .menu-lista a:hover { background: var(--itadi-carbon-2); color: #fff; }
  .lateral-completo .menu-lista .ic { color: var(--itadi-menu-texto); width: 1.15rem; height: 1.15rem; }
  .lateral-completo .menu-lista .activo { background: rgba(255, 255, 255, .1); color: #fff; }
  .lateral-completo .menu-lista .activo .ic { color: var(--itadi-oro); }
  .lateral-persona > button { justify-content: flex-start; padding: .55rem .6rem; }
  .lateral-persona .persona-nombre { display: block; min-width: 0; font-size: .9rem; line-height: 1.25; }
  .lateral-persona .persona-nombre small { display: block; color: var(--itadi-menu-texto); }
  .contenido { padding: 1.75rem 2.5rem 3rem; }
}

/* El menú de la persona: Avisos por correo, Contacto, el tema y Salir */
.menu-persona { min-width: 17rem; padding: .5rem; border-radius: 1rem; border: 1px solid var(--itadi-linea);
                background: var(--itadi-tarjeta); box-shadow: var(--itadi-sombra); }

/* ---- Avisos flotantes (los mensajes de la app) -------------------------------------------------------------- */
.avisos-flotantes { position: fixed; z-index: 1090; top: calc(4rem + env(safe-area-inset-top, 0px)); left: .75rem; right: .75rem;
                    display: grid; gap: .5rem; pointer-events: none; }
@media (min-width: 768px) { .avisos-flotantes { top: 1rem; left: auto; right: 1.25rem; width: 24rem; } }
.aviso {
  pointer-events: auto; display: flex; align-items: flex-start; gap: .65rem; padding: .8rem .9rem;
  border-radius: .9rem; border: 1px solid var(--itadi-linea); background: var(--itadi-tarjeta); color: var(--itadi-tinta);
  box-shadow: var(--itadi-sombra); font-size: .95rem;
}
.aviso .ic { width: 1.25rem; height: 1.25rem; margin-top: .05rem; }
.aviso-texto { flex: 1; min-width: 0; }
.aviso .btn-close { flex: none; width: 1.75rem; height: 1.75rem; padding: 0; margin: -.2rem -.3rem 0 0; }
.aviso-bien { border-color: transparent; background: var(--itadi-bien-f); color: var(--itadi-bien); }
.aviso-mal { border-color: transparent; background: var(--itadi-mal-f); color: var(--itadi-mal); }
.aviso-ojo { border-color: transparent; background: var(--itadi-ojo-f); color: var(--itadi-ojo); }
.aviso-info { border-color: transparent; background: var(--itadi-info-f); color: var(--itadi-info); }
.aviso.oculto { opacity: 0; transform: translateY(-.5rem); transition: opacity .2s, transform .2s; }

/* ---- Pastillas: estado, prioridad y presupuesto ----------------------------------------------------------- */
.badge { --bs-badge-font-weight: 600; --bs-badge-padding-x: .6em; --bs-badge-padding-y: .32em;
         border-radius: 999px; font-size: .78em; letter-spacing: .01em; }
.estado-nueva { color: var(--itadi-nueva) !important; background: var(--itadi-nueva-f) !important; }
.estado-programada { color: var(--itadi-programada) !important; background: var(--itadi-programada-f) !important; }
.estado-espera { color: var(--itadi-espera) !important; background: var(--itadi-espera-f) !important; }
.estado-reparada { color: var(--itadi-reparada) !important; background: var(--itadi-reparada-f) !important; }
.estado-facturada { color: var(--itadi-facturada) !important; background: var(--itadi-facturada-f) !important; }
.estado-cancelada { color: var(--itadi-cancelada) !important; background: var(--itadi-cancelada-f) !important; }
.prioridad-urgente { color: var(--itadi-urgente) !important; background: var(--itadi-urgente-f) !important; }
.prioridad-semana { color: var(--itadi-espera) !important; background: var(--itadi-espera-f) !important; }
.prioridad-cuando { color: var(--itadi-cuando) !important; background: var(--itadi-cuando-f) !important; }
.presupuesto-borrador { color: var(--itadi-cuando) !important; background: var(--itadi-cuando-f) !important; }
.presupuesto-enviado { color: var(--itadi-programada) !important; background: var(--itadi-programada-f) !important; }
.presupuesto-aceptado { color: var(--itadi-reparada) !important; background: var(--itadi-reparada-f) !important; }
.presupuesto-rechazado { color: var(--itadi-cancelada) !important; background: var(--itadi-cancelada-f) !important; }

/* ---- Botones ----------------------------------------------------------------------------------------------- */
.btn { --bs-btn-font-weight: 600; --bs-btn-border-radius: .65rem; --bs-btn-focus-box-shadow: 0 0 0 .25rem var(--itadi-foco); }
.btn-primary, .btn-success {
  --bs-btn-color: var(--itadi-sobre-oliva); --bs-btn-bg: var(--itadi-oliva); --bs-btn-border-color: var(--itadi-oliva);
  --bs-btn-hover-color: var(--itadi-sobre-oliva); --bs-btn-hover-bg: var(--itadi-oliva-osc); --bs-btn-hover-border-color: var(--itadi-oliva-osc);
  --bs-btn-active-color: var(--itadi-sobre-oliva); --bs-btn-active-bg: var(--itadi-oliva-osc); --bs-btn-active-border-color: var(--itadi-oliva-osc);
  --bs-btn-disabled-color: var(--itadi-sobre-oliva); --bs-btn-disabled-bg: var(--itadi-oliva); --bs-btn-disabled-border-color: var(--itadi-oliva);
}
.btn-dark, .btn-secondary {
  --bs-btn-color: #fff; --bs-btn-bg: var(--itadi-carbon); --bs-btn-border-color: var(--itadi-carbon);
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: var(--itadi-carbon-2); --bs-btn-hover-border-color: var(--itadi-carbon-2);
  --bs-btn-active-color: #fff; --bs-btn-active-bg: var(--itadi-carbon-2); --bs-btn-active-border-color: var(--itadi-carbon-2);
}
[data-bs-theme="dark"] .btn-dark, [data-bs-theme="dark"] .btn-secondary {
  --bs-btn-bg: var(--itadi-tarjeta-2); --bs-btn-border-color: var(--itadi-linea);
  --bs-btn-hover-bg: var(--itadi-linea); --bs-btn-active-bg: var(--itadi-linea);
}
.btn-outline-primary, .btn-outline-secondary, .btn-outline-dark, .btn-light {
  --bs-btn-color: var(--itadi-tinta); --bs-btn-bg: var(--itadi-tarjeta); --bs-btn-border-color: var(--itadi-borde-campo);
  --bs-btn-hover-color: var(--itadi-tinta); --bs-btn-hover-bg: var(--itadi-tarjeta-2); --bs-btn-hover-border-color: var(--itadi-tinta);
  --bs-btn-active-color: var(--itadi-tinta); --bs-btn-active-bg: var(--itadi-oliva-suave); --bs-btn-active-border-color: var(--itadi-tinta);
}
.btn-danger {
  --bs-btn-bg: #a3301e; --bs-btn-border-color: #a3301e; --bs-btn-hover-bg: #862716; --bs-btn-hover-border-color: #862716;
  --bs-btn-active-bg: #862716; --bs-btn-active-border-color: #862716;
}
.btn-outline-danger {
  --bs-btn-color: var(--itadi-mal); --bs-btn-bg: var(--itadi-tarjeta); --bs-btn-border-color: var(--itadi-mal);
  --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #a3301e; --bs-btn-hover-border-color: #a3301e;
  --bs-btn-active-color: #fff; --bs-btn-active-bg: #862716; --bs-btn-active-border-color: #862716;
}
.btn-warning {
  --bs-btn-color: #1f2019; --bs-btn-bg: var(--itadi-oro); --bs-btn-border-color: var(--itadi-oro);
  --bs-btn-hover-color: #1f2019; --bs-btn-hover-bg: #b3a81b; --bs-btn-hover-border-color: #b3a81b;
}
.btn-link { --bs-btn-color: var(--itadi-oliva-osc); --bs-btn-hover-color: var(--itadi-tinta); font-weight: 500; }
@media (pointer: coarse) {
  .btn { min-height: 2.75rem; display: inline-flex; align-items: center; justify-content: center; gap: .35rem; }
  .btn-sm { min-height: 2.5rem; }
}

/* ---- Formularios ------------------------------------------------------------------------------------------- */
.form-control, .form-select { background-color: var(--itadi-tarjeta); border-color: var(--itadi-borde-campo); color: var(--itadi-tinta); }
.form-control::placeholder { color: var(--itadi-tenue); opacity: .85; }
.form-control:focus, .form-select:focus, .form-check-input:focus {
  border-color: var(--itadi-oliva); box-shadow: 0 0 0 .25rem var(--itadi-foco);
}
.form-check-input { border-color: var(--itadi-borde-campo); }
.form-check-input:checked { background-color: var(--itadi-oliva); border-color: var(--itadi-oliva); }
.form-label { font-weight: 600; margin-bottom: .35rem; }
.form-text { color: var(--itadi-tenue); }
.input-group-text { background: var(--itadi-tarjeta-2); border-color: var(--itadi-borde-campo); color: var(--itadi-tenue); }
/* En el móvil, 16 px: con menos, el iPhone amplía la página al tocar el campo. Y altos para el dedo */
@media (max-width: 767.98px) {
  .form-control, .form-select, .form-control-sm, .form-select-sm, .input-group-text { font-size: 1rem; }
}
@media (pointer: coarse) {
  .form-control:not(textarea), .form-select { min-height: 2.75rem; }
  .form-check-input { width: 1.3em; height: 1.3em; margin-top: .1em; }
}

/* ---- Tarjetas, tablas y avisos de Bootstrap ----------------------------------------------------------------- */
.card { --bs-card-bg: var(--itadi-tarjeta); --bs-card-border-color: var(--itadi-linea); --bs-card-border-radius: var(--itadi-radio);
        --bs-card-inner-border-radius: calc(var(--itadi-radio) - 1px); }
.table { --bs-table-bg: var(--itadi-tarjeta); --bs-table-color: var(--itadi-tinta); --bs-table-border-color: var(--itadi-linea);
         --bs-table-striped-bg: var(--itadi-tarjeta-2); --bs-table-striped-color: var(--itadi-tinta);
         --bs-table-hover-bg: var(--itadi-oliva-suave); --bs-table-hover-color: var(--itadi-tinta); vertical-align: middle; }
.table > thead > tr > th { font-size: .74rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase;
                            color: var(--itadi-tenue); background: var(--itadi-tarjeta-2); white-space: nowrap; }
.table-dark, .table > thead.table-dark > tr > th {
  --bs-table-bg: var(--itadi-carbon); --bs-table-color: #fff; --bs-table-border-color: var(--itadi-carbon-2);
  color: #fff; background: var(--itadi-carbon);
}
/* Las tablas que aún no están en su caja (la pone static/js/itadi.js): se desplazan dentro, no la página */
.tabla-caja, .table-responsive { border-radius: var(--itadi-radio); border: 1px solid var(--itadi-linea); background: var(--itadi-tarjeta);
                                 margin-bottom: 1rem; }
.tabla-caja > .table, .table-responsive > .table { margin-bottom: 0; }
/* Las tablas de una hoja (factura, presupuesto) no van en caja: sólo se desplazan si no caben */
.hoja .table-responsive { border: 0; border-radius: 0; background: none; }
.alert { --bs-alert-border-radius: var(--itadi-radio); }
.alert-info { --bs-alert-color: var(--itadi-info); --bs-alert-bg: var(--itadi-info-f); --bs-alert-border-color: transparent; }
.alert-success { --bs-alert-color: var(--itadi-bien); --bs-alert-bg: var(--itadi-bien-f); --bs-alert-border-color: transparent; }
.alert-warning { --bs-alert-color: var(--itadi-ojo); --bs-alert-bg: var(--itadi-ojo-f); --bs-alert-border-color: transparent; }
.alert-danger { --bs-alert-color: var(--itadi-mal); --bs-alert-bg: var(--itadi-mal-f); --bs-alert-border-color: transparent; }
.alert-light, .alert-secondary { --bs-alert-color: var(--itadi-tinta); --bs-alert-bg: var(--itadi-tarjeta); --bs-alert-border-color: var(--itadi-linea); }
.pagination { --bs-pagination-color: var(--itadi-oliva-osc); --bs-pagination-bg: var(--itadi-tarjeta);
              --bs-pagination-border-color: var(--itadi-linea); --bs-pagination-hover-bg: var(--itadi-oliva-suave);
              --bs-pagination-hover-color: var(--itadi-tinta); --bs-pagination-disabled-bg: var(--itadi-tarjeta-2);
              --bs-pagination-disabled-color: var(--itadi-tenue); }
.dropdown-menu { --bs-dropdown-bg: var(--itadi-tarjeta); --bs-dropdown-color: var(--itadi-tinta); --bs-dropdown-border-color: var(--itadi-linea);
                 --bs-dropdown-link-color: var(--itadi-tinta); --bs-dropdown-link-hover-bg: var(--itadi-tarjeta-2); }

/* ---- Páginas: cabecera, secciones, tarjetas de solicitudes y visitas (paso 3.1: «Hoy») ------------------------ */
.pagina-cab { margin-bottom: 1.25rem; }
.pagina-cab h1 { margin-bottom: .2rem; }
.pagina-sub { color: var(--itadi-tenue); margin: 0; }
.seccion { margin-block: 1.25rem 2rem; }
.seccion-titulo { display: flex; align-items: center; gap: .5rem; font-size: 1.25rem; margin: 0 0 .75rem; }
.seccion-aviso .seccion-titulo { color: var(--itadi-mal); }
.cuantas { display: inline-grid; place-items: center; min-width: 1.6rem; height: 1.6rem; padding: 0 .45rem; border-radius: 999px;
           background: var(--itadi-oliva-suave); color: var(--itadi-oliva-osc); font: 700 .8rem/1 var(--itadi-f-texto); }
.seccion-ayuda { color: var(--itadi-tenue); font-size: .92rem; margin: -.35rem 0 .75rem; }
.dia-titulo { font-size: 1.05rem; margin: 1.25rem 0 .6rem; color: var(--itadi-tenue); }
.lista-tarjetas { display: grid; gap: .75rem; }
@media (min-width: 768px) { .lista-tarjetas { grid-template-columns: repeat(auto-fill, minmax(min(100%, 22rem), 1fr)); } }
.tarjeta-solicitud, .visita { background: var(--itadi-tarjeta); border: 1px solid var(--itadi-linea); border-radius: var(--itadi-radio);
                              padding: .9rem 1rem; }
.visita { margin-bottom: .9rem; max-width: 52rem; }
.visita-cab { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; margin-bottom: .4rem; }
.visita-centro { font-size: 1.3rem; margin: 0; }
.visita-centro a { color: inherit; text-decoration: none; }
.visita-cuantas { color: var(--itadi-tenue); font-size: .88rem; white-space: nowrap; }
.linea-icono { display: flex; align-items: flex-start; gap: .55rem; margin: 0 0 .35rem; }
.linea-icono .ic { margin-top: .2rem; color: var(--itadi-oliva-osc); }
.visita > .acciones { margin: .65rem 0 .2rem; }
.visita-lista { list-style: none; margin: .75rem 0 0; padding: 0; }
.visita-lista > .solicitud { padding: .85rem 0 .25rem; border-top: 1px solid var(--itadi-linea); }
.pastillas { display: flex; flex-wrap: wrap; gap: .35rem; align-items: center; margin-bottom: .45rem; }
.pastilla-nota { font-size: .85rem; color: var(--itadi-tenue); }
.solicitud-titulo { font-family: var(--itadi-f-texto); font-size: 1rem; font-weight: 700; line-height: 1.35; margin: 0 0 .25rem; }
.solicitud-titulo a { color: inherit; }
.solicitud-averia { margin: 0 0 .45rem; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.solicitud-datos { list-style: none; margin: 0 0 .65rem; padding: 0; display: flex; flex-wrap: wrap; gap: .3rem 1.1rem;
                   color: var(--itadi-tenue); font-size: .9rem; }
.solicitud-datos li, .solicitud-datos a { display: inline-flex; align-items: center; gap: .35rem; }
.solicitud-datos a { color: var(--itadi-oliva-osc); }
.acciones { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; }
.acciones .btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; }
.acciones .btn-link { padding-inline: .3rem; }
@media (max-width: 575.98px) { .acciones .btn-primary, .acciones .btn-outline-secondary { flex: 1 1 8rem; } }
.vacio { display: flex; align-items: center; gap: .75rem; padding: 1rem 1.1rem; border-radius: var(--itadi-radio);
         background: var(--itadi-tarjeta); border: 1px dashed var(--itadi-borde-campo); color: var(--itadi-tenue); max-width: 52rem; }
.vacio .ic { width: 1.6rem; height: 1.6rem; color: var(--itadi-oliva); }
.vacio p { margin: 0; }
.lista-hechas { list-style: none; margin: 0; padding: 0; display: grid; gap: .45rem; }
.lista-hechas li { display: flex; gap: .55rem; align-items: flex-start; }
.lista-hechas .ic { color: var(--itadi-bien); margin-top: .2rem; }
.pestanas { display: flex; gap: .25rem; overflow-x: auto; width: max-content; max-width: 100%; margin: 0 0 1rem; padding: .25rem;
            border-radius: .9rem; background: var(--itadi-tarjeta-2); border: 1px solid var(--itadi-linea); scrollbar-width: none; }
.pestanas::-webkit-scrollbar { display: none; }
.pestanas a { padding: .55rem .95rem; border-radius: .65rem; color: var(--itadi-tenue); font-weight: 600; text-decoration: none;
              white-space: nowrap; }
.pestanas a.activa { background: var(--itadi-tarjeta); color: var(--itadi-tinta); box-shadow: var(--itadi-sombra); }
/* En el móvil, a todo lo ancho y repartidas: caben las cuatro sin desplazar */
@media (max-width: 575.98px) {
    .pestanas { width: 100%; gap: .15rem; }
    .pestanas a { flex: 1 1 auto; text-align: center; padding: .55rem .35rem; font-size: .875rem; }
}
.paginacion { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: .75rem 1rem; margin: 1.5rem 0;
              color: var(--itadi-tenue); }
.paginacion .btn { display: inline-flex; align-items: center; gap: .35rem; }

/* El panel del centro y pedir una reparación (paso 3.2) */
.pagina-cab-accion { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: .9rem 1.5rem; }
.pagina-cab-accion > .btn { display: inline-flex; align-items: center; gap: .5rem; }
@media (max-width: 575.98px) { .pagina-cab-accion > .btn { width: 100%; justify-content: center; } }
.banda { display: flex; align-items: flex-start; gap: .7rem; padding: .85rem 1rem; margin-bottom: 1rem; border-radius: var(--itadi-radio);
         background: var(--itadi-tarjeta); border: 1px solid var(--itadi-linea); max-width: 52rem; }
.banda .ic { width: 1.3rem; height: 1.3rem; margin-top: .1rem; color: var(--itadi-oliva-osc); }
.banda p { margin: 0; }
.banda-info { background: var(--itadi-info-f); border-color: transparent; color: var(--itadi-info); }
.banda-info .ic { color: var(--itadi-info); }
.plegable { margin: 0 0 1rem; padding: .75rem 1rem; border-radius: var(--itadi-radio); background: var(--itadi-tarjeta);
            border: 1px solid var(--itadi-linea); max-width: 52rem; }
.plegable > summary { cursor: pointer; font-weight: 600; }
.importe { font-size: 1.15rem; font-weight: 700; font-variant-numeric: tabular-nums; margin: 0 0 .6rem; }
.importe .text-muted { font-size: .9rem; font-weight: 400; }
.cambiar { margin-top: .75rem; border-top: 1px solid var(--itadi-linea); padding-top: .6rem; }
.cambiar > summary { cursor: pointer; color: var(--itadi-oliva-osc); font-weight: 600; font-size: .92rem; min-height: 2.25rem;
                     display: flex; align-items: center; }
.cambiar form { margin-top: .6rem; }
.cambiar .form-label { font-size: .9rem; margin-bottom: .25rem; }
.fila-campo { display: flex; gap: .5rem; }
.fila-campo > .form-control, .fila-campo > .form-select { flex: 1; min-width: 0; }
.formulario { max-width: 40rem; }
.formulario-ancho { max-width: 52rem; }
.bloque-form { margin-bottom: 1.25rem; }
.bloque-form > legend, .bloque-form > .form-label { font-size: 1.05rem; }
.opcional { font-weight: 400; color: var(--itadi-tenue); font-size: .9em; }
.opciones-prioridad { display: grid; gap: .55rem; }
@media (min-width: 768px) { .opciones-prioridad { grid-template-columns: repeat(3, 1fr); } }
.opcion { display: grid; gap: .2rem; padding: .85rem 1rem; border-radius: var(--itadi-radio); border: 2px solid var(--itadi-linea);
          background: var(--itadi-tarjeta); cursor: pointer; }
.opcion strong { font-size: 1.05rem; }
.opcion span { color: var(--itadi-tenue); font-size: .92rem; }
.btn-check:checked + .opcion { border-color: var(--itadi-oliva); background: var(--itadi-oliva-suave); }
.btn-check:checked + .opcion.opcion-prioridad-urgente { border-color: var(--itadi-urgente-f); }
.btn-check:focus-visible + .opcion { outline: 2px solid var(--itadi-oliva-osc); outline-offset: 2px; }
.vista-previa { display: block; max-width: min(100%, 16rem); margin-top: .75rem; border-radius: .6rem; border: 1px solid var(--itadi-linea); }

/* La ficha de una solicitud (paso 3.3): la cabecera con lo siguiente que toca y, debajo, bloques; en el ordenador, al
   lado, programar, el estado, las notas internas y el historial */
.volver { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.25rem; margin-bottom: .4rem; color: var(--itadi-tenue);
          font-weight: 600; text-decoration: none; }
.volver:hover { color: var(--itadi-tinta); }
.ficha-cab h1 { font-size: clamp(1.5rem, 1.25rem + 1vw, 2rem); }
.ficha-cab h1 .text-muted { font-size: .7em; font-weight: 500; }
.ficha-averia { font-size: 1.1rem; margin: .6rem 0 .9rem; white-space: pre-line; max-width: 48rem; }
.ficha-cuerpo { display: grid; gap: 1rem; align-items: start; }
@media (min-width: 1200px) { .ficha-cuerpo { grid-template-columns: minmax(0, 1fr) 21rem; gap: 1.25rem; } }
.ficha-principal, .ficha-lateral { display: grid; gap: 1rem; min-width: 0; }
.bloque { background: var(--itadi-tarjeta); border: 1px solid var(--itadi-linea); border-radius: var(--itadi-radio); padding: 1rem 1.1rem;
          scroll-margin-top: 4.5rem; min-width: 0; }
.bloque > .seccion-titulo { font-size: 1.15rem; }
.bloque-sub { display: flex; align-items: center; gap: .5rem; margin: 1.1rem 0 .5rem; color: var(--itadi-oliva-osc);
              font: 700 .82rem/1.2 var(--itadi-f-texto); letter-spacing: .06em; text-transform: uppercase; }
.bloque > .seccion-titulo + .bloque-sub { margin-top: 0; }
.bloque-peligro { border-color: var(--itadi-mal); }
.bloque-peligro .seccion-titulo { color: var(--itadi-mal); }
.datos-ficha { display: grid; gap: .55rem; margin: 0; }
.datos-ficha > div { display: grid; gap: .05rem; }
.datos-ficha dt { color: var(--itadi-tenue); font-size: .8rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }
.datos-ficha dd { margin: 0; overflow-wrap: anywhere; }
@media (min-width: 576px) { .datos-ficha > div { grid-template-columns: 8.5rem minmax(0, 1fr); gap: 1rem; align-items: baseline; } }
.ficha-foto img, .comentario-foto img { display: block; max-width: min(100%, 18rem); max-height: 18rem; object-fit: cover;
                                        border-radius: .6rem; border: 1px solid var(--itadi-linea); }
.ficha-foto img { margin-top: .9rem; }
.lista-horas { list-style: none; margin: 0 0 .5rem; padding: 0; }
.lista-horas li { display: flex; flex-wrap: wrap; align-items: center; gap: .15rem .9rem; padding: .5rem 0; border-top: 1px solid var(--itadi-linea); }
.lista-horas li:first-child { border-top: 0; padding-top: 0; }
.lh-dia, .lh-horas { font-variant-numeric: tabular-nums; }
.lh-dia { font-weight: 600; }
.lh-quien { color: var(--itadi-tenue); }
.lista-horas form { margin-left: auto; }
.lh-borrar, .comentario-borrar { color: var(--itadi-mal); padding: .25rem .4rem; }
.lista-simple { list-style: none; margin: 0 0 .75rem; padding: 0; display: grid; gap: .45rem; }
.texto-libre { white-space: pre-line; margin: 0 0 .4rem; overflow-wrap: anywhere; }
.comentarios { list-style: none; margin: 0 0 1rem; padding: 0; display: grid; gap: .6rem; }
.comentario { padding: .7rem .85rem; border-radius: .8rem; background: var(--itadi-tarjeta-2); border: 1px solid var(--itadi-linea);
              border-left: 4px solid var(--itadi-oliva); }
.comentario-centro { border-left-color: var(--itadi-info); }
.comentario-meta { display: flex; flex-wrap: wrap; align-items: center; gap: .2rem .6rem; margin-bottom: .3rem; color: var(--itadi-tenue);
                   font-size: .88rem; }
.comentario-meta strong { color: var(--itadi-tinta); }
.comentario-foto img { margin-top: .25rem; }
.escribir { display: grid; gap: .5rem; }
.escribir > .form-label { margin-bottom: 0; }
.escribir-pie { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .6rem; }
.escribir-pie > div { flex: 1 1 14rem; }
.escribir-pie .btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; }
@media (max-width: 575.98px) { .escribir-pie .btn { flex: 1 1 100%; min-height: 3rem; } }
.puntos { display: flex; flex-wrap: wrap; gap: .45rem; }
.punto { display: inline-flex; align-items: center; gap: .35rem; min-height: 2.75rem; padding: .35rem .8rem; border-radius: .7rem;
         border: 1px solid var(--itadi-borde-campo); background: var(--itadi-tarjeta); cursor: pointer; }
.punto span[aria-hidden] { color: var(--itadi-oliva); letter-spacing: .03em; }
.btn-check:checked + .punto { background: var(--itadi-oro); border-color: var(--itadi-oro); color: #1f2019; }
.btn-check:checked + .punto span[aria-hidden] { color: #1f2019; }
.btn-check:focus-visible + .punto { outline: 2px solid var(--itadi-oliva-osc); outline-offset: 2px; }
.estrellas { color: var(--itadi-oro); letter-spacing: .05em; }
.estrellas .apagadas { color: var(--itadi-tenue); }
.historial { list-style: none; margin: 0; padding: 0 0 0 1rem; border-left: 2px solid var(--itadi-linea); display: grid; gap: .7rem; }
.historial li { position: relative; }
.historial li::before { content: ''; position: absolute; left: calc(-1rem - 6px); top: .45rem; width: 10px; height: 10px; border-radius: 50%;
                        background: var(--itadi-oliva); border: 2px solid var(--itadi-tarjeta); }
.historial-meta { color: var(--itadi-tenue); font-size: .85rem; }

/* La bandeja de la gestión (paso 3.4): buscar y filtrar (en el móvil, los filtros en una hoja), pestañas por estado,
   chips, una tabla de 8 columnas en el ordenador y tarjetas en el móvil */
.bandeja-filtros { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .6rem; align-items: end; margin-bottom: 1rem; }
.buscador { position: relative; }
.buscador > .ic { position: absolute; left: .85rem; top: 50%; transform: translateY(-50%); color: var(--itadi-tenue); pointer-events: none; }
.buscador .form-control { padding-left: 2.5rem; min-height: 2.75rem; }
.boton-filtros { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.75rem; }
.panel-filtros.offcanvas-bottom { height: auto; max-height: 88vh; max-height: 88dvh; border-radius: 1.25rem 1.25rem 0 0; }
.filtros-campos { display: grid; gap: .75rem; }
.filtros-campos .form-label { margin-bottom: .2rem; color: var(--itadi-tenue); font-size: .85rem; font-weight: 600; }
.filtros-pie { margin-top: 1rem; }
.filtros-pie .btn { width: 100%; min-height: 3rem; }
@media (min-width: 992px) {
  .bandeja-filtros { grid-template-columns: minmax(0, 1fr); }
  .boton-filtros, .filtros-pie { display: none; }
  .panel-filtros .offcanvas-body { display: block; }
  .filtros-campos { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .6rem; }
}
.pestanas-bandeja { margin-bottom: .75rem; }
.pestanas-bandeja a { padding-inline: .6rem; }
.pestana-n { display: inline-block; min-width: 1.4rem; margin-left: .2rem; padding: 0 .35rem; border-radius: 999px; text-align: center;
             background: var(--itadi-linea); color: var(--itadi-tinta); font-size: .78rem; font-variant-numeric: tabular-nums; }
.pestanas a.activa .pestana-n { background: var(--itadi-oliva-suave); color: var(--itadi-oliva-osc); }
.chips { list-style: none; margin: 0 0 1rem; padding: 0; display: flex; flex-wrap: wrap; gap: .4rem; }
.chip { display: inline-flex; align-items: center; gap: .4rem; min-height: 2.25rem; padding: .25rem .5rem .25rem .8rem; border-radius: 999px;
        background: var(--itadi-oliva-suave); color: var(--itadi-oliva-osc); font-size: .9rem; font-weight: 600; text-decoration: none; }
.chip .ic { width: .85rem; height: .85rem; }
.chip:hover { background: var(--itadi-linea); color: var(--itadi-tinta); }
.chip-quitar { background: transparent; border: 1px solid var(--itadi-linea); color: var(--itadi-tenue); padding-right: .8rem; }
.banda-accion { align-items: center; flex-wrap: wrap; }
.banda-accion p { flex: 1 1 12rem; }
.seleccion-barra { position: sticky; top: .5rem; z-index: 5; display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
                   margin-bottom: .75rem; padding: .6rem .75rem; border-radius: var(--itadi-radio); background: var(--itadi-tarjeta);
                   border: 1px solid var(--itadi-oliva); box-shadow: var(--itadi-sombra); }
.seleccion-barra[hidden] { display: none; }
.seleccion-barra strong { margin-right: auto; }
.seleccion-barra .form-select, .seleccion-barra .form-control { width: auto; min-width: 9rem; }
.seleccion-barra .btn { display: inline-flex; align-items: center; gap: .4rem; }
.tabla-bandeja { margin-bottom: 1rem; border: 1px solid var(--itadi-linea); border-radius: var(--itadi-radio); background: var(--itadi-tarjeta); }
.tabla-app { margin: 0; }
.tabla-app td { vertical-align: top; }
.tabla-app .num { white-space: nowrap; font-variant-numeric: tabular-nums; }
.tabla-app .col-elegir { width: 2.5rem; }
.tabla-app .col-centro strong { display: block; font-weight: 600; }
.tabla-app .col-centro small, .tabla-app .col-dia { display: block; color: var(--itadi-tenue); font-size: .85rem; }
.tabla-app .col-averia { min-width: 14rem; }
.tabla-app .col-averia > a { color: inherit; text-decoration: none; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
                            overflow: hidden; }
.tabla-app .col-averia > a:hover { text-decoration: underline; }
.col-averia-extra { display: inline-flex; align-items: center; gap: .3rem; margin-top: .2rem; color: var(--itadi-tenue); font-size: .85rem; }
.tabla-app .tenue { color: var(--itadi-tenue); }
.tabla-app .col-mas { width: 3rem; text-align: right; }
.texto-mal { color: var(--itadi-mal); }
.tarjeta-enlace { position: relative; }
.tarjeta-enlace .solicitud-titulo a { text-decoration: none; }
.tarjeta-enlace .solicitud-titulo a::after { content: ''; position: absolute; inset: 0; border-radius: inherit; }
.tarjeta-enlace:hover { border-color: var(--itadi-oliva); }
.tarjeta-fecha { margin-left: auto; color: var(--itadi-tenue); font-size: .85rem; font-variant-numeric: tabular-nums; }
.tarjetas-bandeja .solicitud-averia { -webkit-line-clamp: 3; }
@media (max-width: 991.98px) { .tabla-bandeja, .seleccion { display: none; } }
@media (min-width: 992px) { .tarjetas-bandeja { display: none; } }
.bandeja-pie { margin: 1rem 0 0; font-size: .9rem; }
.bandeja-pie a { display: inline-flex; align-items: center; gap: .4rem; }
/* El aviso de las solicitudes nuevas (en vez de recargar la página cada 2 minutos) */
.novedades-sitio { position: fixed; z-index: 1035; left: 50%; transform: translateX(-50%);
                   bottom: calc(var(--itadi-barra) + 1rem + env(safe-area-inset-bottom, 0px)); }
@media (min-width: 768px) { .novedades-sitio { bottom: 1.5rem; } }
.novedades { display: inline-flex; align-items: center; gap: .55rem; padding: .7rem 1.1rem; border-radius: 999px; white-space: nowrap;
             background: var(--itadi-carbon); color: #f5f4ee; border: 1px solid var(--itadi-linea); box-shadow: var(--itadi-sombra);
             text-decoration: none; }
.novedades:hover { color: #ffffff; }
.novedades strong { color: var(--itadi-oro); }

/* La planificación y la agenda (paso 3.5): cada centro se abre para programar su visita, con la semana a la vista.
   El desplegable (.acordeon) vale también para «Por facturar» (paso 3.6) */
.lista-plan, .lista-acordeon { display: grid; grid-template-columns: minmax(0, 1fr); gap: .6rem; max-width: 60rem; }
.plan-centro, .acordeon { min-width: 0; background: var(--itadi-tarjeta); border: 1px solid var(--itadi-linea); border-radius: var(--itadi-radio); }
.plan-centro[open], .acordeon[open] { border-color: var(--itadi-oliva); box-shadow: var(--itadi-sombra); }
.plan-centro > summary, .acordeon > summary { list-style: none; display: flex; align-items: center; gap: .75rem; padding: .85rem 1rem; cursor: pointer; }
.plan-centro > summary::-webkit-details-marker, .acordeon > summary::-webkit-details-marker { display: none; }
.plan-cab, .acordeon-cab { display: grid; gap: .15rem; flex: 1; min-width: 0; }
.plan-nombre, .acordeon-nombre { font: 700 1.2rem/1.25 var(--itadi-f-titular); }
.plan-datos, .acordeon-datos { font-size: .92rem; }
.plan-gremios, .acordeon-mas { color: var(--itadi-tenue); font-size: .85rem; }
.plan-flecha, .acordeon-flecha { flex: none; color: var(--itadi-tenue); transition: transform .15s; }
.plan-centro[open] .plan-flecha, .acordeon[open] .acordeon-flecha { transform: rotate(90deg); }
.plan-cuerpo, .acordeon-cuerpo { padding: .9rem 1rem 1rem; border-top: 1px solid var(--itadi-linea); }
.semana { display: flex; gap: .35rem; overflow-x: auto; margin: .9rem 0 .25rem; padding-bottom: .25rem; }
.semana-dia { flex: none; display: grid; justify-items: center; gap: .1rem; min-width: 3.4rem; min-height: 3rem; padding: .35rem .3rem;
              border-radius: .7rem; border: 1px solid var(--itadi-borde-campo); background: var(--itadi-tarjeta); color: var(--itadi-tinta);
              font-size: .82rem; }
.semana-dia.finde { background: var(--itadi-tarjeta-2); color: var(--itadi-tenue); }
.semana-dia[aria-pressed="true"] { border-color: var(--itadi-oliva); background: var(--itadi-oliva-suave); box-shadow: inset 0 0 0 1px var(--itadi-oliva); }
.semana-n { font-weight: 700; font-size: 1rem; font-variant-numeric: tabular-nums; }
.semana-n.cero { color: var(--itadi-tenue); font-weight: 500; }
.semana-ayuda { margin: 0 0 .9rem; color: var(--itadi-tenue); font-size: .85rem; }
.plan-lista { list-style: none; margin: 0 0 1rem; padding: 0; }
.plan-lista li { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: .65rem; align-items: start; padding: .6rem 0;
                 border-top: 1px solid var(--itadi-linea); }
.plan-lista .form-check-input { width: 1.35rem; height: 1.35rem; margin-top: .15rem; }
.plan-lista label { display: grid; gap: .15rem; cursor: pointer; min-width: 0; }
.plan-lista .pastillas { margin: 0; }
.plan-averia { color: var(--itadi-tenue); font-size: .92rem; overflow-wrap: anywhere; }
.plan-ver { padding: .2rem; color: var(--itadi-tenue); }
.plan-pie { position: sticky; bottom: calc(var(--itadi-barra) + .5rem + env(safe-area-inset-bottom, 0px)); padding-top: .5rem; }
.plan-pie .btn { display: inline-flex; align-items: center; justify-content: center; gap: .5rem; width: 100%; box-shadow: var(--itadi-sombra); }
@media (min-width: 768px) { .plan-pie { bottom: .75rem; } .plan-pie .btn { width: auto; } }
.lista-atrasadas { margin: 0; padding-left: 1.2rem; display: grid; gap: .35rem; }
.dia-cuantas { color: var(--itadi-tenue); font-size: .9rem; font-weight: 500; }

/* Dinero (paso 3.6): «Por facturar», presupuestos, la factura y los ajustes. La factura y el presupuesto son una hoja
   (.hoja) que se imprime en A4 tal cual: sin menús ni botones (.no-imprimir) */
.banda-ojo { background: var(--itadi-ojo-f); border-color: transparent; color: var(--itadi-ojo); }
.banda-ojo .ic { color: var(--itadi-ojo); }
.acordeon-importe { flex: none; font-size: 1.1rem; font-variant-numeric: tabular-nums; }
.lista-cobros { list-style: none; margin: 0 0 1rem; padding: 0; }
.cobro { padding: .65rem 0; border-bottom: 1px solid var(--itadi-linea); }
.cobro-cab { display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .6rem; }
.cobro-cab > a { font-weight: 700; }
.cobro-total { margin-left: auto; font-weight: 700; font-variant-numeric: tabular-nums; }
.cobro-detalle { display: flex; flex-wrap: wrap; align-items: center; gap: .25rem .9rem; margin-top: .2rem; font-size: .9rem; }
.cobro-detalle > span { display: inline-flex; align-items: center; gap: .3rem; }
.cobro-averia { margin: .2rem 0 0; color: var(--itadi-tenue); font-size: .9rem; }
.barra-total { position: sticky; bottom: calc(var(--itadi-barra) + .5rem + env(safe-area-inset-bottom, 0px)); z-index: 5;
               display: flex; align-items: center; justify-content: space-between; gap: 1rem; max-width: 60rem; margin-top: 1rem;
               padding: .8rem 1.1rem; border-radius: var(--itadi-radio); background: var(--itadi-carbon); color: #f5f4ee;
               border: 1px solid var(--itadi-linea); box-shadow: var(--itadi-sombra); }
.barra-total span { font-size: .92rem; line-height: 1.3; }
.barra-total strong { font-size: 1.25rem; font-variant-numeric: tabular-nums; color: var(--itadi-oro); white-space: nowrap; }
@media (min-width: 768px) { .barra-total { bottom: .75rem; } }
.lista-presupuestos .importe { margin: .2rem 0 0; }
.hoja { max-width: 52rem; padding: clamp(1rem, 3vw, 2.25rem); border-radius: var(--itadi-radio); background: var(--itadi-tarjeta);
        border: 1px solid var(--itadi-linea); }
.hoja-cab { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem 2rem; padding-bottom: 1rem;
            border-bottom: 2px solid var(--itadi-tinta); margin-bottom: 1rem; }
.hoja-cab .derecha { text-align: right; }
.hoja-empresa { font: 700 1.5rem/1.2 var(--itadi-f-titular); }
.hoja-numero { font: 700 1.5rem/1.2 var(--itadi-f-titular); }
.hoja-etiqueta { color: var(--itadi-tenue); font-size: .8rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; }
.hoja-para { margin-bottom: 1.25rem; }
.hoja h1 { font-size: 1.5rem; }
.tabla-hoja { width: 100%; margin-bottom: 1rem; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.tabla-hoja th, .tabla-hoja td { padding: .45rem .5rem; border-bottom: 1px solid var(--itadi-linea); vertical-align: top; }
.tabla-hoja thead th { color: var(--itadi-tenue); font-size: .78rem; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; }
.tabla-hoja .num { text-align: right; white-space: nowrap; }
.totales { width: 100%; max-width: 26rem; margin: 0 0 1rem auto; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.totales th, .totales td { padding: .3rem .5rem; }
.totales th { font-weight: 400; text-align: left; }
.totales td { text-align: right; white-space: nowrap; }
.totales .total th, .totales .total td { border-top: 2px solid var(--itadi-tinta); font-size: 1.2rem; font-weight: 700; }
.hoja-acciones { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; margin: 1rem 0; max-width: 52rem; }
.hoja-acciones .btn { display: inline-flex; align-items: center; gap: .4rem; }
.visita-horas { margin-bottom: 1rem; }
.visita-horas h3 { font-size: 1.05rem; margin: 0 0 .35rem; }
.partidas-editables { display: grid; gap: .5rem; margin-bottom: .5rem; }
.partida { display: grid; gap: .4rem; grid-template-columns: 1fr 1fr 1fr; padding: .6rem; border-radius: .7rem; background: var(--itadi-tarjeta-2);
           border: 1px solid var(--itadi-linea); }
.partida .partida-concepto { grid-column: 1 / -1; }
.partida > div { display: flex; flex-direction: column; justify-content: flex-end; min-width: 0; }
.partida .form-label { margin-bottom: .1rem; color: var(--itadi-tenue); font-size: .78rem; }
@media (min-width: 768px) {
  .partida { grid-template-columns: minmax(0, 1fr) 6.5rem 5.5rem 8rem; padding: .35rem .5rem; }
  .partida .partida-concepto { grid-column: auto; }
  .partida + .partida .form-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
}
.tarifas { display: grid; gap: 1rem; }
@media (min-width: 768px) { .tarifas { grid-template-columns: 1fr 1fr; } }
.tarifas legend { font: 700 1.1rem/1.3 var(--itadi-f-titular); }
.campo-unidad { max-width: 15rem; }

/* Informes (paso 3.7): los partes, en la misma hoja que la factura; los indicadores, con cifras y barras por mes */
.filtros-linea { display: flex; flex-wrap: wrap; align-items: flex-end; gap: .6rem; margin-bottom: 1.25rem; }
.filtros-linea .form-label { margin-bottom: .2rem; color: var(--itadi-tenue); font-size: .85rem; font-weight: 600; }
.filtros-linea .form-select, .filtros-linea .form-control { min-width: 11rem; }
.cifras { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 13rem), 1fr)); gap: .75rem; margin-bottom: 1.5rem; }
.cifra { padding: .9rem 1rem; border-radius: var(--itadi-radio); background: var(--itadi-tarjeta); border: 1px solid var(--itadi-linea); }
.cifra-que { color: var(--itadi-tenue); font-size: .85rem; font-weight: 600; }
.cifra-valor { font: 700 1.9rem/1.2 var(--itadi-f-titular); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cifra-valor small { font-size: .95rem; font-weight: 500; }
.cifra-mas { font-size: .88rem; }
.cifra-grande { font: 700 1.6rem/1.2 var(--itadi-f-titular); margin: 0 0 1rem; }
.leyenda { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; color: var(--itadi-tenue); font-size: .88rem; }
.barra-muestra { display: inline-block; width: 1rem; height: .5rem; border-radius: 3px; margin-left: .5rem; }
.col-barras { min-width: 11rem; }
.barra-fila { display: grid; grid-template-columns: 2.2rem minmax(0, 1fr); align-items: center; gap: .4rem; }
.barra-fila .num { font-size: .85rem; text-align: right; }
.barra { display: block; height: .45rem; width: var(--ancho, 0%); min-width: 2px; border-radius: 3px; }
.barra-pedidas { background: var(--itadi-borde-campo); }
.barra-terminadas { background: var(--itadi-oliva); }
.dos-columnas { display: grid; gap: 1rem; margin-bottom: 1.5rem; }
@media (min-width: 992px) { .dos-columnas { grid-template-columns: 5fr 7fr; } }
.fila-total td, .fila-total th { border-top: 2px solid var(--itadi-tinta); font-weight: 700; }
.fila-dia th { padding-top: .9rem; background: var(--itadi-tarjeta-2); }

/* El resto (paso 3.8): fichas, usuarios, papelera, muebles, condiciones y contacto */
.lista-preventivo { list-style: none; margin: 0 0 .75rem; padding: 0; }
.lista-preventivo li { padding: .6rem 0; border-bottom: 1px solid var(--itadi-linea); }
.lista-preventivo li.apagada { color: var(--itadi-tenue); }
.preventivo-cuando { font-size: .9rem; }
.lista-preventivo .acciones { margin-top: .2rem; gap: .25rem 1rem; }
.texto-largo h2 { font-size: 1.2rem; margin-top: 1.25rem; }
.texto-largo h2:first-child { margin-top: 0; }

/* Diálogos: apuntar horas y cerrar (en el móvil, a pantalla completa) */
.modal { --bs-modal-bg: var(--itadi-tarjeta); --bs-modal-color: var(--itadi-tinta); --bs-modal-border-color: var(--itadi-linea);
         --bs-modal-border-radius: 1.1rem; --bs-modal-header-border-color: var(--itadi-linea);
         --bs-modal-footer-border-color: var(--itadi-linea); }
.modal-sub { margin: .2rem 0 0; color: var(--itadi-tenue); font-size: .92rem; }
.modal-sub:empty { display: none; }
.confirmar-pregunta { margin: 0; font-size: 1.05rem; }
#confirmar .modal-footer { border-top: 0; padding-top: 0; }
.modal-footer { gap: .5rem; }
.modal-pie-texto { margin: 0 auto 0 0; color: var(--itadi-tenue); font-size: .88rem; }
.modal-footer .btn { display: inline-flex; align-items: center; justify-content: center; gap: .4rem; }
@media (max-width: 575.98px) { .modal-footer .btn-primary { flex: 1 1 100%; min-height: 3rem; } }
.paso-cierre { margin: 0 0 1.4rem; }
.paso-cierre legend { font: 700 .82rem/1.2 var(--itadi-f-texto); letter-spacing: .06em; text-transform: uppercase;
                      color: var(--itadi-oliva-osc); margin-bottom: .6rem; }
.paso-cierre legend .opcional { font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--itadi-tenue); }
.duraciones { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem; margin-top: .7rem; }
.duraciones > span { width: 100%; color: var(--itadi-tenue); font-size: .88rem; }
.duracion { min-height: 2.5rem; padding: .3rem .9rem; border-radius: 999px; border: 1px solid var(--itadi-borde-campo);
            background: var(--itadi-tarjeta); color: var(--itadi-tinta); font-weight: 600; }
.duracion[aria-pressed="true"] { background: var(--itadi-oliva); border-color: var(--itadi-oliva); color: var(--itadi-sobre-oliva); }
[data-poner]:empty { display: none; }

/* ---- Entrar ------------------------------------------------------------------------------------------------ */
.solo-oscuro { display: none !important; }
[data-bs-theme="dark"] .solo-oscuro { display: revert !important; }
[data-bs-theme="dark"] .solo-claro { display: none !important; }
.entrar { min-height: calc(100vh - 3rem); min-height: calc(100dvh - 3rem); display: flex; flex-direction: column;
          align-items: center; justify-content: center; gap: 1.25rem; padding-block: 1.5rem; }
.entrar-logo { width: 8.5rem; height: auto; }
.entrar-tarjeta { width: 100%; max-width: 24rem; padding: 1.5rem; border-radius: 1.1rem; border: 1px solid var(--itadi-linea);
                  background: var(--itadi-tarjeta); box-shadow: var(--itadi-sombra); }
.entrar-error { margin-top: .6rem; padding: .55rem .7rem; border-radius: .6rem; background: var(--itadi-mal-f);
                color: var(--itadi-mal); font-size: .92rem; }
.entrar-ayuda { max-width: 24rem; text-align: center; color: var(--itadi-tenue); font-size: .92rem; margin: 0; }

/* ---- Al imprimir (factura, presupuesto, parte): sin menús, en claro y a todo el ancho --------------------------- */
@media print {
  [data-bs-theme="dark"] {
    --itadi-fondo: #ffffff; --itadi-tarjeta: #ffffff; --itadi-tarjeta-2: #f6f6f3; --itadi-tinta: #000000;
    --itadi-tenue: #444444; --itadi-linea: #cccccc; --bs-body-bg: #ffffff; --bs-body-color: #000000; color-scheme: light;
  }
  .cabecera-movil, .lateral, .barra-inferior, .avisos-flotantes, .saltar, .hoja-mas { display: none !important; }
  .app { display: block; }
  .contenido { max-width: none; padding: 0; }
  body { background: #ffffff; }
  .tabla-caja, .table-responsive { border: 0; overflow: visible; }
  .no-imprimir, .pagina-cab .btn, .volver { display: none !important; }
  .hoja { max-width: none; padding: 0; border: 0; border-radius: 0; }
  @page { size: A4; margin: 16mm 14mm; }
}
