/* ==========================================================================
   DUNIMAR SRL · Hoja de estilos de la demo
   Mundo visual: plano de obra ploteado (papel bond, tinta grafito,
   resaltador amarillo y marcas de revisión).
   Reglas para Elementor: solo selectores de clase y de descendiente,
   nunca de hijo directo; puntos de corte 1024 px y 767 px.
   ========================================================================== */

/* 0. FUENTE LOCAL: Archivo variable (peso 100–900, ancho 62–125 %), licencia SIL OFL.
   Se sirve desde ../fonts/ (en WordPress: wp-content/uploads/dunimar/fonts/).
   Mismo nombre "Archivo" que en Elementor: se elige en su selector de tipografía
   y se carga desde el propio servidor, sin Google Fonts. */
@font-face {
  font-family: "Archivo";
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url("../fonts/archivo-variable-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Archivo";
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url("../fonts/archivo-variable-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* 1b. BASE EN WORDPRESS (solo dentro del contenido de Elementor)
   La clase .elementor no existe en la demo: aquí no cambia nada. En WordPress
   sustituye al bloque 1 sin tocar el resto del tema (Blocksy, WooCommerce).
   :where() deja la especificidad en una sola clase, así las reglas dn- mandan. */
.elementor :where(h1, h2, h3, h4, p, ul, ol, dl, dd, figure, blockquote, label, figcaption) { margin: 0; }
.elementor :where(ul, ol) { padding: 0; }
.elementor :where(blockquote) { padding: 0; border: 0; }
.elementor :where(table, th, td) { border: 0; }
.elementor :where(table) { margin: 0; }
.elementor :where(caption) { font-weight: 400; }
.elementor :where(label, figcaption) { line-height: inherit; }
.elementor .dn-form :where(input, select, textarea) { color: inherit; }
.elementor .dn-form :where(input, textarea) { line-height: inherit; }
.elementor .dn-form :where(select) { line-height: normal; }
.elementor .dn-form :where(input[type="checkbox"]) { font: inherit; margin: 1px 3px 3px 4px; }
.elementor .dn-form a { text-decoration: underline; }
.elementor :where(h1, h2, h3, h4, h5, h6, a, dt, .price, label, figcaption) { color: inherit; }
.elementor :where(dt) { font-weight: 400; }
.elementor :where(img, svg, video) { display: block; max-width: 100%; height: auto; }
.elementor :where(button, input, select, textarea, label, figcaption) { font-family: inherit; font-size: inherit; }
.elementor :where(button, input, select, textarea) { color: inherit; }
.elementor {
  color: var(--dn-color-text);
  font-family: var(--dn-font-body);
  font-size: var(--dn-text-body);
  line-height: 1.6;
  font-stretch: 100%;
  -webkit-font-smoothing: antialiased;
}
.elementor .dn-btn { line-height: 1.2; font-stretch: 104%; }
.elementor .dn-form textarea { height: auto; }

/* 2. VARIABLES ------------------------------------------------------------
   Cada color lee primero el global de Elementor; el valor es el respaldo. */
:root {
  --dn-color-primary: var(--e-global-color-primary, #1E2328);   /* tinta grafito */
  --dn-color-secondary: var(--e-global-color-secondary, #FBFBF9); /* papel bond */
  --dn-color-text: var(--e-global-color-text, #1E2328);
  --dn-color-accent: var(--e-global-color-accent, #FFB703);     /* resaltador */

  --dn-color-ink: var(--dn-color-primary);
  --dn-color-paper: var(--dn-color-secondary);
  --dn-color-mark: var(--dn-color-accent);
  --dn-color-ink-2: #4A535C;      /* texto secundario, 7.6:1 sobre papel */
  --dn-color-tone-10: #EEF0F1;    /* trama 10 % */
  --dn-color-tone-30: #D3D8DC;    /* trama 30 % */
  --dn-color-line: #C3CAD0;       /* líneas finas */
  --dn-color-contour: #8A99A6;    /* curvas de nivel */
  --dn-color-rev: #C8361D;        /* marca de revisión */
  --dn-color-whatsapp: #0F7A40;
  --dn-color-white: #FFFFFF;
  --dn-color-ink-soft: #A9B3BC;   /* texto secundario sobre grafito, 7.9:1 */

  --dn-font-title: var(--e-global-typography-primary-font-family, "Archivo"), "Arial Narrow", sans-serif;
  --dn-font-body: var(--e-global-typography-text-font-family, "Archivo"), Arial, sans-serif;

  /* Tamaños: clamp() equivalente a 1440 / 1024 / 767 px */
  --dn-text-h1: clamp(2.5rem, 1.55rem + 3.4vw, 5rem);       /* 80 / 60 / 44 px */
  --dn-text-h2: clamp(2rem, 1.45rem + 1.9vw, 3.25rem);       /* 52 / 42 / 36 px */
  --dn-text-h3: clamp(1.3rem, 1.15rem + 0.5vw, 1.6rem);      /* 26 / 23 / 21 px */
  --dn-text-lead: clamp(1.125rem, 1.04rem + 0.35vw, 1.375rem); /* 22 / 20 / 18 px */
  --dn-text-body: clamp(1rem, 0.95rem + 0.2vw, 1.125rem);    /* 18 / 17 / 16 px */
  --dn-text-small: 0.9375rem;                                 /* 15 px */
  --dn-text-label: 0.8125rem;                                 /* 13 px, solo rótulos de campo */

  --dn-line-thin: 1px;
  --dn-line-mid: 1.5px;
  --dn-line-bold: 2px;
  --dn-radius: 2px;
  --dn-shadow: 0 18px 40px -24px rgba(30, 35, 40, 0.45);
  --dn-ease-out: cubic-bezier(0.16, 1, 0.3, 1);

  --dn-wrap: 1320px;
  --dn-gutter: clamp(16px, 4vw, 48px);
  --dn-section: clamp(72px, 8.5vw, 136px);
}

::selection { background: var(--dn-color-mark); color: var(--dn-color-ink); }
:focus-visible { outline: 3px solid var(--dn-color-mark); outline-offset: 3px; }
html { scrollbar-color: var(--dn-color-ink-2) var(--dn-color-tone-10); }
input, textarea, select { caret-color: var(--dn-color-ink); accent-color: var(--dn-color-ink); }

/* 3. UTILIDADES ------------------------------------------------------------ */
.dn-wrap {
  width: 100%;
  max-width: calc(var(--dn-wrap) + 2 * var(--dn-gutter));
  margin-inline: auto;
  padding-inline: var(--dn-gutter);
}
.dn-sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.dn-skip {
  position: absolute; left: 16px; top: -60px; z-index: 100;
  background: var(--dn-color-ink); color: var(--dn-color-white);
  padding: 12px 18px; text-decoration: none;
}
.dn-skip:focus { top: 12px; }

.dn-title,
.dn-title .elementor-heading-title {
  font-family: var(--dn-font-title);
  font-stretch: 112%;
  font-weight: 640;
  letter-spacing: -0.022em;
  line-height: 1.04;
  text-wrap: balance;
}
.dn-h2, .dn-h2 .elementor-heading-title { font-size: var(--dn-text-h2); }
.dn-h3, .dn-h3 .elementor-heading-title {
  font-family: var(--dn-font-title);
  font-size: var(--dn-text-h3);
  font-stretch: 106%;
  font-weight: 620;
  letter-spacing: -0.012em;
  line-height: 1.2;
}
.dn-lead { font-size: var(--dn-text-lead); line-height: 1.5; color: var(--dn-color-ink); max-width: 38ch; }
.dn-prose { max-width: 66ch; color: var(--dn-color-ink-2); }
.dn-prose p + p { margin-top: 1em; }
.dn-prose strong { color: var(--dn-color-ink); font-weight: 620; }
.dn-num { font-variant-numeric: tabular-nums lining-nums; }

/* Resaltador: el subrayado de marcador amarillo de los planos */
.dn-mark {
  background: linear-gradient(transparent 58%, var(--dn-color-mark) 58%, var(--dn-color-mark) 92%, transparent 92%);
  padding-inline: 0.08em;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

/* Etiqueta de foto referencial (las fotos no son de la flota de DUNIMAR) */
.dn-refimg { position: relative; display: block; margin: 0; }
.dn-ref {
  position: absolute; left: 10px; top: 10px;
  padding: 3px 8px; background: var(--dn-color-paper); border: var(--dn-line-thin) solid var(--dn-color-ink);
  color: var(--dn-color-ink); font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase; font-stretch: 88%; line-height: 1.4;
}

/* Rótulo de campo (solo dentro de cajetines y fichas, nunca encima de un titular) */
.dn-label {
  display: block;
  font-size: var(--dn-text-label);
  font-stretch: 88%;
  font-weight: 560;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--dn-color-ink-2);
  line-height: 1.3;
}

/* Botones */
.dn-btn,
.dn-btn .elementor-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  min-height: 52px;
  padding: 0 22px;
  border: var(--dn-line-thin) solid var(--dn-color-ink);
  border-radius: var(--dn-radius);
  font-family: var(--dn-font-body);
  font-size: 1.0625rem;
  font-stretch: 104%;
  font-weight: 620;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.25s var(--dn-ease-out), color 0.25s var(--dn-ease-out), border-color 0.25s var(--dn-ease-out);
}
.dn-btn svg { width: 20px; height: 20px; flex: none; }
.dn-btn--primary, .dn-btn--primary .elementor-button { background: var(--dn-color-mark); color: var(--dn-color-ink); }
.dn-btn--primary:hover, .dn-btn--primary .elementor-button:hover { background: var(--dn-color-ink); color: var(--dn-color-mark); }
.dn-btn--primary:focus-visible { outline-color: var(--dn-color-ink); }
.dn-btn--ghost, .dn-btn--ghost .elementor-button { background: transparent; color: var(--dn-color-ink); }
.dn-btn--ghost:hover, .dn-btn--ghost .elementor-button:hover { background: var(--dn-color-ink); color: var(--dn-color-paper); }
.dn-btn--on-dark { border-color: var(--dn-color-white); color: var(--dn-color-white); background: transparent; }
.dn-btn--on-dark:hover { background: var(--dn-color-white); color: var(--dn-color-ink); }
.dn-btn--block { width: 100%; }
.dn-btn--dark, .dn-btn--dark .elementor-button { background: var(--dn-color-ink); color: var(--dn-color-white); }
.dn-btn--dark:hover, .dn-btn--dark .elementor-button:hover { background: var(--dn-color-mark); color: var(--dn-color-ink); border-color: var(--dn-color-ink); }
.dn-btn--lg { min-height: 60px; padding: 0 34px; font-size: 1.1875rem; }
.dn-btn--lg svg { width: 22px; height: 22px; transition: transform 0.25s var(--dn-ease-out); }
.dn-btn--lg:hover svg { transform: translateX(4px); }
.dn-swipe-hint { display: none; }
/* Carrusel manual de la flota: solo en móvil */
.dn-carousel { position: relative; }
.dn-carousel__btn, .dn-carousel__count { display: none; }
.dn-show-m { display: none; }
.dn-fleet__cta { display: flex; justify-content: center; margin-top: clamp(28px, 3vw, 44px); }
.dn-actions { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }

.dn-link {
  display: inline-flex; align-items: center; gap: 8px;
  font-weight: 620; font-stretch: 104%;
  text-decoration: underline;
  text-decoration-thickness: 1.5px;
  text-underline-offset: 0.28em;
  text-decoration-color: var(--dn-color-mark);
  transition: text-decoration-color 0.2s;
}
.dn-link:hover { text-decoration-color: var(--dn-color-ink); }
.dn-link svg { width: 18px; height: 18px; transition: transform 0.25s var(--dn-ease-out); }
.dn-link:hover svg { transform: translateX(3px); }

/* Nota de revisión: lo que falta en la información oficial */
.dn-pending {
  position: relative;
  display: flex;
  gap: 12px;
  align-items: flex-start;
  padding: 14px 16px;
  border: var(--dn-line-thin) dashed var(--dn-color-rev);
  color: var(--dn-color-rev);
  font-size: var(--dn-text-small);
  line-height: 1.45;
  background: color-mix(in srgb, var(--dn-color-rev) 4%, transparent);
  max-width: 62ch;
}
.dn-pending svg { width: 22px; height: 22px; flex: none; margin-top: 1px; }
.dn-pending strong { font-weight: 640; }
.dn-on-dark .dn-pending { color: #FF9C86; border-color: #FF9C86; }

/* Encabezado de sección: titular a la izquierda, texto a la derecha */
.dn-section { padding-block: var(--dn-section); }
.dn-section--tone { background: var(--dn-color-tone-10); }
.dn-section--ink { background: var(--dn-color-ink); color: var(--dn-color-white); }
.dn-section--ink .dn-prose { color: var(--dn-color-ink-soft); }
.dn-section--ink .dn-label { color: var(--dn-color-ink-soft); }
.dn-section__head {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
  gap: clamp(24px, 5vw, 96px);
  align-items: end;
  margin-bottom: clamp(40px, 5vw, 72px);
}
.dn-section__head .dn-prose { justify-self: end; }
.dn-rule { border: 0; border-top: var(--dn-line-thin) solid var(--dn-color-line); margin: 0; }

/* Espaciados auxiliares */
.dn-after { margin-top: clamp(24px, 3vw, 40px); }
.dn-mb { margin-bottom: 24px; }
.dn-stack { display: grid; gap: clamp(40px, 5vw, 72px); }
.dn-product__desc { margin-block: 16px 20px; }
.dn-menu-toggle__close, .dn-icon-play { display: none; }
.dn-header--menu-open .dn-menu-toggle__close, .dn-slider--paused .dn-icon-play { display: block; }
.dn-header--menu-open .dn-menu-toggle__open, .dn-slider--paused .dn-icon-pause { display: none; }

/* 4. BARRA SUPERIOR, HEADER Y FOOTER: SE ADAPTARÁN A BLOCKSY ---------------- */
.dn-topbar {
  background: var(--dn-color-ink);
  color: var(--dn-color-white);
  font-size: var(--dn-text-small);
}
.dn-topbar__inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; min-height: 44px;
}
.dn-topbar__contacts { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 24px; list-style: none; }
.dn-topbar__contacts a { text-decoration: none; display: inline-flex; align-items: center; gap: 8px; }
.dn-topbar__contacts a:hover { text-decoration: underline; text-underline-offset: 0.25em; }
.dn-topbar__contacts svg { width: 16px; height: 16px; color: var(--dn-color-mark); }
.dn-topbar__place { color: var(--dn-color-ink-soft); }
.dn-topbar__quote {
  display: inline-flex; align-items: center; gap: 0;
  min-height: 44px; color: var(--dn-color-white);
  font-weight: 600; text-decoration: none;
}
.dn-topbar__quote:hover { text-decoration: underline; text-underline-offset: 0.25em; text-decoration-color: var(--dn-color-mark); }
.dn-topbar__quote svg { width: 16px; height: 16px; margin-right: 8px; color: #4FD383; }

.dn-header {
  position: sticky; top: 0; z-index: 50;
  background: color-mix(in srgb, var(--dn-color-paper) 96%, transparent);
  border-bottom: var(--dn-line-thin) solid var(--dn-color-line);
  transition: box-shadow 0.3s var(--dn-ease-out);
}
.dn-header--scrolled { box-shadow: 0 10px 30px -22px rgba(30, 35, 40, 0.55); }
.dn-header__inner { display: flex; align-items: center; gap: 24px; min-height: 80px; }
.dn-logo { display: block; flex: none; }
.dn-logo img { width: 150px; height: auto; }
.dn-nav { margin-left: auto; }
.dn-nav__list { display: flex; align-items: center; gap: 2px; list-style: none; }
.dn-nav__item { position: relative; }
.dn-nav__link {
  display: inline-flex; align-items: center; gap: 6px;
  min-height: 48px; padding: 0 12px;
  font-weight: 540; font-size: 1rem; text-decoration: none;
  border: 0; background: none; cursor: pointer;
}
.dn-nav__link svg { width: 14px; height: 14px; transition: transform 0.2s; }
.dn-nav__link:hover, .dn-nav__link[aria-current="page"] {
  text-decoration: underline; text-decoration-thickness: 2px;
  text-underline-offset: 0.45em; text-decoration-color: var(--dn-color-mark);
}
.dn-nav__sub {
  position: absolute; top: 100%; left: 0; min-width: 220px;
  list-style: none; padding: 8px;
  background: var(--dn-color-paper);
  border: var(--dn-line-thin) solid var(--dn-color-ink);
  box-shadow: var(--dn-shadow);
  opacity: 0; visibility: hidden; transform: translateY(6px);
  transition: opacity 0.2s, transform 0.2s var(--dn-ease-out), visibility 0.2s;
}
.dn-nav__item:hover .dn-nav__sub,
.dn-nav__item:focus-within .dn-nav__sub,
.dn-nav__item--open .dn-nav__sub { opacity: 1; visibility: visible; transform: none; }
.dn-nav__sub a {
  display: block; padding: 10px 12px; text-decoration: none; font-size: 0.98rem;
}
.dn-nav__sub a:hover { background: var(--dn-color-tone-10); }
.dn-header__cta { flex: none; }
.dn-header .dn-header__cta { background: var(--dn-color-ink); color: var(--dn-color-white); }
.dn-header .dn-header__cta:hover { background: var(--dn-color-mark); color: var(--dn-color-ink); }
.dn-header .dn-header__cta svg { color: #4FD383; }
.dn-header .dn-header__cta:hover svg { color: var(--dn-color-ink); }
.dn-menu-toggle {
  display: none; margin-left: auto;
  width: 48px; height: 48px; align-items: center; justify-content: center;
  border: var(--dn-line-thin) solid var(--dn-color-ink); border-radius: var(--dn-radius);
  background: transparent; cursor: pointer;
}
.dn-menu-toggle svg { width: 24px; height: 24px; }

.dn-footer { background: var(--dn-color-ink); color: var(--dn-color-white); padding-top: clamp(56px, 7vw, 96px); }
.dn-footer a { text-decoration: none; }
.dn-footer a:hover { text-decoration: underline; text-underline-offset: 0.25em; }
.dn-footer__top {
  display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr);
  gap: clamp(32px, 5vw, 80px); padding-bottom: clamp(40px, 5vw, 64px);
}
.dn-footer__brand img { width: 170px; background: var(--dn-color-paper); padding: 10px 12px; }
.dn-footer__brand p { margin-top: 20px; color: var(--dn-color-ink-soft); max-width: 36ch; }
.dn-footer__nav { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.dn-footer__nav h2 { font-size: var(--dn-text-small); font-weight: 640; color: var(--dn-color-mark); margin-bottom: 12px; font-stretch: 104%; }
.dn-footer__nav ul { list-style: none; display: grid; gap: 8px; }
.dn-footer__nav a { color: var(--dn-color-ink-soft); }
.dn-footer__nav a:hover { color: var(--dn-color-white); }
.dn-footer__bottom {
  display: flex; flex-wrap: wrap; justify-content: space-between; gap: 12px;
  padding-block: 22px; border-top: var(--dn-line-thin) solid #3A4148;
  color: var(--dn-color-ink-soft); font-size: var(--dn-text-small);
}

/* 5. CAJETÍN (bloque de datos del plano) ---------------------------------- */
.dn-titleblock {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  border: var(--dn-line-bold) solid var(--dn-color-ink);
  background: var(--dn-color-paper);
  overflow: hidden; /* las líneas de la última fila y columna quedan bajo el marco */
}
.dn-titleblock__cell {
  padding: 12px 14px 13px;
  margin: 0 -1px -1px 0;
  border-right: var(--dn-line-thin) solid var(--dn-color-ink);
  border-bottom: var(--dn-line-thin) solid var(--dn-color-ink);
  min-width: 0;
}
.dn-titleblock__cell--wide { grid-column: 1 / -1; }
.dn-titleblock__value {
  display: block; margin-top: 4px;
  font-weight: 560; font-size: 1.0625rem; line-height: 1.35;
  font-variant-numeric: tabular-nums lining-nums;
  overflow-wrap: break-word;
}
.dn-titleblock__value--big { font-family: var(--dn-font-title); font-stretch: 110%; font-size: 1.6rem; font-weight: 660; letter-spacing: -0.01em; }
.dn-titleblock--dark { background: transparent; border-color: #5A636C; }
.dn-titleblock--dark .dn-titleblock__cell { border-color: #3F474F; }
.dn-titleblock--dark .dn-label { color: var(--dn-color-ink-soft); }

/* 6. HERO: HOJA DEL PLANO -------------------------------------------------- */
.dn-hero {
  position: relative;
  overflow: hidden;
  padding-block: clamp(20px, 2.2vw, 32px) 0;
  isolation: isolate;
}
.dn-contours {
  position: absolute; inset: 0; z-index: -1;
  width: 100%; height: 100%;
  color: var(--dn-color-contour);
  pointer-events: none;
}
.dn-contours svg { width: 100%; height: 100%; }
.dn-contours path { fill: none; stroke: currentColor; stroke-width: 1; vector-effect: non-scaling-stroke; opacity: 0.55; }
.dn-contours .dn-contours__index { stroke-width: 1.6; opacity: 0.8; }
.dn-contours .dn-contours__datum { stroke: var(--dn-color-mark); stroke-width: 2.25; opacity: 1; }
.dn-contours text { font-family: var(--dn-font-body); font-size: 12px; font-stretch: 88%; fill: var(--dn-color-ink-2); paint-order: stroke; stroke: var(--dn-color-paper); stroke-width: 5px; letter-spacing: 0.04em; }
.dn-contours .dn-contours__datum-label { fill: var(--dn-color-ink); font-weight: 640; font-size: 13px; }

.dn-sheet {
  position: relative;
  border: var(--dn-line-thin) solid var(--dn-color-ink);
  background: color-mix(in srgb, var(--dn-color-paper) 55%, transparent);
  padding: clamp(22px, 2.4vw, 34px);
}
/* Referencias de cuadrícula del marco de la lámina */
.dn-sheet__grid { position: absolute; display: grid; pointer-events: none; color: var(--dn-color-ink-2); font-size: 10px; font-stretch: 88%; line-height: 1; }
.dn-sheet__grid--x { top: 0; left: 0; right: 0; height: 12px; grid-auto-flow: column; grid-auto-columns: 1fr; border-bottom: 0.5px solid var(--dn-color-line); }
.dn-sheet__grid--y { top: 0; bottom: 0; left: 0; width: 12px; grid-auto-flow: row; grid-auto-rows: 1fr; border-right: 0.5px solid var(--dn-color-line); }
.dn-sheet__grid span { display: grid; place-items: center; }
.dn-sheet__grid--x span + span { border-left: 0.5px solid var(--dn-color-ink); }
.dn-sheet__grid--y span + span { border-top: 0.5px solid var(--dn-color-ink); }
.dn-sheet--page { padding: clamp(28px, 3vw, 40px) clamp(28px, 3vw, 44px); background: color-mix(in srgb, var(--dn-color-paper) 70%, transparent); }
.dn-sheet__ref {
  position: absolute; top: -1px; left: 0; right: 0;
  display: flex; justify-content: space-around;
  font-size: 11px; font-stretch: 88%; letter-spacing: 0.08em; color: var(--dn-color-ink-2);
  transform: translateY(-100%); padding-bottom: 4px;
  pointer-events: none;
}
.dn-sheet__corner { position: absolute; width: 14px; height: 14px; border-color: var(--dn-color-ink); border-style: solid; border-width: 0; }
.dn-sheet__corner--tl { top: 8px; left: 8px; border-top-width: 2px; border-left-width: 2px; }
.dn-sheet__corner--tr { top: 8px; right: 8px; border-top-width: 2px; border-right-width: 2px; }
.dn-sheet__corner--bl { bottom: 8px; left: 8px; border-bottom-width: 2px; border-left-width: 2px; }
.dn-sheet__corner--br { bottom: 8px; right: 8px; border-bottom-width: 2px; border-right-width: 2px; }

.dn-hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
  grid-template-areas: "detail copy" "detail tb";
  grid-template-rows: auto 1fr;
  column-gap: clamp(28px, 4vw, 64px);
  row-gap: 24px;
  align-items: start;
}
.dn-detail { grid-area: detail; }
.dn-hero__copy { grid-area: copy; }
.dn-hero__tb { grid-area: tb; }
.dn-hero__title,
.dn-hero__title .elementor-heading-title {
  font-family: var(--dn-font-title);
  font-size: clamp(2.5rem, 1.6rem + 2.9vw, 4.25rem);
  font-stretch: 114%;
  font-weight: 660;
  letter-spacing: -0.03em;
  line-height: 0.98;
  text-wrap: balance;
}
.dn-hero__copy { display: grid; gap: 20px; align-content: start; }
.dn-hero__lead { font-size: var(--dn-text-lead); line-height: 1.5; max-width: 40ch; }
.dn-hero__phone { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); }
.dn-hero__phone a { color: var(--dn-color-ink); font-weight: 620; }

/* Detalle con slider de fotos */
.dn-detail { position: relative; min-width: 0; }
.dn-detail__tag {
  display: inline-flex; align-items: center; gap: 10px;
  margin-bottom: 10px;
  font-size: var(--dn-text-small); font-weight: 600; font-stretch: 96%;
}
.dn-detail__bubble {
  display: inline-grid; place-items: center;
  width: 30px; height: 30px; border-radius: 50%;
  border: var(--dn-line-mid) solid var(--dn-color-ink);
  font-size: 13px; font-weight: 700;
}
.dn-dim {
  position: relative; height: 18px; margin-bottom: 8px;
  color: var(--dn-color-ink-2);
}
.dn-dim::before {
  content: ""; position: absolute; left: 0; right: 0; top: 50%;
  border-top: var(--dn-line-thin) solid currentColor;
}
.dn-dim::after {
  content: ""; position: absolute; left: 0; right: 0; top: 2px; bottom: 2px;
  border-left: var(--dn-line-thin) solid currentColor; border-right: var(--dn-line-thin) solid currentColor;
}
.dn-dim span {
  position: relative; z-index: 1; display: table; margin-inline: auto;
  padding-inline: 8px; background: var(--dn-color-paper);
  font-size: 12px; font-stretch: 88%; letter-spacing: 0.03em; line-height: 18px;
}
.dn-slider { position: relative; border: var(--dn-line-bold) solid var(--dn-color-ink); background: var(--dn-color-tone-30); }
.dn-slider__track { display: grid; }
.dn-slider__slide {
  grid-area: 1 / 1;
  opacity: 0; visibility: hidden; z-index: 0;
  /* la foto que sale se queda nítida debajo y desaparece recién al final */
  transition: opacity 0s linear 0.6s, visibility 0s linear 0.6s;
}
.dn-slider__slide--active {
  opacity: 1; visibility: visible; z-index: 1;
  /* la foto nueva aparece encima: nunca se mezclan dos fotos semitransparentes */
  transition: opacity 0.6s ease-out;
}
.dn-slider__slide img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; background: var(--dn-color-tone-30); }
.dn-slider__caption {
  display: flex; justify-content: space-between; gap: 12px; align-items: baseline;
  padding: 10px 14px;
  border-top: var(--dn-line-thin) solid var(--dn-color-ink);
  background: var(--dn-color-paper);
  font-size: var(--dn-text-small); line-height: 1.35;
}
.dn-slider__note { font-weight: 560; }
.dn-slider__ref { flex: none; font-size: 11px; letter-spacing: 0.05em; color: var(--dn-color-ink-2); text-transform: uppercase; font-stretch: 88%; }
.dn-slider__bar {
  display: flex; align-items: center; gap: 14px;
  padding: 10px 12px; border-top: var(--dn-line-bold) solid var(--dn-color-ink);
  background: var(--dn-color-paper);
}
.dn-slider__count { font-size: var(--dn-text-small); font-weight: 620; font-variant-numeric: tabular-nums; min-width: 4.5ch; }
.dn-slider__progress { flex: 1; display: flex; gap: 6px; }
.dn-slider__dot {
  position: relative; flex: 1; height: 28px; padding: 0; border: 0; background: none; cursor: pointer;
}
.dn-slider__dot::before {
  content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 3px; margin-top: -1.5px;
  background: var(--dn-color-tone-30);
}
.dn-slider__dot::after {
  content: ""; position: absolute; left: 0; right: 0; top: 50%; height: 3px; margin-top: -1.5px;
  background: var(--dn-color-ink); transform-origin: left; transform: scaleX(0);
}
.dn-slider__dot--done::after { transform: scaleX(1); }
.dn-slider__dot--active::after { animation: dn-fill var(--dn-slide-ms, 6000ms) linear forwards; }
.dn-slider--paused .dn-slider__dot--active::after { animation-play-state: paused; }
@keyframes dn-fill { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.dn-icon-btn {
  display: inline-grid; place-items: center; width: 44px; height: 44px; flex: none;
  border: var(--dn-line-thin) solid var(--dn-color-ink); border-radius: var(--dn-radius);
  background: var(--dn-color-paper); cursor: pointer;
}
.dn-icon-btn:hover { background: var(--dn-color-ink); color: var(--dn-color-paper); }
.dn-icon-btn svg { width: 18px; height: 18px; }

/* Franja de flota al pie del hero */
.dn-credits {
  margin-top: clamp(16px, 1.6vw, 24px);
  border-top: var(--dn-line-bold) solid var(--dn-color-ink);
  background: var(--dn-color-paper);
}
.dn-credits__inner { display: flex; align-items: stretch; }
.dn-credits__label {
  display: flex; align-items: center; padding: 16px 20px 16px 0;
  font-weight: 640; font-stretch: 104%; white-space: nowrap;
}
.dn-credits__list { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); flex: 1; list-style: none; }
.dn-credits__list li { border-left: var(--dn-line-thin) solid var(--dn-color-line); min-width: 0; }
.dn-credits__list a {
  display: grid; gap: 2px; height: 100%; padding: 14px 18px; text-decoration: none;
  transition: background-color 0.2s;
}
.dn-credits__list a:hover { background: var(--dn-color-tone-10); }
.dn-credits__name { font-weight: 560; line-height: 1.3; }
.dn-credits__price { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); font-variant-numeric: tabular-nums; white-space: nowrap; }

/* 6b. HERO LIMPIO DEL INICIO (foto a todo el ancho, solo lo esencial) ---- */
.dn-hero {
  display: flex; flex-direction: column; justify-content: flex-end;
  min-height: clamp(560px, calc(100vh - 124px), 780px);
  padding: 0;
  background: var(--dn-color-ink);
  color: var(--dn-color-white);
}
.dn-hero .dn-slider__track { position: absolute; inset: 0; z-index: -2; display: block; }
.dn-hero .dn-slider__slide { position: absolute; inset: 0; }
.dn-hero .dn-slider__slide img { width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; }
.dn-hero__shade { display: none; } /* sin capa de color: la foto se ve tal cual */
.dn-hero__inner { display: grid; gap: 22px; justify-items: stretch; padding-block: clamp(72px, 9vw, 128px) clamp(56px, 7vw, 104px); padding-left: max(var(--dn-gutter), 76px); }
.dn-hero .dn-hero__title,
.dn-hero .dn-hero__title .elementor-heading-title { color: var(--dn-color-white); font-size: clamp(2.4rem, 1.5rem + 3vw, 4.5rem); max-width: 20ch; }
/* Textos que cambian con cada foto (apilados en la misma celda) */
.dn-hero__texts { display: grid; }
.dn-slider__text {
  grid-area: 1 / 1; align-self: end; display: grid; gap: 22px;
  visibility: hidden; /* cambia de golpe, sin animación */
}
.dn-slider__text--active { visibility: visible; }
.dn-hero .dn-hero__lead { color: var(--dn-color-white); max-width: 46ch; }
/* Legibilidad sin oscurecer la foto: sombra solo en las letras */
.dn-hero .dn-hero__title, .dn-hero .dn-hero__title .elementor-heading-title { text-shadow: 0 1px 2px rgba(10, 12, 14, 0.9), 0 3px 10px rgba(10, 12, 14, 0.75), 0 8px 40px rgba(10, 12, 14, 0.7); }
.dn-hero .dn-hero__lead { font-weight: 500; text-shadow: 0 1px 2px rgba(10, 12, 14, 0.95), 0 2px 8px rgba(10, 12, 14, 0.85), 0 4px 24px rgba(10, 12, 14, 0.7); }
.dn-hero__arrow svg { filter: drop-shadow(0 1px 2px rgba(10, 12, 14, 0.95)) drop-shadow(0 2px 10px rgba(10, 12, 14, 0.8)); }
.dn-hero .dn-btn--on-dark { background: rgba(18, 21, 25, 0.62); text-shadow: none; }
.dn-hero .dn-btn--on-dark:hover { background: var(--dn-color-white); }
.dn-hero__facts { font-size: var(--dn-text-small); color: #D3D9DE; max-width: 76ch; }
.dn-hero__facts strong { color: var(--dn-color-white); font-weight: 640; }
.dn-hero__facts span { color: #6E7881; margin-inline: 12px; }
.dn-hero__ref { position: absolute; left: 88px; bottom: 16px; font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase; font-stretch: 88%; color: #C5CCD2; }
/* Flechas laterales del slider, como en la web de referencia */
.dn-hero__arrow {
  position: absolute; top: 50%; z-index: 2;
  display: grid; place-items: center; width: 56px; height: 72px; margin-top: -36px;
  padding: 0; border: 0; background: transparent; color: var(--dn-color-white);
  cursor: pointer; opacity: 0.8; transition: opacity 0.2s, transform 0.25s var(--dn-ease-out);
}
.dn-hero__arrow svg { width: 34px; height: 34px; stroke-width: 1.4; }
.dn-hero__arrow:hover { opacity: 1; }
.dn-hero__arrow--prev { left: 8px; }
.dn-hero__arrow--next { right: 8px; }
.dn-hero__arrow--prev:hover { transform: translateX(-3px); }
.dn-hero__arrow--next:hover { transform: translateX(3px); }
.dn-hero__arrow:focus-visible { outline-offset: -4px; }

/* Hero corto de páginas internas */
.dn-pagehero { position: relative; overflow: hidden; isolation: isolate; padding-block: clamp(20px, 2.2vw, 32px) clamp(16px, 1.8vw, 24px); }
/* Menos aire entre el hero interno y el primer bloque de contenido */
.dn-pagehero + .dn-section { padding-top: clamp(36px, 3.6vw, 56px); }
.dn-pagehero .dn-contours path { opacity: 0.4; }
.dn-crumbs { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; font-size: var(--dn-text-small); color: var(--dn-color-ink-2); margin-bottom: 18px; }
.dn-crumbs li + li::before { content: "/"; margin-right: 8px; color: var(--dn-color-line); }
.dn-crumbs a { text-decoration: none; }
.dn-crumbs a:hover { text-decoration: underline; }
.dn-pagehero__title,
.dn-pagehero__title .elementor-heading-title {
  font-family: var(--dn-font-title); font-size: clamp(2.25rem, 1.5rem + 2.8vw, 4.25rem);
  font-stretch: 114%; font-weight: 660; letter-spacing: -0.028em; line-height: 1;
  text-wrap: balance; max-width: 18ch;
}
.dn-pagehero__lead { margin-top: 18px; font-size: var(--dn-text-lead); max-width: 52ch; color: var(--dn-color-ink-2); }

/* 7. SOBRE NOSOTROS --------------------------------------------------------- */
.dn-about { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 88px); align-items: center; }
.dn-figure { position: relative; }
.dn-figure img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-figure figcaption { display: flex; gap: 10px; align-items: center; margin-top: 10px; font-size: var(--dn-text-small); color: var(--dn-color-ink-2); }
.dn-figure__note { margin-left: auto; font-size: 12px; letter-spacing: 0.05em; text-transform: uppercase; font-stretch: 88%; }
.dn-about__copy { display: grid; gap: 24px; }
/* Sobre nosotros corto (inicio): foto vertical y texto centrado */
.dn-about--short { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.dn-about__media img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-about__short { display: grid; justify-items: center; gap: 24px; text-align: center; max-width: 620px; margin-inline: auto; }
.dn-about__short .dn-lead { max-width: 44ch; color: var(--dn-color-ink-2); }
.dn-about__rule { width: 100%; border: 0; border-top: var(--dn-line-bold) solid var(--dn-color-ink); margin: 4px 0; }
.dn-about__photo { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border: var(--dn-line-bold) solid var(--dn-color-ink); }

/* 8. SERVICIOS --------------------------------------------------------------- */
.dn-services { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); border: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-service { padding: clamp(24px, 3vw, 40px); display: grid; gap: 14px; align-content: start; }
.dn-service--feature { grid-row: span 2; border-right: var(--dn-line-thin) solid var(--dn-color-ink); padding: 0; }
.dn-service--feature .dn-refimg { border-bottom: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-service--feature img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; border-bottom: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-service--feature .dn-service__body { padding: clamp(24px, 3vw, 40px); display: grid; gap: 14px; }
.dn-service + .dn-service:not(.dn-service--feature) { border-top: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-service--feature + .dn-service { border-top: 0; }
.dn-service__list { list-style: none; display: grid; gap: 6px; margin-top: 4px; }
.dn-service__list li { display: flex; gap: 10px; align-items: baseline; }
.dn-service__list li::before { content: ""; flex: none; width: 10px; height: 2px; background: var(--dn-color-ink); transform: translateY(-4px); }

/* Servicios resumidos del inicio: tarjetas con foto */
.dn-svc { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 1.4vw, 20px); }
.dn-svc__card { position: relative; display: block; height: 100%; overflow: hidden; border: var(--dn-line-bold) solid var(--dn-color-ink); color: var(--dn-color-white); text-decoration: none; background: var(--dn-color-ink); }
.dn-svc__card img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; transition: transform 0.7s var(--dn-ease-out); }
.dn-svc__card:hover img { transform: scale(1.04); }
.dn-svc__body {
  position: absolute; left: 0; right: 0; bottom: 0; display: grid; gap: 8px;
  padding: 64px 24px 24px;
  background: linear-gradient(to top, rgba(18, 21, 25, 0.92) 0%, rgba(18, 21, 25, 0.75) 55%, rgba(18, 21, 25, 0) 100%);
}
.dn-svc__title { font-family: var(--dn-font-title); font-size: clamp(1.6rem, 1.3rem + 1vw, 2.25rem); font-stretch: 110%; font-weight: 660; letter-spacing: -0.015em; line-height: 1.05; }
.dn-svc__text { color: #E3E7EA; max-width: 32ch; }
.dn-svc__more { display: inline-flex; align-items: center; gap: 8px; margin-top: 6px; font-weight: 620; text-decoration: underline; text-decoration-color: var(--dn-color-mark); text-underline-offset: 0.28em; text-decoration-thickness: 1.5px; }
.dn-svc__more svg { width: 18px; height: 18px; transition: transform 0.25s var(--dn-ease-out); }
.dn-svc__card:hover .dn-svc__more svg { transform: translateX(3px); }

/* 9. FLOTA: FICHAS CON MARCADO DE WOOCOMMERCE ------------------------------ */
.dn-fleet__row {
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(260px, 1fr);
  list-style: none; overflow-x: auto; scroll-snap-type: x mandatory;
  border: var(--dn-line-bold) solid var(--dn-color-ink);
  background: var(--dn-color-paper);
  scrollbar-width: thin;
}
.dn-fleet__row--grid { background: transparent; grid-auto-flow: row; grid-template-columns: repeat(3, minmax(0, 1fr)); overflow: visible; border-width: var(--dn-line-bold) 0 0 var(--dn-line-bold); }
.dn-fleet__row--grid .dn-plate { border-right: var(--dn-line-bold) solid var(--dn-color-ink); border-bottom: var(--dn-line-bold) solid var(--dn-color-ink); border-left: 0; }
.dn-fleet__row--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.dn-plate {
  position: relative; display: flex; flex-direction: column;
  scroll-snap-align: start;
  border-left: var(--dn-line-thin) solid var(--dn-color-ink);
  background: var(--dn-color-paper);
}
.dn-fleet__row .dn-plate:first-child { border-left: 0; }
.dn-plate__media { position: relative; display: block; overflow: hidden; border-bottom: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-plate__media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform 0.7s var(--dn-ease-out); }
.dn-plate:hover .dn-plate__media img { transform: scale(1.035); }
.dn-plate__ref {
  position: absolute; left: 10px; top: 10px;
  padding: 3px 8px; background: var(--dn-color-paper); border: var(--dn-line-thin) solid var(--dn-color-ink);
  font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; font-stretch: 88%;
}
.dn-plate__body { display: flex; flex-direction: column; gap: 14px; padding: 18px 18px 20px; flex: 1; }
.dn-plate__buy { margin-top: auto; padding-top: 4px; }
.dn-plate .dn-specs div { display: grid; gap: 1px; justify-content: stretch; }
.dn-plate .dn-specs dt { font-size: var(--dn-text-label); letter-spacing: 0.04em; text-transform: uppercase; font-stretch: 90%; }
.dn-plate .dn-specs dd { text-align: left; font-size: 1rem; }
.dn-plate .woocommerce-loop-product__title,
.dn-plate__title {
  font-family: var(--dn-font-title); font-size: 1.375rem; font-stretch: 106%;
  font-weight: 640; letter-spacing: -0.012em; line-height: 1.15;
}
.dn-plate__title a { text-decoration: none; }
.dn-plate__title a:hover { text-decoration: underline; text-decoration-color: var(--dn-color-mark); text-underline-offset: 0.2em; }
.dn-plate__cat { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); margin-top: -8px; }
.dn-specs { display: grid; border-top: var(--dn-line-thin) solid var(--dn-color-line); }
.dn-specs div { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); font-size: var(--dn-text-small); }
.dn-specs dt { color: var(--dn-color-ink-2); }
.dn-specs dd { text-align: right; font-weight: 560; font-variant-numeric: tabular-nums lining-nums; }
.dn-plate .price,
.dn-price { display: block; font-variant-numeric: tabular-nums lining-nums; }
.dn-price__amount { font-family: var(--dn-font-title); font-size: 1.75rem; font-stretch: 108%; font-weight: 680; letter-spacing: -0.015em; }
.dn-price__unit { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); }
.dn-plate__mode { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); }
.dn-plate__actions { display: grid; grid-template-columns: 1fr auto; gap: 8px; padding: 0 18px 18px; }
.dn-plate .button { min-height: 48px; font-size: 1rem; padding: 0 14px; }
.dn-plate__more {
  display: inline-grid; place-items: center; min-height: 48px; padding: 0 14px;
  border: var(--dn-line-thin) solid var(--dn-color-ink); border-radius: var(--dn-radius); text-decoration: none; font-weight: 600;
}
.dn-plate__more:hover { background: var(--dn-color-ink); color: var(--dn-color-paper); }
/* Cota que se extiende al pasar el ratón: el gesto del plotter */
.dn-plate__dim {
  position: absolute; left: 18px; right: 18px; top: calc(100% - 8px); height: 9px; pointer-events: none;
  border-left: var(--dn-line-thin) solid var(--dn-color-ink); border-right: var(--dn-line-thin) solid var(--dn-color-ink);
  opacity: 0; transition: opacity 0.2s;
}
.dn-plate__dim::before {
  content: ""; position: absolute; left: 0; right: 0; top: 4px; border-top: var(--dn-line-thin) solid var(--dn-color-ink);
  transform: scaleX(0); transition: transform 0.6s var(--dn-ease-out);
}
.dn-plate:hover .dn-plate__dim { opacity: 1; }
.dn-plate:hover .dn-plate__dim::before { transform: scaleX(1); }
.dn-fleet__swipe { display: none; }
.dn-fleet__hint { margin-top: 16px; font-size: var(--dn-text-small); color: var(--dn-color-ink-2); }

/* Filtros del catálogo */
.dn-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }
.dn-filter {
  min-height: 44px; padding: 0 16px; border: var(--dn-line-thin) solid var(--dn-color-ink);
  border-radius: var(--dn-radius); background: var(--dn-color-paper); cursor: pointer; font-weight: 560;
}
.dn-filter[aria-pressed="true"] { background: var(--dn-color-ink); color: var(--dn-color-paper); }
.dn-filter:hover { background: var(--dn-color-tone-10); }
.dn-filter[aria-pressed="true"]:hover { background: var(--dn-color-ink); }
.dn-plate--hidden { display: none; }

/* 10. TABLA DE TARIFAS -------------------------------------------------------- */
.dn-rates { width: 100%; border-collapse: collapse; border: var(--dn-line-bold) solid var(--dn-color-ink); background: var(--dn-color-paper); font-variant-numeric: tabular-nums lining-nums; }
.dn-rates caption { text-align: left; }
.dn-rates th, .dn-rates td { padding: 16px 18px; text-align: left; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); vertical-align: top; }
.dn-rates thead th { border-bottom: var(--dn-line-bold) solid var(--dn-color-ink); font-size: var(--dn-text-label); font-stretch: 88%; letter-spacing: 0.06em; text-transform: uppercase; color: var(--dn-color-ink-2); font-weight: 600; }
.dn-rates tbody th { font-weight: 600; }
.dn-rates small { display: block; font-weight: 400; color: var(--dn-color-ink-2); font-size: var(--dn-text-small); }
.dn-rates .dn-rates__price { text-align: right; white-space: nowrap; font-weight: 680; font-size: 1.25rem; font-stretch: 106%; }
.dn-rates th.dn-rates__price, .dn-rates thead .dn-rates__price { font-size: var(--dn-text-label); font-weight: 600; }
.dn-rates tbody tr:hover { background: var(--dn-color-tone-10); }
.dn-rates__note { margin-top: 16px; font-size: var(--dn-text-small); color: var(--dn-color-ink-2); max-width: 80ch; }

/* 11. GARANTÍA (fondo grafito) ------------------------------------------------ */
.dn-guarantee { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: var(--dn-line-thin) solid #4A525A; }
.dn-guarantee__item { padding: 28px 28px 8px 0; display: grid; gap: 12px; align-content: start; }
.dn-guarantee__item + .dn-guarantee__item { padding-left: 28px; border-left: var(--dn-line-thin) solid #4A525A; }
.dn-guarantee__item p { color: var(--dn-color-ink-soft); max-width: 40ch; }

/* 12. CLIENTES Y CERTIFICACIÓN ------------------------------------------------ */
.dn-clients { list-style: none; border-top: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-clients li {
  display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 3fr) minmax(0, 3fr);
  gap: 16px; align-items: baseline; padding: 22px 0; border-bottom: var(--dn-line-thin) solid var(--dn-color-line);
}
.dn-clients__name { font-family: var(--dn-font-title); font-size: var(--dn-text-h3); font-stretch: 110%; font-weight: 620; letter-spacing: -0.015em; line-height: 1.1; }
.dn-clients__meta { color: var(--dn-color-ink-2); }
.dn-clients__after { display: flex; flex-wrap: wrap; gap: 16px 32px; align-items: center; justify-content: space-between; margin-top: 28px; }

.dn-cert { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(32px, 5vw, 80px); align-items: center; }
.dn-cert__copy { display: grid; gap: 20px; }
.dn-profile { color: var(--dn-color-ink); }
.dn-profile svg { width: 100%; height: auto; overflow: visible; }
.dn-profile .dn-profile__ground { fill: var(--dn-color-tone-10); stroke: var(--dn-color-ink); stroke-width: 2; vector-effect: non-scaling-stroke; }
.dn-profile .dn-profile__hatch { stroke: var(--dn-color-tone-30); stroke-width: 1; }
.dn-profile .dn-profile__datum { stroke: var(--dn-color-mark); stroke-width: 4; stroke-dasharray: 14 8; }
.dn-profile .dn-profile__grid { stroke: var(--dn-color-line); stroke-width: 1; }
.dn-profile text { font-family: var(--dn-font-body); font-size: 13px; fill: var(--dn-color-ink-2); font-stretch: 88%; }
.dn-profile .dn-profile__datum-label { fill: var(--dn-color-ink); font-weight: 680; font-size: 15px; }

/* Cobertura: mapa del sur del Perú en estilo de plano */
.dn-cov { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(32px, 5vw, 80px); align-items: center; }
.dn-cov__copy { display: grid; gap: 24px; align-content: start; }
.dn-map { border: var(--dn-line-bold) solid var(--dn-color-ink); background: var(--dn-color-paper); padding: clamp(8px, 1.2vw, 16px); }
.dn-map svg { width: 100%; height: auto; overflow: visible; }
.dn-map .dn-map__grid { stroke: var(--dn-color-tone-30); stroke-width: 1; }
.dn-map .dn-map__deg { font-family: var(--dn-font-body); font-size: 11px; font-stretch: 88%; fill: var(--dn-color-ink-2); }
.dn-map .dn-map__sea { font-family: var(--dn-font-body); font-size: 15px; font-style: italic; letter-spacing: 0.06em; fill: var(--dn-color-contour); }
.dn-map .dn-map__band { fill: none; stroke: var(--dn-color-contour); stroke-width: 1; stroke-dasharray: 3 5; opacity: 0.8; }
.dn-map .dn-map__km { font-family: var(--dn-font-body); font-size: 11px; font-stretch: 88%; fill: var(--dn-color-contour); }
.dn-map .dn-map__route { fill: none; stroke: var(--dn-color-ink-2); stroke-width: 1.5; }
.dn-map .dn-map__node { fill: var(--dn-color-paper); stroke: var(--dn-color-ink); stroke-width: 2.5; }
.dn-map .dn-map__hq { fill: var(--dn-color-mark); stroke: var(--dn-color-ink); stroke-width: 2.5; }
.dn-map .dn-map__ring { fill: none; stroke: var(--dn-color-ink); stroke-width: 1; }
.dn-map .dn-map__name { font-family: var(--dn-font-body); font-size: 17px; font-weight: 650; fill: var(--dn-color-ink); paint-order: stroke; stroke: var(--dn-color-paper); stroke-width: 5px; }
.dn-map .dn-map__city { font-family: var(--dn-font-body); font-size: 13px; fill: var(--dn-color-ink-2); paint-order: stroke; stroke: var(--dn-color-paper); stroke-width: 5px; }
.dn-map .dn-map__north path { fill: var(--dn-color-ink); }
.dn-map .dn-map__north text, .dn-map .dn-map__scale text { font-family: var(--dn-font-body); font-size: 12px; font-weight: 600; fill: var(--dn-color-ink); }
.dn-map .dn-map__scale path { stroke: var(--dn-color-ink); stroke-width: 1.5; fill: none; }
.dn-depts { list-style: none; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 28px; border-top: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-depts li { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; padding: 11px 0; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }
.dn-depts__name { font-weight: 600; }
.dn-depts__cap { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); text-align: right; }
.dn-depts__hq .dn-depts__cap, .dn-depts__badge { padding: 1px 8px; background: var(--dn-color-mark); color: var(--dn-color-ink); font-size: 12px; font-weight: 640; letter-spacing: 0.04em; text-transform: uppercase; font-stretch: 90%; }
.dn-cov--page { align-items: start; }
.dn-covtable { width: 100%; border-collapse: collapse; border: var(--dn-line-bold) solid var(--dn-color-ink); background: var(--dn-color-paper); }
.dn-covtable th, .dn-covtable td { padding: 12px 16px; text-align: left; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }
.dn-covtable thead th { border-bottom: var(--dn-line-bold) solid var(--dn-color-ink); font-size: var(--dn-text-label); letter-spacing: 0.06em; text-transform: uppercase; font-stretch: 88%; color: var(--dn-color-ink-2); font-weight: 600; }
.dn-covtable tbody th { font-weight: 620; }

/* 13. CASOS, TESTIMONIOS, GALERÍA, FAQ --------------------------------------- */
.dn-cases { list-style: none; display: grid; gap: 0; border-top: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-case { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 6fr) minmax(0, 3fr); gap: clamp(20px, 3vw, 48px); padding: 28px 0; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); align-items: center; }
.dn-case img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-case__body { display: grid; gap: 10px; }
.dn-case__meta { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); }
.dn-case__fact { font-variant-numeric: tabular-nums; }
.dn-case__fact strong { display: block; font-family: var(--dn-font-title); font-size: 1.6rem; font-stretch: 108%; font-weight: 660; }
.dn-case__fact span { color: var(--dn-color-ink-2); font-size: var(--dn-text-small); }

.dn-quotes { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 4vw, 64px); }
.dn-quote { display: grid; gap: 16px; align-content: start; }
.dn-quote blockquote p { font-size: var(--dn-text-lead); line-height: 1.5; }
.dn-quote--feature blockquote p { font-family: var(--dn-font-title); font-size: clamp(1.5rem, 1.15rem + 1.2vw, 2.25rem); font-stretch: 104%; font-weight: 520; line-height: 1.3; letter-spacing: -0.012em; }
.dn-quote--feature { padding-top: 24px; border-top: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-quote figcaption { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); }
.dn-quote figcaption strong { display: block; color: var(--dn-color-ink); font-size: 1rem; }
.dn-quotes__side { display: grid; gap: 28px; align-content: start; }
.dn-quotes__side .dn-quote { padding-top: 24px; border-top: var(--dn-line-thin) solid var(--dn-color-ink); }

.dn-gallery { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); grid-auto-rows: clamp(120px, 14vw, 210px); gap: 12px; list-style: none; }
.dn-gallery li { position: relative; }
.dn-gallery li:nth-child(1) { grid-column: span 7; grid-row: span 2; }
.dn-gallery li:nth-child(2) { grid-column: span 5; grid-row: span 1; }
.dn-gallery li:nth-child(3) { grid-column: span 3; grid-row: span 1; }
.dn-gallery li:nth-child(4) { grid-column: span 2; grid-row: span 1; }
.dn-gallery li:nth-child(n+5) { grid-column: span 4; grid-row: span 2; }
.dn-gallery a { position: relative; display: block; height: 100%; overflow: hidden; border: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-gallery img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.7s var(--dn-ease-out); }
.dn-gallery a:hover img { transform: scale(1.03); }
.dn-gallery--page { grid-auto-rows: clamp(160px, 18vw, 280px); }
.dn-gallery--page li:nth-child(n) { grid-column: span 6; grid-row: span 2; }
.dn-gallery--page li:nth-child(3n+1) { grid-column: span 7; }
.dn-gallery--page li:nth-child(3n+2) { grid-column: span 5; }
.dn-gallery--page li:nth-child(3n) { grid-column: span 12; }

.dn-faq { border-top: var(--dn-line-bold) solid var(--dn-color-ink); max-width: 900px; }
.dn-faq details { border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }
.dn-faq summary {
  display: flex; justify-content: space-between; align-items: center; gap: 20px;
  padding: 22px 0; cursor: pointer; list-style: none;
  font-weight: 600; font-size: 1.1875rem; line-height: 1.35;
}
.dn-faq summary::-webkit-details-marker { display: none; }
.dn-faq summary svg { width: 22px; height: 22px; flex: none; transition: transform 0.3s var(--dn-ease-out); }
.dn-faq details[open] summary svg { transform: rotate(45deg); }
.dn-faq summary:hover { text-decoration: underline; text-decoration-color: var(--dn-color-mark); text-underline-offset: 0.25em; text-decoration-thickness: 2px; }
.dn-faq__answer { padding: 0 0 24px; max-width: 70ch; color: var(--dn-color-ink-2); }
.dn-faq__answer strong { color: var(--dn-color-ink); }

/* 14. CONTACTO Y FORMULARIO --------------------------------------------------- */
.dn-contact { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(32px, 5vw, 88px); align-items: start; }
.dn-contact__data { display: grid; gap: 24px; }
.dn-form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 20px; border: var(--dn-line-bold) solid var(--dn-color-ink); padding: clamp(20px, 3vw, 36px); background: var(--dn-color-paper); }
.dn-form__field { display: grid; gap: 8px; align-content: start; }
.dn-form__field--wide { grid-column: 1 / -1; }
.dn-form label { font-weight: 560; font-size: 1rem; }
.dn-form__req { color: var(--dn-color-rev); }
.dn-form input, .dn-form select, .dn-form textarea {
  width: 100%; min-height: 52px; padding: 12px 14px;
  border: var(--dn-line-thin) solid var(--dn-color-ink-2); border-radius: var(--dn-radius);
  background: var(--dn-color-white); font-size: 1rem;
}
.dn-form textarea { min-height: 140px; resize: vertical; }
.dn-form input:hover, .dn-form select:hover, .dn-form textarea:hover { border-color: var(--dn-color-ink); }
.dn-form input:focus-visible, .dn-form select:focus-visible, .dn-form textarea:focus-visible { outline: 3px solid var(--dn-color-mark); outline-offset: 0; border-color: var(--dn-color-ink); }
.dn-form ::placeholder { color: #6B747D; }
.dn-form [aria-invalid="true"] { border-color: var(--dn-color-rev); }
.dn-form__error { font-size: var(--dn-text-small); color: var(--dn-color-rev); min-height: 0; }
.dn-form__consent { grid-column: 1 / -1; display: flex; gap: 12px; align-items: flex-start; font-size: var(--dn-text-small); color: var(--dn-color-ink-2); }
.dn-form__consent input { width: 22px; height: 22px; min-height: 0; flex: none; margin-top: 1px; }
.dn-form__status { grid-column: 1 / -1; font-size: var(--dn-text-small); }
.dn-form__status--ok { color: var(--dn-color-whatsapp); font-weight: 600; }
.dn-form__status--error { color: var(--dn-color-rev); font-weight: 600; }
.dn-form .dn-btn { grid-column: 1 / -1; }

.dn-contact-list { list-style: none; display: grid; border-top: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-contact-list li { display: grid; gap: 2px; padding: 14px 0; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }
.dn-contact-list a { font-weight: 600; font-size: 1.125rem; text-decoration: none; }
.dn-contact-list a:hover { text-decoration: underline; text-decoration-color: var(--dn-color-mark); text-underline-offset: 0.25em; }

/* 15. PÁGINAS INTERNAS ----------------------------------------------------------- */
.dn-two { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 88px); align-items: start; }
.dn-mv { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; border: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-mv__item { padding: clamp(24px, 3vw, 40px); display: grid; gap: 16px; align-content: start; }
.dn-mv__item + .dn-mv__item { border-left: var(--dn-line-thin) solid var(--dn-color-ink); }

.dn-revtable { width: 100%; border-collapse: collapse; border: var(--dn-line-bold) solid var(--dn-color-ink); font-variant-numeric: tabular-nums; background: var(--dn-color-paper); }
.dn-revtable th, .dn-revtable td { padding: 16px 18px; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); text-align: left; vertical-align: top; }
.dn-revtable thead th { border-bottom: var(--dn-line-bold) solid var(--dn-color-ink); font-size: var(--dn-text-label); letter-spacing: 0.06em; text-transform: uppercase; font-stretch: 88%; color: var(--dn-color-ink-2); font-weight: 600; }
.dn-revtable__rev { display: inline-grid; place-items: center; width: 30px; height: 30px; border: var(--dn-line-mid) solid var(--dn-color-ink); clip-path: polygon(50% 0, 100% 100%, 0 100%); padding-top: 9px; font-size: 11px; font-weight: 700; }
.dn-revtable td a { font-weight: 600; }

.dn-cats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: var(--dn-line-bold) solid var(--dn-color-ink); list-style: none; }
.dn-cats li + li { border-left: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-cats a { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; text-decoration: none; height: 100%; }
.dn-cats img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.dn-cats .dn-refimg { border-bottom: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-cats__body { padding: 18px 20px 22px; display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.dn-cats__name { font-family: var(--dn-font-title); font-size: 1.5rem; font-stretch: 108%; font-weight: 640; }
.dn-cats__count { color: var(--dn-color-ink-2); font-size: var(--dn-text-small); white-space: nowrap; }
.dn-cats a:hover .dn-cats__name { text-decoration: underline; text-decoration-color: var(--dn-color-mark); text-underline-offset: 0.2em; text-decoration-thickness: 2px; }

.dn-product { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 4vw, 64px); align-items: start; }
.dn-product__aside { display: grid; gap: 20px; position: sticky; top: 104px; }
.dn-product__specs { margin-top: 32px; }
.dn-product__specs .dn-specs div { font-size: 1rem; padding: 12px 0; }
.dn-note { display: flex; gap: 12px; padding: 16px; border: var(--dn-line-thin) solid var(--dn-color-ink); background: var(--dn-color-tone-10); font-size: var(--dn-text-small); line-height: 1.5; }
.dn-note svg { width: 22px; height: 22px; flex: none; }

.dn-case-figs { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-case-figs div { padding: 20px; display: grid; gap: 4px; }
.dn-case-figs div + div { border-left: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-case-figs strong { font-family: var(--dn-font-title); font-size: clamp(1.6rem, 1.3rem + 1vw, 2.4rem); font-stretch: 108%; font-weight: 680; font-variant-numeric: tabular-nums; }
.dn-case-figs span { color: var(--dn-color-ink-2); font-size: var(--dn-text-small); }
.dn-case-story { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(24px, 3vw, 48px); }
.dn-case-story section { display: grid; gap: 12px; align-content: start; padding-top: 18px; border-top: var(--dn-line-bold) solid var(--dn-color-ink); }

.dn-legal { max-width: 74ch; }
.dn-legal h2 { font-family: var(--dn-font-title); font-size: 1.5rem; font-stretch: 106%; font-weight: 640; margin: 40px 0 12px; letter-spacing: -0.01em; }
.dn-legal p, .dn-legal li { color: var(--dn-color-ink-2); }
.dn-legal ol { padding-left: 1.4em; display: grid; gap: 6px; }
.dn-legal strong { color: var(--dn-color-ink); }
.dn-legal__meta { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); padding-bottom: 20px; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }

/* 16. WHATSAPP FLOTANTE Y BARRA MÓVIL ----------------------------------------- */
.dn-wa { position: fixed; right: 24px; bottom: 24px; z-index: 60; display: grid; justify-items: end; gap: 10px; }
.dn-wa__toggle {
  display: grid; place-items: center; width: 60px; height: 60px; padding: 0;
  border: 0; border-radius: 50%;
  background: #25D366; color: var(--dn-color-white); cursor: pointer;
  box-shadow: 0 10px 24px -8px rgba(18, 21, 25, 0.45);
  transition: transform 0.25s var(--dn-ease-out), background-color 0.2s;
}
.dn-wa__toggle svg { width: 32px; height: 32px; color: var(--dn-color-white); }
.dn-wa__toggle:hover { background: #1EBE5A; transform: scale(1.06); }
.dn-wa__toggle:focus-visible { outline-color: var(--dn-color-ink); }
.dn-wa__panel {
  width: min(340px, calc(100vw - 48px));
  border: var(--dn-line-bold) solid var(--dn-color-ink); background: var(--dn-color-paper);
  box-shadow: var(--dn-shadow);
}
.dn-wa__panel[hidden] { display: none; }
.dn-wa__head { padding: 16px 18px; border-bottom: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-wa__head strong { display: block; font-size: 1.0625rem; }
.dn-wa__head span { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); }
.dn-wa__options { list-style: none; }
.dn-wa__options a { display: flex; align-items: center; gap: 14px; padding: 14px 18px; text-decoration: none; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }
.dn-wa__options li:last-child a { border-bottom: 0; }
.dn-wa__options a:hover { background: var(--dn-color-tone-10); }
.dn-wa__options svg { width: 22px; height: 22px; flex: none; }
.dn-wa__options strong { display: block; }
.dn-wa__options span { font-size: var(--dn-text-small); color: var(--dn-color-ink-2); font-variant-numeric: tabular-nums; }

.dn-mobilebar { display: none; }

/* 17. LIGHTBOX ---------------------------------------------------------------- */
.dn-lightbox {
  width: min(1100px, calc(100vw - 32px)); max-height: calc(100vh - 32px);
  padding: 0; border: var(--dn-line-bold) solid var(--dn-color-ink); background: var(--dn-color-paper);
}
.dn-lightbox::backdrop { background: rgba(20, 23, 27, 0.82); }
.dn-lightbox__img { width: 100%; max-height: calc(100vh - 140px); object-fit: contain; background: var(--dn-color-tone-30); }
.dn-lightbox__bar { display: flex; align-items: center; gap: 12px; padding: 12px; border-top: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-lightbox__caption { flex: 1; font-size: var(--dn-text-small); }

/* 18. MOVIMIENTO -------------------------------------------------------------
   Solo oculta contenido si hay JS y no estamos dentro del editor de Elementor. */
@media (prefers-reduced-motion: reduce) {
  .dn-slider__slide { transition: none; }
  .dn-slider__dot--active::after { animation: none; transform: scaleX(1); }
  .dn-plate__media img, .dn-gallery img { transition: none; }
}

/* 19. RESPONSIVE: TABLET (≤ 1024 px) ------------------------------------------ */
@media (max-width: 1024px) {
  .dn-topbar__place { display: none; }
  .dn-nav, .dn-header__cta { display: none; }
  .dn-menu-toggle { display: inline-flex; }
  /* Logo centrado cuando el menú es hamburguesa */
  .dn-header__inner { display: grid; grid-template-columns: 48px minmax(0, 1fr) 48px; }
  .dn-logo { grid-column: 2; justify-self: center; }
  .dn-menu-toggle { grid-column: 3; margin-left: 0; }
  .dn-header--menu-open .dn-nav {
    display: block; position: fixed; inset: 0; top: 0; z-index: 70; margin: 0;
    background: var(--dn-color-paper); overflow-y: auto; padding: 88px var(--dn-gutter) 120px;
  }
  .dn-header--menu-open .dn-menu-toggle { position: fixed; top: 16px; right: var(--dn-gutter); z-index: 71; background: var(--dn-color-paper); }
  .dn-nav__list { flex-direction: column; align-items: stretch; gap: 0; }
  .dn-nav__item { border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }
  .dn-nav__link { width: 100%; justify-content: space-between; min-height: 56px; font-size: 1.25rem; padding: 0; }
  .dn-nav__sub { position: static; opacity: 1; visibility: visible; transform: none; box-shadow: none; border: 0; padding: 0 0 12px 12px; display: none; }
  .dn-nav__item--open .dn-nav__sub { display: block; }
  .dn-nav__item--open .dn-nav__link svg { transform: rotate(180deg); }
  .dn-nav__item:hover .dn-nav__sub { display: none; }
  .dn-nav__item--open:hover .dn-nav__sub { display: block; }
  .dn-nav__sub a { min-height: 48px; display: flex; align-items: center; font-size: 1.0625rem; }
  .dn-nav__mobile-cta { display: grid !important; gap: 10px; margin-top: 24px; }

  .dn-hero__grid { grid-template-columns: minmax(0, 1fr); grid-template-areas: "copy" "detail" "tb"; grid-template-rows: auto; row-gap: 32px; }
  .dn-section__head { grid-template-columns: minmax(0, 1fr); align-items: start; }
  .dn-section__head .dn-prose { justify-self: start; }
  .dn-about, .dn-cert, .dn-contact, .dn-two, .dn-product, .dn-quotes { grid-template-columns: minmax(0, 1fr); }
  .dn-product__aside { position: static; }
  .dn-services { grid-template-columns: minmax(0, 1fr); }
  .dn-service--feature { grid-row: auto; border-right: 0; }
  .dn-service--feature + .dn-service { border-top: var(--dn-line-thin) solid var(--dn-color-ink); }
  .dn-guarantee { grid-template-columns: minmax(0, 1fr); }
  /* Táctil: todo enlace o control mide al menos 44 px de alto */
  .dn-link, .dn-plate__title a, .dn-contact-list a, .dn-revtable td a, .dn-footer__bottom a, .dn-footer__nav a, .dn-crumbs a, .dn-topbar__contacts a { display: inline-flex; align-items: center; min-height: 44px; }
  .dn-plate__title a { display: inline; padding-block: 10px; }
  .dn-form__consent { align-items: center; }
  .dn-form__consent a { display: inline-block; padding-block: 12px; }
  .dn-form__consent input { width: 26px; height: 26px; }
  .dn-cov { grid-template-columns: minmax(0, 1fr); }
  /* Sobre nosotros (inicio): en tablet foto y texto siguen lado a lado */
  .dn-about.dn-about--short { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 32px; }
  .dn-fleet__row--grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dn-fleet__row--three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .dn-guarantee__item, .dn-guarantee__item + .dn-guarantee__item { padding: 24px 0; border-left: 0; border-bottom: var(--dn-line-thin) solid #4A525A; }
  .dn-case { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); }
  .dn-case__fact { grid-column: 2; }
  .dn-footer__top { grid-template-columns: minmax(0, 1fr); }
  .dn-case-story { grid-template-columns: minmax(0, 1fr); }
}
.dn-nav__mobile-cta { display: none !important; }

/* 20. RESPONSIVE: MÓVIL (≤ 767 px) ------------------------------------------- */
@media (max-width: 767px) {
  body { padding-bottom: 64px; }
  .dn-topbar__contacts li:nth-child(n+3) { display: none; }
  .dn-topbar__quote span { display: none; }
  .dn-header__inner { min-height: 68px; }
  .dn-logo img { width: 122px; }
  .dn-sheet { padding: 18px 16px 22px; }
  .dn-sheet__ref { display: none; }
  .dn-hero__copy .dn-btn { width: 100%; }
  .dn-hero { min-height: 620px; }
  /* Botones del hero lado a lado, alineados con el texto */
  .dn-hero .dn-actions { width: 100%; flex-wrap: nowrap; justify-content: flex-start; gap: 10px; }
  .dn-hero .dn-actions .dn-btn { flex: 1 1 0; min-width: 0; padding: 0 12px; }
  .dn-hide-m { display: none; }
  .dn-show-m { display: inline; }
  .dn-hero__inner { padding-left: var(--dn-gutter); padding-bottom: 76px; }
  .dn-hero__arrow { top: auto; bottom: 8px; margin-top: 0; width: 48px; height: 48px; }
  .dn-hero__arrow svg { width: 28px; height: 28px; }
  .dn-hero__arrow--prev { left: calc(50% - 52px); }
  .dn-hero__arrow--next { right: auto; left: calc(50% + 4px); }
  .dn-hero__ref { left: auto; right: var(--dn-gutter); bottom: 22px; }
  .dn-slider__caption { flex-direction: column; gap: 2px; }
  .dn-titleblock { grid-template-columns: minmax(0, 1fr); }
  .dn-titleblock__cell { border-right: 0; }
  .dn-credits__inner { flex-direction: column; }
  .dn-credits__label { padding: 14px 0 6px; }
  .dn-credits__list { flex-direction: column; }
  .dn-credits__list li { border-left: 0; border-top: var(--dn-line-thin) solid var(--dn-color-line); }
  .dn-credits__list a { grid-template-columns: 1fr auto; padding: 14px 0; }
  .dn-fleet__row { grid-auto-columns: 82%; }
  .dn-rates thead { display: none; }
  .dn-rates, .dn-rates tbody, .dn-rates tr, .dn-rates th, .dn-rates td { display: block; width: 100%; }
  .dn-rates tr { padding: 14px 16px; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }
  /* Bloque centrado en la tarjeta, texto alineado a la izquierda */
  .dn-rates tbody tr { display: grid; grid-template-columns: minmax(0, 270px); justify-content: center; }
  .dn-rates th, .dn-rates td { padding: 4px 0; border: 0; }
  .dn-rates td::before { content: attr(title) ": "; color: var(--dn-color-ink-2); font-size: var(--dn-text-small); }
  .dn-rates .dn-rates__price { text-align: left; }
  .dn-fleet__swipe { display: inline; }
  .dn-credits__list { display: flex; }
  .dn-clients li { grid-template-columns: minmax(0, 1fr); gap: 4px; }
  .dn-svc { grid-template-columns: minmax(0, 1fr); }
  .dn-depts { grid-template-columns: minmax(0, 1fr); }
  .dn-about.dn-about--short { grid-template-columns: minmax(0, 1fr); }
  .dn-about__media img { aspect-ratio: 4 / 3; }
  /* Móvil: etiquetas legibles y sin detalles decorativos diminutos */
  .dn-ref, .dn-plate__ref, .dn-hero__ref { font-size: 12px; }
  .dn-revtable__rev { font-size: 12px; }
  .dn-sheet__grid { display: none; }
  /* Mobile first: la flota del inicio se desliza con el dedo (sin barra visible) */
  .dn-fleet__row.dn-fleet__row--three {
    grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 100%;
    overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain;
    scrollbar-width: none; -webkit-overflow-scrolling: touch;
  }
  .dn-fleet__row--three::-webkit-scrollbar { display: none; }
  .dn-fleet__row--three .dn-plate { border-left: 0; }
  .dn-carousel__btn {
    position: absolute; z-index: 2; top: calc((100vw - 2 * var(--dn-gutter)) * 0.3125); margin-top: -24px;
    display: grid; place-items: center; width: 48px; height: 48px; padding: 0;
    border: var(--dn-line-thin) solid var(--dn-color-ink); border-radius: 50%;
    background: var(--dn-color-paper); color: var(--dn-color-ink); cursor: pointer;
    box-shadow: 0 6px 16px -6px rgba(18, 21, 25, 0.45);
  }
  .dn-carousel__btn svg { width: 22px; height: 22px; }
  .dn-carousel__btn--prev { left: 8px; }
  .dn-carousel__btn--next { right: 8px; }
  .dn-carousel__btn:disabled { opacity: 0; pointer-events: none; }
  .dn-carousel__count { display: block; margin-top: 12px; text-align: center; font-size: var(--dn-text-small); font-weight: 600; color: var(--dn-color-ink-2); font-variant-numeric: tabular-nums; }
  .dn-swipe-hint { display: flex; align-items: center; gap: 8px; justify-content: flex-end; margin-top: 12px; font-size: var(--dn-text-small); font-weight: 600; color: var(--dn-color-ink-2); }
  .dn-swipe-hint svg { width: 18px; height: 18px; }
  .dn-plate__media img { aspect-ratio: 16 / 10; }
  .dn-case img { aspect-ratio: 16 / 9; }
  .dn-map .dn-map__name { font-size: 28px; stroke-width: 7px; }
  .dn-map .dn-map__city { font-size: 21px; stroke-width: 7px; }
  .dn-map .dn-map__deg, .dn-map .dn-map__km, .dn-map .dn-map__sea { display: none; }
  .dn-covtable th, .dn-covtable td { padding: 10px 12px; }
  .dn-fleet__row--grid { grid-template-columns: minmax(0, 1fr); }
  .dn-fleet__cta .dn-btn { width: 100%; }
  .dn-svc__card img { aspect-ratio: 4 / 3; }
  .dn-case { grid-template-columns: minmax(0, 1fr); }
  .dn-case__fact { grid-column: auto; }
  .dn-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 150px; }
  .dn-gallery li:nth-child(n), .dn-gallery--page li:nth-child(n) { grid-column: span 1; grid-row: span 1; }
  .dn-gallery li:nth-child(1) { grid-column: span 2; grid-row: span 2; }
  .dn-gallery li:last-child:nth-child(even) { grid-column: span 2; }
  .dn-form { grid-template-columns: minmax(0, 1fr); }
  .dn-mv { grid-template-columns: minmax(0, 1fr); }
  .dn-mv__item + .dn-mv__item { border-left: 0; border-top: var(--dn-line-thin) solid var(--dn-color-ink); }
  .dn-cats { grid-template-columns: minmax(0, 1fr); }
  .dn-cats li + li { border-left: 0; border-top: var(--dn-line-thin) solid var(--dn-color-ink); }
  .dn-case-figs { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dn-case-figs div:nth-child(3) { border-left: 0; }
  .dn-case-figs div:nth-child(n+3) { border-top: var(--dn-line-thin) solid var(--dn-color-ink); }
  .dn-revtable thead { display: none; }
  .dn-revtable, .dn-revtable tbody, .dn-revtable tr, .dn-revtable td { display: block; width: 100%; }
  .dn-revtable tr { padding: 12px 14px; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }
  .dn-revtable td { padding: 3px 0; border: 0; }
  .dn-footer__nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dn-wa { display: none; }
  .dn-mobilebar {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 60;
    display: grid; grid-template-columns: 1fr 1fr;
    border-top: var(--dn-line-bold) solid var(--dn-color-ink);
  }
  .dn-mobilebar a { display: flex; align-items: center; justify-content: center; gap: 10px; min-height: 62px; font-weight: 660; text-decoration: none; font-size: 1.0625rem; }
  .dn-mobilebar svg { width: 22px; height: 22px; }
  .dn-mobilebar__call { background: var(--dn-color-ink); color: var(--dn-color-white); }
  .dn-mobilebar__wa { background: var(--dn-color-mark); color: var(--dn-color-ink); }
}

/* 21. COMPATIBILIDAD CON ELEMENTOR GRATIS, WOOCOMMERCE Y PLUGINS DE FORMULARIO
   Capa aditiva: no cambia el aspecto de la demo. Sirve para que, al poner
   estas mismas clases en Containers y widgets de Elementor (Avanzado > Clases
   CSS), el resultado se vea igual. Cargar este archivo DESPUÉS de los estilos
   de Elementor y WooCommerce (dependencia "elementor-frontend").            */

/* El estilo puesto en la clase del widget llega al título interno */
.elementor-widget[class*="dn-"] .elementor-heading-title {
  font-family: inherit; font-size: inherit; font-weight: inherit; font-stretch: inherit;
  line-height: inherit; letter-spacing: inherit; color: inherit; text-transform: inherit;
}
/* Editor de texto: sin márgenes extra */
/* (los párrafos con clase propia, como dn-rates__note, conservan sus márgenes) */
.elementor-widget-text-editor[class*="dn-"] p:not([class]) { margin: 0; }
.elementor-widget-text-editor[class*="dn-"] p:not([class]) + p:not([class]) { margin-top: 1em; }
/* Imágenes que llenan su caja (hero, tarjetas, fichas) */
.elementor-widget-image[class*="dn-"]:not(.dn-logo) .elementor-widget-container,
.elementor-widget-image[class*="dn-"]:not(.dn-logo) a { display: block; height: 100%; }
.elementor-widget-image[class*="dn-"]:not(.dn-logo) img { width: 100%; }
/* Botón de Elementor con clase dn-btn: el aspecto pasa al enlace interno */
.dn-btn .elementor-button-content-wrapper { display: inline-flex; align-items: center; gap: 10px; }
.dn-btn--dark .elementor-button { background: var(--dn-color-ink); color: var(--dn-color-white); border: var(--dn-line-thin) solid var(--dn-color-ink); border-radius: var(--dn-radius); }
.dn-btn--dark .elementor-button:hover { background: var(--dn-color-mark); color: var(--dn-color-ink); }
.dn-btn--on-dark .elementor-button { background: transparent; color: var(--dn-color-white); border: var(--dn-line-thin) solid var(--dn-color-white); border-radius: var(--dn-radius); }
.dn-btn--on-dark .elementor-button:hover { background: var(--dn-color-white); color: var(--dn-color-ink); }
.dn-btn--lg .elementor-button { min-height: 60px; padding: 0 34px; font-size: 1.1875rem; }
/* Containers con clase dn-: sin el relleno por defecto de Elementor;
   el espaciado lo pone cada clase (dn-section, dn-wrap, etc.) */
.e-con[class*="dn-"] { --padding-top: 0px; --padding-right: 0px; --padding-bottom: 0px; --padding-left: 0px; }
.e-con.dn-wrap { padding-inline: var(--dn-gutter); }
.e-con.dn-section { padding-block: var(--dn-section); }

/* WooCommerce: el shortcode [products] dentro de un widget con clase dn-woo
   toma el aspecto de las fichas de la demo */
.dn-woo .woocommerce ul.products { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; margin: 0; padding: 0; border-top: var(--dn-line-bold) solid var(--dn-color-ink); border-left: var(--dn-line-bold) solid var(--dn-color-ink); }
.dn-woo .woocommerce ul.products::before, .dn-woo .woocommerce ul.products::after { display: none; }
.dn-woo .woocommerce ul.products li.product {
  float: none; width: auto; margin: 0; padding: 0 0 18px;
  display: flex; flex-direction: column;
  background: var(--dn-color-paper);
  border-right: var(--dn-line-bold) solid var(--dn-color-ink); border-bottom: var(--dn-line-bold) solid var(--dn-color-ink);
}
.dn-woo .woocommerce ul.products li.product a img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; margin: 0; border-bottom: var(--dn-line-thin) solid var(--dn-color-ink); }
.dn-woo .woocommerce ul.products li.product .woocommerce-loop-product__title {
  padding: 18px 18px 0; font-family: var(--dn-font-title); font-size: 1.375rem; font-stretch: 106%;
  font-weight: 640; letter-spacing: -0.012em; line-height: 1.15; color: var(--dn-color-ink);
}
.dn-woo .woocommerce ul.products li.product .price { display: block; padding: 10px 18px 0; color: var(--dn-color-ink); font-family: var(--dn-font-title); font-size: 1.75rem; font-stretch: 108%; font-weight: 680; font-variant-numeric: tabular-nums lining-nums; }
.dn-woo .woocommerce ul.products li.product .price .woocommerce-price-suffix { font-family: var(--dn-font-body); font-size: var(--dn-text-small); font-weight: 400; color: var(--dn-color-ink-2); }
.dn-woo .woocommerce ul.products li.product .button {
  display: flex; align-items: center; justify-content: center; min-height: 48px; margin: auto 18px 0; padding: 0 14px;
  background: var(--dn-color-mark); color: var(--dn-color-ink); border: var(--dn-line-thin) solid var(--dn-color-ink); border-radius: var(--dn-radius);
  font-family: var(--dn-font-body); font-weight: 620;
}
.dn-woo .woocommerce ul.products li.product .button:hover { background: var(--dn-color-ink); color: var(--dn-color-mark); }

/* Plugins de formulario (Fluent Forms, Contact Form 7, WPForms) dentro de un
   widget o Container con clase dn-form */
.elementor-widget.dn-form, .e-con.dn-form { display: block; }
.dn-form input[type="submit"], .dn-form button[type="submit"], .dn-form .ff-btn-submit, .dn-form .wpcf7-submit, .dn-form .wpforms-submit {
  width: 100%; min-height: 52px; padding: 0 22px; cursor: pointer;
  background: var(--dn-color-mark); color: var(--dn-color-ink);
  border: var(--dn-line-thin) solid var(--dn-color-ink); border-radius: var(--dn-radius);
  font-family: var(--dn-font-body); font-size: 1.0625rem; font-weight: 620;
}
.dn-form input[type="submit"]:hover, .dn-form button[type="submit"]:hover, .dn-form .ff-btn-submit:hover, .dn-form .wpcf7-submit:hover, .dn-form .wpforms-submit:hover { background: var(--dn-color-ink); color: var(--dn-color-mark); }
.dn-form .wpcf7-not-valid-tip, .dn-form .error, .dn-form .wpforms-error, .dn-form .ff-el-is-error .text-danger { color: var(--dn-color-rev); font-size: var(--dn-text-small); }
.dn-form .wpcf7-response-output, .dn-form .ff-message-success, .dn-form .wpforms-confirmation-container-full { margin: 0; padding: 14px 16px; border: var(--dn-line-thin) solid var(--dn-color-ink); background: var(--dn-color-tone-10); color: var(--dn-color-ink); }

@media (max-width: 1024px) {
  .dn-woo .woocommerce ul.products { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
  .dn-woo .woocommerce ul.products { grid-template-columns: minmax(0, 1fr); }
  .dn-woo .woocommerce ul.products li.product a img { aspect-ratio: 16 / 10; }
}

/* 22. AJUSTES SOLO PARA EL HTML QUE GENERA ELEMENTOR
   Estas clases (.elementor-widget-*) no existen en la demo: aquí no cambian nada.
   En WordPress evitan que el contenedor del widget repita el estilo del botón,
   del enlace o de la imagen que lleva dentro. */
.elementor-widget-button.dn-btn,
.elementor-widget-button.dn-btn:hover {
  display: block; min-height: 0; padding: 0; border: 0; border-radius: 0;
  background: transparent; box-shadow: none;
}
.elementor-widget-button.dn-btn--block .elementor-button { width: 100%; }
.elementor-widget-button.dn-btn .elementor-button-icon svg { width: 20px; height: 20px; fill: currentColor; }
/* Iconos SVG de la demo (trazo, sin relleno) usados como icono de botón o de acordeón */
.elementor .elementor-button-icon svg[fill="none"],
.elementor .e-n-accordion-item-title-icon svg[fill="none"] { fill: none; stroke: currentColor; }
.elementor-widget-button.dn-btn--lg .elementor-button-icon svg { width: 22px; height: 22px; transition: transform 0.25s var(--dn-ease-out); }
.elementor-widget-button.dn-btn--lg .elementor-button:hover .elementor-button-icon svg { transform: translateX(4px); }
.elementor-widget-button.dn-link .elementor-button-icon svg { width: 18px; height: 18px; transition: transform 0.25s var(--dn-ease-out); }
.elementor-widget-button.dn-link .elementor-button:hover .elementor-button-icon svg { transform: translateX(3px); }
.elementor-widget-n-accordion.dn-faq .e-n-accordion-item[open] .e-n-accordion-item-title-icon svg { transform: rotate(45deg); }
.elementor-widget-image[class*="dn-"] { text-align: start; }
/* dn-btn centra el texto dentro del botón; el envoltorio del widget se alinea como el bloque que lo contiene */
.elementor-widget-button.dn-btn, .elementor-widget-button.dn-link { text-align: inherit; }
.elementor-widget-button.dn-link .elementor-button {
  padding: 0; min-height: 0; background: transparent; border: 0; color: inherit;
  font-weight: 620; text-decoration: underline; text-decoration-thickness: 1.5px;
  text-underline-offset: 0.28em; text-decoration-color: var(--dn-color-mark);
}
.elementor-widget-image.dn-refimg { position: relative; }
.elementor-widget-image.dn-refimg figcaption.widget-image-caption {
  position: absolute; left: 10px; top: 10px; margin: 0;
  padding: 3px 8px; background: var(--dn-color-paper); border: var(--dn-line-thin) solid var(--dn-color-ink);
  color: var(--dn-color-ink); font-size: 11px; letter-spacing: 0.05em; text-transform: uppercase; font-stretch: 88%; line-height: 1.4;
}
.elementor-widget-heading.dn-title .elementor-heading-title,
.elementor-widget-heading.dn-h3 .elementor-heading-title { margin: 0; }
.elementor-widget-divider.dn-about__rule { border: 0; }
.elementor-widget-divider.dn-about__rule .elementor-divider-separator { border-top: var(--dn-line-bold) solid var(--dn-color-ink); width: 100%; }

/* 23. HERO EN ESCRITORIO Y LAPTOP (> 1024 px)
   Las fotos de escritorio son panorámicas (2560 × 1086, ~21:9), con la
   misma forma que el hero: lo llenan de borde a borde sin deformarse. */
@media (min-width: 1025px) {
  .dn-hero .dn-slider__slide img { object-fit: cover; object-position: center 55%; }
}

/* 24. SOLO ELEMENTOR: ACORDEÓN ANIDADO (preguntas frecuentes) con clase dn-faq
   Estas clases (.e-n-accordion-*) no existen en la demo: aquí no cambian nada. */
.elementor-widget-n-accordion.dn-faq .e-n-accordion { border-top: var(--dn-line-bold) solid var(--dn-color-ink); }
.elementor-widget-n-accordion.dn-faq .e-n-accordion-item { border: 0; border-bottom: var(--dn-line-thin) solid var(--dn-color-line); }
.elementor-widget-n-accordion.dn-faq .e-n-accordion-item-title {
  padding: 22px 0; border: 0; background: transparent; gap: 20px;
  font-family: var(--dn-font-body); font-weight: 600; font-size: 1.1875rem; line-height: 1.35; color: var(--dn-color-ink);
}
.elementor-widget-n-accordion.dn-faq .e-n-accordion-item-title-text { font: inherit; color: inherit; }
.elementor-widget-n-accordion.dn-faq .e-n-accordion-item-title:hover .e-n-accordion-item-title-text { text-decoration: underline; text-decoration-color: var(--dn-color-mark); text-underline-offset: 0.25em; text-decoration-thickness: 2px; }
.elementor-widget-n-accordion.dn-faq .e-n-accordion-item > [role="region"] { padding: 0 0 24px; border: 0; max-width: 70ch; color: var(--dn-color-ink-2); }
.elementor-widget-n-accordion.dn-faq .e-n-accordion-item-title-icon svg { width: 22px; height: 22px; fill: currentColor; }

/* 25. SOLO ELEMENTOR: ENVOLTORIOS DE WIDGET Y FOTOS DEL HERO
   Estas clases (.elementor-widget*, .e-con) no existen en la demo: aquí no cambian nada.
   dn-contents: el widget HTML/Shortcode no crea caja propia; su contenido queda
   como hijo directo del Container (flechas, mapa, tarjetas, formulario). */
.elementor-widget.dn-contents,
.elementor-widget.dn-contents > .elementor-widget-container,
.elementor-widget.dn-contents > .elementor-shortcode,
.elementor-widget.dn-contents > .elementor-widget-container > .elementor-shortcode { display: contents; }
.e-con.dn-slider__slide > .elementor-widget-image { width: 100%; height: 100%; }
/* Elementor pone max-width: 100% a todo widget dentro de un Container
   (.elementor.elementor .e-con > .elementor-widget). Se devuelven los anchos
   máximos de lectura de cada clase. */
.elementor.elementor .e-con > .elementor-widget.dn-lead { max-width: 38ch; }
.elementor.elementor .e-con.dn-about__short > .elementor-widget.dn-lead { max-width: 44ch; }
.elementor.elementor .e-con > .elementor-widget.dn-prose { max-width: 66ch; }
.elementor.elementor .e-con > .elementor-widget.dn-hero__lead { max-width: 40ch; }
.elementor.elementor .dn-hero .e-con > .elementor-widget.dn-hero__lead { max-width: 46ch; }
.elementor.elementor .e-con > .elementor-widget.dn-pagehero__lead { max-width: 52ch; }
.elementor.elementor .e-con > .elementor-widget.dn-faq { max-width: 900px; }
.elementor.elementor .e-con > .elementor-widget.dn-legal { max-width: 74ch; }
/* Encabezado de sección sin texto al lado: la demo lleva un <div> vacío como
   segunda celda de la rejilla; aquí lo hace un pseudo-elemento. */
.e-con.dn-section__head:not(:has(> :nth-child(2)))::after { content: ""; }
/* Divisor de Elementor: sin el relleno de 15 px, igual que el <hr> de la demo */
.elementor .elementor-widget-divider.dn-about__rule { margin-block: 4px; }
.elementor .elementor-widget-divider.dn-about__rule .elementor-divider { padding-block: 0; }
.elementor .elementor-widget-divider.dn-about__rule .elementor-divider-separator { width: 100%; border-block-start: var(--dn-line-bold) solid var(--dn-color-ink); }
/* En la demo este bloque se ajusta a su contenido (márgenes automáticos en la rejilla) */
.e-con.dn-about__short { width: auto; }
/* Botones de Elementor (clase dn-btn en el widget): el fondo y el ancho que en la
   demo lleva el enlace pasan al enlace interno (.elementor-button) */
.dn-hero .dn-btn--on-dark .elementor-button { background: rgba(18, 21, 25, 0.62); text-shadow: none; }
.dn-hero .dn-btn--on-dark .elementor-button:hover { background: var(--dn-color-white); }
@media (max-width: 767px) {
  .dn-hero .dn-actions .elementor-widget-button.dn-btn .elementor-button,
  .dn-fleet__cta .elementor-widget-button.dn-btn .elementor-button { width: 100%; }
  .dn-hero .dn-actions .elementor-widget-button.dn-btn .elementor-button { min-width: 0; padding: 0 12px; }
  .dn-hero .dn-actions .elementor-widget-button.dn-btn { padding: 0; }
}
/* Carrusel de la flota: bloque normal, como en la demo (Elementor lo hace flex
   y la fila de productos crecería al ancho de su contenido) */
.e-con.dn-carousel { display: block; }
/* Enlace-botón (dn-link): sin el tamaño de letra por defecto del botón de Elementor */
.elementor-widget-button.dn-link .elementor-button { font-size: inherit; line-height: inherit; }
/* Texto del hero: el margen izquierdo de la demo (la regla .e-con.dn-wrap lo pisaría) */
.e-con.dn-wrap.dn-hero__inner { padding-left: max(var(--dn-gutter), 76px); }
@media (max-width: 767px) {
  .e-con.dn-wrap.dn-hero__inner { padding-left: var(--dn-gutter); }
}
/* Zona táctil de 44 px del enlace dn-link en tablet y móvil (como en la demo) */
@media (max-width: 1024px) {
  .elementor-widget-button.dn-link .elementor-button { display: inline-flex; align-items: center; min-height: 44px; }
}
/* Containers de Elementor con clase dn-: por defecto se comportan como un bloque
   normal (como el <section>/<div> de la demo). Las clases que en la demo son
   rejilla o flex (dn-about, dn-actions, dn-hero...) mantienen su display propio.
   Evita que el navegador encoja contenidos (p. ej. las tarjetas de servicios)
   mientras cargan las fotos. */
.elementor.elementor .e-con[class*="dn-"] { --display: block; --flex-direction: row; }
.elementor.elementor .e-con.dn-hero { --flex-direction: column; }
/* Títulos de columna del pie (widget Título sin clase dn-): letra y altura de línea de la demo */
.dn-footer__nav .elementor-heading-title { font-family: inherit; line-height: inherit; }
/* Botón de la cabecera (widget Botón con clase dn-header__cta) */
.dn-header .dn-header__cta .elementor-button { background: var(--dn-color-ink); color: var(--dn-color-white); }
.dn-header .dn-header__cta .elementor-button:hover { background: var(--dn-color-mark); color: var(--dn-color-ink); }
.dn-header .dn-header__cta .elementor-button-icon svg { color: #4FD383; }
.dn-header .dn-header__cta .elementor-button:hover .elementor-button-icon svg { color: var(--dn-color-ink); }
.elementor-widget-image.dn-logo a { display: block; }
/* Pie de foto "Imagen referencial" del widget Imagen: mismo tamaño que .dn-ref en móvil */
@media (max-width: 767px) {
  .elementor-widget-image.dn-refimg figcaption.widget-image-caption { font-size: 12px; }
}
/* Botón de la cabecera: oculto en tablet y móvil, como en la demo (menú hamburguesa) */
@media (max-width: 1024px) {
  .elementor-widget-button.dn-header__cta { display: none; }
}
/* Con sesión iniciada en WordPress, la cabecera fija queda debajo de la barra de administración */
.admin-bar .dn-header { top: 32px; }
@media (max-width: 782px) {
  .admin-bar .dn-header { top: 46px; }
}
@media (max-width: 600px) {
  .admin-bar .dn-header { top: 0; }
}
