      *,
      *::before,
      *::after {
        box-sizing: border-box;
      }

      :root {
        color-scheme: light;
        /* Display serif editorial (Newsreader, optical-sizing + peso hasta 700) para
           títulos -> registro revista de viajes seria: editorial, institucional, con
           presencia, nada infantil. Plus Jakarta Sans (--font-ui) para kickers/labels/
           botones. Inter para cuerpo. La personalidad la carga el display; body/UI se
           mantienen neutros y legibles a propósito. Admin queda excluido. */
        --font-display: "Newsreader", Georgia, "Times New Roman", serif;
        --font-hero: "Newsreader", Georgia, "Times New Roman", serif;
        --font-ui: "Plus Jakarta Sans", ui-sans-serif, system-ui, sans-serif;
        --font-body: "Inter", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
        --color-background: #f7fbfe;
        --color-background-soft: #f4f7f8;
        --color-surface: #ffffff;
        --color-surface-strong: #ffffff;
        --color-surface-soft: #eef6fb;
        --color-text: #10202b;
        --color-muted: #4f6472;
        --color-muted-strong: #33454f;
        --color-border: #d9e7ef;
        --color-border-strong: #b8d4e4;
        --color-primary: #0d69a1;
        --color-primary-strong: #0a4f79;
        --color-deep-blue: #083b7a;
        --color-accent: #eb3e8f;
        --color-accent-strong: #d82f80;
        --color-whatsapp: #18a957;
        --color-danger-surface: #fff4f4;
        --color-danger-text: #8f1f1f;
        --color-danger-border: #e1a3a3;
        --color-success-surface: #eef9f0;
        --color-success-text: #1d6b32;
        --color-success-border: #b7dfc0;
        --shadow-soft: 0 18px 42px rgba(16, 32, 43, 0.08);
        --shadow-card: 0 16px 36px rgba(16, 32, 43, 0.08);
        --shadow-panel: 0 22px 54px rgba(16, 32, 43, 0.16);
        /* Sombras difusas premium (más suaves y con doble capa) + easing y radios
           compartidos por el rediseño (Inicio/Turismo/Inscripción). */
        --shadow-lift: 0 2px 6px rgba(8, 30, 55, 0.05), 0 18px 40px rgba(8, 30, 55, 0.1);
        --shadow-lift-hover: 0 4px 10px rgba(8, 30, 55, 0.07), 0 30px 60px rgba(8, 30, 55, 0.16);
        --radius-lg: 22px;
        --radius-xl: 30px;
        --ease-premium: cubic-bezier(0.22, 1, 0.36, 1);
        --ease-soft: cubic-bezier(0.32, 0.72, 0, 1);
      }

      body {
        font-family: var(--font-body);
        margin: 0;
        color: var(--color-text);
        background: var(--color-background);
      }

      /* ============================================================
         CAMPO VISUAL CONTINUO (solo sitio público)
         Un único universo de marca en toda la página: en vez de un
         degradé distinto por sección, un solo campo atmosférico azul muy
         suave que abarca todo el alto del documento. Las secciones pasan
         a ser transparentes y aportan solo superficies/cards, así al
         scrollear se siente continuidad: mismo clima, misma marca.
         ============================================================ */
      body:not([data-app-entry="admin"]) {
        background:
          radial-gradient(140% 70% at 50% 0%, #ffffff 0%, rgba(255, 255, 255, 0) 42%),
          radial-gradient(120% 90% at 100% 8%, rgba(13, 105, 161, 0.07), rgba(13, 105, 161, 0) 46%),
          radial-gradient(120% 90% at 0% 30%, rgba(235, 62, 143, 0.045), rgba(235, 62, 143, 0) 44%),
          linear-gradient(180deg, #eef5fb 0%, #f1f7fc 45%, #e9f2f9 100%);
        background-attachment: fixed;
      }

      /* Grano de película finísimo, fijo y no interactivo, encima de todo.
         Suma textura tactil y unifica el campo. Opacidad muy baja: no toca
         la legibilidad. Se desactiva en admin. */
      body:not([data-app-entry="admin"])::after {
        content: "";
        position: fixed;
        inset: 0;
        z-index: 2;
        pointer-events: none;
        opacity: 0.035;
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
      }

      @media (prefers-reduced-motion: no-preference) {
        body:not([data-app-entry="admin"])::after { will-change: auto; }
      }

      /* Tipografía del sitio público: Newsreader (serif editorial) para títulos +
         Inter (cuerpo). opsz alto -> corte display con más contraste y presencia;
         peso 600 para gravitas sin volverse pesado. Se excluye el admin porque ese
         HTML no carga estas fuentes y una serif display no encaja en tablas de gestión. */
      body:not([data-app-entry="admin"]) h1,
      body:not([data-app-entry="admin"]) h2,
      body:not([data-app-entry="admin"]) h3 {
        font-family: var(--font-display);
        font-weight: 600;
        font-optical-sizing: auto;
        font-variation-settings: "opsz" 72;
        letter-spacing: -0.015em;
        line-height: 1.1;
      }

      /* Pedido del cliente: Bebas Neue no cerraba (muy dura/angosta,
         especialmente en Turismo) - se reemplaza por Barlow Condensed,
         título fuerte pero más prolijo/legible. Ahora incluye Estudiantil
         (antes excluido) y las sub-páginas de cada sección (detalle de
         viaje estudiantil, paso de ficha de adhesión) para que el título
         no cambie de tipografía a mitad de un mismo flujo. Sigue sin tocar
         admin ni el cuerpo de texto. Reset de opsz/variation-settings de
         Newsreader, que no aplican acá. */
      body:not([data-app-entry="admin"]) .home-layout-v2 h1,
      body:not([data-app-entry="admin"]) .home-layout-v2 h2,
      body:not([data-app-entry="admin"]) .home-layout-v2 h3,
      body:not([data-app-entry="admin"]) .turismo-layout h1,
      body:not([data-app-entry="admin"]) .turismo-layout h2,
      body:not([data-app-entry="admin"]) .turismo-layout h3,
      body:not([data-app-entry="admin"]) .estudiantil-layout h1,
      body:not([data-app-entry="admin"]) .estudiantil-layout h2,
      body:not([data-app-entry="admin"]) .estudiantil-layout h3,
      body:not([data-app-entry="admin"]) .student-detail-layout h1,
      body:not([data-app-entry="admin"]) .student-detail-layout h2,
      body:not([data-app-entry="admin"]) .student-detail-layout h3,
      body:not([data-app-entry="admin"]) .public-inscripcion-layout h1,
      body:not([data-app-entry="admin"]) .public-inscripcion-layout h2,
      body:not([data-app-entry="admin"]) .public-inscripcion-layout h3,
      body:not([data-app-entry="admin"]) .ficha-adhesion-layout h1,
      body:not([data-app-entry="admin"]) .ficha-adhesion-layout h2,
      body:not([data-app-entry="admin"]) .ficha-adhesion-layout h3 {
        font-family: "Barlow Condensed", var(--font-display);
        font-weight: 700;
        font-optical-sizing: normal;
        font-variation-settings: normal;
        letter-spacing: -0.01em;
      }

      .material-symbols-outlined {
        font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
        display: inline-block;
        line-height: 1;
        vertical-align: middle;
      }

      header,
      main,
      footer {
        padding: 18px;
      }

      nav {
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
        margin-top: 16px;
      }

      a,
      button {
        color: #0d69a1;
        background: transparent;
        border: 1px solid #0d69a1;
        border-radius: 999px;
        padding: 8px 10px;
        text-decoration: none;
        cursor: pointer;
      }

      .whatsapp-fab {
        align-items: center;
        background: var(--color-whatsapp);
        border-radius: 999px;
        bottom: 20px;
        box-shadow: 0 12px 28px rgba(24, 169, 87, 0.32);
        color: #fff;
        display: flex;
        height: 50px;
        justify-content: center;
        position: fixed;
        right: 18px;
        transition: transform 0.2s;
        width: 50px;
        z-index: 45;
      }

      .whatsapp-fab:hover {
        transform: scale(1.08);
      }

      .whatsapp-fab .material-symbols-outlined {
        font-size: 24px;
      }

      body[data-app-entry="admin"] .whatsapp-fab {
        display: none;
      }

      .site-header {
        align-items: center;
        background: rgba(255, 255, 255, 0.86);
        backdrop-filter: blur(18px);
        border-bottom: 1px solid rgba(13, 105, 161, 0.13);
        box-shadow: 0 18px 42px rgba(16, 32, 43, 0.08);
        display: flex;
        gap: 16px;
        justify-content: space-between;
        min-height: 92px;
        padding: 4px 18px;
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        z-index: 40;
      }

      main {
        padding-top: 124px;
      }

      body[data-app-entry="admin"] {
        background: #f4f7f8;
      }

      body[data-app-entry="admin"] main {
        padding-top: 18px;
      }

      .site-footer {
        background:
          radial-gradient(circle at 8% 0%, rgba(235, 62, 143, 0.12), transparent 28%),
          linear-gradient(135deg, #061d31 0%, #0a3854 48%, #082538 100%);
        border-top: 1px solid rgba(255, 255, 255, 0.14);
        color: #eaf5fb;
        padding: 36px 18px 18px;
      }

      .footer-inner {
        display: grid;
        gap: 24px;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        margin: 0 auto;
        max-width: 1180px;
      }

      .footer-brand {
        display: grid;
        gap: 12px;
        grid-column: 1 / -1;
      }

      .footer-logo-link,
      .footer-logo-link:hover {
        border: 0;
        border-radius: 0;
        display: inline-flex;
        padding: 0;
      }

      .footer-logo {
        display: block;
        filter: brightness(0) invert(1);
        height: auto;
        opacity: 0.96;
        width: 92px;
      }

      .footer-brand p,
      .footer-bottom p {
        color: rgba(234, 245, 251, 0.72);
        line-height: 1.55;
        margin: 0;
      }

      .footer-column {
        display: grid;
        gap: 12px;
        align-content: start;
      }

      .footer-column h2 {
        color: #fff;
        font-size: 0.84rem;
        letter-spacing: 0.08em;
        margin: 0;
        text-transform: uppercase;
      }

      .footer-links,
      .footer-contact-list,
      .footer-socials {
        display: grid;
        gap: 8px;
        margin: 0;
      }

      .footer-links a,
      .footer-contact-list a,
      .footer-socials a {
        align-items: center;
        border: 0;
        border-radius: 10px;
        color: rgba(234, 245, 251, 0.78);
        display: inline-flex;
        gap: 10px;
        line-height: 1.35;
        padding: 6px 0;
        text-decoration: none;
        transition: color 160ms ease, transform 160ms ease;
        word-break: break-word;
      }

      .footer-contact-list a[href^="mailto:"] {
        overflow-wrap: anywhere;
      }

      .footer-links a:hover,
      .footer-contact-list a:hover,
      .footer-socials a:hover {
        color: #fff;
        transform: translateX(3px);
      }

      .footer-icon,
      .footer-social-icon {
        align-items: center;
        background: rgba(255, 255, 255, 0.1);
        border: 1px solid rgba(255, 255, 255, 0.16);
        border-radius: 999px;
        color: #fff;
        display: inline-flex;
        flex: 0 0 auto;
        font-size: 0.76rem;
        height: 28px;
        justify-content: center;
        width: 28px;
      }

      .footer-social-icon {
        background: linear-gradient(135deg, #eb3e8f, #0d69a1);
        border: 0;
        font-size: 0.68rem;
        font-weight: 800;
      }

      .footer-bottom {
        border-top: 1px solid rgba(255, 255, 255, 0.14);
        margin: 26px auto 0;
        max-width: 1180px;
        padding-top: 14px;
      }

      .footer-bottom p {
        font-size: 0.88rem;
      }

      .footer-internal-access {
        color: rgba(255, 255, 255, 0.15);
        font-size: 11px;
        line-height: 1.4;
        text-decoration: none;
        transition: color 160ms ease;
      }

      .footer-internal-access:hover {
        color: rgba(255, 255, 255, 0.4);
        text-decoration: none;
      }

      .brand-logo {
        display: block;
        height: 88px;
        width: auto;
      }

      .brand-link {
        align-items: center;
        align-self: flex-start;
        border: 0;
        border-radius: 0;
        display: inline-flex;
        gap: 10px;
        padding: 0;
      }

      .site-nav {
        align-items: center;
        background: rgba(255, 255, 255, 0.94);
        border: 1px solid rgba(255, 255, 255, 0.64);
        border-radius: 22px;
        box-shadow: 0 22px 54px rgba(16, 32, 43, 0.16);
        display: none;
        gap: 4px;
        left: 18px;
        margin-top: 0;
        padding: 10px;
        position: absolute;
        right: 18px;
        top: calc(100% + 8px);
      }

      body.nav-open .site-nav {
        display: grid;
      }

      .site-nav a,
      .site-nav summary {
        align-items: center;
        border-color: transparent;
        color: #10202b;
        display: inline-flex;
        font-size: 0.88rem;
        font-weight: 750;
        justify-content: center;
        letter-spacing: 0.02em;
        min-height: 44px;
        padding: 12px 16px;
        text-transform: uppercase;
      }

      .site-nav a:hover,
      .site-nav summary:hover {
        background: #eef6fb;
        border-color: #d9e7ef;
        color: #0d69a1;
      }

      .nav-dropdown {
        position: relative;
      }

      .nav-dropdown summary {
        border: 1px solid transparent;
        border-radius: 999px;
        cursor: pointer;
        display: flex;
        justify-content: center;
        list-style: none;
        width: 100%;
      }

      .nav-dropdown summary::-webkit-details-marker {
        display: none;
      }

      .nav-dropdown-menu {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        box-shadow: 0 22px 44px rgba(16, 32, 43, 0.16);
        display: grid;
        gap: 4px;
        margin-top: 8px;
        min-width: 240px;
        padding: 12px;
      }

      .nav-dropdown-menu a {
        justify-content: center;
        text-transform: none;
      }

      .nav-dropdown[open] summary {
        background: #eef6fb;
        border-color: #d9e7ef;
        color: #0d69a1;
      }

      .mobile-header-actions {
        align-items: center;
        display: flex;
        gap: 8px;
        margin-left: auto;
      }

      .nav-toggle {
        align-items: center;
        background: rgba(255, 255, 255, 0.9);
        border-color: rgba(13, 105, 161, 0.16);
        display: inline-grid;
        gap: 4px;
        height: 44px;
        justify-content: center;
        padding: 0;
        width: 44px;
      }

      .nav-toggle span {
        background: #10202b;
        border-radius: 999px;
        display: block;
        height: 2px;
        width: 17px;
      }

      .layout {
        display: grid;
        gap: 24px;
      }

      section {
        border-top: 1px solid #ddd;
        padding-top: 24px;
      }

      section:first-child {
        border-top: 0;
        padding-top: 0;
      }

      /* La línea hairline arriba de cada <section> (regla legacy de arriba)
         es lo que hacía que las secciones se sintieran "bloques pegados".
         En el sitio público la sacamos para que el campo visual sea continuo;
         se mantiene el padding. Admin no se toca (conserva su separación). */
      body:not([data-app-entry="admin"]) section {
        border-top: 0;
      }

      .items {
        display: grid;
        gap: 16px;
      }

      .item {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        padding: 16px;
      }

      .brand-mark {
        height: 56px;
        width: 56px;
      }

      .placeholder {
        align-items: center;
        background: #f3f3f3;
        border: 1px dashed #aaa;
        display: flex;
        height: 120px;
        justify-content: center;
        margin-bottom: 12px;
      }

      ul {
        line-height: 1.8;
      }


      /* ============================================================
         HOME v2 — rediseño basado en mockups del cliente (Stitch/AI
         design tool).
         ============================================================ */

      .home-layout-v2 {
        display: grid;
        gap: 0;
        margin: -18px -18px 0;
        max-width: none;
        padding: 0;
        width: auto;
      }

      /* --- Botones compartidos --- */
      .btn-ghost-light,
      .btn-whatsapp {
        align-items: center;
        border-radius: 999px;
        display: inline-flex;
        font-weight: 700;
        gap: 10px;
        justify-content: center;
        min-height: 52px;
        padding: 14px 28px;
        position: relative;
        text-decoration: none;
        transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1), box-shadow 0.32s cubic-bezier(0.22, 1, 0.36, 1), background 0.32s cubic-bezier(0.22, 1, 0.36, 1), border-color 0.32s cubic-bezier(0.22, 1, 0.36, 1);
      }

      .btn-ghost-light:active,
      .btn-whatsapp:active {
        transform: scale(0.97);
      }

      /* Borde más fino + "barrido" de relleno sutil al hover, en vez de
         compartir la misma sensación de píldora sólida que btn-whatsapp. */
      .btn-ghost-light {
        background: rgba(255, 255, 255, 0.08);
        border: 1.5px solid rgba(255, 255, 255, 0.55);
        backdrop-filter: blur(10px);
        color: #fff;
        overflow: hidden;
      }

      .btn-ghost-light:hover {
        background: rgba(255, 255, 255, 0.22);
        border-color: rgba(255, 255, 255, 0.85);
        transform: translateY(-2px);
      }

      .btn-whatsapp {
        background: var(--color-whatsapp);
        box-shadow: 0 16px 34px rgba(24, 169, 87, 0.3);
        color: #fff;
      }

      .btn-whatsapp:hover {
        background: #149247;
        box-shadow: 0 20px 40px rgba(24, 169, 87, 0.4);
        transform: translateY(-2px);
      }

      /* Botón con icono anidado en su propio círculo ("button-in-button"):
         detalle premium reutilizable. El texto y el círculo son hermanos;
         al hover el círculo se corre en diagonal generando tensión interna. */
      .btn-icon-pair {
        gap: 6px;
        padding-right: 8px;
      }

      .btn-icon-pair > span:first-child {
        padding-left: 12px;
      }

      .btn-icon-circle {
        align-items: center;
        background: rgba(255, 255, 255, 0.22);
        border-radius: 999px;
        display: inline-flex;
        flex-shrink: 0;
        height: 38px;
        justify-content: center;
        transition: transform 0.4s var(--ease-premium), background 0.3s var(--ease-premium);
        width: 38px;
      }

      .btn-icon-circle .material-symbols-outlined {
        font-size: 20px;
      }

      .btn-icon-pair:hover .btn-icon-circle {
        background: rgba(255, 255, 255, 0.32);
        transform: translate(3px, -1px) scale(1.05);
      }

      /* ============================================================
         QUIÉNES SOMOS — foto con marco de doble bisel + card flotante a
         un lado, copy + 3 valores del otro. Serif cálida en el título.
         ============================================================ */
      /* Transparente: la sección vive sobre el campo continuo del body, sin
         degradé propio ni "mount" con sombra dura (eso creaba un borde de
         bloque). La continuidad la da el fondo global; acá manda el contenido. */
      .quienes-somos {
        background: transparent;
        padding: clamp(64px, 8vw, 120px) 18px clamp(56px, 9vw, 112px);
        position: relative;
        z-index: 3;
      }

      .quienes-somos-inner {
        align-items: center;
        display: grid;
        gap: clamp(30px, 5vw, 64px);
        margin: 0 auto;
        max-width: 1160px;
      }

      @media (min-width: 920px) {
        .quienes-somos-inner {
          grid-template-columns: 0.9fr 1.1fr;
        }
      }

      /* Doble bisel: shell externo (bandeja con tinte de marca) + núcleo
         (la foto), radios concéntricos -> sensación de pieza machinada. */
      .quienes-somos-photo-wrap {
        position: relative;
      }

      .quienes-somos-photo-shell {
        background: linear-gradient(150deg, rgba(13, 105, 161, 0.16), rgba(235, 62, 143, 0.1));
        border-radius: var(--radius-xl);
        box-shadow: var(--shadow-lift);
        padding: 10px;
      }

      .quienes-somos-photo {
        aspect-ratio: 4 / 5;
        background-position: center 58%;
        background-size: cover;
        border-radius: calc(var(--radius-xl) - 10px);
        width: 100%;
      }

      @media (min-width: 920px) {
        .quienes-somos-photo {
          aspect-ratio: 5 / 6;
        }
      }

      .quienes-somos-badge {
        background: rgba(255, 255, 255, 0.92);
        backdrop-filter: blur(14px);
        border: 1px solid rgba(255, 255, 255, 0.7);
        border-radius: 18px;
        bottom: 18px;
        box-shadow: var(--shadow-lift);
        left: 18px;
        max-width: 280px;
        padding: 16px 18px;
        position: absolute;
      }

      .quienes-somos-badge-head {
        align-items: center;
        display: flex;
        gap: 10px;
        margin-bottom: 6px;
      }

      .quienes-somos-badge-head .material-symbols-outlined {
        align-items: center;
        background: rgba(13, 105, 161, 0.12);
        border-radius: 999px;
        color: var(--color-primary);
        display: flex;
        flex-shrink: 0;
        height: 36px;
        justify-content: center;
        width: 36px;
      }

      .quienes-somos-badge-head p {
        color: var(--color-primary-strong);
        font-family: var(--font-ui);
        font-size: 0.86rem;
        font-weight: 800;
        margin: 0;
      }

      .quienes-somos-quote {
        color: var(--color-muted);
        font-size: 0.86rem;
        font-style: italic;
        margin: 0;
      }

      .quienes-somos-body {
        display: grid;
        gap: 26px;
      }

      .quienes-somos-heading h2 {
        color: var(--color-primary-strong);
        font-size: clamp(2rem, 4.4vw, 3.1rem);
        line-height: 1.1;
        margin: 12px 0 14px;
        text-wrap: balance;
      }

      .quienes-somos-heading > p {
        color: var(--color-muted-strong);
        font-size: clamp(1.04rem, 2vw, 1.16rem);
        line-height: 1.66;
        margin: 0;
        max-width: 52ch;
      }

      .quienes-somos-values {
        display: grid;
        gap: 4px;
      }

      .quienes-somos-value {
        align-items: flex-start;
        border-radius: 16px;
        display: grid;
        gap: 15px;
        grid-template-columns: auto 1fr;
        padding: 16px;
        transition: background 0.3s var(--ease-premium);
      }

      .quienes-somos-value:hover {
        background: rgba(255, 255, 255, 0.72);
      }

      .quienes-somos-value-icon {
        align-items: center;
        background: linear-gradient(150deg, var(--color-primary), var(--color-deep-blue));
        border-radius: 13px;
        box-shadow: 0 8px 18px rgba(13, 105, 161, 0.28);
        color: #fff;
        display: flex;
        height: 44px;
        justify-content: center;
        width: 44px;
      }

      .quienes-somos-value-icon .material-symbols-outlined {
        font-size: 22px;
      }

      .quienes-somos-value strong {
        color: var(--color-text);
        display: block;
        font-family: var(--font-ui);
        font-size: 1.04rem;
        font-weight: 800;
        margin-bottom: 3px;
      }

      .quienes-somos-value p {
        color: var(--color-muted-strong);
        font-size: 0.96rem;
        line-height: 1.5;
        margin: 0;
      }

      @media (max-width: 560px) {
        .quienes-somos-badge {
          left: 12px;
          max-width: none;
          right: 12px;
        }
      }

      /* ============================================================
         CARRUSEL DE VIAJES — Swiper premium (reemplaza Sucursales en el
         Home). Fallback sin JS: fila con scroll-snap horizontal, así las
         fotos siguen navegándose si Swiper no carga.
         ============================================================ */
      .viajes-carousel-section {
        background: transparent;
        overflow: hidden;
        padding: clamp(48px, 8vw, 104px) 0 clamp(56px, 9vw, 104px);
      }

      .viajes-carousel-heading {
        margin: 0 auto clamp(32px, 5vw, 52px);
        max-width: 660px;
        padding: 0 18px;
        text-align: center;
      }

      .viajes-carousel-heading h2 {
        color: var(--color-primary-strong);
        font-size: clamp(2rem, 4.6vw, 3.2rem);
        line-height: 1.1;
        margin: 10px 0 14px;
        text-wrap: balance;
      }

      .viajes-carousel-heading > p {
        color: var(--color-muted-strong);
        font-size: clamp(1.04rem, 2vw, 1.18rem);
        line-height: 1.62;
        margin: 0;
      }

      .viajes-carousel {
        margin: 0 auto;
        max-width: 1320px;
        position: relative;
      }

      .viajes-carousel .swiper {
        overflow: visible;
        padding: 6px 0 4px;
      }

      /* Fallback (Swiper no inicializado): fila horizontal con snap. */
      .viajes-carousel .swiper:not(.swiper-initialized) .swiper-wrapper {
        -webkit-overflow-scrolling: touch;
        display: flex;
        gap: 16px;
        overflow-x: auto;
        padding: 0 18px 10px;
        scroll-snap-type: x mandatory;
      }

      .viajes-carousel .swiper:not(.swiper-initialized) .swiper-slide {
        flex: 0 0 85%;
        scroll-snap-align: center;
      }

      .viajes-slide {
        border-radius: var(--radius-lg);
        box-shadow: var(--shadow-lift);
        margin: 0;
        overflow: hidden;
        position: relative;
      }

      .viajes-slide img {
        aspect-ratio: 3 / 2;
        display: block;
        height: 100%;
        object-fit: cover;
        transition: transform 0.7s var(--ease-premium);
        width: 100%;
      }

      .viajes-slide figcaption {
        background: linear-gradient(180deg, transparent 0%, rgba(4, 18, 37, 0.82) 100%);
        bottom: 0;
        color: #fff;
        font-family: var(--font-ui);
        font-size: 0.9rem;
        font-weight: 600;
        left: 0;
        letter-spacing: 0.01em;
        padding: 36px 20px 18px;
        position: absolute;
        right: 0;
      }

      /* Slide centrada resalta; las de los costados quedan atenuadas para
         dar profundidad (efecto coverflow suave). Solo cuando Swiper corre. */
      .viajes-carousel .swiper-initialized .swiper-slide {
        opacity: 0.5;
        transition: opacity 0.5s var(--ease-premium);
      }

      .viajes-carousel .swiper-initialized .swiper-slide-active,
      .viajes-carousel .swiper-initialized .swiper-slide-next,
      .viajes-carousel .swiper-initialized .swiper-slide-prev {
        opacity: 1;
      }

      .viajes-carousel .swiper-slide-active .viajes-slide:hover img {
        transform: scale(1.05);
      }

      .viajes-carousel-nav {
        align-items: center;
        backdrop-filter: blur(8px);
        background: rgba(255, 255, 255, 0.9);
        border: 1px solid var(--color-border);
        border-radius: 999px;
        box-shadow: var(--shadow-lift);
        color: var(--color-primary-strong);
        cursor: pointer;
        display: flex;
        height: 52px;
        justify-content: center;
        position: absolute;
        top: calc(50% - 40px);
        transition: background 0.3s var(--ease-premium), transform 0.3s var(--ease-premium);
        width: 52px;
        z-index: 4;
      }

      .viajes-carousel-nav:hover {
        background: #fff;
        transform: scale(1.06);
      }

      .viajes-carousel-nav:active {
        transform: scale(0.96);
      }

      .viajes-carousel-nav.swiper-button-disabled {
        opacity: 0;
        pointer-events: none;
      }

      .viajes-carousel-prev {
        left: 10px;
      }

      .viajes-carousel-next {
        right: 10px;
      }

      @media (min-width: 1040px) {
        .viajes-carousel-prev {
          left: -6px;
        }

        .viajes-carousel-next {
          right: -6px;
        }
      }

      .viajes-carousel-pagination {
        align-items: center;
        display: flex;
        gap: 8px;
        justify-content: center;
        margin-top: 28px;
      }

      .viajes-carousel-pagination .swiper-pagination-bullet {
        background: var(--color-border-strong);
        border-radius: 999px;
        height: 8px;
        opacity: 1;
        transition: width 0.3s var(--ease-premium), background 0.3s var(--ease-premium);
        width: 8px;
      }

      .viajes-carousel-pagination .swiper-pagination-bullet-active {
        background: var(--color-accent);
        width: 26px;
      }

      .viajes-carousel-cta {
        display: flex;
        justify-content: center;
        margin-top: clamp(32px, 5vw, 48px);
        padding: 0 18px;
      }

      @media (max-width: 560px) {
        .viajes-carousel-nav {
          display: none;
        }
      }

      /* ============================================================
         HERO CLEAN — Foto real de Patagonia como fondo. Mobile-first.
         Un solo <h1> semántico, sin position:absolute en el texto
         (evita colisión/superposición en pantallas angostas).
         ============================================================ */

      /* min-height en vez de height fija: si el contenido (kicker + título
         serif + subtítulo + acciones + beneficios) es más alto que el hero,
         la sección crece en vez de recortarlo con overflow:hidden. */
      .hero-clean {
        align-items: center;
        display: flex;
        margin: 0;
        min-height: 86vh;
        min-height: 86svh;
        overflow: hidden;
        padding: 0;
        position: relative;
        width: 100%;
      }

      /* Sobredimensionado ~12% arriba y abajo para que el parallax (mueve el
         fondo más lento que el scroll) nunca descubra bordes vacíos. */
      .hero-clean-carousel {
        bottom: -12%;
        left: 0;
        position: absolute;
        right: 0;
        top: -12%;
        will-change: transform;
      }

      .hero-clean-slide {
        background-position: center;
        background-size: cover;
        bottom: 0;
        left: 0;
        opacity: 0;
        position: absolute;
        right: 0;
        top: 0;
        transition: opacity 1.4s ease;
      }

      .hero-clean-slide.is-active {
        opacity: 1;
      }

      /* Con "reducir movimiento" activado en el sistema, las fotos
         igual rotan (el pedido explícito era que roten cada 3 segundos)
         pero con un corte directo en vez de un crossfade largo. */
      @media (prefers-reduced-motion: reduce) {
        .hero-clean-slide {
          transition: opacity 0.2s linear;
        }
      }

      /* Vignette compuesta: gradiente direccional (legibilidad del texto)
         + oscurecido radial suave en los bordes (foco cinematográfico en
         vez de un degradé lineal plano). */
      /* Scrim cinematográfico: oscurece arriba y abajo, deja respirar el
         centro, y una viñeta radial cierra las esquinas -> el texto centrado
         queda legible sobre cualquier foto y el conjunto se siente de cine. */
      .hero-clean-overlay {
        background:
          linear-gradient(180deg, rgba(3, 16, 32, 0.58) 0%, rgba(3, 16, 32, 0.32) 30%, rgba(3, 16, 32, 0.42) 60%, rgba(3, 14, 30, 0.82) 100%),
          radial-gradient(118% 96% at 50% 42%, rgba(3, 16, 32, 0) 40%, rgba(2, 12, 26, 0.58) 100%);
        bottom: 0;
        left: 0;
        position: absolute;
        right: 0;
        top: 0;
      }

      /* Composición centrada: todo el contenido del hero se alinea al centro
         para una primera impresión cinematográfica. */
      .hero-clean-content {
        display: grid;
        gap: 24px;
        justify-items: center;
        margin: 0 auto;
        max-width: 900px;
        padding: 96px 22px 72px;
        position: relative;
        text-align: center;
        width: 100%;
        z-index: 2;
      }

      /* Kicker sobre el título: pequeña etiqueta de contexto. Es el único
         kicker del hero (no se repite en cada sección) para no caer en el
         patrón "eyebrow en todos lados". */
      .hero-clean-kicker {
        align-items: center;
        background: rgba(255, 255, 255, 0.12);
        backdrop-filter: blur(8px);
        border: 1px solid rgba(255, 255, 255, 0.28);
        border-radius: 999px;
        color: #eaf5fb;
        display: inline-flex;
        font-family: var(--font-ui);
        font-size: 0.74rem;
        font-weight: 700;
        letter-spacing: 0.16em;
        margin: 0;
        padding: 8px 17px;
        text-transform: uppercase;
      }

      .hero-clean-title {
        color: #fff;
        font-family: var(--font-hero, var(--font-display));
        font-size: clamp(2.85rem, 6.6vw, 5.4rem);
        font-weight: 600;
        letter-spacing: -0.02em;
        line-height: 1.02;
        margin: 0;
        max-width: 17ch;
        text-shadow: 0 6px 44px rgba(2, 10, 22, 0.5);
        text-wrap: balance;
      }

      /* Acento en cursiva + celeste, tanto antes del split (.ht-accent) como
         después (palabras .is-accent). El resto del título hereda blanco. */
      .hero-clean-title .ht-accent,
      .hero-clean-title .reveal-word.is-accent {
        color: #7fd8f8;
        font-style: italic;
      }

      /* Palabra individual para el revelado "fade-in-blur" (GSAP, ver
         fadeInBlurWords en app.js): usado tanto en el H1 del hero como en los
         H2 de sección envueltos en [data-reveal]. Sin JS/reduced-motion todo
         queda visible de entrada - splitWords() nunca esconde nada por CSS. */
      .reveal-word {
        display: inline-block;
        will-change: filter, transform, opacity;
      }

      .hero-clean-subtitle {
        color: rgba(255, 255, 255, 0.92);
        font-size: clamp(1.08rem, 2vw, 1.3rem);
        line-height: 1.62;
        margin: 0 auto;
        max-width: 60ch;
        text-shadow: 0 3px 18px rgba(2, 10, 22, 0.45);
      }

      .hero-clean-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
        justify-content: center;
      }

      /* Botones levemente más grandes solo acá - no se toca la regla
         base compartida (.btn-whatsapp/.btn-ghost-light), que también
         usan Turismo, etc. El de WhatsApp usa el patrón icono-anidado,
         así que su padding lo maneja .btn-icon-pair (no lo piso acá). */
      .hero-clean-actions .btn-whatsapp,
      .hero-clean-actions .btn-ghost-light {
        font-size: 1.05rem;
        min-height: 58px;
      }

      .hero-clean-actions .btn-ghost-light {
        padding: 16px 30px;
      }

      .hero-clean-actions .btn-icon-pair {
        padding-right: 10px;
      }

      .hero-clean-actions .btn-icon-pair > span:first-child {
        padding-left: 18px;
      }

      .hero-clean-actions .btn-icon-circle {
        height: 42px;
        width: 42px;
      }

      .hero-clean-benefits {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
        justify-content: center;
        margin-top: 6px;
      }

      .hero-clean-benefit {
        align-items: center;
        background: rgba(255, 255, 255, 0.18);
        backdrop-filter: blur(8px);
        border: 1px solid rgba(255, 255, 255, 0.36);
        border-radius: 999px;
        color: #fff;
        display: inline-flex;
        font-size: 0.86rem;
        font-weight: 700;
        gap: 7px;
        padding: 8px 14px;
      }

      .hero-clean-benefit .material-symbols-outlined {
        font-size: 16px;
      }

      /* Indicador de scroll: chevron suave que respira en la base del hero. */
      .hero-clean-scroll {
        bottom: 18px;
        color: rgba(255, 255, 255, 0.7);
        left: 50%;
        pointer-events: none;
        position: absolute;
        transform: translateX(-50%);
        z-index: 2;
      }

      .hero-clean-scroll .material-symbols-outlined {
        animation: heroScrollHint 2.2s var(--ease-premium) infinite;
        font-size: 30px;
      }

      @keyframes heroScrollHint {
        0%, 100% { opacity: 0.35; transform: translateY(0); }
        50% { opacity: 0.9; transform: translateY(5px); }
      }

      @media (prefers-reduced-motion: reduce) {
        .hero-clean-scroll .material-symbols-outlined {
          animation: none;
        }
      }

      @media (min-width: 720px) {
        .hero-clean-content {
          padding: 96px clamp(32px, 5vw, 72px) 72px;
        }
      }

      /* A partir de acá entran las 4 chips en una sola fila con margen de
         sobra, así que se funden en una franja de vidrio unificada con
         separadores en vez de 4 píldoras sueltas repetidas. */
      @media (min-width: 960px) {
        .hero-clean-benefits {
          background: rgba(255, 255, 255, 0.1);
          border: 1px solid rgba(255, 255, 255, 0.26);
          border-radius: 999px;
          display: inline-flex;
          flex-wrap: nowrap;
          gap: 0;
          overflow: hidden;
        }

        .hero-clean-benefit {
          background: transparent;
          backdrop-filter: none;
          border: 0;
          border-radius: 0;
          padding: 11px 18px;
        }

        .hero-clean-benefit + .hero-clean-benefit {
          border-left: 1px solid rgba(255, 255, 255, 0.22);
        }
      }

      @media (max-width: 480px) {
        .hero-clean {
          align-items: flex-end;
          min-height: 88vh;
          min-height: 88svh;
        }

        .hero-clean-slide {
          background-position: center 28%;
        }

        .hero-clean-overlay {
          background:
            linear-gradient(180deg, rgba(4, 18, 37, 0.06) 0%, rgba(4, 18, 37, 0.16) 38%, rgba(4, 18, 37, 0.76) 100%);
        }

        .hero-clean-content {
          gap: 16px;
          padding: 34px 18px 24px;
        }

        .hero-clean-kicker {
          font-size: 0.68rem;
          letter-spacing: 0.12em;
          padding: 6px 12px;
        }

        .hero-clean-scroll {
          display: none;
        }

        .hero-clean-title {
          font-size: clamp(2.15rem, 9.5vw, 2.8rem);
          line-height: 1.04;
          max-width: 12ch;
        }

        .hero-clean-subtitle {
          font-size: 0.98rem;
          line-height: 1.45;
          margin-bottom: 12px;
          max-width: 34ch;
        }

        .hero-clean-actions {
          gap: 0;
          margin-bottom: 4px;
        }

        .hero-clean-actions .btn-whatsapp {
          box-shadow: 0 12px 28px rgba(16, 185, 129, 0.24);
          font-size: 1rem;
          min-height: 54px;
          width: 100%;
        }

        .hero-clean-actions .btn-icon-pair {
          padding: 13px 20px;
        }

        .hero-clean-actions .btn-icon-pair > span:first-child {
          padding-left: 0;
        }

        .hero-clean-actions .btn-icon-circle {
          height: 36px;
          width: 36px;
        }

        .hero-clean-actions .btn-ghost-light {
          display: none;
        }

        .hero-clean-benefits {
          background: rgba(255, 255, 255, 0.95);
          border: 1px solid rgba(229, 237, 247, 0.9);
          border-radius: 0;
          box-shadow: 0 -12px 30px rgba(2, 10, 22, 0.12);
          color: #0f3558;
          display: grid;
          gap: 0;
          grid-template-columns: repeat(3, minmax(0, 1fr));
          margin: 20px -18px -22px;
          padding: 10px 10px 12px;
        }

        .hero-clean-benefit {
          background: transparent;
          backdrop-filter: none;
          border: 0;
          border-radius: 0;
          color: #174263;
          display: grid;
          font-size: 0.68rem;
          gap: 5px;
          justify-items: center;
          line-height: 1.15;
          padding: 4px 6px;
          text-align: center;
        }

        .hero-clean-benefit:nth-child(n+4) {
          display: none;
        }

        .hero-clean-benefit .material-symbols-outlined {
          color: #0e8cc0;
          font-size: 18px;
        }
      }

      .not-found-page {
        align-items: center;
        background:
          linear-gradient(135deg, rgba(2, 34, 76, 0.78), rgba(19, 71, 129, 0.72)),
          url("../img/home/hero-estudiantes-nieve.webp") center / cover;
        display: grid;
        min-height: calc(100svh - 86px);
        padding: 72px 20px;
      }

      .not-found-card {
        background: rgba(255, 255, 255, 0.94);
        border: 1px solid rgba(255, 255, 255, 0.8);
        border-radius: 8px;
        box-shadow: 0 28px 70px rgba(4, 24, 54, 0.24);
        display: grid;
        gap: 16px;
        justify-items: start;
        margin: 0 auto;
        max-width: 620px;
        padding: clamp(28px, 5vw, 48px);
      }

      .not-found-logo {
        display: block;
        width: 150px;
      }

      .not-found-logo img {
        display: block;
        height: auto;
        width: 100%;
      }

      .not-found-kicker {
        color: #eb3e8f;
        font-size: 0.78rem;
        font-weight: 800;
        letter-spacing: 0.12em;
        margin: 8px 0 0;
        text-transform: uppercase;
      }

      .not-found-card h1 {
        color: #082f6b;
        font-size: clamp(2rem, 5vw, 3.8rem);
        line-height: 1;
        margin: 0;
      }

      .not-found-card p:not(.not-found-kicker) {
        color: #38506f;
        font-size: 1.05rem;
        line-height: 1.65;
        margin: 0;
        max-width: 520px;
      }

      .not-found-action {
        align-items: center;
        background: #eb3e8f;
        border: 1px solid #eb3e8f;
        border-radius: 999px;
        color: #fff;
        display: inline-flex;
        font-weight: 800;
        justify-content: center;
        margin-top: 6px;
        min-height: 48px;
        padding: 13px 22px;
        text-decoration: none;
      }

      .not-found-action:hover {
        background: #d72c7c;
        border-color: #d72c7c;
        color: #fff;
      }

      .hero-kicker {
        color: rgba(255, 255, 255, 0.78);
        font-size: 0.78rem;
        font-weight: 800;
        letter-spacing: 0.14em;
        text-transform: uppercase;
      }

      .turismo-layout {
        gap: 34px;
        grid-template-columns: minmax(0, 1fr);
        padding-bottom: 78px;
      }

      .turismo-layout > * {
        min-width: 0;
      }

      .turismo-preview-mode-banner {
        align-items: center;
        background: #fff7dc;
        border: 1px solid #f0ca62;
        border-radius: 12px;
        color: #654300;
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
        justify-content: space-between;
        padding: 14px 16px;
      }

      .turismo-preview-mode-banner div {
        display: grid;
        gap: 3px;
      }

      .turismo-preview-mode-banner strong {
        font-size: 0.95rem;
      }

      .turismo-preview-mode-banner span {
        font-size: 0.88rem;
      }

      .turismo-preview-mode-banner button {
        background: #10202b;
        border-color: #10202b;
        color: #fff;
      }

      .turismo-hero {
        border: 0;
        color: #fff;
        margin: -18px -18px 0;
        min-height: 66vh;
        min-height: 66svh;
        overflow: hidden;
        padding: 28px clamp(18px, 5vw, 72px);
        position: relative;
      }

      .turismo-hero-content {
        display: grid;
        gap: 14px;
        max-width: 760px;
        min-height: calc(66vh - 56px);
        min-height: calc(66svh - 56px);
        place-content: center;
        position: relative;
        z-index: 2;
      }

      .turismo-hero h1 {
        font-size: clamp(2.35rem, 5vw, 4.05rem);
        line-height: 1;
        margin: 0;
        max-width: 16ch;
        text-shadow: 0 3px 28px rgba(12, 10, 8, 0.4);
        text-wrap: balance;
      }

      .turismo-hero p {
        color: rgba(255, 255, 255, 0.92);
        font-size: clamp(1rem, 1.6vw, 1.24rem);
        line-height: 1.55;
        margin: 0;
        max-width: 650px;
        text-shadow: 0 2px 18px rgba(12, 10, 8, 0.42);
      }

      .turismo-hero::after {
        background:
          radial-gradient(circle at 18% 54%, rgba(13, 105, 161, 0.2), transparent 36%),
          linear-gradient(90deg, rgba(8, 17, 28, 0.72), rgba(8, 17, 28, 0.48) 38%, rgba(8, 17, 28, 0.18) 66%, rgba(8, 17, 28, 0.04)),
          linear-gradient(180deg, rgba(8, 17, 28, 0.08), rgba(8, 17, 28, 0.24));
        content: "";
        inset: 0;
        pointer-events: none;
        position: absolute;
        z-index: 1;
      }

      .turismo-hero-carousel,
      .turismo-hero-carousel span {
        inset: 0;
        position: absolute;
      }

      .turismo-hero-carousel span {
        animation: turismoHeroCarousel 40s ease-in-out infinite;
        background-position: center;
        background-size: cover;
        opacity: 0;
        transform: scale(1.03);
        will-change: opacity, transform;
      }

      .turismo-hero-carousel span:nth-child(1) {
        animation-delay: 0s;
        background-image: url("../img/turismo/hero/playa-rio.webp");
      }

      .turismo-hero-carousel span:nth-child(2) {
        animation-delay: 8s;
        background-image: url("../img/turismo/hero/montana-patagonia.webp");
      }

      .turismo-hero-carousel span:nth-child(3) {
        animation-delay: 16s;
        background-image: url("../img/turismo/hero/nieve-montana.webp");
      }

      .turismo-hero-carousel span:nth-child(4) {
        animation-delay: 24s;
        background-image: url("../img/turismo/hero/cataratas-iguazu.webp");
      }

      .turismo-hero-carousel span:nth-child(5) {
        animation-delay: 32s;
        background-image: url("../img/turismo/hero/ciudad-rio.webp");
      }

      @keyframes turismoHeroCarousel {
        0%,
        8%,
        24% {
          opacity: 1;
        }

        32%,
        100% {
          opacity: 0;
          transform: scale(1.06);
        }
      }

      .turismo-kicker,
      .section-kicker {
        color: #eb3e8f;
        font-size: 0.78rem;
        font-weight: 800;
        letter-spacing: 0.12em;
        text-transform: uppercase;
      }

      .turismo-proof-list {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin-top: 2px;
      }

      .turismo-proof-list span {
        background: rgba(255, 255, 255, 0.13);
        border: 1px solid rgba(255, 255, 255, 0.28);
        border-radius: 999px;
        color: rgba(255, 255, 255, 0.94);
        font-size: 0.86rem;
        font-weight: 800;
        padding: 8px 11px;
      }

      .turismo-hero-actions,
      .package-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin-top: 2px;
      }

      .turismo-hero a,
      .turismo-hero button,
      .turismo-cta a,
      .turismo-cta button,
      .package-actions button:first-child {
        background: #eb3e8f;
        border-color: #eb3e8f;
        box-shadow: 0 14px 30px rgba(235, 62, 143, 0.28);
        color: #fff;
        display: inline-flex;
        font-weight: 700;
        justify-content: center;
      }

      .turismo-hero a:hover,
      .turismo-cta a:hover {
        box-shadow: 0 18px 38px rgba(235, 62, 143, 0.38);
      }

      .turismo-hero button,
      .turismo-hero a,
      .package-detail-hero a,
      .turismo-cta button,
      .turismo-cta a,
      .package-actions a,
      .package-actions button {
        align-items: center;
        border: 1px solid currentColor;
        border-radius: 999px;
        cursor: pointer;
        display: inline-flex;
        font: inherit;
        font-size: 0.98rem;
        font-weight: 700;
        gap: 8px;
        justify-content: center;
        line-height: 1;
        min-height: 50px;
        padding: 13px 22px;
        transition: transform 0.28s var(--ease-premium), box-shadow 0.28s var(--ease-premium), background 0.28s var(--ease-premium);
      }

      .turismo-hero a:hover,
      .turismo-hero button:hover,
      .turismo-cta a:hover,
      .package-actions a:hover,
      .package-actions button:hover {
        transform: translateY(-2px);
      }

      .turismo-hero a:active,
      .turismo-hero button:active,
      .package-actions a:active,
      .package-actions button:active {
        transform: scale(0.97);
      }

      .intention-chip {
        border: 1px solid currentColor;
        cursor: pointer;
        font: inherit;
        font-size: 0.95rem;
        line-height: 1;
        padding: 11px 16px;
      }

      .turismo-hero button,
      .package-detail-hero a:not(.package-back-link),
      .package-actions button:last-child {
        background: rgba(255, 255, 255, 0.08);
        border-color: rgba(255, 255, 255, 0.46);
        color: #fff;
      }

      /* "Pedir asesoramiento" es un CTA de WhatsApp: mismo verde que el
         resto de los botones de WhatsApp del sitio, no el fucsia genérico
         de los otros botones del hero de Turismo. */
      .turismo-hero a:nth-child(2) {
        background: var(--color-whatsapp);
        border-color: var(--color-whatsapp);
        color: #fff;
      }

      .turismo-hero a:nth-child(2):hover {
        box-shadow: 0 18px 38px rgba(24, 169, 87, 0.38);
      }

      .turismo-intention-section {
        align-items: end;
        background: linear-gradient(180deg, #fff, #f7fbfe);
        border: 1px solid var(--color-border);
        border-radius: var(--radius-lg);
        box-shadow: var(--shadow-lift);
        display: grid;
        gap: 16px;
        padding: clamp(18px, 3vw, 28px);
      }

      .intention-chip-row {
        display: flex;
        gap: 8px;
        overflow-x: auto;
        padding-bottom: 4px;
        scrollbar-width: thin;
      }

      .intention-chip {
        background: #fff;
        border-color: var(--color-border-strong);
        border-radius: 999px;
        color: var(--color-primary);
        flex: 0 0 auto;
        font-family: var(--font-ui);
        font-weight: 700;
        min-height: 42px;
        padding: 10px 18px;
        transition: transform 0.24s var(--ease-premium), background 0.24s var(--ease-premium), border-color 0.24s var(--ease-premium), color 0.24s var(--ease-premium);
        white-space: nowrap;
      }

      .intention-chip:hover {
        border-color: var(--color-primary);
        transform: translateY(-1px);
      }

      .intention-chip.active {
        background: var(--color-primary);
        border-color: var(--color-primary);
        box-shadow: 0 10px 22px rgba(13, 105, 161, 0.26);
        color: #fff;
      }

      .catalog-section {
        border-top: 0;
        padding-top: 0;
      }

      .catalog-heading {
        display: grid;
        gap: 8px;
        margin-bottom: 18px;
        max-width: 760px;
      }

      .catalog-heading h2,
      .catalog-heading p {
        margin: 0;
      }

      .catalog-heading h2 {
        color: var(--color-primary-strong);
        font-size: clamp(1.7rem, 3.4vw, 2.5rem);
        line-height: 1.12;
        text-wrap: balance;
      }

      .catalog-heading > p {
        color: var(--color-muted-strong);
        font-size: clamp(1rem, 1.7vw, 1.12rem);
        line-height: 1.6;
      }

      .turismo-results-count {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 999px;
        color: #0d69a1;
        display: inline-flex;
        font-size: 0.82rem;
        font-weight: 900;
        padding: 7px 11px;
        width: fit-content;
      }

      .turismo-search {
        background: #fff;
        border: 1px solid var(--color-border);
        border-radius: var(--radius-lg);
        box-shadow: var(--shadow-lift);
        display: grid;
        gap: 8px;
        padding: 16px 18px;
      }

      .turismo-search span {
        color: var(--color-muted);
        font-family: var(--font-ui);
        font-size: 0.74rem;
        font-weight: 800;
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }

      .turismo-search input {
        background: var(--color-background);
        border: 1px solid var(--color-border);
        border-radius: 14px;
        color: var(--color-text);
        font: inherit;
        font-weight: 600;
        min-height: 48px;
        padding: 12px 16px;
        transition: border-color 0.24s var(--ease-premium), box-shadow 0.24s var(--ease-premium);
        width: 100%;
      }

      .turismo-search input:focus-visible {
        border-color: var(--color-primary);
        box-shadow: 0 0 0 3px rgba(13, 105, 161, 0.16);
        outline: none;
      }

      /* Listado (no grilla de tiles): una fila por viaje, ancho completo.
         Pensado para comparar - destino, duración, precio e incluye se leen
         de un vistazo sin necesidad de abrir cada card, como un catálogo de
         agencia real en vez de una vidriera de e-commerce. */
      /* Centrado a propósito (el cliente prefiere las cards más finas y
         centradas por sobre alinearlas al título de arriba). */
      .package-grid {
        display: grid;
        gap: clamp(16px, 2.2vw, 22px);
        grid-template-columns: 1fr;
        max-width: 980px;
        margin: 0 auto;
      }

      .turismo-empty-state {
        background: #fff;
        border: 1px dashed #b8d4e4;
        border-radius: 8px;
        color: #4f6472;
        display: grid;
        gap: 14px;
        padding: 18px;
      }

      .turismo-empty-state p {
        line-height: 1.5;
        margin: 0;
      }

      .turismo-empty-state a {
        align-items: center;
        border-radius: 8px;
        display: inline-flex;
        font-weight: 800;
        justify-content: center;
        min-height: 42px;
        padding: 11px 14px;
        width: fit-content;
      }

      .package-card {
        background: #fff;
        border: 1px solid var(--color-border);
        border-radius: var(--radius-lg);
        display: grid;
        overflow: hidden;
      }

      .turismo-package-card {
        box-shadow: var(--shadow-lift);
        grid-template-rows: auto 1fr;
        transition: border-color 0.32s var(--ease-premium), box-shadow 0.32s var(--ease-premium), transform 0.32s var(--ease-premium);
      }

      .turismo-package-card:hover {
        border-color: rgba(13, 105, 161, 0.28);
        box-shadow: var(--shadow-lift-hover);
        transform: translateY(-4px);
      }

      .package-image-wrap {
        background: #eef5f8;
        position: relative;
      }

      .package-card-carousel {
        aspect-ratio: 4 / 3;
        overflow: hidden;
      }

      /* A partir de acá entra el formato fila: foto a la izquierda ocupando
         todo el alto de la card, contenido a la derecha. Por debajo de este
         ancho se mantiene el formato vertical (foto arriba, contenido
         abajo), que es el que mejor funciona en mobile. Va después de las
         reglas base para ganar la cascada sin depender de especificidad. */
      @media (min-width: 720px) {
        .turismo-package-card {
          align-items: stretch;
          grid-template-columns: minmax(0, 320px) 1fr;
          grid-template-rows: none;
        }

        .package-card-carousel {
          aspect-ratio: auto;
          height: 100%;
          min-height: 280px;
        }
      }

      .package-carousel-track,
      .package-carousel-track img {
        inset: 0;
        position: absolute;
      }

      .package-carousel-track img {
        height: 100%;
        opacity: 0;
        transition: opacity 240ms ease;
      }

      .package-carousel-track img.active {
        opacity: 1;
        z-index: 1;
      }

      .package-image-wrap span {
        background: rgba(16, 32, 43, 0.78);
        backdrop-filter: blur(10px);
        border-radius: 999px;
        color: #fff;
        font-size: 0.74rem;
        font-weight: 800;
        left: 12px;
        letter-spacing: 0.06em;
        padding: 7px 11px;
        position: absolute;
        text-transform: uppercase;
        top: 12px;
        z-index: 3;
      }

      /* Tags de categoría con color propio (mismas categorías reales que ya
         existen en el admin de Turismo: playa, nieve, familiar, pareja,
         grupo, escapada, nacional, internacional) - antes eran todos del
         mismo gris oscuro genérico, ahora se distinguen de un vistazo. */
      .package-image-wrap span[data-categoria="nieve"] {
        background: rgba(13, 105, 161, 0.88);
      }

      .package-image-wrap span[data-categoria="playa"] {
        background: rgba(235, 62, 143, 0.88);
      }

      .package-image-wrap span[data-categoria="familiar"] {
        background: rgba(24, 169, 87, 0.88);
      }

      .package-image-wrap span[data-categoria="pareja"] {
        background: rgba(216, 47, 128, 0.88);
      }

      .package-image-wrap span[data-categoria="internacional"] {
        background: rgba(8, 59, 122, 0.88);
      }

      .package-image-wrap span[data-categoria="nacional"] {
        background: rgba(16, 32, 43, 0.78);
      }

      .package-carousel-arrow {
        align-items: center;
        background: rgba(16, 32, 43, 0.62);
        border: 1px solid rgba(255, 255, 255, 0.5);
        border-radius: 999px;
        color: #fff;
        cursor: pointer;
        display: inline-flex;
        font: inherit;
        font-size: 1.45rem;
        font-weight: 800;
        height: 42px;
        justify-content: center;
        line-height: 1;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        width: 42px;
        z-index: 3;
      }

      .package-carousel-prev {
        left: 10px;
      }

      .package-carousel-next {
        right: 10px;
      }

      .package-carousel-count {
        background: rgba(16, 32, 43, 0.68);
        border-radius: 999px;
        bottom: 10px;
        color: #fff;
        font-size: 0.78rem;
        font-weight: 800;
        padding: 6px 9px;
        position: absolute;
        right: 10px;
        z-index: 3;
      }

      .package-card img {
        aspect-ratio: 4 / 3;
        display: block;
        object-fit: cover;
        width: 100%;
      }

      .package-card-body {
        display: grid;
        gap: 13px;
        padding: 20px;
      }

      .package-card h3,
      .package-card p {
        margin: 0;
      }

      .package-card-head {
        display: grid;
        gap: 4px;
      }

      .package-card h3 {
        color: #10202b;
        font-size: 1.48rem;
        line-height: 1.1;
      }

      .package-summary {
        color: #4f6472;
        line-height: 1.52;
      }

      .package-quick-info {
        color: #0d69a1;
        font-size: 0.98rem;
        font-weight: 800;
      }

      .package-quick-info {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
      }

      .package-quick-info span {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 999px;
        color: #0d69a1;
        font-size: 0.86rem;
        padding: 7px 10px;
      }

      .package-fecha-salida {
        align-items: center;
        color: #4f6472;
        display: flex;
        flex-wrap: wrap;
        font-size: 0.84rem;
        font-weight: 700;
        gap: 8px;
        margin: -2px 0 4px;
      }

      .package-badge-garantizada {
        background: #e6f6ec;
        border: 1px solid #9bd4ad;
        border-radius: 999px;
        color: #146538;
        font-size: 0.7rem;
        font-weight: 900;
        letter-spacing: 0.03em;
        padding: 2px 9px;
        text-transform: uppercase;
        white-space: nowrap;
      }

      .package-price {
        align-items: end;
        background: linear-gradient(180deg, #f7fbfe, #fff);
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: flex;
        flex-wrap: wrap;
        gap: 6px 12px;
        justify-content: space-between;
        padding: 13px 14px;
      }

      .package-price span {
        color: #4f6472;
        font-size: 0.78rem;
        font-weight: 900;
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }

      .package-price strong {
        color: #10202b;
        font-size: clamp(1.25rem, 4vw, 1.75rem);
        line-height: 1;
      }

      .package-detail-facts span {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        color: #10202b;
        font-size: 0.93rem;
        padding: 9px 10px;
      }

      .package-includes {
        display: grid;
        gap: 7px;
      }

      .package-includes strong {
        color: #10202b;
        font-size: 0.82rem;
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }

      .package-includes div {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
      }

      .package-includes span {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 999px;
        color: #10202b;
        font-size: 0.84rem;
        font-weight: 800;
        padding: 6px 9px;
      }

      .package-meta {
        color: #4f6472;
        font-size: 0.82rem;
        font-weight: 800;
        letter-spacing: 0.06em;
        text-transform: uppercase;
      }

      .package-actions a,
      .package-actions button {
        align-items: center;
        flex: 1 1 150px;
        font-weight: 800;
        justify-content: center;
        min-height: 42px;
        text-align: center;
      }

      .package-actions a:first-child {
        background: #fff;
        border: 1px solid #b8d4e4;
        color: #0d69a1;
        display: inline-flex;
      }

      /* Verde en todos los usos de .package-whatsapp (card, estado vacío y
         sección de confianza de Turismo) - mismo verde que el resto de los
         CTA de WhatsApp del sitio. */
      .package-whatsapp {
        background: var(--color-whatsapp);
        border-color: var(--color-whatsapp);
        color: #fff;
      }

      .package-whatsapp:hover {
        box-shadow: 0 18px 38px rgba(24, 169, 87, 0.38);
      }

      .package-actions button:last-child {
        background: #fff;
        border-color: #b8d4e4;
        color: #0d69a1;
        font-weight: 800;
      }

      .package-detail-facts {
        display: grid;
        gap: 10px;
      }

      .package-detail-hero {
        background:
          linear-gradient(90deg, rgba(2, 15, 28, 0.88), rgba(13, 105, 161, 0.48) 48%, rgba(2, 15, 28, 0.2)),
          linear-gradient(180deg, rgba(2, 15, 28, 0.18), rgba(2, 15, 28, 0.74)),
          var(--package-hero-image) center / cover;
        border: 0;
        color: #fff;
        margin: -18px -18px 0;
        min-height: 62svh;
        padding: 38px 18px;
      }

      .package-detail-hero-content {
        display: grid;
        gap: 14px;
        max-width: 780px;
        min-height: calc(62svh - 76px);
        place-content: center;
      }

      .package-detail-hero h1 {
        color: #fff;
        font-size: clamp(2.35rem, 6vw, 4.8rem);
        line-height: 1;
        margin: 0;
        text-shadow: 0 4px 30px rgba(2, 15, 28, 0.48);
        text-wrap: balance;
      }

      .package-detail-hero p {
        color: rgba(255, 255, 255, 0.92);
        font-size: 1.05rem;
        line-height: 1.55;
        margin: 0;
      }

      .package-back-link {
        background: rgba(255, 255, 255, 0.1);
        border: 1px solid rgba(255, 255, 255, 0.28);
        border-radius: 999px;
        color: rgba(255, 255, 255, 0.88);
        font-size: 0.92rem;
        font-weight: 800;
        padding: 8px 12px;
        width: fit-content;
      }

      .package-detail-hero a:not(.package-back-link) {
        border: 1px solid rgba(255, 255, 255, 0.48);
        border-radius: 8px;
        color: #fff;
        font-weight: 800;
      }

      .package-detail-hero .turismo-hero-actions a:first-child {
        background: var(--color-whatsapp);
        border-color: var(--color-whatsapp);
      }

      .package-detail-summary,
      .package-detail-content,
      .package-detail-gallery,
      .package-detail-payment {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        padding: clamp(20px, 4vw, 34px);
      }

      .package-detail-gallery {
        display: grid;
        gap: 14px;
      }

      .package-gallery-main,
      .package-gallery-strip img {
        border-radius: 8px;
        display: block;
        object-fit: cover;
        width: 100%;
      }

      .package-gallery-main {
        aspect-ratio: 16 / 10;
        box-shadow: 0 16px 34px rgba(16, 32, 43, 0.12);
      }

      .package-gallery-strip {
        display: grid;
        gap: 10px;
        grid-template-columns: repeat(auto-fit, minmax(118px, 1fr));
      }

      .package-gallery-strip img {
        aspect-ratio: 4 / 3;
        border: 1px solid #d9e7ef;
      }

      .package-detail-summary {
        display: grid;
        gap: 10px;
      }

      .package-detail-section-head {
        display: grid;
        gap: 6px;
      }

      .package-detail-summary h2,
      .package-detail-summary p,
      .package-detail-payment h2 {
        margin: 0;
      }

      .package-detail-summary p {
        color: #4f6472;
        font-size: 1.05rem;
        line-height: 1.65;
      }

      .package-detail-content {
        display: grid;
        gap: 14px;
      }

      .package-detail-content h2,
      .package-detail-payment h2,
      .package-detail-gallery h2,
      .package-detail-gallery p {
        margin: 0;
      }

      .package-detail-content ul,
      .package-detail-payment ul {
        margin: 10px 0 0;
        padding-left: 18px;
      }

      .package-detail-content li,
      .package-detail-payment li {
        margin-bottom: 8px;
      }

      .package-detail-payment {
        display: grid;
        gap: 14px;
      }

      .package-detail-payment-list {
        grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
      }

      .package-detail-list-card {
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 12px;
        padding: 16px;
      }

      .package-detail-list-card--positive {
        background: #f4fbf7;
        border-color: #c7ead4;
      }

      .package-detail-list-card--neutral {
        background: #f8fbfd;
      }

      .package-detail-check-list,
      .package-detail-payment-list {
        display: grid;
        gap: 8px;
        list-style: none;
        margin: 0;
        padding: 0;
      }

      .package-detail-check-list li,
      .package-detail-payment-list li {
        align-items: start;
        color: #334957;
        display: grid;
        font-weight: 700;
        gap: 8px;
        grid-template-columns: 18px 1fr;
        line-height: 1.4;
        margin: 0;
      }

      .package-detail-check-list li::before,
      .package-detail-payment-list li::before {
        align-items: center;
        background: #0d69a1;
        border-radius: 999px;
        color: #fff;
        content: "✓";
        display: inline-flex;
        font-size: 0.72rem;
        font-weight: 900;
        height: 18px;
        justify-content: center;
        line-height: 1;
        margin-top: 1px;
        width: 18px;
      }

      .package-detail-list-card--neutral .package-detail-check-list li::before {
        background: #6a7b84;
        content: "•";
      }

      .turismo-trust {
        background: linear-gradient(180deg, #fff, #f7fbfe);
        border: 1px solid #cfe1ec;
        border-radius: 8px;
        display: grid;
        gap: 20px;
        padding: clamp(20px, 4vw, 30px);
      }

      .turismo-trust-grid {
        display: grid;
        gap: 12px;
      }

      .turismo-trust-grid article {
        background: rgba(255, 255, 255, 0.84);
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 8px;
        grid-template-columns: auto 1fr;
        padding: 16px;
      }

      .turismo-trust-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
      }

      .turismo-trust-actions a {
        align-items: center;
        border-radius: 8px;
        display: inline-flex;
        font-weight: 800;
        justify-content: center;
        min-height: 44px;
        padding: 12px 16px;
      }

      .turismo-trust-grid article > span {
        align-items: center;
        background: #0d69a1;
        border-radius: 999px;
        color: #fff;
        display: inline-flex;
        font-size: 0.76rem;
        font-weight: 900;
        height: 28px;
        justify-content: center;
        margin-top: 1px;
        width: 28px;
      }

      .turismo-trust-grid strong,
      .turismo-trust-grid p {
        margin: 0;
      }

      .turismo-trust-grid strong {
        color: #10202b;
        align-self: center;
      }

      .turismo-trust-grid p {
        color: #4f6472;
        grid-column: 2;
        line-height: 1.45;
      }

      .turismo-trust h2,
      .turismo-cta h2 {
        margin-top: 0;
      }

      .turismo-cta {
        align-items: center;
        background:
          linear-gradient(135deg, rgba(13, 105, 161, 0.96), rgba(16, 32, 43, 0.96)),
          url("../img/turismo/hero/montana-patagonia.webp") center / cover;
        border: 0;
        border-radius: 8px;
        color: #fff;
        display: grid;
        gap: 18px;
        padding: clamp(22px, 4vw, 34px);
      }

      .turismo-cta h2,
      .turismo-cta p {
        margin: 0;
      }

      .turismo-cta h2 {
        font-size: clamp(1.7rem, 4vw, 2.6rem);
        line-height: 1.04;
        text-wrap: balance;
      }

      .turismo-cta a {
        align-items: center;
        background: #fff;
        border-color: #fff;
        color: #0d69a1;
        display: inline-flex;
        font-weight: 800;
        justify-content: center;
        min-height: 42px;
        width: fit-content;
      }

      .package-detail-cta .turismo-hero-actions a:first-child {
        background: var(--color-whatsapp);
        border-color: var(--color-whatsapp);
        color: #fff;
      }

      .package-detail-cta .turismo-hero-actions a:last-child {
        background: transparent;
        border-color: rgba(255, 255, 255, 0.55);
        color: #fff;
      }

      /* --- Página de detalle: secciones nuevas --- */

      .package-detail-fechas {
        font-size: 1.05rem;
        font-weight: 800;
        letter-spacing: 0.01em;
        margin: 0;
        opacity: 0.92;
      }

      .package-detail-badge {
        background: rgba(255, 255, 255, 0.18);
        border: 1px solid rgba(255, 255, 255, 0.55);
        border-radius: 999px;
        color: #fff;
        display: inline-block;
        font-size: 0.82rem;
        font-weight: 900;
        letter-spacing: 0.04em;
        padding: 5px 14px;
        text-transform: uppercase;
        width: fit-content;
      }

      .package-detail-hero-highlights {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
      }

      .package-detail-hero-highlights span {
        background: rgba(255, 255, 255, 0.13);
        border: 1px solid rgba(255, 255, 255, 0.3);
        border-radius: 999px;
        color: #fff;
        font-size: 0.86rem;
        font-weight: 850;
        padding: 8px 11px;
      }

      .package-detail-precio-section {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 16px;
        grid-template-columns: minmax(220px, 0.35fr) minmax(0, 1fr);
        padding: clamp(16px, 3vw, 24px);
      }

      .package-detail-precio-card {
        background: linear-gradient(180deg, #f0f7fc, #fff);
        border: 1px solid #c4dcea;
        border-radius: 8px;
        display: grid;
        gap: 14px;
        padding: 20px;
      }

      .package-detail-precio-main {
        display: grid;
        gap: 2px;
      }

      .package-detail-precio-main span {
        color: #516575;
        font-size: 0.82rem;
        font-weight: 800;
        text-transform: uppercase;
      }

      .package-detail-precio-main strong {
        color: #0d69a1;
        font-size: clamp(1.85rem, 4vw, 2.45rem);
        line-height: 1;
      }

      .package-detail-precio-main small {
        color: #516575;
        font-size: 0.8rem;
      }

      .package-detail-precio-desglose {
        border-top: 1px solid #c4dcea;
        display: grid;
        gap: 8px;
        padding-top: 12px;
      }

      .package-detail-precio-desglose div {
        display: flex;
        gap: 8px;
        justify-content: space-between;
      }

      .package-detail-precio-desglose span {
        color: #516575;
        font-size: 0.85rem;
      }

      .package-detail-precio-desglose strong {
        color: #10202b;
        font-size: 0.9rem;
        font-weight: 800;
      }

      .package-detail-precio-cta {
        background: var(--color-whatsapp);
        border-radius: 8px;
        color: #fff;
        display: block;
        font-size: 0.9rem;
        font-weight: 800;
        padding: 10px 14px;
        text-align: center;
        text-decoration: none;
      }

      .package-detail-facts {
        display: grid;
        align-content: start;
        gap: 8px;
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .package-detail-facts div {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 5px;
        padding: 12px;
      }

      .package-detail-facts span {
        color: #6a7b84;
        font-size: 0.85rem;
        font-weight: 700;
      }

      .package-detail-facts strong {
        color: #10202b;
        font-size: 0.96rem;
        font-weight: 800;
      }

      .package-detail-garantizada {
        color: #146538 !important;
      }

      /* --- Itinerario público --- */
      .package-detail-itinerario {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 16px;
        padding: 18px;
      }

      .package-detail-itinerario h2 {
        margin: 0;
      }

      .package-itinerario-list {
        display: grid;
        gap: 10px;
      }

      .package-itinerario-item {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        overflow: hidden;
      }

      .package-itinerario-toggle {
        align-items: center;
        background: none;
        border: none;
        cursor: pointer;
        display: grid;
        font: inherit;
        gap: 12px;
        grid-template-columns: 40px 1fr 24px;
        padding: 14px 16px;
        text-align: left;
        width: 100%;
      }

      .package-itinerario-num {
        align-items: center;
        background: var(--color-surface-soft, #eef6fb);
        border-radius: 999px;
        color: #0d69a1;
        display: flex;
        font-size: 0.82rem;
        font-weight: 900;
        height: 40px;
        justify-content: center;
        width: 40px;
      }

      .package-itinerario-toggle-text {
        display: grid;
        gap: 2px;
      }

      .package-itinerario-toggle-text strong {
        color: #10202b;
        font-size: 0.95rem;
        font-weight: 800;
      }

      .package-itinerario-toggle-text small {
        color: #6b7d88;
        font-size: 0.78rem;
      }

      .package-itinerario-chevron {
        color: #6b7d88;
        justify-self: end;
        transition: transform 0.2s ease;
      }

      .package-itinerario-item.is-open .package-itinerario-chevron {
        color: #0d69a1;
        transform: rotate(180deg);
      }

      .package-itinerario-body {
        display: none;
        padding: 0 16px 16px 68px;
      }

      .package-itinerario-item.is-open .package-itinerario-body {
        display: block;
      }

      .package-itinerario-body p {
        color: #4f6472;
        font-size: 0.9rem;
        line-height: 1.5;
        margin: 0;
      }

      /* --- Barra fija inferior en detalle de paquete: precio + WhatsApp
         siempre accesibles, sin tener que scrollear hasta el CTA final --- */
      .package-sticky-bar {
        align-items: center;
        background: #fff;
        border-top: 1px solid #d9e7ef;
        box-shadow: 0 -8px 24px rgba(16, 32, 43, 0.1);
        bottom: 0;
        display: flex;
        gap: 12px;
        justify-content: space-between;
        left: 0;
        padding: 12px 16px;
        position: fixed;
        right: 0;
        z-index: 30;
      }

      .package-sticky-bar > div {
        display: grid;
        gap: 0;
        line-height: 1.1;
      }

      .package-sticky-bar span {
        color: #6b7d88;
        font-size: 0.72rem;
        font-weight: 700;
        text-transform: uppercase;
      }

      .package-sticky-bar strong {
        color: #083b7a;
        font-size: 1.15rem;
        font-weight: 900;
      }

      .package-sticky-bar a {
        background: var(--color-whatsapp, #18a957);
        border-radius: 999px;
        color: #fff;
        flex-shrink: 0;
        font-size: 0.88rem;
        font-weight: 800;
        padding: 12px 18px;
        text-decoration: none;
        white-space: nowrap;
      }

      body[data-app-entry="admin"] .package-sticky-bar {
        display: none;
      }

      /* --- Condición de venta --- */
      .package-detail-condicion {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 6px;
        padding: 14px 18px;
      }

      .package-detail-condicion strong {
        color: #10202b;
        font-size: 0.78rem;
        font-weight: 900;
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }

      .package-detail-condicion p {
        color: #516575;
        font-size: 0.82rem;
        line-height: 1.55;
        margin: 0;
      }

      /* --- Secciones compartidas del detalle --- */
      .package-detail-summary,
      .package-detail-content,
      .package-detail-gallery,
      .package-detail-payment,
      .package-detail-itinerario,
      .package-detail-condicion {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        padding: 18px;
      }

      .package-detail-condicion {
        background: #f7fbfe;
      }

      @media (max-width: 780px) {
        .package-detail-precio-section {
          grid-template-columns: 1fr;
        }

        .package-detail-precio-card {
          min-width: 0;
        }
      }

      @media (max-width: 520px) {
        .package-detail-hero {
          min-height: 54svh;
          padding-bottom: 28px;
          padding-top: 30px;
        }

        .package-detail-hero-content {
          gap: 12px;
          min-height: calc(54svh - 58px);
          place-content: end;
        }

        .package-detail-hero h1 {
          font-size: clamp(2rem, 10vw, 2.9rem);
        }

        .package-detail-hero-highlights {
          display: grid;
          gap: 7px;
        }

        .package-detail-hero-highlights span {
          border-radius: 12px;
          font-size: 0.82rem;
        }

        .package-detail-facts {
          grid-template-columns: 1fr;
        }
      }

      .estudiantil-layout {
        gap: 36px;
      }

      .estudiantil-hero {
        background:
          linear-gradient(90deg, rgba(10, 30, 54, 0.88), rgba(13, 105, 161, 0.7) 48%, rgba(235, 62, 143, 0.52)),
          linear-gradient(180deg, rgba(10, 30, 54, 0.1), rgba(10, 30, 54, 0.62)),
          url("../img/brand-estudiantil-egresados.png") center / cover;
        border: 0;
        color: #fff;
        margin: -18px -18px 0;
        min-height: 68svh;
        padding: 42px 18px;
      }

      .estudiantil-hero-content {
        display: grid;
        gap: 20px;
        max-width: 860px;
        min-height: calc(68svh - 84px);
        place-content: center;
      }

      .estudiantil-hero h1 {
        color: #fff;
        font-size: clamp(2.55rem, 7vw, 5.25rem);
        line-height: 0.98;
        margin: 0;
        max-width: 900px;
        text-shadow: 0 5px 30px rgba(2, 10, 22, 0.42);
        text-wrap: balance;
      }

      .estudiantil-hero p {
        color: rgba(255, 255, 255, 0.92);
        font-size: clamp(1rem, 1.7vw, 1.24rem);
        line-height: 1.55;
        margin: 0;
        max-width: 680px;
      }

      .estudiantil-hero-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
      }

      .estudiantil-hero a,
      .student-path-card a,
      .estudiantil-cta a {
        background: #eb3e8f;
        border-color: #eb3e8f;
        color: #fff;
        display: inline-flex;
        font-weight: 700;
        justify-content: center;
      }

      .estudiantil-hero-actions a:last-child {
        background: rgba(255, 255, 255, 0.08);
        border-color: rgba(255, 255, 255, 0.52);
      }

      .student-experience {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 10px;
        max-width: 980px;
        padding: 24px;
      }

      .student-experience h2,
      .student-experience p,
      .student-path-heading h2,
      .student-path-heading p,
      .estudiantil-trust h2,
      .estudiantil-cta h2 {
        margin: 0;
      }

      .student-path-section {
        border-top: 0;
        padding-top: 0;
      }

      .student-path-heading {
        display: grid;
        gap: 10px;
        margin-bottom: 20px;
        max-width: 760px;
      }

      .student-path-grid {
        display: grid;
        gap: 22px;
      }

      .student-path-card {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 12px;
        overflow: hidden;
      }

      .student-path-card img {
        aspect-ratio: 4 / 3;
        display: block;
        object-fit: cover;
        width: 100%;
      }

      .student-path-visual {
        aspect-ratio: 4 / 3;
        display: block;
        min-height: 180px;
        position: relative;
      }

      .student-path-visual::after {
        background: rgba(255, 255, 255, 0.28);
        border: 1px solid rgba(255, 255, 255, 0.38);
        border-radius: 999px;
        bottom: 18px;
        content: "";
        height: 74px;
        position: absolute;
        right: 18px;
        width: 74px;
      }

      .student-path-visual.is-primary-carlos-paz {
        background:
          radial-gradient(circle at 82% 24%, rgba(255, 255, 255, 0.52), transparent 24%),
          linear-gradient(135deg, #28b979 0%, #34d5bd 58%, #dff8ee 100%);
      }

      .student-path-visual.is-secondary-bariloche {
        background:
          radial-gradient(circle at 26% 22%, rgba(255, 255, 255, 0.62), transparent 22%),
          linear-gradient(135deg, #23384f 0%, #617188 54%, #e7eef4 100%);
      }

      .student-path-visual.is-secondary-carlos-paz {
        background:
          radial-gradient(circle at 76% 24%, rgba(255, 255, 255, 0.52), transparent 24%),
          linear-gradient(135deg, #f07c2e 0%, #e9b33f 56%, #fff0c8 100%);
      }

      .student-path-body {
        display: grid;
        gap: 12px;
        padding: 18px;
      }

      .student-path-body h3,
      .student-path-body p {
        margin: 0;
      }

      .student-path-kicker {
        color: #4f6472;
        font-size: 0.95rem;
      }

      .student-path-meta {
        color: #0d4f79;
        font-size: 0.92rem;
        font-weight: 800;
      }

      .estudiantil-trust {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        padding: 18px;
      }

      .estudiantil-cta {
        background: #0d69a1;
        border: 0;
        border-radius: 8px;
        color: #fff;
        padding: 22px;
      }

      .student-detail-layout {
        gap: 36px;
      }

      .student-detail-hero {
        background:
          linear-gradient(90deg, rgba(8, 35, 58, 0.9), rgba(13, 105, 161, 0.68) 48%, rgba(235, 62, 143, 0.38)),
          linear-gradient(180deg, rgba(8, 35, 58, 0.08), rgba(8, 35, 58, 0.62)),
          url("../img/brand-estudiantil-egresados.png") center / cover;
        border: 0;
        color: #fff;
        margin: -18px -18px 0;
        min-height: 68svh;
        padding: 42px 18px;
      }

      .student-detail-hero.primary {
        background:
          linear-gradient(90deg, rgba(8, 35, 58, 0.88), rgba(235, 62, 143, 0.62) 48%, rgba(13, 105, 161, 0.38)),
          linear-gradient(180deg, rgba(8, 35, 58, 0.1), rgba(8, 35, 58, 0.62)),
          url("../img/brand-estudiantil-egresados.png") center / cover;
      }

      .student-detail-hero-content {
        display: grid;
        gap: 20px;
        max-width: 880px;
        min-height: calc(68svh - 84px);
        place-content: center;
      }

      .student-detail-hero h1 {
        font-size: clamp(2.55rem, 7vw, 5.25rem);
        line-height: 0.98;
        margin: 0;
        text-wrap: balance;
      }

      .student-detail-hero p {
        color: rgba(255, 255, 255, 0.92);
        font-size: clamp(1rem, 1.7vw, 1.24rem);
        line-height: 1.55;
        margin: 0;
        max-width: 680px;
      }

      .student-detail-hero a,
      .student-detail-cta a {
        background: #eb3e8f;
        border-color: #eb3e8f;
        color: #fff;
        display: inline-flex;
        font-weight: 700;
        justify-content: center;
      }

      .student-detail-cta-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
      }

      .student-detail-hero-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
      }

      .student-detail-hero-actions a:last-child {
        background: rgba(255, 255, 255, 0.08);
        border-color: rgba(255, 255, 255, 0.52);
      }

      .student-detail-cta .student-detail-cta-secondary {
        background: var(--color-whatsapp);
        border-color: var(--color-whatsapp);
        color: #fff;
      }

      .student-detail-experience,
      .student-detail-benefits {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 10px;
        padding: clamp(20px, 4vw, 34px);
      }

      .student-detail-experience h2,
      .student-detail-experience p,
      .student-detail-benefits h2,
      .student-detail-cta h2 {
        margin: 0;
      }

      .student-detail-benefits ul {
        display: grid;
        gap: 10px;
        list-style: none;
        margin: 16px 0 0;
        padding: 0;
      }

      .student-detail-benefits li {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        padding: 12px;
      }

      .bariloche-experiences {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 22px;
        padding: clamp(20px, 4vw, 34px);
      }

      .bariloche-experiences h2,
      .bariloche-experience-category h3,
      .bariloche-experience-card h4 {
        margin: 0;
      }

      .bariloche-experience-photo,
      .bariloche-experience-video,
      .bariloche-gallery-slot {
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        overflow: hidden;
        min-height: 120px;
      }

      .bariloche-experience-photo,
      .bariloche-experience-video {
        aspect-ratio: 16 / 9;
      }

      .bariloche-gallery-grid,
      .bariloche-experience-grid {
        display: grid;
        gap: 12px;
      }

      .bariloche-gallery-slot {
        aspect-ratio: 4 / 3;
      }

      .bariloche-experience-photo img,
      .bariloche-gallery-slot img,
      .bariloche-experience-video video {
        display: block;
        height: 100%;
        object-fit: cover;
        width: 100%;
      }

      .bariloche-experience-category {
        border-top: 1px solid #d9e7ef;
        display: grid;
        gap: 12px;
        padding-top: 16px;
      }

      .bariloche-experience-category:first-of-type {
        border-top: 0;
        padding-top: 0;
      }

      .bariloche-experience-card {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 12px;
        padding: 14px;
      }

      .bariloche-experience-description {
        min-height: 44px;
      }

      .student-detail-cta {
        background: #0d69a1;
        border: 0;
        border-radius: 8px;
        color: #fff;
        display: grid;
        gap: 14px;
        padding: clamp(24px, 5vw, 52px);
      }

      .student-detail-cta p {
        margin: 0;
        max-width: 680px;
      }

      .institutional-layout {
        gap: 36px;
      }

      .institutional-hero,
      .institutional-split,
      .contact-options,
      .institutional-contact-strip {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
      }

      .institutional-hero {
        align-items: center;
        display: grid;
        gap: 24px;
        grid-template-columns: minmax(0, 1fr);
        margin: -18px -18px 0;
        min-height: 62svh;
        padding: clamp(32px, 6vw, 72px) 18px;
      }

      .institutional-hero h1 {
        color: #10202b;
        font-size: clamp(2.65rem, 7vw, 5.4rem);
        line-height: 0.98;
        margin: 0;
        text-wrap: balance;
      }

      .institutional-hero p,
      .institutional-split p,
      .contact-options p,
      .institutional-contact-strip p {
        color: #4f6472;
        line-height: 1.6;
        margin: 0;
      }

      .institutional-hero > div {
        display: grid;
        gap: 18px;
        max-width: 820px;
      }

      .institutional-logo {
        max-width: min(340px, 74vw);
        width: 100%;
      }

      .institutional-actions,
      .contact-socials {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
      }

      .institutional-split a {
        align-items: center;
        background: #eb3e8f;
        border: 1px solid #eb3e8f;
        border-radius: 8px;
        color: #fff;
        display: inline-flex;
        font-weight: 800;
        justify-content: center;
        min-height: 42px;
        padding: 11px 14px;
        width: fit-content;
      }

      /* Estos tres son siempre CTA de WhatsApp en el uso real (contacto,
         "Consultás por acá", franja de consultas) - verde en vez del
         fucsia genérico de .institutional-split. */
      .institutional-actions a,
      .contact-options a,
      .institutional-contact-strip a {
        align-items: center;
        background: var(--color-whatsapp);
        border: 1px solid var(--color-whatsapp);
        border-radius: 8px;
        color: #fff;
        display: inline-flex;
        font-weight: 800;
        justify-content: center;
        min-height: 42px;
        padding: 11px 14px;
        width: fit-content;
      }

      .institutional-actions a:nth-child(2),
      .contact-socials a {
        background: #fff;
        border-color: #b8d4e4;
        color: #0d69a1;
      }

      .institutional-split,
      .contact-options {
        display: grid;
        gap: 16px;
        padding: clamp(20px, 4vw, 34px);
      }

      .institutional-split article,
      .contact-options article {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 12px;
        padding: 18px;
      }

      .institutional-split h2,
      .contact-options h2,
      .institutional-contact-strip h2 {
        color: #10202b;
        margin: 0;
      }

      .institutional-contact-strip {
        display: grid;
        gap: 14px;
        padding: clamp(22px, 4vw, 38px);
      }

      .brand-mark {
        max-width: 86px;
      }

      .portal-layout {
        background: #f5f8fb;
        gap: 14px;
      }

      .portal-hero {
        background:
          linear-gradient(135deg, rgba(8, 59, 122, 0.96), rgba(13, 105, 161, 0.94)),
          url("../img/brand-estudiantil-egresados.png") center / cover;
        border: 0;
        border-radius: 0 0 18px 18px;
        color: #fff;
        margin: -18px -18px 0;
        padding: 34px 18px 28px;
      }

      .portal-hero span {
        color: rgba(255, 255, 255, 0.78);
        display: block;
        font-size: 0.78rem;
        font-weight: 900;
        letter-spacing: 0.08em;
        margin-bottom: 8px;
        text-transform: uppercase;
      }

      .portal-hero h1 {
        color: #fff;
        font-size: clamp(1.9rem, 8vw, 3.4rem);
        line-height: 1.04;
        margin: 0 0 10px;
      }

      .portal-hero p {
        color: rgba(255, 255, 255, 0.9);
        font-size: 1.05rem;
        line-height: 1.55;
        margin: 0;
        max-width: 620px;
      }

      .portal-panel,
      .portal-result,
      .portal-empty,
      .admin-demo-section {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 18px;
        box-shadow: 0 12px 28px rgba(16, 32, 43, 0.06);
        padding: 18px;
      }

      .portal-panel-head {
        display: grid;
        gap: 4px;
        margin-bottom: 16px;
      }

      .portal-panel-head span {
        color: #0d69a1;
        font-size: 0.78rem;
        font-weight: 900;
        letter-spacing: 0.06em;
        text-transform: uppercase;
      }

      .portal-panel-head h2,
      .portal-panel-head p {
        margin: 0;
      }

      .portal-panel-head h2 {
        color: #10202b;
        font-size: 1.22rem;
        line-height: 1.15;
      }

      .portal-panel-head p {
        color: #5c6c76;
        line-height: 1.4;
      }

      .portal-notice {
        background: #fff7fc;
        border: 1px solid #f4b8d6;
        border-radius: 8px;
        color: #7a2450;
        font-weight: 700;
        padding: 14px;
      }

      .portal-form {
        display: grid;
        gap: 12px;
      }

      .portal-form label {
        font-weight: 700;
      }

      .portal-form input {
        border: 1px solid #b8d4e4;
        border-radius: 14px;
        color: #10202b;
        font: inherit;
        min-height: 50px;
        padding: 12px;
      }

      .portal-form-hint {
        color: #6a7b84;
        font-size: 0.8rem;
        font-weight: 500;
        margin-top: -6px;
      }

      .portal-form button,
      .portal-result a,
      .portal-empty a {
        border-radius: 14px;
        color: #fff;
        display: inline-flex;
        font-weight: 700;
        justify-content: center;
        min-height: 50px;
      }

      .portal-form button {
        background: #eb3e8f;
        border-color: #eb3e8f;
      }

      .portal-result a,
      .portal-empty a {
        background: var(--color-whatsapp);
        border-color: var(--color-whatsapp);
      }

      .inscripcion-page-hero {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 0;
        overflow: hidden;
      }

      /* Hero compacto de inscripción: antes ocupaba 62svh (foto grande +
         lista de pasos duplicada con el stepper real de abajo). En mobile,
         eso empujaba todo el formulario fuera de la vista inicial. Ahora
         es un bloque de texto simple, sin foto ni scroll innecesario. */
      .inscripcion-page-hero--compact {
        background:
          radial-gradient(circle at 88% 12%, rgba(235, 62, 143, 0.28), transparent 46%),
          linear-gradient(135deg, var(--color-deep-blue, #083b7a), var(--color-primary, #0d69a1));
        border: none;
        align-items: center;
        border-radius: var(--radius-lg);
        box-sizing: border-box;
        min-height: 168px;
        padding: clamp(32px, 5vw, 52px) clamp(24px, 4vw, 44px);
      }

      .inscripcion-hero-reassure {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        margin-top: 6px;
      }

      /* Píldora en neumorfismo: extruida del propio gradiente azul del hero
         (no un panel de vidrio suelto) - sombra oscura hacia abajo-derecha +
         brillo tenue hacia arriba-izquierda, como si estuviera modelada en
         el mismo material del fondo. Reemplaza el ícono roto de Material
         Symbols (el usuario reportó que la fuente no cargó y quedó
         mostrando el texto "timer"/"how_to_reg"/"lock" en crudo) por un
         emoji real, que no depende de que cargue una fuente externa. */
      /* ">" (hijo directo) a propósito: sin esto, el selector también
         matchea el <span> del ícono anidado adentro (es descendiente
         igual) y, por especificidad (0,1,1 > 0,1,0), le ganaba a
         .inscripcion-reassure-icon y tapaba su fondo/sombra propios. */
      .inscripcion-hero-reassure > span {
        align-items: center;
        background: linear-gradient(145deg, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0.03));
        border: 1px solid rgba(255, 255, 255, 0.14);
        border-radius: 999px;
        box-shadow:
          5px 5px 12px rgba(3, 14, 30, 0.35),
          -3px -3px 8px rgba(140, 195, 235, 0.1),
          inset 0 1px 0 rgba(255, 255, 255, 0.06);
        color: #fff;
        display: inline-flex;
        font-family: var(--font-ui);
        font-size: 0.82rem;
        font-weight: 600;
        gap: 9px;
        padding: 7px 16px 7px 7px;
      }

      /* Círculo translúcido (referencia del cliente: kit neumorfismo claro,
         "tipo transparente") en vez del relleno azul sólido de antes - deja
         ver el degradé del hero por detrás, con blur tipo vidrio esmerilado,
         y el relieve lo da la sombra dual (no el color). */
      .inscripcion-reassure-icon {
        align-items: center;
        backdrop-filter: blur(6px);
        background: linear-gradient(145deg, rgba(255, 255, 255, 0.22), rgba(255, 255, 255, 0.05));
        border: 1px solid rgba(255, 255, 255, 0.22);
        border-radius: 999px;
        box-shadow:
          3px 3px 7px rgba(2, 10, 22, 0.32),
          -2px -2px 6px rgba(180, 215, 245, 0.14),
          inset 1px 1px 1px rgba(255, 255, 255, 0.16);
        display: inline-flex;
        flex-shrink: 0;
        font-size: 15px;
        height: 30px;
        justify-content: center;
        line-height: 1;
        width: 30px;
      }

      .public-inscripcion-layout > .inscripcion-page-hero--compact {
        padding-top: 44px;
      }

      .inscripcion-hero-copy-compact {
        align-content: center;
        color: #fff;
        display: grid;
        gap: 12px;
        min-height: 80px;
        max-width: 640px;
      }

      .inscripcion-hero-copy-compact span {
        font-size: 0.75rem;
        font-weight: 800;
        letter-spacing: 0.08em;
        line-height: 1;
        opacity: 0.85;
        text-transform: uppercase;
      }

      .inscripcion-hero-copy-compact h1 {
        color: #fff;
        font-size: clamp(1.5rem, 4.5vw, 2.1rem);
        margin: 0;
      }

      .inscripcion-hero-copy-compact p {
        color: rgba(255, 255, 255, 0.92);
        font-size: 0.92rem;
        line-height: 1.5;
        margin: 0;
        opacity: 0.92;
      }

      @media (min-width: 720px) {
        .inscripcion-page-hero--compact {
          min-height: 176px;
          padding: 52px 36px;
        }

        .public-inscripcion-layout > .inscripcion-page-hero--compact {
          padding-top: 52px;
        }
      }

      /* Stepper de 2 macro-pasos (Selección / Ficha y firma), inspirado en
         el mockup de Visily. Reemplaza el stepper de 5 pasos + la barra
         compacta que se usaban antes. */
      .inscripcion-stepper-v2 {
        align-items: center;
        display: flex;
        gap: 10px;
        margin-bottom: 4px;
      }

      .inscripcion-stepper-v2-item {
        align-items: center;
        display: grid;
        gap: 4px;
        justify-items: center;
        text-align: center;
      }

      .inscripcion-stepper-v2-dot {
        align-items: center;
        background: #e2edf2;
        border-radius: 999px;
        color: #6b7d88;
        display: flex;
        font-weight: 800;
        height: 32px;
        justify-content: center;
        width: 32px;
      }

      .inscripcion-stepper-v2-item.active .inscripcion-stepper-v2-dot {
        background: var(--color-primary, #0d69a1);
        color: #fff;
      }

      .inscripcion-stepper-v2-item.done .inscripcion-stepper-v2-dot {
        background: var(--color-success-text, #1d6b32);
        color: #fff;
      }

      .inscripcion-stepper-v2-item small {
        color: #6b7d88;
        font-size: 0.8rem;
        font-weight: 800;
        letter-spacing: 0.04em;
        text-transform: uppercase;
        white-space: nowrap;
      }

      .inscripcion-stepper-v2-item.active small {
        color: var(--color-primary, #0d69a1);
      }

      .inscripcion-stepper-v2-track {
        background: #e2edf2;
        border-radius: 999px;
        flex: 1;
        height: 4px;
        overflow: hidden;
      }

      .inscripcion-stepper-v2-track span {
        background: var(--color-primary, #0d69a1);
        display: block;
        height: 100%;
        transition: width 0.25s ease;
      }

      .inscripcion-stepper-v2-label {
        color: #425460;
        font-size: 0.92rem;
        font-weight: 800;
        margin: 0 0 8px;
      }

      .inscripcion-macro-step {
        display: grid;
        gap: 22px;
      }

      /* FIX: display:grid en la regla de arriba le ganaba en prioridad al
         atributo [hidden] del navegador (que pone display:none). El JS
         marcaba block.hidden = true correctamente, pero visualmente el
         paso seguía mostrándose igual, apilado con el siguiente paso -
         por eso el formulario "avanzaba" internamente (el stepper decía
         Paso 2 de 2) sin que se notara ningún cambio visual real. */
      .inscripcion-macro-step[hidden] {
        display: none;
      }

      .inscripcion-field-block h3 {
        align-items: center;
        color: #10202b;
        display: flex;
        font-family: var(--font-ui);
        font-size: 1.02rem;
        font-weight: 800;
        gap: 10px;
        margin: 0 0 12px;
      }

      .inscripcion-field-block h3 span {
        align-items: center;
        background: linear-gradient(150deg, var(--color-primary), var(--color-deep-blue));
        border-radius: 999px;
        box-shadow: 0 6px 14px rgba(13, 105, 161, 0.26);
        color: #fff;
        display: flex;
        flex-shrink: 0;
        font-family: var(--font-ui);
        font-size: 0.85rem;
        font-weight: 800;
        height: 28px;
        justify-content: center;
        width: 28px;
      }

      .inscripcion-field-hint {
        color: #6b7d88;
        font-size: 0.88rem;
        margin: 12px 0 14px;
      }

      /* Nivel como 2 tarjetas grandes con ícono, igual que Visily,
         en vez de botones angostos en fila. */
      .inscripcion-option-group--nivel {
        grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
      }

      .inscripcion-option-group--nivel .inscripcion-option-button {
        min-height: 96px;
      }

	      .inscripcion-section-heading {
	        display: grid;
	        gap: 8px;
	        padding: 8px 0;
	      }

	      .inscripcion-section-heading span,
      .inscripcion-context-summary > span {
	        color: #0d69a1;
	        font-size: 0.78rem;
	        font-weight: 900;
	        letter-spacing: 0.04em;
	        text-transform: uppercase;
	      }

	      .inscripcion-section-heading h2 {
	        color: #10202b;
	        font-family: var(--font-ui);
	        font-size: 1.12rem;
	        font-weight: 800;
	        line-height: 1.25;
	        margin: 0;
	      }

	      .inscripcion-context-summary {
	        border: 1px solid #d9e7ef;
	        border-radius: var(--radius-lg);
	        display: grid;
	        gap: 10px;
	        padding: 16px;
	      }

	      .inscripcion-section-heading[hidden],
      .inscripcion-step-actions button[hidden] {
	        display: none;
	      }

      .public-inscripcion-layout {
        background: #f5f8fb;
        gap: 14px;
      }

      .public-inscripcion-card {
        background: #fff;
        border: 1px solid var(--color-border);
        border-radius: var(--radius-xl);
        box-shadow: var(--shadow-lift);
        display: grid;
        gap: 20px;
        padding: clamp(20px, 3.5vw, 34px);
      }

      .public-inscripcion-card form {
        display: grid;
        gap: 16px;
      }

      .public-inscripcion-grid {
        display: grid;
        gap: 14px;
      }

      .public-inscripcion-card label {
        color: #33454f;
        display: grid;
        font-size: 1rem;
        font-weight: 800;
        gap: 8px;
      }

      .public-inscripcion-card input,
      .public-inscripcion-card select,
      .public-inscripcion-card textarea {
        background: var(--color-background);
        border: 1px solid var(--color-border);
        border-radius: 12px;
        color: #10202b;
        font: inherit;
        font-weight: 500;
        min-height: 48px;
        padding: 12px 15px;
        transition: border-color 0.24s var(--ease-premium), box-shadow 0.24s var(--ease-premium);
        width: 100%;
      }

      .public-inscripcion-card textarea {
        resize: vertical;
      }

      .public-inscripcion-card input:focus,
      .public-inscripcion-card select:focus,
      .public-inscripcion-card textarea:focus {
        border-color: #0d69a1;
        box-shadow: 0 0 0 4px rgba(13, 105, 161, 0.12);
        outline: 0;
      }

	      .inscripcion-option-group {
	        display: grid;
	        gap: 8px;
	        grid-template-columns: repeat(auto-fit, minmax(138px, 1fr));
	      }

	      .inscripcion-option-button {
	        background: #fff;
	        border: 1px solid #c9d8df;
	        border-radius: 14px;
	        color: #10202b;
	        cursor: pointer;
	        display: grid;
	        font: inherit;
	        gap: 4px;
	        line-height: 1.25;
	        min-height: 62px;
	        padding: 13px;
	        text-align: left;
	      }

	      .inscripcion-option-button strong,
	      .inscripcion-option-button small {
	        display: block;
	      }

	      .inscripcion-option-button strong {
	        font-weight: 900;
	      }

	      .inscripcion-option-button small {
	        color: #5c6c76;
	        font-size: 0.88rem;
	        font-weight: 750;
	      }

	      .inscripcion-option-button:hover {
	        border-color: #0d69a1;
	      }

	      .inscripcion-option-button {
	        transition: border-color 0.24s var(--ease-premium), box-shadow 0.24s var(--ease-premium), transform 0.24s var(--ease-premium);
	      }

	      .inscripcion-option-button:hover {
	        transform: translateY(-2px);
	      }

	      .inscripcion-option-button.selected {
	        background: linear-gradient(150deg, var(--color-primary), var(--color-deep-blue));
	        border-color: var(--color-primary);
	        box-shadow: 0 12px 26px rgba(13, 105, 161, 0.28);
	        color: #fff;
	      }

	      .inscripcion-option-button.selected small {
	        color: rgba(255, 255, 255, 0.82);
	      }

	      .inscripcion-context-summary ul {
	        margin: 0;
	      }

      .inscripcion-context-summary {
        align-self: start;
        background: #fbfdfe;
        order: 2;
        position: sticky;
        top: 88px;
      }

	      .inscripcion-context-summary ul {
	        display: grid;
	        gap: 0;
	        list-style: none;
	        padding: 0;
	      }

	      .inscripcion-context-summary li {
	        border-top: 1px solid #d9e7ef;
	        color: #425460;
	        line-height: 1.35;
	        padding: 10px 0;
	      }

	      .inscripcion-context-summary li:last-child {
	        border-bottom: 1px solid #d9e7ef;
	      }

	      .inscripcion-context-summary strong {
	        color: #10202b;
	      }

	      .inscripcion-next-note {
	        color: #5c6c76;
	        font-size: 0.92rem;
	        line-height: 1.35;
	        margin: 0;
	      }

	      /* Antes este bloque (resumen del Paso 2) no tenía ninguna regla
	         propia - heredaba solo el h2/p/li genérico del sitio y quedaba
	         todo pegado. El gap hace todo el trabajo de espaciado interno
	         (label + h2 + lista + nota), por eso .inscripcion-next-note de
	         arriba se deja en margin:0 a propósito. */
	      .inscripcion-summary-card {
	        background: #fff;
	        border-radius: var(--radius-lg);
	        box-shadow: var(--shadow-lift);
	        display: grid;
	        gap: 12px;
	        padding: clamp(20px, 3.5vw, 34px);
	      }

	      .inscripcion-summary-card > span {
	        color: #0d69a1;
	        font-size: 0.78rem;
	        font-weight: 900;
	        letter-spacing: 0.04em;
	        text-transform: uppercase;
	      }

	      .inscripcion-summary-card h2 {
	        margin: 0;
	      }

	      .inscripcion-summary-card ul {
	        display: grid;
	        gap: 0;
	        list-style: none;
	        margin: 0;
	        padding: 0;
	      }

	      .inscripcion-summary-card li {
	        border-top: 1px solid var(--color-border);
	        color: #425460;
	        line-height: 1.35;
	        padding: 10px 0;
	      }

	      .inscripcion-summary-card li:last-child {
	        border-bottom: 1px solid var(--color-border);
	      }

	      .inscripcion-summary-card li strong {
	        color: #10202b;
	      }

	      .inscripcion-contract-result {
	        background: #f5f9fb;
	        border: 1px solid #d9e7ef;
	        border-radius: var(--radius-lg);
	        color: #425460;
	        font-size: 0.92rem;
	        font-weight: 700;
	        line-height: 1.35;
	        padding: 10px 12px;
	      }

	      .inscripcion-contract-result.is-ok {
	        background: #edf8f1;
	        border-color: #afd8bd;
	        color: #24613a;
	      }

	      .inscripcion-contract-result.is-alert {
	        background: #fff4f4;
	        border-color: #f1b8b8;
	        color: #a23131;
	      }

	      .inscripcion-contract-result.is-info {
	        background: #f0f7fc;
	        border-color: #b8d4e4;
	        color: #10202b;
	      }

	      .inscripcion-contract-result.is-info a {
	        color: #fff;
	      }

	      .inscripcion-contract-info-text {
	        color: #425460;
	        font-size: 0.88rem;
	        line-height: 1.45;
	        margin: 6px 0 10px;
	      }

	      .inscripcion-contract-result.is-options {
	        background: #fffaf0;
	        border-color: #e6c678;
	        color: #64450d;
	      }

	      .inscripcion-contract-result button,
	      .inscripcion-contract-result a {
	        align-items: center;
	        background: #0d69a1;
	        border: 1px solid #0d69a1;
	        border-radius: 999px;
	        color: #fff;
	        display: inline-flex;
	        font-weight: 800;
	        justify-content: center;
	        margin-top: 10px;
	        min-height: 40px;
	        padding: 9px 12px;
	        text-decoration: none;
	      }

	      .inscripcion-contract-confirmed {
	        display: grid;
	        gap: 4px;
	      }

	      .inscripcion-contract-options {
	        display: grid;
	        gap: 8px;
	        margin-top: 10px;
	      }

	      .inscripcion-contract-options button {
	        align-items: start;
	        background: #fff;
	        border-color: #e6c678;
	        color: #10202b;
	        display: grid;
	        justify-content: stretch;
	        margin: 0;
	        text-align: left;
	      }

	      .inscripcion-contract-options button span,
	      .inscripcion-contract-options button small {
	        color: #5c6c76;
	      }

      .inscripcion-step-actions {
        display: flex;
        gap: 10px;
        justify-content: flex-end;
        order: 3;
      }

	      .inscripcion-step-actions button {
	        border-radius: 999px;
	        font-family: var(--font-ui);
	        font-weight: 700;
	        min-height: 50px;
	        padding: 13px 26px;
	        transition: transform 0.28s var(--ease-premium), box-shadow 0.28s var(--ease-premium), background 0.28s var(--ease-premium);
	      }

	      .inscripcion-step-actions button:not(:disabled):hover {
	        transform: translateY(-2px);
	      }

	      .inscripcion-step-actions button:not(:disabled):active {
	        transform: scale(0.97);
	      }

	      .inscripcion-step-actions button:disabled {
	        cursor: not-allowed;
	        opacity: 0.5;
	      }

	      .inscripcion-step-actions button:last-child {
	        background: linear-gradient(150deg, var(--color-primary), var(--color-primary-strong));
	        border-color: var(--color-primary);
	        box-shadow: 0 14px 30px rgba(13, 105, 161, 0.28);
	        color: #fff;
	      }

	      /* "Volver" ya hereda borde/texto celeste del botón genérico del
	         sitio (a, button en la línea ~129) - queda explícito acá para que
	         se lea como una decisión de diseño (secundario) y no un default
	         sin tocar, con un hover sutil propio en vez del genérico. */
	      [data-inscripcion-back] {
	        background: transparent;
	        border-color: var(--color-border-strong);
	        color: var(--color-muted-strong);
	      }

	      [data-inscripcion-back]:not(:disabled):hover {
	        background: var(--color-surface-soft);
	        border-color: var(--color-primary);
	        color: var(--color-primary-strong);
	      }

	      @media (max-width: 820px) {
	        .inscripcion-context-summary {
	          position: static;
	        }
	      }

	      @media (max-width: 520px) {
	        .public-inscripcion-layout {
	          gap: 10px;
	        }

	        .inscripcion-page-hero--compact {
	          border-radius: 0 0 18px 18px;
	          margin-left: -18px;
	          margin-right: -18px;
	          min-height: 178px;
	          padding: 44px 18px;
	        }

	        .public-inscripcion-layout > .inscripcion-page-hero--compact {
	          padding-top: 44px;
	        }

	        .public-inscripcion-card {
	          border-radius: 18px;
	          margin-left: -6px;
	          margin-right: -6px;
	          padding: 14px;
	        }

	        .public-inscripcion-card form {
	          gap: 14px;
	        }

	        .inscripcion-option-group {
	          grid-template-columns: 1fr;
	        }

	        .inscripcion-option-button {
	          min-height: 58px;
	        }

	        .inscripcion-context-summary {
	          border-radius: 16px;
	          padding: 14px;
	        }

        .inscripcion-context-summary {
          order: 2;
        }

        .inscripcion-step-actions {
	          background: transparent;
	          border: 0;
	          border-radius: 0;
	          box-shadow: none;
	          display: grid;
	          grid-template-columns: 0.8fr 1.2fr;
	          padding: 4px 0 0;
          position: static;
          order: 4;
          z-index: auto;
        }

	        .inscripcion-step-actions button {
	          border-radius: 12px;
	          min-height: 46px;
	          padding: 10px 12px;
	        }
	      }

	      .portal-summary {
        display: grid;
        gap: 12px;
        margin: 18px 0;
      }

      .portal-summary div {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        padding: 12px;
      }

      .portal-summary span {
        color: #4f6472;
        display: block;
        font-size: 0.92rem;
        margin-bottom: 4px;
      }

      .portal-result {
        display: grid;
        gap: 18px;
      }

      .portal-result-dashboard {
        gap: 14px;
      }

      .portal-result-head {
        align-items: start;
        display: grid;
        gap: 12px;
      }

      .portal-result-head span,
      .portal-status-card span,
      .portal-whatsapp-panel span {
        color: #4f6472;
        display: block;
        font-size: 0.82rem;
        font-weight: 800;
        letter-spacing: 0.08em;
        margin-bottom: 6px;
        text-transform: uppercase;
      }

      .portal-result-head h2 {
        color: #10202b;
        font-size: clamp(1.55rem, 5vw, 2.45rem);
        line-height: 1.05;
      }

      .portal-trip-card {
        align-items: start;
        background: linear-gradient(135deg, #eef8fd, #fff);
        border: 1px solid #d9e7ef;
        border-radius: 18px;
        display: grid;
        gap: 12px;
        padding: 16px;
      }

      .portal-trip-card span,
      .portal-next-actions > span {
        color: #0d69a1;
        display: block;
        font-size: 0.78rem;
        font-weight: 900;
        letter-spacing: 0.06em;
        margin-bottom: 6px;
        text-transform: uppercase;
      }

      .portal-trip-card strong:not(.portal-status-pill) {
        color: #10202b;
        display: block;
        font-size: 1.25rem;
        line-height: 1.12;
        margin-bottom: 6px;
      }

      .portal-trip-card p {
        color: #425460;
        line-height: 1.4;
      }

      .portal-status-grid {
        display: grid;
        gap: 12px;
      }

      .portal-status-card {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 18px;
        display: grid;
        gap: 8px;
        padding: 16px;
      }

      .portal-status-card strong {
        color: #0d69a1;
        font-size: 1.2rem;
        line-height: 1.15;
      }

      .portal-status-card small {
        color: #4f6472;
        font-size: 0.92rem;
        line-height: 1.45;
      }

      .portal-result h2,
      .portal-result h3,
      .portal-result p {
        margin: 0;
      }

      .portal-result-section {
        border-top: 1px solid #d9e7ef;
        display: grid;
        gap: 12px;
        padding-top: 18px;
      }

      .portal-next-actions {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 18px;
        display: grid;
        gap: 10px;
        padding: 16px;
      }

      .portal-next-actions div {
        align-items: start;
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        display: grid;
        gap: 10px;
        grid-template-columns: auto minmax(0, 1fr);
        padding: 12px;
      }

      .portal-next-actions div strong {
        align-items: center;
        background: #0d69a1;
        border-radius: 999px;
        color: #fff;
        display: inline-flex;
        font-size: 0.82rem;
        height: 28px;
        justify-content: center;
        width: 28px;
      }

      .portal-next-actions div p {
        color: #425460;
        line-height: 1.4;
      }

      .portal-result-section:first-child {
        border-top: 0;
        padding-top: 0;
      }

      .portal-installments {
        display: grid;
        gap: 10px;
        margin: 16px 0;
      }

      .portal-installment {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        display: grid;
        gap: 6px;
        padding: 12px;
      }

      .portal-installment strong {
        color: #0d69a1;
      }

      .portal-status-pill {
        align-items: center;
        border-radius: 999px;
        display: inline-flex;
        font-size: 0.9rem;
        font-weight: 800;
        justify-content: center;
        min-height: 30px;
        padding: 6px 10px;
        width: fit-content;
      }

      .portal-status-pill.is-ok {
        background: #e8f8ef;
        color: #17683a;
      }

      .portal-status-pill.is-pending {
        background: #fff7dc;
        color: #7b5a00;
      }

      .portal-status-pill.is-alert {
        background: #ffe9ef;
        color: #9b1c42;
      }

      .portal-payment-panel {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 18px;
        display: grid;
        gap: 14px;
        padding: 14px;
      }

      .portal-payment-meter {
        background: #d9e7ef;
        border-radius: 999px;
        height: 12px;
        overflow: hidden;
      }

      .portal-payment-meter span {
        background: linear-gradient(90deg, #0d69a1, #eb3e8f);
        display: block;
        height: 100%;
      }

      .portal-payment-summary {
        display: grid;
        gap: 10px;
      }

      .portal-payment-summary div,
      .portal-doc-item,
      .portal-doc-ok {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        padding: 12px;
      }

      .portal-payment-summary span,
      .portal-doc-item span,
      .portal-doc-ok span {
        color: #4f6472;
        display: block;
        font-size: 0.9rem;
        margin-bottom: 4px;
      }

      .portal-payment-summary strong,
      .portal-doc-item strong,
      .portal-doc-ok strong {
        color: #10202b;
      }

      .portal-doc-list {
        display: grid;
        gap: 10px;
      }

      .portal-doc-ok strong {
        color: #17683a;
      }

      .portal-whatsapp-panel {
        align-items: center;
        background: #0d69a1;
        border-radius: 18px;
        color: #fff;
        display: grid;
        gap: 16px;
        padding: 18px;
      }

      .portal-whatsapp-panel span,
      .portal-whatsapp-panel h3,
      .portal-whatsapp-panel p {
        color: #fff;
      }

      .portal-whatsapp-panel p {
        opacity: 0.88;
      }

      .portal-whatsapp-panel a {
        background: var(--color-whatsapp);
        border-color: var(--color-whatsapp);
        color: #fff;
      }

      @media (max-width: 620px) {
        .portal-layout {
          gap: 10px;
        }

        .portal-panel,
        .portal-result,
        .portal-empty {
          margin-left: -6px;
          margin-right: -6px;
          padding: 14px;
        }

        .portal-form button,
        .portal-result a,
        .portal-empty a,
        .portal-whatsapp-panel a {
          width: 100%;
        }

        .portal-status-card,
        .portal-trip-card,
        .portal-next-actions,
        .portal-payment-panel,
        .portal-whatsapp-panel {
          border-radius: 18px;
        }
      }

      .admin-demo-grid {
        display: grid;
        gap: 14px;
      }

      .admin-demo-card {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 10px;
        padding: 14px;
      }

      .admin-demo-card h3,
      .admin-demo-card p {
        margin: 0;
      }

      .admin-config-columns {
        color: #526979;
        font-size: 12px;
        line-height: 1.55;
        word-break: break-word;
      }

      .admin-actions-row {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
        margin-top: 12px;
      }

      .admin-secondary-action {
        align-items: center;
        background: #fff;
        border: 1px solid #cfe3ee;
        border-radius: 8px;
        color: #0d4f79;
        cursor: pointer;
        display: inline-flex;
        font-size: 14px;
        font-weight: 800;
        justify-content: center;
        min-height: 38px;
        padding: 9px 12px;
        text-decoration: none;
      }

      .admin-secondary-action:hover {
        border-color: #65bcec;
        color: #082e47;
      }

      .admin-layout {
        gap: 18px;
      }

      .admin-login-screen {
        align-items: center;
        background: #f3f7fc;
        display: grid;
        justify-items: center;
        min-height: 100svh;
        padding: clamp(18px, 4vw, 42px);
      }

      .admin-login-card {
        background: #fff;
        border: 1px solid rgba(7, 26, 62, 0.08);
        border-radius: 26px;
        box-shadow: 0 28px 90px rgba(7, 26, 62, 0.16);
        display: grid;
        grid-template-columns: minmax(320px, 0.92fr) minmax(360px, 1.08fr);
        min-height: 640px;
        overflow: hidden;
        margin: 0 auto;
        max-width: 1080px;
        width: 100%;
      }

      .admin-login-panel {
        align-content: space-between;
        background: #071a3e;
        color: #fff;
        display: grid;
        gap: 28px;
        min-height: 100%;
        overflow: hidden;
        padding: clamp(28px, 5vw, 50px);
        position: relative;
      }

      .admin-login-panel::before {
        background: linear-gradient(155deg, rgba(255, 255, 255, 0.1), transparent 46%);
        content: "";
        inset: 0;
        pointer-events: none;
        position: absolute;
      }

      .admin-login-orb {
        background: rgba(255, 255, 255, 0.12);
        border-radius: 999px;
        pointer-events: none;
        position: absolute;
      }

      .admin-login-orb-one {
        height: 260px;
        right: -96px;
        top: -78px;
        width: 260px;
      }

      .admin-login-orb-two {
        bottom: -112px;
        height: 310px;
        left: -132px;
        width: 310px;
      }

      .admin-login-panel-top {
        position: relative;
        z-index: 1;
      }

      .admin-login-logo-link {
        align-items: center;
        background: transparent;
        border: 0;
        display: inline-flex;
        gap: 12px;
        justify-self: start;
        padding: 0;
        position: relative;
        z-index: 1;
      }

      .admin-login-logo-link img {
        display: block;
        height: 46px;
        width: 46px;
      }

      .admin-login-logo-link span {
        display: grid;
        gap: 2px;
      }

      .admin-login-logo-link strong {
        color: #fff;
        font-size: 1.08rem;
        line-height: 1.15;
      }

      .admin-login-logo-link small {
        color: rgba(255, 255, 255, 0.68);
        font-size: 0.78rem;
        font-weight: 850;
        letter-spacing: 0.08em;
        line-height: 1.2;
        text-transform: uppercase;
      }

      .admin-login-brand,
      .admin-login-highlights,
      .admin-login-footer,
      .admin-login-access,
      .admin-login-access-head {
        display: grid;
        position: relative;
        z-index: 1;
      }

      .admin-login-brand {
        gap: 14px;
      }

      .admin-login-brand h1,
      .admin-login-brand p,
      .admin-login-footer,
      .admin-login-access-head h2,
      .admin-login-access-head p {
        margin: 0;
      }

      .admin-login-brand h1 {
        color: #fff;
        font-size: 22px;
        letter-spacing: 0;
        line-height: 1.12;
        max-width: 18ch;
      }

      .admin-login-brand p {
        color: rgba(255, 255, 255, 0.76);
        font-size: 1.02rem;
        line-height: 1.45;
        max-width: 31ch;
      }

      .admin-login-highlights {
        gap: 12px;
      }

      .admin-login-highlights span {
        align-items: center;
        background: transparent;
        border: 0;
        border-radius: 0;
        color: rgba(255, 255, 255, 0.6);
        display: flex;
        font-size: 0.96rem;
        font-weight: 850;
        gap: 10px;
        padding: 0;
      }

      .admin-login-highlights strong {
        align-items: center;
        background: transparent;
        border-radius: 0;
        color: rgba(255, 255, 255, 0.6);
        display: inline-flex;
        font-size: 1.2rem;
        height: 24px;
        justify-content: center;
        line-height: 1;
        width: 24px;
      }

      .admin-login-footer {
        align-self: end;
        color: rgba(255, 255, 255, 0.62);
        font-size: 0.86rem;
        font-weight: 750;
        line-height: 1.35;
      }

      .admin-login-access {
        align-content: center;
        background: #f7faff;
        gap: 24px;
        padding: clamp(30px, 5vw, 58px);
      }

      .admin-login-access-head {
        gap: 10px;
      }

      .admin-login-access-head > span {
        align-items: center;
        color: #0d69a1;
        display: inline-flex;
        font-size: 0.8rem;
        font-weight: 900;
        gap: 8px;
        letter-spacing: 0.12em;
        text-transform: uppercase;
      }

      .admin-login-access-head > span i {
        background: #2ba6ff;
        border-radius: 999px;
        box-shadow: 0 0 0 5px rgba(43, 166, 255, 0.12);
        height: 8px;
        width: 8px;
      }

      .admin-login-access-head h2 {
        color: #071a3e;
        font-size: clamp(2rem, 5vw, 3rem);
        letter-spacing: 0;
        line-height: 1.02;
      }

      .admin-login-access-head p {
        color: #65748a;
        line-height: 1.48;
        max-width: 38ch;
      }

      .admin-login-form {
        display: grid;
        gap: 16px;
      }

      .admin-login-form label {
        color: #071a3e;
        display: grid;
        font-weight: 850;
        gap: 8px;
        text-align: left;
      }

      .admin-login-form input {
        background: #fff;
        border: 1px solid #d8e2ef;
        border-radius: 14px;
        color: #071a3e;
        font: inherit;
        min-height: 54px;
        padding: 14px 15px;
        width: 100%;
      }

      .admin-login-form input:focus {
        border-color: #0d69a1;
        box-shadow: 0 0 0 4px rgba(13, 105, 161, 0.14);
        outline: none;
      }

      .admin-login-password {
        display: grid;
        position: relative;
      }

      .admin-login-password input {
        padding-right: 56px;
      }

      .admin-login-password button {
        align-items: center;
        background: transparent;
        border: 0;
        border-radius: 10px;
        box-shadow: none;
        color: #65748a;
        display: inline-flex;
        font-size: 1.05rem;
        height: 40px;
        justify-content: center;
        min-height: 0;
        padding: 0;
        position: absolute;
        right: 8px;
        top: 7px;
        width: 40px;
      }

      .admin-login-password button:focus-visible {
        outline: 2px solid #0d69a1;
        outline-offset: 2px;
      }

      .admin-login-form button {
        background: #071a3e;
        border: 0;
        border-radius: 14px;
        box-shadow: 0 16px 34px rgba(7, 26, 62, 0.24);
        color: #fff;
        font-weight: 900;
        justify-content: center;
        line-height: 1.25;
        margin-top: 4px;
        min-height: 52px;
        padding-inline: 14px;
        text-align: center;
        white-space: normal;
      }

      .admin-login-error {
        background: #fff3dc;
        border: 1px solid #f1ca82;
        border-radius: 10px;
        color: #8a5400;
        font-size: 0.9rem;
        font-weight: 800;
        line-height: 1.4;
        margin: 0;
        padding: 10px 12px;
        text-align: center;
      }

      .admin-login-note {
        background: #eef5ff;
        border: 1px solid #d7e7fb;
        border-radius: 14px;
        color: #53677e;
        display: grid;
        padding: 14px;
      }

      .admin-login-note span {
        line-height: 1.4;
      }

      .admin-shell-header {
        align-items: center;
        background:
          linear-gradient(135deg, rgba(235, 62, 143, 0.16), rgba(235, 62, 143, 0) 34%),
          linear-gradient(135deg, #0b5f95, #073f66);
        border: 1px solid rgba(235, 62, 143, 0.34);
        border-radius: 14px;
        box-shadow: 0 14px 34px rgba(8, 75, 120, 0.14);
        color: #fff;
        display: grid;
        gap: 18px;
        grid-template-columns: minmax(220px, 1fr) minmax(300px, auto);
        padding: 18px 28px;
        padding-block: 18px;
        padding-inline: 28px;
      }

      .admin-layout > .admin-shell-header:first-child {
        padding-block: 18px;
        padding-inline: 28px;
      }

      .admin-shell-header strong,
      .admin-shell-header span {
        margin: 0;
      }

      .admin-shell-brand,
      .admin-shell-session {
        min-width: 0;
      }

      .admin-shell-brand {
        display: grid;
        gap: 5px;
        justify-items: start;
      }

      .admin-shell-brand strong {
        color: #ffffff;
        font-size: 1rem;
        font-weight: 600;
        line-height: 1.12;
      }

      .admin-shell-brand span {
        color: #6b7280;
      }

      .admin-shell-brand span,
      .admin-shell-session span {
        font-size: 0.7rem;
        font-weight: 850;
        letter-spacing: 0.04em;
        line-height: 1.2;
        text-transform: uppercase;
      }

      .admin-shell-session {
        align-items: center;
        background: rgba(255, 255, 255, 0.12);
        border: 1px solid rgba(235, 62, 143, 0.46);
        border-radius: 12px;
        box-shadow:
          inset 0 1px 0 rgba(255, 255, 255, 0.12),
          0 0 0 1px rgba(255, 255, 255, 0.04);
        display: grid;
        gap: 7px 16px;
        grid-column: 2;
        grid-template-columns: minmax(0, 1fr) auto;
        justify-content: stretch;
        justify-self: end;
        align-self: center;
        margin-top: 0;
        max-width: 340px;
        min-width: 300px;
        padding: 12px 16px;
        text-align: left;
      }

      .admin-shell-session span {
        color: rgba(255, 255, 255, 0.76);
        grid-column: 1 / -1;
        justify-self: start;
        letter-spacing: 0.08em;
      }

      .admin-shell-session strong {
        color: #ffffff;
        font-size: 1.12rem;
        font-weight: 950;
        line-height: 1.15;
      }

      .admin-shell-session button {
        background: rgba(235, 62, 143, 0.22);
        border-color: rgba(255, 171, 214, 0.72);
        color: #ffffff;
        font-weight: 800;
        justify-self: end;
        line-height: 1.25;
        min-height: 40px;
        padding: 9px 12px;
        text-align: center;
        white-space: normal;
      }

      .admin-shell {
        display: grid;
        gap: 18px;
        margin-inline: auto;
        max-width: 1040px;
      }

      .admin-sidebar {
        background: #ffffff;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        box-shadow: none;
        display: block;
        padding: 10px;
      }

      .admin-sidebar nav {
        display: grid;
        gap: 10px;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        margin: 0;
      }

      .admin-sidebar a {
        align-content: center;
        background: #f7fbfe;
        border: 1px solid #e2ebef;
        border-radius: 12px;
        color: #10202b;
        display: grid;
        gap: 6px;
        min-height: 58px;
        padding: 12px 14px;
      }

      .admin-sidebar a.active,
      .admin-sidebar a:hover {
        background: linear-gradient(180deg, #fff7fb, #eef8fe);
        border-color: rgba(235, 62, 143, 0.58);
        color: #0d69a1;
      }

      .admin-sidebar a.active {
        box-shadow:
          inset 0 0 0 1px rgba(235, 62, 143, 0.16),
          inset 4px 0 0 rgba(235, 62, 143, 0.88);
      }

      .admin-sidebar small {
        color: #4f6472;
        font-size: 0.72rem;
        font-weight: 800;
        letter-spacing: 0.04em;
        line-height: 1.15;
        text-transform: uppercase;
      }

      .admin-sidebar span {
        font-weight: 950;
        line-height: 1.18;
      }

      .admin-main {
        display: grid;
        gap: 22px;
      }

      .admin-coming-soon,
      .admin-overview {
        min-height: 220px;
      }

      .admin-coming-soon h2,
      .admin-coming-soon p,
      .admin-overview h2,
      .admin-overview p {
        margin: 0;
      }

      .admin-turismo-layout {
        color: #10202b;
        display: grid;
        gap: 44px;
        margin-inline: auto;
        max-width: 960px;
        width: 100%;
      }

      .admin-turismo-layout > .admin-turismo-panel {
        position: relative;
      }

      .admin-turismo-layout > .admin-turismo-panel::before {
        background: #d9e7ef;
        content: "";
        height: 1px;
        left: 24px;
        position: absolute;
        right: 24px;
        top: -22px;
      }

      .admin-turismo-layout > .admin-turismo-panel:first-of-type::before {
        display: none;
      }

      .admin-turismo-hero {
        align-items: start;
        background: #ffffff;
        border: 1px solid #e2ebef;
        border-radius: 16px;
        box-shadow: none;
        color: #10202b;
        display: grid;
        gap: 22px;
        padding: 26px;
      }

      .admin-turismo-layout > .admin-turismo-hero:first-child {
        padding-top: 26px;
      }

      .admin-turismo-hero h1,
      .admin-turismo-hero p {
        margin: 0;
      }

      .admin-turismo-hero h1 {
        font-size: clamp(1.85rem, 4vw, 2.35rem);
        letter-spacing: 0;
        line-height: 1.08;
      }

      .admin-turismo-hero span {
        color: #4f6472;
        display: block;
        font-size: 0.95rem;
        line-height: 1.55;
        margin-top: 8px;
        max-width: 42ch;
      }

      .admin-turismo-hero-stats {
        align-items: stretch;
        display: grid;
        gap: 12px;
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .admin-turismo-hero-stats article {
        align-content: center;
        background: linear-gradient(180deg, #ffffff, #f5fafe);
        border: 1px solid #dce7ec;
        border-radius: 14px;
        display: grid;
        gap: 6px;
        justify-items: center;
        min-width: 0;
        min-height: 88px;
        padding: 16px 12px;
        text-align: center;
      }

      .admin-turismo-hero-stats strong {
        color: var(--color-primary-strong, #0a4f79);
        display: block;
        font-size: 1.7rem;
        font-weight: 800;
        line-height: 1;
      }

      /* overflow-wrap: normal (no "anywhere") para que los rótulos de dos
         palabras no se partan a la mitad ("VIAJES CARGADO/S"): wrapean entre
         palabras, no dentro de una. */
      .admin-turismo-hero-stats span {
        color: #4f6472;
        font-size: 0.66rem;
        font-weight: 800;
        letter-spacing: 0.04em;
        line-height: 1.25;
        margin: 0;
        overflow-wrap: normal;
        text-transform: uppercase;
      }

      .admin-turismo-hero > button {
        background: linear-gradient(135deg, #0d69a1, #eb3e8f);
        border-color: rgba(235, 62, 143, 0.88);
        color: #fff;
        font-weight: 800;
        justify-self: start;
        line-height: 1.25;
        min-height: 46px;
        padding-inline: 18px;
        text-align: center;
        white-space: normal;
      }

      .admin-turismo-panel {
        background: #fff;
        border: 1px solid #e2ebef;
        border-radius: 16px;
        box-shadow: none;
        display: grid;
        gap: 22px;
        padding: 28px;
      }

      .admin-pasajeros-dashboard {
        display: grid;
        gap: 12px;
        grid-template-columns: repeat(4, minmax(0, 1fr));
      }

      .admin-pasajeros-dashboard article {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        display: grid;
        gap: 4px;
        min-width: 0;
        padding: 16px;
      }

      .admin-pasajeros-dashboard strong {
        color: #10202b;
        font-size: 1.55rem;
        line-height: 1;
      }

      .admin-pasajeros-dashboard span {
        color: #516575;
        font-size: 0.82rem;
        font-weight: 800;
      }

      .admin-pasajeros-filter-panel {
        gap: 16px;
      }

      .admin-pasajeros-filters {
        align-items: end;
        display: grid;
        gap: 12px;
        grid-template-columns: minmax(220px, 1.4fr) repeat(4, minmax(150px, 1fr)) auto;
      }

      .admin-pasajeros-filters label {
        color: #44545f;
        display: grid;
        font-size: 0.88rem;
        font-weight: 800;
        gap: 6px;
      }

      .admin-pasajeros-filters input,
      .admin-pasajeros-filters select {
        background: #fff;
        border: 1px solid #c9d8df;
        border-radius: 10px;
        color: #10202b;
        font: inherit;
        min-height: 42px;
        min-width: 0;
        padding: 9px 10px;
      }

      .admin-pasajeros-breadcrumb,
      .admin-pasajeros-section-head {
        align-items: center;
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
      }

      .admin-pasajeros-breadcrumb {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        padding: 12px;
      }

      .admin-pasajeros-breadcrumb span {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 999px;
        color: #10202b;
        font-size: 0.9rem;
        font-weight: 800;
        padding: 8px 12px;
      }

      .admin-pasajeros-section-head {
        justify-content: space-between;
      }

      .admin-pasajeros-section-head h2 {
        margin: 0;
      }

      .admin-fichas-flow-summary {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
      }

      .admin-fichas-flow-summary span,
      .admin-fichas-message {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 999px;
        color: #10202b;
        font-size: 0.9rem;
        font-weight: 800;
        padding: 8px 12px;
      }

      .admin-fichas-flow-summary span:nth-child(1) {
        background: #e8f0fe;
        border-color: #c7d7fe;
        color: #1a56db;
      }

      .admin-fichas-flow-summary span:nth-child(2) {
        background: #fef3c7;
        border-color: #fde68a;
        color: #92400e;
      }

      .admin-fichas-flow-summary span:nth-child(3) {
        background: #d1fae5;
        border-color: #a7f3d0;
        color: #065f46;
      }

      .admin-fichas-flow-summary span:nth-child(4) {
        background: #fee2e2;
        border-color: #fecaca;
        color: #991b1b;
      }

      .admin-fichas-flow-summary span:nth-child(5) {
        background: #f3f4f6;
        border-color: #e5e7eb;
        color: #374151;
      }

      .admin-fichas-message {
        background: #eef6fb;
        border-color: #cfe3ee;
        border-radius: 12px;
        color: #0d4f79;
      }

      .admin-fichas-filters {
        align-items: end;
        display: grid;
        gap: 10px;
        grid-template-columns: minmax(220px, 1.2fr) repeat(2, minmax(170px, 0.8fr));
        margin-top: 12px;
      }

      .admin-fichas-filters label {
        color: #516575;
        display: grid;
        font-size: 0.72rem;
        font-weight: 900;
        gap: 5px;
        text-transform: uppercase;
      }

      .admin-fichas-filters input,
      .admin-fichas-filters select {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        color: #10202b;
        font: inherit;
        min-height: 38px;
        padding: 8px 10px;
        text-transform: none;
      }

      .admin-fichas-table {
        min-width: 980px;
      }

      .admin-fichas-table tr.is-selected td {
        background: #f0f8fc;
        box-shadow: inset 3px 0 0 #0d69a1;
      }

      .admin-fichas-main-cell strong,
      .admin-fichas-request strong,
      .admin-fichas-table td > strong {
        color: #10202b;
        display: block;
        font-weight: 800;
      }

      .admin-fichas-main-cell span,
      .admin-fichas-request span,
      .admin-fichas-table td > span {
        color: #5f747f;
        display: block;
        font-size: 12px;
        margin-top: 3px;
      }

      .admin-fichas-request {
        display: grid;
        gap: 4px;
        margin-bottom: 10px;
        min-width: 260px;
      }

      .admin-fichas-detail {
        background: #f0f7ff;
        border-left: 3px solid #0d69a1;
        display: grid;
        gap: 14px;
        margin-top: 14px;
        padding: 16px;
      }

      .admin-fichas-detail-head {
        align-items: flex-start;
        display: flex;
        gap: 12px;
        justify-content: space-between;
      }

      .admin-fichas-detail-head-actions {
        display: flex;
        flex-shrink: 0;
        gap: 8px;
      }

      .admin-fichas-detail-head h2,
      .admin-fichas-detail-head p,
      .admin-fichas-detail-card h3,
      .admin-fichas-detail-card p {
        margin: 0;
      }

      .admin-fichas-detail-head h2 {
        color: #10202b;
        font-size: 1.25rem;
        line-height: 1.15;
        margin-top: 8px;
      }

      .admin-fichas-detail-head p {
        color: #516575;
        font-size: 0.9rem;
        margin-top: 4px;
      }

      .admin-fichas-detail-layout {
        display: grid;
        gap: 12px;
        grid-template-columns: 1.15fr 0.9fr 1.35fr;
      }

      .admin-fichas-detail-card {
        align-content: start;
        background: #f8fbfd;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 10px;
        padding: 12px;
      }

      .admin-fichas-student-card {
        gap: 4px;
        padding-top: 8px;
      }

      .admin-fichas-student-card dl {
        align-content: start;
      }

      .admin-fichas-detail-card h3 {
        color: #374151;
        font-size: 0.75rem;
        font-weight: 900;
        text-transform: uppercase;
      }

      .admin-fichas-detail-card dl {
        display: grid;
        gap: 8px 12px;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        margin: 0;
      }

      .admin-fichas-detail-card dt {
        color: #6b7e88;
        font-size: 0.68rem;
        font-weight: 900;
        text-transform: uppercase;
      }

      .admin-fichas-detail-card dd {
        color: #111827;
        font-size: 0.95rem;
        font-weight: 800;
        margin: 2px 0 0;
        overflow-wrap: anywhere;
      }

      .admin-fichas-doc-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .admin-fichas-assignment-grid {
        display: grid;
        gap: 8px;
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .admin-fichas-assignment-grid label {
        color: #516575;
        display: grid;
        font-size: 0.7rem;
        font-weight: 900;
        gap: 4px;
        text-transform: uppercase;
      }

      .admin-fichas-assignment-grid select {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        color: #10202b;
        font: inherit;
        min-height: 36px;
        padding: 7px 9px;
        text-transform: none;
      }

      .admin-fichas-assigned-note {
        align-items: center;
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        padding: 10px;
      }

      .admin-fichas-assigned-note span {
        color: #6b7e88;
        font-size: 0.72rem;
        font-weight: 900;
        text-transform: uppercase;
      }

      .admin-fichas-assigned-note strong {
        color: #10202b;
        font-size: 0.88rem;
      }

      .admin-fichas-assigned-note .admin-fichas-contract-code {
        font-size: 0.78rem;
        line-height: 1.25;
        word-break: break-all;
      }

      .admin-fichas-approval-checklist {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        display: grid;
        gap: 8px;
        padding: 10px;
      }

      .admin-fichas-approval-checklist > strong {
        color: #10202b;
        font-size: 0.78rem;
        text-transform: uppercase;
      }

      .admin-fichas-approval-checklist ul {
        display: flex;
        flex-wrap: wrap;
        gap: 7px;
        list-style: none;
        margin: 0;
        padding: 0;
      }

      .admin-fichas-approval-checklist li {
        align-items: center;
        border-radius: 999px;
        display: inline-flex;
        font-size: 0.78rem;
        font-weight: 850;
        gap: 6px;
        padding: 6px 9px;
      }

      .admin-fichas-approval-checklist li.is-ok {
        background: #eaf7ef;
        color: #146538;
      }

      .admin-fichas-approval-checklist li.is-missing {
        background: #fff5e5;
        color: #8a5a00;
      }

      .admin-fichas-approval-checklist span {
        align-items: center;
        background: rgba(255, 255, 255, 0.72);
        border-radius: 999px;
        display: inline-flex;
        height: 18px;
        justify-content: center;
        width: 18px;
      }

      .admin-fichas-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
      }

      .admin-fichas-state-badge {
        align-items: center;
        border-radius: 999px;
        display: inline-flex;
        font-size: 0.8rem;
        font-weight: 900;
        min-height: 36px;
        padding: 8px 12px;
      }

      .admin-fichas-state-badge.is-approved {
        background: #d1fae5;
        color: #065f46;
      }

      .admin-fichas-actions button,
      .admin-fichas-row-actions button {
        min-height: 36px;
        padding: 8px 11px;
      }

      .admin-fichas-actions button[data-ficha-revisar],
      .admin-fichas-row-actions button[data-ficha-revisar] {
        border-color: #1a56db;
        color: #1a56db;
      }

      .admin-fichas-actions button[data-ficha-save-assignment] {
        border-color: #d1d5db;
        color: #111827;
      }

      .admin-fichas-actions button[data-ficha-aprobar] {
        background: #065f46;
        border-color: #065f46;
        color: #fff;
      }

      .admin-fichas-actions button:disabled {
        background: #e8eef2;
        border-color: #d0dce3;
        color: #7f919b;
        cursor: not-allowed;
      }

      .admin-fichas-actions button[data-ficha-rechazar] {
        background: #fee2e2;
        border-color: #fecaca;
        color: #991b1b;
      }

      .admin-fichas-reject-note {
        background: #fff5f5;
        border: 1px solid #eccaca;
        border-radius: 8px;
        color: #8f1f1f;
        font-size: 0.84rem;
        padding: 8px 10px;
      }

      .admin-modal-backdrop {
        align-items: center;
        background: rgba(4, 18, 30, 0.48);
        display: flex;
        inset: 0;
        justify-content: center;
        padding: 18px;
        position: fixed;
        z-index: 120;
      }

      .admin-modal-card {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        box-shadow: 0 24px 70px rgba(12, 32, 43, 0.24);
        display: grid;
        gap: 14px;
        max-width: 520px;
        padding: 18px;
        width: min(100%, 520px);
      }

      .admin-modal-head {
        align-items: flex-start;
        display: flex;
        gap: 12px;
        justify-content: space-between;
      }

      .admin-modal-head h2,
      .admin-modal-head p {
        margin: 0;
      }

      .admin-modal-head h2 {
        color: #10202b;
        font-size: 1.18rem;
        margin-top: 8px;
      }

      .admin-modal-head p {
        color: #516575;
        font-size: 0.9rem;
        margin-top: 3px;
      }

      .admin-fichas-reject-modal label {
        color: #516575;
        display: grid;
        font-size: 0.76rem;
        font-weight: 900;
        gap: 6px;
        text-transform: uppercase;
      }

      .admin-fichas-reject-modal textarea {
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        color: #10202b;
        font: inherit;
        min-height: 110px;
        padding: 10px;
        resize: vertical;
        text-transform: none;
      }

      .admin-fichas-modal-error {
        background: #fff5f5;
        border: 1px solid #eccaca;
        border-radius: 8px;
        color: #8f1f1f;
        font-size: 0.86rem;
        margin: 0;
        padding: 8px 10px;
      }

      .admin-fichas-modal-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        justify-content: flex-end;
      }

      .admin-fichas-modal-actions button:first-child {
        background: #8f1f1f;
        border-color: #8f1f1f;
        color: #fff;
      }

      @media (max-width: 980px) {
        .admin-fichas-detail-layout {
          grid-template-columns: 1fr;
        }

        .admin-fichas-filters {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .admin-fichas-detail-card dl,
        .admin-fichas-assignment-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }

      @media (max-width: 620px) {
        .admin-fichas-detail-head {
          display: grid;
        }

        .admin-fichas-filters {
          grid-template-columns: 1fr;
        }

        .admin-fichas-detail-card dl,
        .admin-fichas-assignment-grid {
          grid-template-columns: 1fr;
        }

        .admin-fichas-actions {
          display: grid;
        }
      }

      .admin-pasajeros-primary-button {
        background: #0d69a1;
        border-color: #0d69a1;
        color: #fff;
        font-weight: 800;
        justify-self: start;
        min-height: 44px;
        padding: 10px 16px;
      }

      .admin-grupos-primary-actions {
        align-items: center;
        gap: 10px;
        margin-top: 14px;
      }

      .admin-grupos-primary-actions .admin-pasajeros-primary-button {
        box-shadow: 0 10px 24px rgba(13, 105, 161, 0.18);
        font-size: 0.95rem;
      }

      .admin-pasajeros-secondary-button {
        background: transparent;
        border-color: #a9bdc7;
        color: #10202b;
      }

      .admin-pasajeros-form-panel h2,
      .admin-pasajeros-form-panel p {
        margin: 0;
      }

      .admin-pasajeros-form {
        display: grid;
        gap: 18px;
      }

      .admin-pasajeros-form fieldset {
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        display: grid;
        gap: 12px;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        margin: 0;
        padding: 18px;
      }

      .admin-pasajeros-form legend {
        color: #10202b;
        font-weight: 800;
        padding: 0 8px;
      }

      .admin-pasajeros-form label {
        color: #44545f;
        display: grid;
        font-weight: 700;
        gap: 6px;
      }

      .admin-pasajeros-form input,
      .admin-pasajeros-form select,
      .admin-pasajeros-form textarea {
        border: 1px solid #c9d8df;
        border-radius: 10px;
        color: #10202b;
        font: inherit;
        min-height: 40px;
        padding: 9px 10px;
      }

      .admin-pasajeros-form textarea {
        resize: vertical;
      }

      .admin-pasajeros-form fieldset:last-of-type {
        grid-template-columns: 1fr;
      }

      .admin-pasajeros-form-error {
        background: #fff4f4;
        border: 1px solid #e1a3a3;
        border-radius: 12px;
        color: #8f1f1f;
        padding: 12px 14px;
      }

      .admin-pasajeros-group-modal-card {
        display: grid;
        gap: 16px;
        padding: 26px;
      }

      .admin-pasajeros-modal-header {
        display: grid;
        gap: 6px;
        padding-right: 38px;
      }

      .admin-pasajeros-modal-header > span {
        color: #0d69a1;
        font-size: 0.76rem;
        font-weight: 900;
        letter-spacing: 0;
        text-transform: uppercase;
      }

      .admin-pasajeros-modal-header h2 {
        color: #10202b;
        margin: 0;
      }

      .admin-pasajeros-modal-header p {
        color: #5a6a73;
        margin: 0;
      }

      .admin-pasajeros-modal-context {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        display: grid;
        gap: 10px;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        padding: 14px;
      }

      .admin-pasajeros-modal-context div {
        display: grid;
        gap: 2px;
        min-width: 0;
      }

      .admin-pasajeros-modal-context span {
        color: #6a7b84;
        font-size: 0.74rem;
        font-weight: 900;
      }

      .admin-pasajeros-modal-context strong {
        color: #10202b;
        font-size: 0.92rem;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }

      .admin-pasajeros-group-form {
        gap: 14px;
      }

      .admin-pasajeros-group-form fieldset {
        grid-template-columns: 1fr;
        padding: 16px;
      }

      .admin-pasajeros-modal-note {
        background: #eef6fb;
        border: 1px solid #cfe3ee;
        border-radius: 12px;
        color: #355366;
        font-size: 0.9rem;
        margin: 0;
        padding: 10px 12px;
      }

      .admin-pasajeros-form-actions,
      .admin-pasajeros-row-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
      }

      .admin-pasajeros-row-actions button {
        border-color: #a9bdc7;
        color: #10202b;
        padding: 7px 10px;
      }

      .admin-pasajeros-table button[data-admin-grupo-view-contracts] {
        background: #fff;
        border-color: #0d69a1;
        color: #0d4f79;
        font-weight: 800;
        min-height: 34px;
        padding: 7px 10px;
      }

      .admin-pasajeros-table-panel {
        gap: 14px;
        min-width: 0;
      }

      .admin-pasajeros-table-head {
        align-items: end;
        display: flex;
        gap: 16px;
        justify-content: space-between;
      }

      .admin-pasajeros-table-head h2,
      .admin-pasajeros-table-head p {
        margin: 0;
      }

      .admin-pasajeros-table-head p {
        color: #5a6a73;
        margin-top: 4px;
      }

      .admin-pasajeros-table-head > strong {
        background: #eef6fb;
        border: 1px solid #cfe3ee;
        border-radius: 999px;
        color: #0d4f79;
        padding: 7px 10px;
        white-space: nowrap;
      }

      .admin-pasajeros-table-wrap {
        border: 1px solid #cfdde4;
        border-radius: 12px;
        max-height: 60vh;
        max-width: 100%;
        min-width: 0;
        overflow: auto;
      }

      .admin-pasajeros-table {
        border-collapse: separate;
        border-spacing: 0;
        font-size: 14px;
        min-width: 2200px;
        width: 100%;
      }

      .admin-pasajeros-table.admin-pasajeros-table--compact {
        min-width: 1080px;
      }

      .admin-pasajeros-table th,
      .admin-pasajeros-table td {
        border-bottom: 1px solid #e1e9ee;
        border-right: 1px solid #e1e9ee;
        padding: 10px 12px;
        text-align: left;
        vertical-align: middle;
        white-space: nowrap;
      }

      .admin-pasajeros-table th:last-child,
      .admin-pasajeros-table td:last-child {
        border-right: 0;
      }

      .admin-pasajeros-table thead th {
        background: #f3f7fa;
        color: #33454f;
        font-size: 12px;
        font-weight: 800;
        letter-spacing: 0;
        position: sticky;
        top: 0;
        z-index: 1;
      }

      .admin-pasajeros-table tbody tr:nth-child(even) {
        background: #fbfdfe;
      }

      .admin-pasajeros-table tbody tr:hover {
        background: #eef6fb;
      }

      .admin-pasajeros-table tbody tr.is-selected {
        background: #e8f4fb;
      }

      .admin-pasajeros-table tbody tr:last-child td {
        border-bottom: 0;
      }

      .admin-pasajeros-table td > span {
        color: #5f747f;
        display: block;
        font-size: 12px;
        margin-top: 3px;
      }

      .admin-pasajeros-passenger-cell strong,
      .admin-pasajeros-contact-cell strong,
      .admin-pasajeros-group-cell strong {
        color: #10202b;
        display: block;
        font-weight: 800;
      }

      .admin-pasajeros-passenger-cell span,
      .admin-pasajeros-contact-cell span,
      .admin-pasajeros-group-cell span {
        color: #5f747f;
        display: block;
        font-size: 12px;
        margin-top: 3px;
      }

      .admin-pasajeros-profile {
        border-color: #bed7e6;
        gap: 18px;
      }

      .admin-pasajeros-profile-hero {
        align-items: center;
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        display: flex;
        flex-wrap: wrap;
        gap: 16px;
        justify-content: space-between;
        padding: 18px;
      }

      .admin-pasajeros-profile-hero span,
      .admin-pasajeros-profile-grid article > span {
        color: #516575;
        font-size: 0.76rem;
        font-weight: 900;
        letter-spacing: 0;
        text-transform: uppercase;
      }

      .admin-pasajeros-profile-hero strong {
        color: #10202b;
        display: block;
        font-size: 1.45rem;
        line-height: 1.15;
        margin-top: 4px;
      }

      .admin-pasajeros-profile-hero p {
        color: #5a6a73;
        margin: 4px 0 0;
      }

      .admin-pasajeros-profile-statuses {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        justify-content: flex-end;
      }

      .admin-pasajeros-required {
        color: #c0392b;
        font-weight: 900;
      }

      .admin-pasajeros-form-context-banner {
        background: #f0f7fc;
        border: 1px solid #c4dcea;
        border-radius: 12px;
        display: flex;
        flex-wrap: wrap;
        gap: 0;
        overflow: hidden;
      }

      .admin-pasajeros-form-context-banner > div {
        border-right: 1px solid #c4dcea;
        display: grid;
        flex: 1 1 140px;
        gap: 3px;
        min-width: 0;
        padding: 12px 16px;
      }

      .admin-pasajeros-form-context-banner > div:last-child {
        border-right: none;
      }

      .admin-pasajeros-form-context-banner span {
        color: #4e6a7a;
        font-size: 0.72rem;
        font-weight: 900;
        text-transform: uppercase;
      }

      .admin-pasajeros-form-context-banner strong {
        color: #10202b;
        font-size: 0.92rem;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
      }

      .admin-pasajeros-form-warning {
        background: #fffbea;
        border: 1px solid #f0d060;
        border-radius: 12px;
        color: #6b4c00;
        font-size: 0.9rem;
        padding: 12px 14px;
      }

      .admin-pasajeros-profile-actions {
        align-items: center;
        display: flex;
        gap: 8px;
      }

      .admin-pasajeros-edit-form {
        padding-top: 4px;
      }

      @media (max-width: 700px) {
        .admin-pasajeros-form-context-banner {
          flex-direction: column;
        }

        .admin-pasajeros-form-context-banner > div {
          border-right: none;
          border-bottom: 1px solid #c4dcea;
        }

        .admin-pasajeros-form-context-banner > div:last-child {
          border-bottom: none;
        }
      }

      .admin-pasajeros-profile-grid {
        display: grid;
        gap: 12px;
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }

      .admin-pasajeros-profile-grid article {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        display: grid;
        gap: 10px;
        min-width: 0;
        padding: 16px;
      }

      .admin-pasajeros-profile-grid article strong {
        color: #10202b;
        font-size: 1.05rem;
      }

      .admin-pasajeros-profile-grid article p {
        color: #5a6a73;
        margin: 0;
      }

      .admin-pasajeros-profile-grid dl {
        display: grid;
        gap: 8px;
        margin: 0;
      }

      .admin-pasajeros-profile-grid dl div {
        display: grid;
        gap: 2px;
      }

      .admin-pasajeros-profile-grid dt {
        color: #6a7b84;
        font-size: 0.78rem;
        font-weight: 800;
      }

      .admin-pasajeros-profile-grid dd {
        color: #10202b;
        font-weight: 750;
        margin: 0;
      }

      @media (max-width: 980px) {
        .admin-pasajeros-dashboard {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .admin-pasajeros-filters {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .admin-pasajeros-profile-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }

      @media (max-width: 620px) {
        .admin-pasajeros-dashboard,
        .admin-pasajeros-filters,
        .admin-pasajeros-profile-grid {
          grid-template-columns: 1fr;
        }

        .admin-pasajeros-group-modal-card {
          padding: 22px;
        }

        .admin-pasajeros-modal-context {
          grid-template-columns: 1fr;
        }

        .admin-pasajeros-table.admin-pasajeros-table--compact {
          min-width: 920px;
        }
      }

      .admin-installments-strip {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
        min-width: 360px;
      }

      .admin-installment-pill {
        border: 1px solid #cfdde4;
        border-radius: 999px;
        display: inline-flex;
        font-size: 12px;
        font-weight: 800;
        padding: 4px 8px;
      }

      .admin-installment-pill.is-ok {
        background: #eaf7ef;
        border-color: #b7dec5;
        color: #146538;
      }

      .admin-installment-pill.is-pending {
        background: #fff7e3;
        border-color: #efd58e;
        color: #795600;
      }

      .admin-installment-pill.is-alert {
        background: #fff0f0;
        border-color: #e5b3b3;
        color: #8f1f1f;
      }

      .admin-installment-pill.is-neutral {
        background: #eef4f7;
        border-color: #cfdde4;
        color: #33454f;
      }

      /* Aviso "datos de ejemplo" del panel de Pagos: los montos/cuotas son de
         muestra (payments.js los deriva con placeholders), no cobranza real.
         Tono ámbar de advertencia para que el operador no los tome por reales. */
      .admin-demo-banner {
        align-items: flex-start;
        background: #fff8e6;
        border: 1px solid #f0d089;
        border-radius: 14px;
        display: flex;
        gap: 12px;
        margin: 14px 0 18px;
        padding: 14px 16px;
      }

      .admin-demo-banner-icon {
        color: #b7791f;
        flex-shrink: 0;
        font-size: 22px;
      }

      .admin-demo-banner strong {
        color: #8a5a00;
      }

      .admin-demo-banner p {
        color: #6b5320;
        font-size: 0.9rem;
        line-height: 1.45;
        margin: 2px 0 0;
      }

      .admin-payment-dashboard {
        display: grid;
        gap: 12px;
        grid-template-columns: repeat(4, minmax(0, 1fr));
      }

      .admin-payment-dashboard article,
      .admin-payment-architecture-grid article {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        display: grid;
        gap: 5px;
        min-width: 0;
        padding: 16px;
      }

      .admin-payment-dashboard strong {
        color: #10202b;
        font-size: 1.28rem;
        line-height: 1.1;
      }

      .admin-payment-dashboard span,
      .admin-payment-architecture-grid span {
        color: #516575;
        font-size: 0.78rem;
        font-weight: 900;
        text-transform: uppercase;
      }

      .admin-payment-architecture {
        gap: 14px;
      }

      .admin-payment-architecture h2,
      .admin-payment-architecture p {
        margin: 0;
      }

      .admin-payment-architecture p {
        color: #5a6a73;
        margin-top: 4px;
      }

      .admin-payment-architecture-grid {
        display: grid;
        gap: 12px;
        grid-template-columns: repeat(4, minmax(0, 1fr));
      }

      .admin-payment-architecture-grid strong {
        color: #10202b;
        font-size: 0.98rem;
      }

      .admin-payment-table {
        min-width: 1180px;
      }

      .admin-payment-passenger-cell strong,
      .admin-payment-summary-cell strong {
        color: #10202b;
        display: block;
        font-weight: 800;
      }

      .admin-payment-passenger-cell span,
      .admin-payment-summary-cell span,
      .admin-payment-table td > span {
        color: #5f747f;
        display: block;
        font-size: 12px;
        margin-top: 3px;
      }

      .admin-payment-history {
        display: grid;
        gap: 6px;
        min-width: 260px;
      }

      .admin-payment-history-item {
        background: #fbfdfe;
        border: 1px solid #e1e9ee;
        border-radius: 10px;
        display: grid;
        gap: 2px;
        padding: 8px 10px;
      }

      .admin-payment-history-item span,
      .admin-payment-history-item small {
        color: #5f747f;
        font-size: 11px;
        font-weight: 800;
      }

      .admin-payment-history-item strong {
        color: #10202b;
        font-size: 12px;
      }

      @media (max-width: 980px) {
        .admin-payment-dashboard,
        .admin-payment-architecture-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }

      @media (max-width: 620px) {
        .admin-payment-dashboard,
        .admin-payment-architecture-grid {
          grid-template-columns: 1fr;
        }

        .admin-payment-table {
          min-width: 980px;
        }
      }

      .admin-pasajeros-status {
        border: 1px solid #cfdde4;
        border-radius: 999px;
        display: inline-flex;
        font-size: 12px;
        font-weight: 800;
        justify-content: center;
        min-width: 74px;
        padding: 4px 8px;
      }

      .admin-pasajeros-status.is-ok {
        background: #eaf7ef;
        border-color: #b7dec5;
        color: #146538;
      }

      .admin-pasajeros-status.is-pending {
        background: #fff7e3;
        border-color: #efd58e;
        color: #795600;
      }

      .admin-pasajeros-status.is-alert {
        background: #fff0f0;
        border-color: #e5b3b3;
        color: #8f1f1f;
      }

      .admin-shell {
        align-items: start;
        grid-template-columns: 220px minmax(0, 1fr);
        max-width: 1180px;
      }

      .admin-sidebar {
        position: sticky;
        top: 18px;
      }

      .admin-sidebar nav {
        grid-template-columns: minmax(0, 1fr);
      }

      .admin-main {
        min-width: 0;
      }

      .admin-dashboard-home {
        gap: 24px;
      }

      .admin-dashboard-head,
      .admin-next-actions {
        align-items: end;
        display: flex;
        gap: 16px;
        justify-content: space-between;
      }

      .admin-dashboard-head h1,
      .admin-dashboard-head p,
      .admin-dashboard-head span,
      .admin-next-actions h2 {
        margin: 0;
      }

      .admin-dashboard-head span {
        color: #5a6a73;
        display: block;
        margin-top: 6px;
      }

      .admin-dashboard-grid {
        display: grid;
        gap: 14px;
        grid-template-columns: repeat(4, minmax(0, 1fr));
      }

      .admin-dashboard-card {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        color: #10202b;
        display: grid;
        gap: 8px;
        min-height: 132px;
        padding: 18px;
      }

      .admin-dashboard-card span {
        color: #516575;
        font-size: 0.78rem;
        font-weight: 900;
        text-transform: uppercase;
      }

      .admin-dashboard-card strong {
        color: #10202b;
        font-size: 2.05rem;
        line-height: 1;
      }

      .admin-dashboard-card small {
        color: #5a6a73;
        font-weight: 750;
      }

      .admin-dashboard-card.is-attention {
        background: #fff7fb;
        border-color: rgba(235, 62, 143, 0.42);
      }

      .admin-dashboard-card.is-warning {
        background: #fff9ea;
        border-color: #efd58e;
      }

      .admin-next-actions {
        align-items: center;
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 14px;
        padding: 14px;
      }

      .admin-next-actions div {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        justify-content: flex-end;
      }

      .admin-next-actions a {
        background: #fff;
        border: 1px solid #cfdde4;
        border-radius: 999px;
        color: #0d69a1;
        font-weight: 850;
        padding: 8px 12px;
      }

      .admin-fichas-tabs {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
      }

      .admin-fichas-tabs button {
        align-items: center;
        background: #f7fbfe;
        border-color: #cfdde4;
        color: #10202b;
        display: inline-flex;
        gap: 8px;
        min-height: 40px;
        padding: 8px 12px;
      }

      .admin-fichas-tabs button.is-active {
        background: #0d69a1;
        border-color: #0d69a1;
        color: #fff;
      }

      .admin-fichas-tabs span {
        background: rgba(255, 255, 255, 0.78);
        border-radius: 999px;
        color: #10202b;
        font-size: 0.82rem;
        min-width: 24px;
        padding: 2px 7px;
        text-align: center;
      }

      .admin-pasajeros-filter-panel {
        position: sticky;
        top: 10px;
        z-index: 3;
      }

      .admin-pasajeros-filters {
        grid-template-columns: minmax(280px, 2fr) repeat(4, minmax(120px, 1fr)) auto;
      }

      .admin-pasajeros-filters label:first-child input {
        font-size: 1.05rem;
        min-height: 50px;
      }

      .admin-turismo-empty-editor {
        align-items: center;
        grid-template-columns: minmax(0, 1fr) auto;
      }

      .admin-turismo-empty-editor p,
      .admin-turismo-empty-editor h2,
      .admin-turismo-empty-editor span {
        margin: 0;
      }

      .admin-turismo-empty-editor span {
        color: #5a6a73;
        display: block;
        margin-top: 6px;
      }

      @media (max-width: 1040px) {
        .admin-shell {
          grid-template-columns: minmax(0, 1fr);
        }

        .admin-sidebar {
          position: static;
        }

        .admin-sidebar nav {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .admin-dashboard-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .admin-pasajeros-filters {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }

      @media (max-width: 620px) {
        .admin-sidebar nav,
        .admin-dashboard-grid,
        .admin-pasajeros-filters,
        .admin-turismo-empty-editor {
          grid-template-columns: minmax(0, 1fr);
        }

        .admin-dashboard-head,
        .admin-next-actions {
          align-items: stretch;
          display: grid;
        }

        .admin-next-actions div {
          justify-content: flex-start;
        }
      }

      .ficha-adhesion-layout {
        background: #f5f8fb;
        display: grid;
        gap: 14px;
        margin: 0 auto;
        max-width: 980px;
      }

      .ficha-adhesion-hero,
      .ficha-adhesion-panel {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: var(--radius-lg);
        display: grid;
        gap: 14px;
        padding: 28px;
      }

      .ficha-adhesion-hero {
        background: linear-gradient(135deg, #083b7a, #0d69a1);
        border: 0;
        color: #fff;
      }

      .ficha-adhesion-hero p,
      .ficha-adhesion-hero h1 {
        margin: 0;
      }

      .ficha-adhesion-hero h1 {
        color: #fff;
        font-size: clamp(1.85rem, 5vw, 2.7rem);
        line-height: 1.05;
      }

      .ficha-adhesion-hero p {
        color: rgba(255, 255, 255, 0.9);
        line-height: 1.5;
      }

      .ficha-adhesion-hero p:first-child {
        color: rgba(255, 255, 255, 0.78);
        font-size: 0.78rem;
        font-weight: 900;
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }

      .ficha-adhesion-form {
        display: grid;
        gap: 18px;
      }

      .ficha-adhesion-progress {
        --ficha-progress: 90%;
        display: grid;
        gap: 8px;
      }

      .ficha-adhesion-progress div {
        align-items: end;
        display: flex;
        gap: 12px;
        justify-content: space-between;
      }

      .ficha-adhesion-progress span,
      .ficha-adhesion-progress strong {
        color: #0d69a1;
        font-size: 0.84rem;
        font-weight: 900;
        text-transform: uppercase;
      }

      .ficha-adhesion-progress i {
        background: linear-gradient(90deg, #2aa8ee var(--ficha-progress), #e2edf2 var(--ficha-progress));
        border-radius: 999px;
        display: block;
        height: 8px;
      }

      .ficha-adhesion-progress--complete {
        --ficha-progress: 100%;
      }

      .ficha-adhesion-context {
        background: #f5f9fb;
        border: 1px solid #d9e7ef;
        border-radius: var(--radius-lg);
        display: grid;
        gap: 14px;
        padding: 14px;
      }

      .ficha-adhesion-context span {
        color: #5c6c76;
        font-size: 0.85rem;
        font-weight: 800;
        text-transform: uppercase;
      }

      .ficha-adhesion-context strong,
      .ficha-adhesion-context p {
        margin: 0;
      }

      .ficha-adhesion-help {
        background: #fff8ec;
        border: 1px solid #f0d7a9;
        border-radius: var(--radius-lg);
        display: grid;
        gap: 10px;
        padding: 12px 14px;
      }

      .ficha-adhesion-help strong {
        color: #7a4b09;
        font-size: 0.86rem;
        font-weight: 900;
        text-transform: uppercase;
      }

      .ficha-adhesion-help p {
        color: #5c4a31;
        line-height: 1.45;
        margin: 0;
      }

      .ficha-adhesion-form fieldset {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 18px;
        box-shadow: var(--shadow-card);
        display: grid;
        gap: 12px;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        margin: 0;
        padding: 20px;
      }

      .ficha-adhesion-form legend {
        color: #10202b;
        font-size: 1.08rem;
        font-weight: 900;
        padding: 0 8px;
      }

      .ficha-fieldset-note {
        color: #5c6c76;
        grid-column: 1 / -1;
        line-height: 1.45;
        margin: 4px 0 8px;
      }

      .ficha-adhesion-form label {
        color: #44545f;
        display: grid;
        font-weight: 700;
        gap: 6px;
      }

      .ficha-adhesion-form input,
      .ficha-adhesion-form select {
        background: #fff;
        border: 1px solid #c9d8df;
        border-radius: 14px;
        color: #10202b;
        font: inherit;
        min-height: 48px;
        padding: 12px;
      }

      .ficha-dob-group {
        align-items: center;
        display: flex;
        gap: 6px;
      }

      .ficha-dob-group input {
        min-height: 48px;
        text-align: center;
        width: 100%;
      }

      .ficha-dob-group input[data-dob-day],
      .ficha-dob-group input[data-dob-month] {
        max-width: 60px;
      }

      .ficha-dob-group input[data-dob-year] {
        max-width: 84px;
      }

      .ficha-dob-group span {
        color: #8fa5b0;
        font-weight: 800;
      }

      .ficha-adhesion-check {
        align-items: center;
        display: flex !important;
        gap: 10px;
        grid-column: 1 / -1;
      }

      .ficha-adhesion-check input {
        min-height: auto;
        width: auto;
      }

      .ficha-adhesion-signature {
        border: 1px dashed #b8d4e4;
        border-radius: 18px;
        display: grid;
        gap: 10px;
        grid-column: 1 / -1;
        padding: 14px;
      }

      .ficha-adhesion-signature canvas {
        background: #fbfdfe;
        border: 1px dashed #9fb5c0;
        border-radius: 12px;
        height: 220px;
        max-width: 100%;
        touch-action: none;
        width: 100%;
      }

      .ficha-adhesion-signature button {
        justify-self: start;
      }

      .ficha-adhesion-error {
        background: #fff4f4;
        border: 1px solid #e1a3a3;
        border-radius: 12px;
        color: #8f1f1f;
        padding: 12px 14px;
      }

      .ficha-adhesion-success {
        background: #eaf7ef;
        border: 1px solid #b7dec5;
        border-radius: 12px;
        color: #146538;
        font-weight: 800;
        padding: 14px 18px;
      }

      .ficha-adhesion-success-screen {
        align-items: start;
        gap: 18px;
        margin: 48px auto;
        max-width: 560px;
        padding: 36px 32px;
        text-align: left;
      }

      .ficha-adhesion-success-screen p {
        color: #425460;
        font-size: 1rem;
        line-height: 1.5;
        margin: 0;
      }

      .ficha-adhesion-success-large {
        font-size: 1.24rem;
        padding: 16px 20px;
        width: 100%;
      }

      .ficha-adhesion-home-link {
        align-items: center;
        background: #0d69a1;
        border: 1px solid #0d69a1;
        border-radius: 8px;
        color: #fff;
        display: inline-flex;
        font-weight: 800;
        min-height: 44px;
        padding: 10px 16px;
        text-decoration: none;
      }

      .ficha-adhesion-submit {
        background: #0d69a1;
        border-color: #0d69a1;
        border-radius: 12px;
        color: #fff;
        font-weight: 800;
        justify-self: stretch;
        min-height: 52px;
        padding: 12px 16px;
      }

      @media (max-width: 620px) {
        .ficha-adhesion-layout {
          gap: 10px;
        }

        .ficha-adhesion-hero {
          border-radius: 0 0 18px 18px;
          margin-left: -18px;
          margin-right: -18px;
          padding: 30px 26px 24px;
        }

        .ficha-adhesion-panel {
          border-radius: 18px;
          margin-left: -6px;
          margin-right: -6px;
          padding: 14px;
        }

        .ficha-adhesion-progress div {
          align-items: start;
          display: grid;
          gap: 8px;
        }

        .ficha-adhesion-form {
          gap: 14px;
        }

        .ficha-adhesion-form fieldset {
          border-radius: 18px;
          grid-template-columns: 1fr;
          padding: 16px;
        }

        .ficha-adhesion-form input,
        .ficha-adhesion-form select {
          min-height: 50px;
        }

        .ficha-adhesion-signature {
          padding: 12px;
        }

        .ficha-adhesion-signature canvas {
          height: 180px;
        }

        .ficha-adhesion-signature button {
          width: 100%;
        }

        .ficha-adhesion-submit {
          border-radius: 14px;
          min-height: 54px;
        }
      }

      .admin-turismo-preview-panel {
        align-self: start;
      }

      .admin-turismo-required {
        color: #c0392b;
        font-weight: 900;
      }

      /* --- Fotos con preview --- */
      .admin-turismo-fotos-list {
        display: grid;
        gap: 12px;
      }

      .admin-turismo-foto-row {
        align-items: flex-start;
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 12px;
        display: grid;
        gap: 12px;
        grid-template-columns: 90px 1fr auto;
        padding: 12px;
      }

      .admin-turismo-foto-row--new {
        border-style: dashed;
      }

      .admin-turismo-foto-preview {
        align-items: center;
        background: #e8f0f5;
        border-radius: 8px;
        display: flex;
        height: 70px;
        justify-content: center;
        overflow: hidden;
        width: 90px;
      }

      .admin-turismo-foto-preview img {
        height: 100%;
        object-fit: cover;
        width: 100%;
      }

      .admin-turismo-foto-preview--empty {
        color: #8fa5b0;
        font-size: 0.78rem;
        font-weight: 700;
      }

      .admin-turismo-foto-error {
        align-items: center;
        color: #8f1f1f;
        display: flex;
        font-size: 0.72rem;
        font-weight: 800;
        height: 100%;
        justify-content: center;
        text-align: center;
        width: 100%;
      }

      .admin-turismo-foto-fields {
        display: grid;
        gap: 8px;
      }

      .admin-turismo-foto-url {
        font-size: 0.85rem;
      }

      .admin-turismo-foto-principal {
        align-items: center;
        color: #355366;
        display: flex;
        font-size: 0.82rem;
        font-weight: 700;
        gap: 6px;
      }

      .admin-turismo-foto-remove {
        background: transparent;
        border: none;
        color: #8f1f1f;
        cursor: pointer;
        font-size: 1.4rem;
        line-height: 1;
        padding: 4px 8px;
      }

      .admin-turismo-primary-button {
        background: #0d69a1;
        border: none;
        border-radius: 10px;
        color: #fff;
        cursor: pointer;
        font: inherit;
        font-weight: 800;
        padding: 9px 14px;
        white-space: nowrap;
      }

      .admin-turismo-secondary-button {
        background: transparent;
        border: 1px solid #a9bdc7;
        border-radius: 10px;
        color: #10202b;
        cursor: pointer;
        font: inherit;
        font-weight: 700;
        padding: 9px 14px;
      }

      /* --- Itinerario --- */
      .admin-turismo-itinerario-list {
        display: grid;
        gap: 10px;
      }

      .admin-turismo-itinerario-row {
        align-items: flex-start;
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 12px;
        display: grid;
        gap: 10px;
        grid-template-columns: 32px 1fr auto;
        padding: 12px;
      }

      .admin-turismo-itinerario-num {
        align-items: center;
        background: #0d69a1;
        border-radius: 50%;
        color: #fff;
        display: flex;
        font-size: 0.78rem;
        font-weight: 900;
        height: 32px;
        justify-content: center;
        min-width: 32px;
        width: 32px;
      }

      .admin-turismo-itinerario-fields {
        display: grid;
        gap: 8px;
      }

      @media (max-width: 620px) {
        .admin-turismo-foto-row {
          grid-template-columns: 70px 1fr auto;
        }

        .admin-turismo-foto-preview {
          height: 56px;
          width: 70px;
        }
      }

      .admin-turismo-side-card {
        background: linear-gradient(180deg, #ffffff, #f8fbfd);
        border: 1px solid #d9e7ef;
        border-radius: 16px;
        display: grid;
        gap: 14px;
        min-width: 0;
        padding: 18px;
      }

      .admin-turismo-side-card p,
      .admin-turismo-side-card h3,
      .admin-turismo-side-card strong {
        margin: 0;
      }

      .admin-turismo-side-card > p,
      .admin-turismo-side-card-head p {
        color: #4f6472;
        font-size: 0.76rem;
        font-weight: 900;
        letter-spacing: 0.05em;
        line-height: 1.25;
        overflow-wrap: anywhere;
        text-transform: uppercase;
      }

      .admin-turismo-side-card--status strong {
        color: #10202b;
        font-size: 1rem;
        line-height: 1.25;
        overflow-wrap: anywhere;
      }

      .admin-turismo-compact-missing {
        display: grid;
        gap: 9px;
      }

      .admin-turismo-compact-missing span {
        background: #fff7e8;
        border: 1px solid #f1ca82;
        border-radius: 9px;
        color: #8a5400;
        font-size: 0.82rem;
        font-weight: 800;
        line-height: 1.25;
        overflow-wrap: anywhere;
        padding: 9px 11px;
      }

      .admin-turismo-compact-missing .is-ok {
        background: #e7f8ef;
        border-color: #bce8ce;
        color: #147a43;
      }

      .admin-turismo-side-card-head {
        align-items: start;
        display: grid;
        gap: 6px;
      }

      .admin-turismo-side-card-head h3 {
        color: #10202b;
        font-size: 1rem;
        line-height: 1.2;
        overflow-wrap: anywhere;
      }

      .admin-turismo-side-card-head span {
        color: #637685;
        font-size: 0.8rem;
        font-weight: 800;
        overflow-wrap: anywhere;
      }

      .admin-turismo-section-head {
        align-items: center;
        display: flex;
        flex-wrap: wrap;
        gap: 18px;
        justify-content: space-between;
      }

      .admin-turismo-section-head > div {
        display: grid;
        gap: 7px;
        max-width: 56ch;
        min-width: 0;
      }

      .admin-turismo-section-head h2,
      .admin-turismo-section-head p {
        margin: 0;
      }

      .admin-turismo-section-head p {
        color: #4f6472;
        font-size: 0.75rem;
        font-weight: 800;
        letter-spacing: 0.04em;
        line-height: 1.25;
        text-transform: uppercase;
      }

      .admin-turismo-section-head h2 {
        color: #10202b;
        font-size: clamp(1.28rem, 2.5vw, 1.6rem);
        letter-spacing: 0;
        line-height: 1.16;
        overflow-wrap: anywhere;
      }

      .admin-turismo-list {
        display: grid;
        gap: 0;
        border-top: 1px solid #e4ecef;
      }

      .admin-turismo-list-head,
      .admin-turismo-row {
        display: grid;
        gap: 14px;
        grid-template-columns: minmax(0, 1fr) auto minmax(130px, 0.28fr);
      }

      .admin-turismo-list-head {
        color: #4f6472;
        font-size: 0.75rem;
        font-weight: 800;
        line-height: 1.2;
        padding: 0 0 10px;
        text-transform: uppercase;
      }

      .admin-turismo-row {
        align-items: center;
        background: transparent;
        border: 0;
        border-bottom: 1px solid #e4ecef;
        border-radius: 0;
        padding: 18px 0;
      }

      .admin-turismo-empty-row {
        grid-template-columns: minmax(0, 1fr);
        min-height: 82px;
      }

      .admin-turismo-row.selected {
        background: transparent;
        border-color: #bfd8e7;
      }

      .admin-turismo-row div:first-child {
        display: grid;
        gap: 6px;
        max-width: 52ch;
        min-width: 0;
      }

      .admin-turismo-row span {
        color: #4f6472;
        line-height: 1.45;
        overflow-wrap: anywhere;
      }

      .admin-turismo-row-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 10px;
      }

      .admin-turismo-row-actions {
        justify-content: end;
      }

      .admin-turismo-row-actions button {
        flex: 0 1 120px;
      }

      .admin-turismo-status {
        align-items: center;
        border: 1px solid currentColor;
        border-radius: 999px;
        display: inline-flex;
        font-size: 0.76rem;
        font-weight: 800;
        justify-content: center;
        justify-self: start;
        line-height: 1.15;
        max-width: 100%;
        overflow-wrap: anywhere;
        padding: 6px 10px;
        text-align: center;
        white-space: normal;
      }

      .admin-turismo-status.activo,
      .admin-turismo-status.listo,
      .admin-turismo-status.publicado {
        background: #effaf4;
        color: #147a43;
      }

      .admin-turismo-status.borrador,
      .admin-turismo-status.incompleto {
        background: #fff9ef;
        color: #9a5b00;
      }

      .admin-turismo-status.inactivo,
      .admin-turismo-status.revision {
        background: #f4f8fa;
        color: #4f6472;
      }

      .admin-turismo-form {
        display: grid;
        gap: 0;
        border-top: 1px solid #e4ecef;
      }

      .admin-turismo-form-block {
        background: transparent;
        border: 0;
        border-bottom: 1px solid #e4ecef;
        border-radius: 0;
        display: grid;
        gap: 0;
        padding: 0;
      }

      .admin-turismo-accordion {
        box-shadow: none;
        overflow: hidden;
        padding: 0;
      }

      .admin-turismo-accordion[open] {
        padding-bottom: 26px;
      }

      .admin-turismo-accordion > *:not(summary) {
        margin-inline: 0;
      }

      .admin-turismo-form-block-head {
        align-items: center;
        border-bottom: 0;
        cursor: pointer;
        display: flex;
        gap: 18px;
        justify-content: space-between;
        list-style: none;
        padding: 22px 0;
      }

      .admin-turismo-accordion:not([open]) .admin-turismo-form-block-head {
        border-bottom: 0;
      }

      .admin-turismo-form-block-head::-webkit-details-marker {
        display: none;
      }

      .admin-turismo-form-block-head::before {
        color: #7b8f9c;
        content: "▸";
        flex: 0 0 auto;
        font-weight: 900;
        line-height: 1;
        margin-top: 2px;
      }

      .admin-turismo-accordion[open] .admin-turismo-form-block-head::before {
        content: "▾";
      }

      .admin-turismo-form-block-head > span {
        display: grid;
        flex: 1 1 auto;
        gap: 0;
        max-width: 62ch;
        min-width: 0;
      }

      .admin-turismo-form-block-head h3,
      .admin-turismo-form-block-head p {
        margin: 0;
      }

      .admin-turismo-form-block-head h3 {
        color: #10202b;
        font-size: 1.05rem;
        line-height: 1.22;
        overflow-wrap: anywhere;
      }

      .admin-turismo-form-block-head p {
        display: none;
        color: #4f6472;
        font-size: 0.88rem;
        line-height: 1.55;
        max-width: 54ch;
      }

      .admin-turismo-accordion-badge {
        align-items: center;
        border: 1px solid currentColor;
        border-radius: 999px;
        display: inline-flex;
        flex: 0 0 auto;
        font-size: 0.74rem;
        font-weight: 900;
        justify-content: center;
        line-height: 1.15;
        margin-top: 0;
        min-width: auto;
        padding: 6px 10px;
        text-align: center;
        white-space: normal;
      }

      .admin-turismo-accordion-badge.is-complete {
        background: #effaf4;
        color: #147a43;
      }

      /* "Falta" en rojo (no ámbar): indica un dato requerido sin completar,
         así el operador ve de un vistazo qué le falta cargar. Verde=completo,
         gris=opcional -> lenguaje semáforo. */
      .admin-turismo-accordion-badge.is-pending {
        background: #fdeceb;
        color: #b3261e;
      }

      .admin-turismo-accordion-badge.is-optional {
        background: #f4f8fa;
        color: #4f6472;
      }

      .admin-turismo-form-grid {
        display: grid;
        gap: 22px 18px;
      }

      .admin-turismo-form-grid--compact {
        align-items: start;
      }

      .admin-turismo-form label {
        display: grid;
        gap: 10px;
        font-weight: 800;
        min-width: 0;
      }

      .admin-field-label {
        color: #10202b;
        font-size: 0.9rem;
        font-weight: 900;
        letter-spacing: 0;
        line-height: 1.3;
        overflow-wrap: anywhere;
      }

      .admin-field-hint,
      .admin-turismo-check small {
        color: #6a7d88;
        font-size: 0.76rem;
        font-weight: 700;
        line-height: 1.5;
        max-width: 46ch;
        overflow-wrap: anywhere;
      }

      .admin-turismo-form input,
      .admin-turismo-form select,
      .admin-turismo-form textarea {
        background: #fbfdfe;
        border: 1px solid #d5e2e8;
        border-radius: 10px;
        box-sizing: border-box;
        color: #10202b;
        font: inherit;
        line-height: 1.35;
        min-height: 50px;
        min-width: 0;
        padding: 14px 15px;
        width: 100%;
      }

      .admin-turismo-form input:focus,
      .admin-turismo-form select:focus,
      .admin-turismo-form textarea:focus {
        border-color: #0d69a1;
        box-shadow: 0 0 0 3px rgba(13, 105, 161, 0.12);
        outline: none;
      }

      .admin-turismo-form textarea {
        line-height: 1.55;
        min-height: 132px;
        resize: vertical;
      }

      /* --- Categorías: estilo minimalista --- */
      .admin-turismo-category-field {
        border: 0;
        display: grid;
        gap: 10px;
        margin: 0;
        padding: 0;
      }

      .admin-turismo-category-field legend {
        color: #10202b;
        font-size: 0.88rem;
        font-weight: 900;
        padding: 0 0 2px;
        text-transform: uppercase;
        letter-spacing: 0.04em;
      }

      .admin-turismo-category-grid {
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
      }

      .admin-turismo-check {
        align-items: center;
        background: #f4f8fb;
        border: 1px solid #d0dde5;
        border-radius: 8px;
        cursor: pointer;
        display: flex;
        flex-direction: row;
        gap: 7px;
        min-width: 0;
        padding: 7px 12px;
        transition: background 0.12s, border-color 0.12s;
      }

      .admin-turismo-check:has(input:checked) {
        background: #e5f1f9;
        border-color: #0d69a1;
      }

      .admin-turismo-check span {
        color: #10202b;
        font-size: 0.85rem;
        font-weight: 700;
        line-height: 1.3;
        min-width: 0;
      }

      .admin-turismo-check input[type="checkbox"] {
        accent-color: #0d69a1;
        flex: 0 0 auto;
        height: 15px;
        margin: 0;
        width: 15px;
      }

      /* --- Destacado: estilo separado más claro --- */
      .admin-turismo-check--featured {
        align-items: center;
        background: #fffbea;
        border: 1px solid #f0d060;
        border-radius: 10px;
        display: flex;
        flex-direction: row;
        gap: 10px;
        padding: 12px 14px;
        width: fit-content;
      }

      .admin-turismo-check--featured:has(input:checked) {
        background: #fff8d6;
        border-color: #c9a800;
      }

      .admin-turismo-check--featured span {
        display: grid;
        gap: 2px;
      }

      .admin-turismo-check--featured strong {
        color: #10202b;
        font-size: 0.9rem;
      }

      .admin-turismo-check--featured small {
        color: #6b5500;
        font-size: 0.78rem;
      }

      .admin-turismo-validation {
        border-radius: 14px;
        display: grid;
        gap: 16px;
        padding: 18px 20px;
      }

      .admin-turismo-validation strong,
      .admin-turismo-validation p,
      .admin-turismo-validation h4 {
        line-height: 1.35;
        margin: 0;
      }

      .admin-turismo-validation ul {
        line-height: 1.55;
        margin: 0;
        padding-left: 18px;
      }

      .admin-turismo-validation-summary {
        align-items: start;
        display: flex;
        flex-wrap: wrap;
        gap: 14px;
        min-width: 0;
      }

      .admin-turismo-validation-summary p {
        color: #4f6472;
        max-width: 58ch;
      }

      .admin-turismo-publication-badge {
        align-items: center;
        border: 1px solid currentColor;
        border-radius: 999px;
        display: inline-flex;
        font-size: 0.78rem;
        font-weight: 900;
        justify-content: center;
        line-height: 1.15;
        max-width: 100%;
        overflow-wrap: anywhere;
        padding: 7px 11px;
        text-align: center;
        white-space: normal;
      }

      .admin-turismo-publication-badge.is-listo,
      .admin-turismo-publication-badge.is-publicado {
        background: #effaf4;
        color: #147a43;
      }

      .admin-turismo-publication-badge.is-borrador,
      .admin-turismo-publication-badge.is-incompleto {
        background: #fff9ef;
        color: #8a5400;
      }

      .admin-turismo-publication-badge.is-inactivo {
        background: #f4f8fa;
        color: #4f6472;
      }

      .admin-turismo-checklist {
        display: grid;
        gap: 8px;
        grid-template-columns: minmax(0, 1fr);
      }

      .admin-turismo-checklist span {
        background: transparent;
        border: 0;
        border-radius: 0;
        color: inherit;
        font-size: 0.86rem;
        line-height: 1.45;
        padding: 0;
      }

      .admin-turismo-checklist > strong {
        color: #10202b;
        font-size: 0.78rem;
        letter-spacing: 0.04em;
        line-height: 1.25;
        text-transform: uppercase;
      }

      .admin-turismo-checklist > div {
        display: flex;
        flex-wrap: wrap;
        gap: 8px 14px;
      }

      .admin-turismo-checklist .is-complete {
        color: #147a43;
      }

      .admin-turismo-checklist .is-pending {
        color: #8a5400;
      }

      .admin-turismo-validation.has-errors {
        background: #fff9ef;
        border: 1px solid #f3d7a3;
        color: #8a5400;
      }

      .admin-turismo-validation.is-ok {
        background: #effaf4;
        border: 1px solid #c9ebd7;
        color: #147a43;
      }

      .admin-turismo-section-head button,
      .admin-turismo-row-actions button,
      .admin-turismo-action-buttons button {
        align-items: center;
        background: linear-gradient(135deg, #0d69a1, #eb3e8f);
        border-color: rgba(235, 62, 143, 0.9);
        color: #fff;
        display: inline-flex;
        font-weight: 800;
        justify-content: center;
        line-height: 1.2;
        min-height: 46px;
        text-align: center;
      }

      .admin-turismo-action-buttons button {
        flex: 0 1 auto;
        width: auto;
      }

      .admin-turismo-action-buttons button:disabled {
        cursor: not-allowed;
        opacity: 0.48;
      }

      .admin-turismo-action-buttons button:not(.admin-action-primary):not(.admin-action-publish) {
        background: transparent;
        border-color: rgba(235, 62, 143, 0.3);
        color: #10202b;
      }

      .admin-turismo-action-buttons .admin-action-primary {
        min-width: 180px;
        padding-inline: 22px;
      }

      .admin-turismo-row-actions button:last-child,
      .admin-turismo-action-buttons .admin-action-publish {
        background: transparent;
        border-color: rgba(235, 62, 143, 0.3);
        color: #10202b;
      }

      .admin-turismo-action-panel {
        display: grid;
        gap: 18px;
      }

      .admin-turismo-action-group {
        align-items: center;
        background: linear-gradient(180deg, #ffffff, #f9fcfe);
        border: 1px solid #d9e7ef;
        border-radius: 16px;
        display: grid;
        gap: 16px;
        padding: 18px;
      }

      .admin-turismo-action-group--publish {
        background: linear-gradient(180deg, #eef8ff, #ffffff);
        border-color: #b8d4e4;
      }

      .admin-turismo-guardar-banner {
        align-items: center;
        background: #f0f7fc;
        border: 2px solid #0d69a1;
        border-radius: 12px;
        display: flex;
        gap: 16px;
        justify-content: space-between;
        padding: 16px 20px;
      }

      .admin-turismo-guardar-banner div {
        display: grid;
        gap: 3px;
      }

      .admin-turismo-guardar-banner strong {
        color: #10202b;
        font-size: 0.92rem;
        font-weight: 900;
      }

      .admin-turismo-guardar-banner span {
        color: #4e6a7a;
        font-size: 0.8rem;
      }

      .admin-turismo-btn-guardar {
        background: #0d69a1;
        border: none;
        border-radius: 10px;
        color: #fff;
        cursor: pointer;
        font: inherit;
        font-size: 0.95rem;
        font-weight: 900;
        padding: 12px 22px;
        white-space: nowrap;
      }

      .admin-turismo-btn-guardar:hover {
        background: #0a5482;
      }

      .admin-turismo-save-feedback {
        border-radius: 10px;
        font-size: 0.88rem;
        font-weight: 700;
        margin-top: 10px;
        padding: 10px 14px;
      }

      .admin-turismo-save-feedback.is-ok {
        background: #e6f6ec;
        border: 1px solid #9bd4ad;
        color: #146538;
      }

      .admin-turismo-save-feedback.is-error {
        background: #fff5f5;
        border: 1px solid #f0b0b0;
        color: #8f1f1f;
      }

      .admin-turismo-action-group--estado {
        background: linear-gradient(180deg, #fffbea, #ffffff);
        border-color: #f0d060;
      }

      .admin-turismo-missing-alert {
        background: #fff5f5;
        border-color: #f0b0b0;
      }

      .admin-turismo-missing-list {
        display: flex;
        flex-wrap: wrap;
        gap: 6px 14px;
        list-style: none;
        margin: 8px 0 0;
        padding: 0;
      }

      .admin-turismo-missing-list li {
        align-items: center;
        color: #8f1f1f;
        display: flex;
        font-size: 0.82rem;
        font-weight: 700;
        gap: 5px;
      }

      .admin-turismo-missing-list li::before {
        content: "✗";
        font-weight: 900;
      }

      .admin-turismo-estado-selector {
        align-items: center;
        display: flex;
        gap: 8px;
      }

      .admin-turismo-estado-selector span {
        color: #516575;
        font-size: 0.82rem;
        font-weight: 800;
        text-transform: uppercase;
        white-space: nowrap;
      }

      .admin-turismo-estado-selector select {
        border: 1px solid #c0d0d8;
        border-radius: 8px;
        font: inherit;
        font-size: 0.9rem;
        font-weight: 700;
        padding: 8px 12px;
      }

      .admin-turismo-action-group p,
      .admin-turismo-action-group h3,
      .admin-turismo-action-group span {
        margin: 0;
      }

      .admin-turismo-action-group p {
        color: #4f6472;
        font-size: 0.76rem;
        font-weight: 900;
        letter-spacing: 0.06em;
        line-height: 1.25;
        text-transform: uppercase;
      }

      .admin-turismo-action-group h3 {
        color: #10202b;
        font-size: 1.08rem;
        line-height: 1.25;
        margin-top: 5px;
      }

      .admin-turismo-action-group span {
        color: #4f6472;
        display: block;
        font-size: 0.86rem;
        line-height: 1.55;
        margin-top: 7px;
        max-width: 48ch;
      }

      .admin-turismo-action-buttons {
        align-items: stretch;
        display: flex;
        flex-wrap: wrap;
        gap: 12px;
      }

      .admin-turismo-flow-actions .admin-action-publish {
        background: linear-gradient(135deg, #10202b, #eb3e8f);
        border-color: rgba(235, 62, 143, 0.92);
        color: #fff;
      }

      .admin-turismo-preview-grid {
        display: grid;
        gap: 20px;
      }

      .admin-turismo-real-card-preview {
        max-width: 440px;
      }

      .admin-turismo-side-card--preview .admin-turismo-real-card-preview {
        max-width: none;
      }

      .admin-turismo-real-card-preview .package-actions a {
        pointer-events: none;
      }

      .admin-turismo-side-card--preview .package-card {
        box-shadow: none;
      }

      .admin-turismo-side-card--preview .package-card-body {
        padding: 14px;
      }

      .admin-turismo-side-card--preview .package-card-head h3 {
        font-size: 1.05rem;
      }

      .admin-turismo-side-card--preview .package-summary {
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
        display: -webkit-box;
        overflow: hidden;
      }

      .admin-turismo-side-card--preview .package-includes div {
        gap: 5px;
      }

      .admin-preview-detail-button {
        background: #10202b;
        border: 1px solid #10202b;
        border-radius: 10px;
        color: #fff;
        cursor: pointer;
        font-weight: 900;
        padding: 11px 12px;
        width: 100%;
      }

      .admin-turismo-side-card--whatsapp {
        background: #f5fbf7;
        border-color: #cdebd7;
      }

      .admin-turismo-whatsapp-copy {
        background: #ffffff;
        border: 1px solid #cdebd7;
        border-radius: 10px;
        color: #22543b;
        font-size: 0.86rem;
        font-weight: 800;
        line-height: 1.45;
        overflow-wrap: anywhere;
        padding: 10px;
      }

      body.admin-modal-open {
        overflow: hidden;
      }

      .admin-turismo-modal {
        display: none;
        inset: 0;
        padding: 22px;
        position: fixed;
        z-index: 80;
      }

      .admin-turismo-modal.is-open {
        align-items: center;
        display: flex;
        justify-content: center;
      }

      .admin-turismo-modal-backdrop {
        background: rgba(8, 18, 27, 0.64);
        inset: 0;
        position: absolute;
      }

      .admin-turismo-modal-card {
        background: #ffffff;
        border: 1px solid #d9e7ef;
        border-radius: 16px;
        box-shadow: 0 28px 80px rgba(8, 18, 27, 0.28);
        max-height: min(860px, calc(100vh - 44px));
        max-width: 1040px;
        overflow: auto;
        position: relative;
        width: min(100%, 1040px);
        z-index: 1;
      }

      .admin-turismo-modal-card--compact {
        max-width: 460px;
      }

      .admin-turismo-demand-preview {
        display: grid;
        gap: 14px;
        padding: 18px;
      }

      .admin-turismo-demand-preview .admin-turismo-real-card-preview {
        max-width: none;
      }

      .admin-turismo-modal-close {
        align-items: center;
        background: #ffffff;
        border: 1px solid #d9e7ef;
        border-radius: 999px;
        color: #10202b;
        cursor: pointer;
        display: inline-flex;
        font-size: 1.35rem;
        font-weight: 900;
        height: 38px;
        justify-content: center;
        position: absolute;
        right: 14px;
        top: 14px;
        width: 38px;
        z-index: 2;
      }

      .admin-turismo-modal-hero {
        background: #10202b;
        color: #ffffff;
        display: grid;
        min-height: 320px;
      }

      .admin-turismo-modal-hero img,
      .admin-turismo-modal-empty {
        display: block;
        height: 100%;
        min-height: 320px;
        object-fit: cover;
        width: 100%;
      }

      .admin-turismo-modal-empty {
        align-items: center;
        background: linear-gradient(135deg, #d9e7ef, #f7fbfe);
        color: #4f6472;
        display: flex;
        font-weight: 900;
        justify-content: center;
      }

      .admin-turismo-modal-hero > div {
        align-content: center;
        display: grid;
        gap: 12px;
        padding: 24px;
      }

      .admin-turismo-modal-hero p,
      .admin-turismo-modal-hero h3,
      .admin-turismo-modal-hero span,
      .admin-turismo-modal-body p {
        margin: 0;
      }

      .admin-turismo-modal-hero p {
        color: #b7d4e4;
        font-size: 0.82rem;
        font-weight: 900;
        letter-spacing: 0.08em;
        text-transform: uppercase;
      }

      .admin-turismo-modal-hero h3 {
        font-size: clamp(2rem, 4vw, 3.4rem);
        line-height: 0.98;
      }

      .admin-turismo-modal-hero span {
        color: #ffffff;
        font-size: 1.05rem;
        font-weight: 900;
      }

      .admin-turismo-modal-body {
        display: grid;
        gap: 18px;
        padding: 22px;
      }

      .admin-turismo-modal-gallery {
        display: grid;
        gap: 10px;
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }

      .admin-turismo-modal-gallery img {
        aspect-ratio: 1 / 1;
        border-radius: 10px;
        display: block;
        object-fit: cover;
        width: 100%;
      }

      .admin-turismo-modal-columns {
        display: grid;
        gap: 14px;
      }

      .admin-turismo-modal-columns section {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 12px;
        padding: 14px;
      }

      .admin-turismo-modal-columns h4 {
        margin: 0 0 10px;
      }

      .admin-turismo-modal-columns ul {
        margin: 0;
        padding-left: 18px;
      }

      .admin-turismo-modal-cta {
        align-items: center;
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 12px;
        display: flex;
        gap: 14px;
        justify-content: space-between;
        padding: 14px;
      }

      .admin-turismo-modal-cta span {
        color: #4f6472;
        display: block;
        font-size: 0.78rem;
        font-weight: 900;
        text-transform: uppercase;
      }

      .admin-turismo-modal-cta strong {
        color: #10202b;
        display: block;
        font-size: 1.4rem;
      }

      .admin-turismo-modal-cta button {
        background: #0f7f9f;
        border: 1px solid #0f7f9f;
        border-radius: 10px;
        color: #ffffff;
        font-weight: 900;
        padding: 12px 18px;
      }

      .admin-turismo-detail-preview {
        background: #f7fbfe;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        overflow: hidden;
      }

      .admin-turismo-detail-preview h3,
      .admin-turismo-detail-preview p {
        margin: 0;
      }

      .admin-turismo-detail-hero img {
        display: block;
        height: 100%;
        object-fit: cover;
        width: 100%;
      }

      .admin-turismo-detail-preview {
        display: grid;
        gap: 14px;
        padding: 14px;
      }

      .admin-turismo-detail-hero {
        background: #10202b;
        border-radius: 8px;
        color: #fff;
        display: grid;
        overflow: hidden;
      }

      .admin-turismo-detail-hero img {
        aspect-ratio: 16 / 9;
      }

      .admin-turismo-detail-hero div {
        display: grid;
        gap: 6px;
        padding: 14px;
      }

      .admin-turismo-gallery-strip {
        display: grid;
        gap: 8px;
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }

      .admin-turismo-gallery-strip img {
        aspect-ratio: 4 / 3;
        border-radius: 8px;
        display: block;
        object-fit: cover;
        width: 100%;
      }

      .admin-turismo-detail-columns {
        display: grid;
        gap: 12px;
      }

      .admin-turismo-detail-columns div {
        background: #fff;
        border: 1px solid #d9e7ef;
        border-radius: 8px;
        padding: 12px;
      }

      .admin-turismo-detail-columns h4 {
        margin: 0 0 8px;
      }

      .admin-turismo-whatsapp {
        background: #e7f8ef;
        border: 1px solid #bce8ce;
        border-radius: 8px;
        color: #147a43;
        font-weight: 800;
        padding: 12px;
      }

        @media (max-width: 520px) {
        .admin-login-screen {
          align-items: stretch;
          min-height: calc(100svh - 28px);
          padding: 14px;
        }

        .admin-login-card {
          grid-template-columns: minmax(0, 1fr);
          min-height: 0;
        }

        .admin-login-panel {
          min-height: 270px;
          padding: 22px;
        }

        .admin-login-brand h1 {
          font-size: clamp(2rem, 12vw, 2.7rem);
          max-width: 11ch;
        }

        .admin-login-access {
          padding: 22px;
        }

        .admin-login-access-head h2 {
          font-size: 1.8rem;
        }

        body[data-app-entry="admin"] main {
          padding: 14px;
        }

        .admin-sidebar {
          padding: 12px;
        }

        .admin-shell-header {
          gap: 14px;
          grid-template-columns: minmax(0, 1fr);
          padding: 18px;
          padding-block: 18px;
          padding-inline: 18px;
        }

        .admin-layout > .admin-shell-header:first-child {
          padding-block: 18px;
          padding-inline: 18px;
        }

        .admin-shell-session {
          grid-column: auto;
          justify-self: stretch;
          margin-top: 4px;
          min-width: 0;
        }

        .admin-sidebar nav {
          grid-template-columns: minmax(0, 1fr);
        }

        .admin-turismo-layout {
          gap: 34px;
        }

        .admin-turismo-layout > .admin-turismo-panel::before {
          left: 18px;
          right: 18px;
          top: -17px;
        }

        .admin-turismo-hero,
        .admin-turismo-panel {
          border-radius: 16px;
          padding: 18px;
        }

        .admin-turismo-hero {
          gap: 20px;
        }

        .admin-turismo-layout > .admin-turismo-hero:first-child {
          padding-top: 18px;
        }

        .admin-turismo-hero-stats {
          gap: 10px;
        }

        .admin-turismo-hero-stats article {
          min-height: 76px;
          padding: 11px 8px;
        }

        .admin-turismo-section-head {
          align-items: start;
          gap: 14px;
        }

        .admin-turismo-list-head {
          display: none;
        }

        .admin-turismo-row {
          grid-template-columns: minmax(0, 1fr);
          gap: 12px;
        }

        .admin-turismo-row-actions {
          justify-content: start;
        }

        .admin-turismo-row-actions button {
          flex: 1 1 132px;
        }

        .admin-turismo-form-block {
          padding: 0;
        }

        .admin-turismo-form-block-head {
          align-items: start;
          flex-wrap: wrap;
          gap: 12px;
          padding: 20px 0;
        }

        .admin-turismo-form-block-head::before {
          margin-top: 5px;
        }

        .admin-turismo-form-block-head > span {
          flex-basis: calc(100% - 30px);
        }

        .admin-turismo-accordion > *:not(summary) {
          margin-inline: 0;
        }

        .admin-turismo-accordion-badge {
          margin-left: 0;
          min-width: 0;
        }

        .admin-turismo-validation {
          padding: 16px;
        }

        .admin-turismo-validation-summary {
          display: grid;
          gap: 12px;
          grid-template-columns: minmax(0, 1fr);
        }

        .admin-turismo-checklist {
          grid-template-columns: minmax(0, 1fr);
        }

        .admin-turismo-action-buttons button {
          width: 100%;
        }
      }

      @media (min-width: 720px) {
        .site-header {
          align-items: center;
          flex-direction: row;
          gap: 32px;
          justify-content: space-between;
          min-height: 92px;
          padding: 4px 40px;
        }

        .site-nav {
          background: transparent;
          border: 0;
          border-radius: 0;
          box-shadow: none;
          display: flex;
          gap: 14px;
          justify-content: flex-end;
          margin-left: auto;
          padding: 0;
          position: static;
        }

        .mobile-header-actions {
          display: none;
        }

        .nav-dropdown-menu {
          position: absolute;
          right: 0;
          top: 100%;
        }

        main {
          padding-bottom: 32px;
          padding-left: 32px;
          padding-right: 32px;
        }

        .site-footer {
          padding: 42px 40px 20px;
        }

        .footer-inner {
          grid-template-columns: minmax(260px, 1.4fr) repeat(3, minmax(150px, 1fr));
          gap: 32px;
        }

        .footer-brand {
          grid-column: auto;
        }

        .footer-brand p {
          max-width: 330px;
        }

        .footer-bottom {
          align-items: center;
          display: flex;
          justify-content: space-between;
        }

        /* .turismo-layout antepuesto: "section:first-child" (elemento +
           pseudo-clase) le ganaba en especificidad al padding-top de acá
           con solo ".turismo-hero" (una clase) - quedaba en 0 pese a este
           valor. Padding subido de 52px a 72px: el kicker quedaba muy
           pegado al header/navbar. */
        .turismo-layout .turismo-hero {
          margin: -32px -32px 0;
          padding: 72px 32px;
        }

        .turismo-hero-content {
          margin-left: clamp(28px, 7vw, 116px);
          transform: translateY(clamp(4px, 1.2vw, 14px));
        }

        .turismo-intention-section,
      .package-detail-summary,
      .package-detail-content,
      .package-detail-gallery {
          padding: 24px;
        }

        .turismo-intention-section {
          grid-template-columns: minmax(260px, 0.8fr) minmax(320px, 1.2fr);
        }

        .turismo-intention-section .catalog-heading {
          margin-bottom: 0;
        }

        .turismo-intention-section .intention-chip-row {
          grid-column: 1 / -1;
        }

        .package-detail-content {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .package-detail-hero {
          margin: -32px -32px 0;
          padding: 64px 32px;
        }

        .package-detail-hero-content {
          margin-left: clamp(28px, 7vw, 116px);
        }

        .estudiantil-hero {
          margin: -32px -32px 0;
          padding: 64px 32px;
        }

        .student-detail-hero {
          margin: -32px -32px 0;
          padding: 64px 32px;
        }

        .portal-hero {
          margin: -32px -32px 0;
          padding: 64px 32px;
        }

        .items {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .turismo-trust-grid {
          grid-template-columns: repeat(3, minmax(0, 1fr));
        }

        .turismo-cta {
          grid-template-columns: minmax(0, 1fr) auto;
        }

        .student-path-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .student-detail-benefits ul {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .institutional-hero {
          grid-template-columns: minmax(0, 1fr) minmax(240px, 0.42fr);
          margin: -32px -32px 0;
          padding-left: clamp(52px, 8vw, 116px);
          padding-right: clamp(52px, 8vw, 116px);
        }

        .institutional-split,
        .contact-options {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .bariloche-gallery-grid {
          grid-template-columns: repeat(3, minmax(0, 1fr));
        }

        .bariloche-experience-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .portal-summary {
          grid-template-columns: repeat(3, minmax(0, 1fr));
        }

        .portal-result-head,
        .portal-whatsapp-panel,
        .portal-trip-card {
          grid-template-columns: minmax(0, 1fr) auto;
        }

        .portal-status-grid,
        .portal-payment-summary {
          grid-template-columns: repeat(3, minmax(0, 1fr));
        }

        .public-inscripcion-grid {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .admin-turismo-hero {
          grid-template-columns: minmax(0, 1.3fr) minmax(360px, 0.7fr);
        }

        .admin-turismo-hero-stats {
          grid-template-columns: repeat(4, minmax(0, 1fr));
        }

        .admin-turismo-form-grid,
      .admin-turismo-preview-grid,
      .admin-turismo-detail-columns {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }

        .admin-turismo-category-grid {
          grid-template-columns: repeat(4, minmax(0, 1fr));
        }

        .admin-turismo-validation-summary {
          grid-template-columns: auto 1fr;
        }

        .admin-turismo-action-group {
          grid-template-columns: minmax(0, 1.15fr) minmax(220px, 0.85fr);
        }

        .admin-turismo-modal-hero {
          grid-template-columns: minmax(0, 1.2fr) minmax(280px, 0.8fr);
        }

        .admin-turismo-modal-hero > div {
          padding: 34px;
        }

        .admin-turismo-modal-gallery {
          grid-template-columns: repeat(6, minmax(0, 1fr));
        }

        .admin-turismo-modal-columns {
          grid-template-columns: repeat(2, minmax(0, 1fr));
        }
      }

      @media (max-width: 720px) {
        .public-inscripcion-grid {
          grid-template-columns: 1fr;
        }
      }

      body[data-app-entry="admin"] {
        background: var(--color-background-soft);
      }

      .site-nav,
      .nav-dropdown-menu {
        background: color-mix(in srgb, var(--color-surface) 94%, transparent);
        border-color: var(--color-border);
        box-shadow: var(--shadow-panel);
      }

      .site-nav a,
      .site-nav summary {
        color: var(--color-text);
      }

      .site-nav a:hover,
      .site-nav summary:hover {
        background: var(--color-surface-soft);
        border-color: var(--color-border);
        color: var(--color-primary);
      }

      .nav-toggle {
        background: color-mix(in srgb, var(--color-surface) 92%, transparent);
        border-color: var(--color-border);
      }

      .nav-toggle span {
        background: var(--color-text);
      }

      section {
        border-top-color: var(--color-border);
      }

      .item,
      .turismo-intention-section,
      .package-card,
      .package-detail-summary,
      .package-detail-content,
      .package-detail-gallery,
      .student-path-card,
      .student-detail-benefits li,
      .portal-panel,
      .portal-result,
      .portal-empty,
      .admin-login-card,
      .admin-shell-header,
      .admin-shell,
      .admin-turismo-panel,
      .admin-turismo-action-panel,
      .admin-turismo-preview-panel,
      .admin-turismo-modal-card,
      .ficha-adhesion-hero,
      .ficha-adhesion-panel {
        background: var(--color-surface);
        border-color: var(--color-border);
        color: var(--color-text);
      }

      .ficha-adhesion-hero {
        background: linear-gradient(135deg, #083b7a, #0d69a1);
        border-color: transparent;
        color: #fff;
      }

      .ficha-adhesion-hero h1 {
        color: #fff;
      }

      .ficha-adhesion-hero p {
        color: rgba(255, 255, 255, 0.9);
      }

      .package-card,
      .turismo-package-card,
      .student-path-card,
      .admin-login-card {
        box-shadow: var(--shadow-card);
      }

      h1,
      h2,
      h3,
      h4,
      .package-card h3,
      .package-price strong,
      .package-detail-facts span,
      .package-includes strong,
      .package-includes span,
      .admin-turismo-hero-stats strong,
      .admin-pasajeros-form legend,
      .admin-shell-brand strong,
      .admin-shell-session strong,
      .ficha-adhesion-context strong,
      .ficha-adhesion-context p {
        color: var(--color-text);
      }

      p,
      li,
      figcaption,
      .package-summary,
      .package-meta,
      .turismo-empty-state,
      .admin-pasajeros-form label,
      .admin-pasajeros-table-head p,
      .admin-turismo-hero-stats span,
      .admin-shell-brand span,
      .admin-shell-session span,
      .admin-login-brand p,
      .admin-login-note span,
      .ficha-adhesion-context span {
        color: var(--color-muted);
      }

      .turismo-hero h1,
      .turismo-hero p,
      .turismo-hero .turismo-kicker,
      .turismo-proof-list span,
      .turismo-cta h2,
      .turismo-cta p {
        color: #fff;
      }

      a,
      button,
      .package-actions a:first-child,
      .package-actions button:last-child,
      .intention-chip {
        color: var(--color-primary);
      }

      .package-price,
      .package-detail-facts span,
      .package-includes span,
      .turismo-empty-state,
      .intention-chip,
      .package-actions a:first-child,
      .package-actions button:last-child,
      .portal-summary div,
      .portal-installment,
      .portal-status-card,
      .portal-payment-panel,
      .portal-payment-summary div,
      .portal-doc-item,
      .portal-doc-ok,
      .admin-turismo-hero-stats > div,
      .admin-pasajeros-table-head > strong,
      .admin-turismo-validation-summary,
      .admin-turismo-checklist li,
      .ficha-adhesion-context {
        background: var(--color-surface-soft);
        border-color: var(--color-border);
      }

      .package-image-wrap {
        background: var(--color-surface-soft);
      }

      input,
      select,
      textarea,
      .portal-form input,
      .admin-login-form input,
      .admin-pasajeros-form input,
      .admin-pasajeros-form select,
      .admin-pasajeros-form textarea,
      .admin-turismo-form input,
      .admin-turismo-form select,
      .admin-turismo-form textarea,
      .ficha-adhesion-form input,
      .ficha-adhesion-form select {
        background: var(--color-surface-strong);
        border-color: var(--color-border-strong);
        color: var(--color-text);
      }

      input::placeholder,
      textarea::placeholder {
        color: color-mix(in srgb, var(--color-muted) 74%, transparent);
      }

      input:focus,
      select:focus,
      textarea:focus,
      .admin-login-form input:focus,
      .admin-turismo-form input:focus,
      .admin-turismo-form select:focus,
      .admin-turismo-form textarea:focus {
        border-color: var(--color-primary);
        outline-color: var(--color-primary);
      }

      .portal-result-head span,
      .portal-status-card span,
      .portal-status-card small,
      .portal-payment-summary span,
      .portal-doc-item span,
      .portal-doc-ok span {
        color: var(--color-muted);
      }

      .portal-status-card strong,
      .portal-payment-summary strong,
      .portal-doc-item strong,
      .portal-doc-ok strong {
        color: var(--color-text);
      }

      fieldset,
      .admin-pasajeros-form fieldset,
      .ficha-adhesion-form fieldset {
        border-color: var(--color-border);
      }

      .admin-pasajeros-table-wrap,
      .admin-pasajeros-table th,
      .admin-pasajeros-table td {
        border-color: var(--color-border);
      }

      .admin-pasajeros-table thead th {
        background: var(--color-surface-soft);
        color: var(--color-muted-strong);
      }

      .admin-pasajeros-table tbody tr:nth-child(even) {
        background: color-mix(in srgb, var(--color-surface-soft) 58%, transparent);
      }

      .admin-pasajeros-table tbody tr:hover {
        background: color-mix(in srgb, var(--color-primary) 14%, var(--color-surface));
      }

      .admin-pasajeros-row-actions button,
      .admin-pasajeros-secondary-button,
      .ficha-adhesion-signature button {
        border-color: var(--color-border-strong);
        color: var(--color-text);
      }

      .admin-pasajeros-primary-button,
      .portal-form button,
      .admin-login-form button,
      .ficha-adhesion-submit,
      .intention-chip.active {
        background: var(--color-primary);
        border-color: var(--color-primary);
        color: #fff;
      }

      .turismo-hero button,
      .turismo-cta a,
      .turismo-cta button,
      .package-actions button:first-child,
      .student-path-card a,
      .student-detail-cta a {
        background: var(--color-accent);
        border-color: var(--color-accent);
        color: #fff;
      }

      .admin-login-error,
      .admin-pasajeros-form-error,
      .ficha-adhesion-error {
        background: var(--color-danger-surface);
        border-color: var(--color-danger-border);
        color: var(--color-danger-text);
      }

      .ficha-adhesion-success {
        background: var(--color-success-surface);
        border-color: var(--color-success-border);
        color: var(--color-success-text);
      }

      .ficha-adhesion-signature canvas {
        background: #fff;
        border-color: var(--color-border-strong);
      }

      .admin-login-panel .admin-login-brand span {
        color: rgba(255, 255, 255, 0.76);
      }

      .admin-login-panel .admin-login-brand p {
        color: rgba(255, 255, 255, 0.82);
      }

      @media (min-width: 720px) {
        .site-nav {
          background: transparent;
          border: 0;
          box-shadow: none;
        }
      }

      @media (max-width: 720px) {
        html,
        body {
          overflow-x: clip;
        }

        .site-header {
          min-height: 68px;
          padding: 10px 14px;
        }

        .brand-logo {
          height: 48px;
        }

        .site-nav {
          align-items: stretch;
          background: #fff;
          border-color: var(--color-border);
          border-radius: 16px;
          box-shadow: 0 20px 42px rgba(16, 32, 43, 0.18);
          gap: 6px;
          left: 14px;
          max-height: calc(100svh - 88px);
          overflow-y: auto;
          padding: 10px;
          right: 14px;
          top: calc(100% + 6px);
        }

        .site-nav a,
        .site-nav summary {
          background: transparent;
          border: 1px solid transparent;
          border-radius: 12px;
          color: var(--color-text);
          justify-content: flex-start;
          min-height: 44px;
          padding: 11px 12px;
          text-shadow: none;
        }

        .site-nav a:hover,
        .site-nav summary:hover {
          background: var(--color-surface-soft);
          border-color: var(--color-border);
          color: var(--color-primary);
        }

        .nav-dropdown {
          display: grid;
          gap: 6px;
        }

        .nav-dropdown-menu {
          background: var(--color-surface-soft);
          border-color: var(--color-border);
          box-shadow: none;
          margin: 0;
          min-width: 0;
          padding: 8px;
          position: static;
        }

        .nav-dropdown-menu a {
          background: #fff;
          min-height: 40px;
          padding: 10px 12px;
        }

        body.nav-open .whatsapp-fab {
          display: none;
        }

        .whatsapp-fab {
          bottom: max(14px, env(safe-area-inset-bottom));
          height: 50px;
          right: 12px;
          width: 50px;
          z-index: 34;
        }

        body:not(.home-page) .whatsapp-fab {
          display: none;
        }

        body.home-page .whatsapp-fab {
          display: none;
        }

        .whatsapp-fab .material-symbols-outlined {
          font-size: 26px;
        }

        /* Rediseño leve pedido por el cliente: el kicker "Turismo nacional e
           internacional" se cortaba arriba porque el bloque de contenido
           (anclado abajo, overflow:hidden) no entraba en el alto disponible
           con todo lo que había apilado. Se saca .turismo-proof-list de acá
           (esa info de "destinos"/"asesoramiento" ya está en los chips de
           filtro de abajo) para liberar aire real, y el padding queda
           simétrico arriba/abajo en vez de 24px/14px. */
        /* .turismo-layout antepuesto a propósito: hay una regla global
           "section:first-child { padding-top: 0 }" (specificity de
           elemento+pseudo-clase) que le ganaba al padding-top de acá si
           el selector era solo ".turismo-hero" (specificity de 1 clase). */
        .turismo-layout .turismo-hero {
          height: auto;
          margin-top: -10px;
          min-height: 70vh;
          min-height: 70svh;
          padding: 32px 16px;
        }

        .turismo-hero::after {
          background:
            linear-gradient(180deg, rgba(8, 17, 28, 0.22) 0%, rgba(8, 17, 28, 0.1) 34%, rgba(8, 17, 28, 0.78) 100%),
            linear-gradient(90deg, rgba(8, 17, 28, 0.24), rgba(8, 17, 28, 0.04) 58%);
        }

        .turismo-hero-carousel span {
          animation: none;
          transform: none;
        }

        .turismo-hero-carousel span:first-child {
          opacity: 1;
        }

        .turismo-hero-carousel span:not(:first-child) {
          background-image: none;
          display: none;
        }

        /* place-content:initial ya no va acá - pisaba el align-content:end
           de arriba (mismo shorthand, misma regla, ganaba el último) y
           dejaba el contenido pegado arriba en vez de anclado abajo. */
        .turismo-hero-content {
          align-content: end;
          gap: 14px;
          min-height: calc(70vh - 64px);
          min-height: calc(70svh - 64px);
          transform: none;
        }

        .turismo-hero h1 {
          color: #fff;
          font-size: clamp(1.95rem, 8.5vw, 2.58rem);
          line-height: 0.98;
          max-width: 12.6ch;
          order: 2;
        }

        .turismo-hero p {
          color: rgba(255, 255, 255, 0.92);
          font-size: 0.94rem;
          line-height: 1.4;
          max-width: 31ch;
          order: 3;
        }

        .turismo-hero .turismo-kicker,
      .turismo-proof-list span {
          color: rgba(255, 255, 255, 0.94);
        }

        .turismo-hero .turismo-kicker {
          align-self: start;
          background: rgba(255, 255, 255, 0.14);
          border: 1px solid rgba(255, 255, 255, 0.24);
          border-radius: 999px;
          font-size: 0.68rem;
          letter-spacing: 0.08em;
          max-width: max-content;
          order: 1;
          padding: 7px 10px;
        }

        /* Se saca del hero de Turismo en mobile (pedido del cliente: hero
           muy cargado). La misma info de destinos/asesoramiento ya está en
           los chips de filtro de .turismo-intention-section, justo abajo. */
        .turismo-hero .turismo-proof-list {
          display: none;
        }

        .turismo-hero-actions {
          order: 4;
          margin-top: 0;
        }

        .turismo-intention-section,
        .catalog-section {
          background: #f5f8fb;
          border: 1px solid #d9e7ef;
          border-radius: 16px;
          margin-left: -6px;
          margin-right: -6px;
          padding: 14px;
        }

        .turismo-intention-section .catalog-heading,
        .catalog-section .catalog-heading {
          gap: 7px;
          margin-bottom: 14px;
        }

        .turismo-intention-section .catalog-heading h2,
        .catalog-section .catalog-heading h2 {
          font-size: 1.34rem;
          line-height: 1.12;
        }

        .turismo-search {
          border-radius: 14px;
          box-shadow: 0 10px 22px rgba(16, 32, 43, 0.08);
          margin-bottom: 12px;
        }

        .intention-chip-row {
          display: flex;
          gap: 8px;
          margin-left: -14px;
          margin-right: -14px;
          overflow-x: auto;
          padding: 0 14px 4px;
          scroll-snap-type: x proximity;
        }

        .intention-chip {
          flex: 0 0 auto;
          min-height: 40px;
          scroll-snap-align: start;
          white-space: nowrap;
        }

        .package-grid {
          gap: 14px;
        }

        .turismo-package-card {
          border-radius: 16px;
          box-shadow: 0 14px 28px rgba(16, 32, 43, 0.1);
        }

        .turismo-package-card .package-card-carousel {
          aspect-ratio: 16 / 10;
        }

        .package-image-wrap span,
        .package-carousel-count {
          font-size: 0.68rem;
        }

        .package-carousel-arrow {
          height: 34px;
          width: 34px;
        }

        .package-card-body {
          gap: 11px;
          padding: 14px;
        }

        .package-card h3 {
          font-size: 1.16rem;
        }

        .package-meta,
        .package-summary {
          font-size: 0.86rem;
        }

        .package-summary {
          line-height: 1.38;
        }

        .package-quick-info span,
        .package-includes span {
          font-size: 0.76rem;
          padding: 6px 8px;
        }

        .package-price {
          align-items: center;
          border-radius: 12px;
          padding: 10px;
        }

        .package-price strong {
          font-size: 1.28rem;
        }

        .turismo-trust {
          border-radius: 16px;
          margin-left: -6px;
          margin-right: -6px;
          padding: 16px;
        }

        .turismo-trust-grid {
          gap: 10px;
        }

        .turismo-trust-grid article {
          padding: 14px;
        }

        .package-actions {
          display: grid;
          gap: 8px;
        }

        .package-actions a,
        .package-actions button {
          border-radius: 12px;
          flex-basis: auto;
          min-height: 44px;
          width: 100%;
        }

        .turismo-hero-actions {
          display: grid;
          gap: 8px;
        }

        .turismo-hero button,
        .turismo-hero a {
          min-height: 44px;
          width: 100%;
        }

        /* Pedido del cliente: "Pedir asesoramiento" un poco más chico que
           "Ver viajes" - es la acción secundaria (WhatsApp), no hace falta
           que compita en tamaño con la primaria. */
        .turismo-hero-actions a:nth-child(2) {
          font-size: 0.92rem;
          min-height: 40px;
          padding: 10px 18px;
        }

        .turismo-cta a {
          width: 100%;
        }

        .turismo-trust-actions a {
          width: 100%;
        }

      }

      body[data-app-entry="admin"] .admin-login-screen {
        background: #f3f7fc;
      }

      body[data-app-entry="admin"] .site-header,
      body[data-app-entry="admin"] .site-footer {
        display: none;
      }

      body[data-app-entry="admin"] .admin-login-card {
        background: #fff;
        border-color: rgba(7, 26, 62, 0.08);
        color: #071a3e;
      }

      body[data-app-entry="admin"] .admin-login-panel {
        background: #071a3e;
        color: #fff;
      }

      body[data-app-entry="admin"] .admin-login-access {
        background: #f7faff;
      }

      body[data-app-entry="admin"] .admin-login-brand p,
      body[data-app-entry="admin"] .admin-login-footer {
        color: rgba(255, 255, 255, 0.72);
      }

      body[data-app-entry="admin"] .admin-login-access-head h2,
      body[data-app-entry="admin"] .admin-login-form label {
        color: #071a3e;
      }

      body[data-app-entry="admin"] .admin-login-access-head p,
      body[data-app-entry="admin"] .admin-login-note span {
        color: #53677e;
      }

      body[data-app-entry="admin"] .admin-login-form input {
        background: #fff;
        border-color: #d8e2ef;
        color: #071a3e;
      }

      body[data-app-entry="admin"] .admin-login-form > button {
        background: #071a3e;
        border-color: #071a3e;
        color: #fff;
      }

      body[data-app-entry="admin"] .admin-login-password button {
        background: transparent;
        border-color: transparent;
        box-shadow: none;
        color: #65748a;
      }

      .admin-login-form > button {
        background: #071a3e !important;
        border-color: #071a3e !important;
        color: #fff !important;
      }

      .admin-login-password input {
        padding-right: 84px;
      }

      .admin-login-password button {
        background: transparent !important;
        border-color: transparent !important;
        box-shadow: none !important;
        color: #65748a !important;
        font-size: 0.78rem;
        font-weight: 900;
        width: 68px;
      }

      @media (max-width: 720px) {
        body[data-app-entry="admin"] main {
          padding: 0;
        }

        .admin-login-screen {
          align-items: stretch;
          min-height: 100svh;
          padding: 0;
        }

        .admin-login-card {
          border: 0;
          border-radius: 0;
          box-shadow: none;
          grid-template-columns: minmax(0, 1fr);
          min-height: 100svh;
          max-width: none;
        }

        .admin-login-panel {
          align-content: center;
          min-height: 78px;
          padding: 16px 18px;
        }

        .admin-login-panel::before,
        .admin-login-orb,
        .admin-login-brand,
        .admin-login-highlights,
        .admin-login-footer {
          display: none;
        }

        .admin-login-logo-link img {
          height: 38px;
          width: 38px;
        }

        .admin-login-logo-link small {
          display: none;
        }

        .admin-login-access {
          align-content: start;
          min-height: calc(100svh - 78px);
          padding: 32px 20px;
        }

      .admin-login-access-head h2 {
        font-size: 2rem;
      }
    }

      .admin-turismo-panel.admin-fichas-detail {
        background: #f0f7ff;
        border-color: #d9e7ef;
        border-left: 3px solid #0d69a1;
      }

      .admin-shell-brand strong {
        font-size: 1rem;
        font-weight: 600;
      }

      .admin-shell-brand span {
        color: #6b7280;
        font-size: 0.7rem;
      }
