/**
 * FortPass
 * @author David Medel
 * @Copyright 2026 Medel Platforms (medel.es)
**/

/* ============================================================
   HOME — public landing layout (nav, hero, sections, footer)
   Loaded only by _home_head.php (public pages).
   ============================================================ */

/* ----- NAV ----- */
.home-nav {
  position: sticky;
  top: 12px;
  z-index: 50;
  width: min(1180px, 92vw);
  margin: 12px auto 0;
  padding: 10px 14px 10px 22px;
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 18px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-pill);
  backdrop-filter: var(--blur-2);
  -webkit-backdrop-filter: var(--blur-2);
  box-shadow: var(--shadow-1);
}
.home-nav__brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  text-decoration: none;
  color: var(--text-1);
}
.home-nav__brand img { height: 30px; width: auto; }
.home-nav__brand .v-brand__wordmark {
  font-size: 17px;
  font-weight: 800;
  letter-spacing: -0.025em;
  background: linear-gradient(135deg, var(--accent), var(--accent-3));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.home-nav__links {
  display: flex;
  gap: 4px;
  justify-content: center;
}
.home-nav__links a {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--text-2);
  font-weight: 600;
  font-size: 13.5px;
  letter-spacing: -0.01em;
  padding: 8px 14px;
  border-radius: var(--r-pill);
  transition: all var(--t1) var(--ease);
}
.home-nav__links a i { font-size: 13px; opacity: 0.8; transition: opacity var(--t1) var(--ease); }
.home-nav__links a:hover {
  color: var(--text-1);
  background: var(--surface-hover);
}
.home-nav__links a:hover i { opacity: 1; color: var(--accent); }

.home-nav__actions {
  display: flex;
  gap: 8px;
  align-items: center;
  justify-self: end;
}
.home-icon-btn {
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--surface-soft);
  border: 1px solid var(--border);
  color: var(--text-1);
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: all var(--t1) var(--ease);
}
.home-icon-btn:hover { background: var(--surface-hover); transform: rotate(15deg); }
.home-icon-btn i { font-size: 20px; }

.home-nav__burger { display: none; }

@media (max-width: 860px) {
  .home-nav { grid-template-columns: 1fr auto; padding: 8px 12px 8px 18px; }
  .home-nav__links { display: none; }
  .home-nav__cta { display: none !important; } /* gana al display: inline-flex !important de .v-btn */
  .home-nav__burger { display: inline-flex; }
}

/* ----- MOBILE DRAWER ----- */
.home-mobile {
  position: fixed;
  top: 78px;
  left: 50%;
  transform: translateX(-50%) translateY(-12px);
  width: min(360px, 92vw);
  background: var(--surface-2);
  border: 1px solid var(--border-strong);
  border-radius: var(--r-lg);
  padding: 14px;
  backdrop-filter: var(--blur-3);
  -webkit-backdrop-filter: var(--blur-3);
  box-shadow: var(--shadow-3);
  z-index: 49;
  display: flex;
  flex-direction: column;
  gap: 4px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s var(--ease), transform 0.25s var(--ease);
}
.home-mobile.is-open {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}
.home-mobile a {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border-radius: var(--r-md);
  color: var(--text-1);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: -0.01em;
  transition: background var(--t1) var(--ease);
}
.home-mobile a:hover { background: var(--surface-hover); }
.home-mobile a i { font-size: 16px; color: var(--accent); width: 20px; text-align: center; }
.home-mobile hr { border: 0; border-top: 1px solid var(--border); margin: 6px 0; }
.home-mobile__cta {
  background: linear-gradient(135deg, var(--accent), var(--accent-3));
  color: #fff !important;
  box-shadow: 0 6px 22px var(--accent-glow);
}
.home-mobile__cta i { color: #fff !important; }
.home-mobile__cta:hover { transform: translateY(-1px); }

/* Botón "Instalar app" del drawer móvil — estilo ghost, hereda layout de los <a> */
.home-mobile__install {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border: 1px solid var(--border-strong);
  background: var(--surface-soft);
  color: var(--text-1);
  font-family: var(--font);
  font-weight: 600;
  font-size: 15px;
  letter-spacing: -0.01em;
  border-radius: var(--r-md);
  cursor: pointer;
  transition: background var(--t1) var(--ease), transform var(--t1) var(--ease);
  width: 100%;
  text-align: left;
}
.home-mobile__install i { font-size: 16px; color: var(--accent); width: 20px; text-align: center; }
.home-mobile__install:hover { background: var(--surface-hover); transform: translateY(-1px); }

/* ===== Mobile-drawer language picker (native <select> wrapped in <label>).
   The <select> stays native so mobile OSes show their built-in picker
   (better UX + accessibility + no JS race conditions). We just style
   the shell so it visually matches the rest of the drawer items.       */
.home-mobile__lang {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 10px;
  border: 1px solid var(--border-strong);
  background: var(--surface-soft);
  border-radius: var(--r-md);
  cursor: pointer;
}
.home-mobile__lang .home-mobile__lang-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--text-3);
  font-size: 13px;
  font-weight: 600;
  flex-shrink: 0;
}
.home-mobile__lang .home-mobile__lang-label i {
  font-size: 18px;
  color: var(--accent);
}
.home-mobile__lang-select {
  flex: 1;
  min-width: 0;
  appearance: none;
  -webkit-appearance: none;
  -moz-appearance: none;
  background: transparent;
  border: 0;
  color: var(--text-1);
  font-family: var(--font);
  font-size: 14px;
  font-weight: 600;
  padding: 4px 24px 4px 4px;
  cursor: pointer;
  outline: none;
  /* Custom caret on the right side using a tiny SVG; transparent
     fill so the parent's background shows through. */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath fill='%23818a9c' d='M6 7.5 0 1.5 1.5 0 6 4.5 10.5 0 12 1.5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 4px center;
  background-size: 10px;
  text-align: right;
}
.home-mobile__lang-select:focus { color: var(--accent); }
.home-mobile__lang-select option {
  /* Options use the system picker, but at least we hint a dark
     background for browsers that respect the styling (e.g. Firefox
     on Android lets you theme the dropdown). */
  background: var(--surface);
  color: var(--text-1);
}

/* ----- EYEBROW + GRADIENT TEXT ----- */
.home-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 12px 6px 8px;
  background: var(--surface-soft);
  border: 1px solid var(--border);
  border-radius: var(--r-pill);
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text-2);
  letter-spacing: -0.01em;
}
.home-eyebrow__dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--success);
  box-shadow: 0 0 0 0 rgba(48, 209, 88, 0.6);
  animation: homeDotPulse 2.4s var(--ease) infinite;
}
@keyframes homeDotPulse {
  0%   { box-shadow: 0 0 0 0 rgba(48, 209, 88, 0.55); }
  70%  { box-shadow: 0 0 0 8px rgba(48, 209, 88, 0); }
  100% { box-shadow: 0 0 0 0 rgba(48, 209, 88, 0); }
}

.home-grad {
  background: linear-gradient(135deg, var(--accent), var(--accent-3));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  display: inline;
}

/* ----- HERO ----- */
.home-hero {
  position: relative;
  padding: 80px 0 100px;
  overflow: hidden;
}
.home-hero__orbs {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
}
.home-hero__orb {
  position: absolute;
  width: 620px; height: 620px;
  border-radius: 50%;
  filter: blur(160px);
  opacity: 0.45;
  animation: homeOrbFloat 18s var(--ease) infinite alternate;
}
.home-hero__orb--1 { background: var(--accent);   top: -260px; left: -180px; }
.home-hero__orb--2 { background: var(--accent-3); top:  60px;  right: -240px; animation-delay: -6s; animation-duration: 22s; }
.home-hero__orb--3 { background: #00c8ff;         bottom: -260px; left: 25%; animation-delay: -12s; animation-duration: 26s; opacity: 0.22; }
[data-theme="light"] .home-hero__orb   { opacity: 0.22; }
[data-theme="light"] .home-hero__orb--3 { opacity: 0.14; }
@keyframes homeOrbFloat {
  0%   { transform: translate(0, 0) scale(1); }
  100% { transform: translate(40px, -30px) scale(1.08); }
}

.home-hero__inner {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1.05fr 0.95fr;
  align-items: center;
  gap: 60px;
}
.home-hero__title {
  font-size: clamp(36px, 5vw, 60px);
  font-weight: 800;
  letter-spacing: -0.035em;
  line-height: 1.05;
  margin: 18px 0 18px;
  color: var(--text-1);
}
.home-hero__sub {
  font-size: 17px;
  color: var(--text-2);
  max-width: 540px;
  line-height: 1.55;
  margin: 0 0 28px;
}

.home-cta-row {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.home-trust {
  list-style: none;
  padding: 0;
  margin: 28px 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: 6px 22px;
}
.home-trust li {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: var(--text-3);
  font-size: 13px;
}
.home-trust i { font-size: 16px; color: var(--success); }

/* ----- HERO MOCKUP ----- */
.home-mockup {
  position: relative;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 24px;
  padding: 0;
  backdrop-filter: var(--blur-2);
  -webkit-backdrop-filter: var(--blur-2);
  box-shadow: var(--shadow-3);
  overflow: hidden;
  transform: perspective(1400px) rotateY(-6deg) rotateX(2deg);
  transform-origin: center;
  animation: homeMockupFloat 6s var(--ease) infinite alternate;
}
@keyframes homeMockupFloat {
  0%   { transform: perspective(1400px) rotateY(-6deg) rotateX(2deg) translateY(0); }
  100% { transform: perspective(1400px) rotateY(-6deg) rotateX(2deg) translateY(-12px); }
}
.home-mockup__chrome {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}
.home-mockup__chrome > span {
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--text-3);
  opacity: 0.4;
}
.home-mockup__chrome > span:nth-child(1) { background: #ff5f57; opacity: 0.85; }
.home-mockup__chrome > span:nth-child(2) { background: #febc2e; opacity: 0.85; }
.home-mockup__chrome > span:nth-child(3) { background: #28c840; opacity: 0.85; }
.home-mockup__chrome code {
  margin-left: auto;
  font-size: 12px;
  color: var(--text-3);
  font-family: var(--mono);
}
.home-mockup__body {
  padding: 14px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.home-mockup__row {
  display: grid;
  grid-template-columns: 44px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  transition: transform var(--t1) var(--ease), border-color var(--t1) var(--ease);
}
.home-mockup__row:hover { transform: translateX(4px); border-color: var(--border-strong); }
.home-mockup__icon {
  width: 44px; height: 44px;
  border-radius: 12px;
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 18px;
}
.home-mockup__row strong { display: block; font-size: 14px; color: var(--text-1); }
.home-mockup__row code {
  font-size: 12.5px; color: var(--text-3);
  letter-spacing: 0.05em; font-family: var(--mono);
}
.home-mockup__action { color: var(--text-3); font-size: 18px; }
.home-mockup__lock {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 10px;
  border-top: 1px solid var(--border);
  background: var(--surface-soft);
  font-size: 11.5px;
  color: var(--text-3);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  font-weight: 600;
}
.home-mockup__lock i { font-size: 14px; color: var(--success); }

@media (max-width: 920px) {
  .home-hero__inner { grid-template-columns: 1fr; gap: 40px; }
  .home-mockup { transform: none; animation: none; max-width: 460px; margin: 0 auto; }
  /* Centrar todo el contenido del hero en móvil */
  .home-hero__content { text-align: center; }
  .home-hero__sub { margin-left: auto; margin-right: auto; }
  .home-cta-row { justify-content: center; }
  .home-trust { justify-content: center; }
  .home-eyebrow { margin-left: auto; margin-right: auto; }
}

/* ----- SECTIONS ----- */
.home-section {
  padding: 80px 0;
  position: relative;
}
.home-section--alt {
  background: linear-gradient(180deg, transparent, var(--surface-soft), transparent);
}
.home-section__head {
  text-align: center;
  max-width: 720px;
  margin: 0 auto 50px;
}
.home-section__head h2 {
  font-size: clamp(28px, 4vw, 42px);
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.12;
  margin: 14px 0 12px;
  color: var(--text-1);
}
.home-section__head p {
  font-size: 16px;
  color: var(--text-3);
  max-width: 580px;
  margin: 0 auto;
}

/* ----- FEATURES GRID ----- */
.home-features {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
}
.home-feature {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 26px;
  backdrop-filter: var(--blur-1);
  -webkit-backdrop-filter: var(--blur-1);
  transition: transform var(--t2) var(--ease), border-color var(--t2) var(--ease), box-shadow var(--t2) var(--ease);
}
.home-feature:hover {
  transform: translateY(-4px);
  border-color: var(--border-strong);
  box-shadow: var(--shadow-2);
}
.home-feature__icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 52px; height: 52px;
  border-radius: 16px;
  background: linear-gradient(135deg, var(--c0), var(--accent-3));
  color: #fff;
  margin-bottom: 16px;
  box-shadow: 0 8px 22px var(--accent-glow);
}
.home-feature__icon[data-color="1"] { background: linear-gradient(135deg, var(--c1, #6e0bff), var(--c0)); box-shadow: 0 8px 22px rgba(110, 11, 255, 0.35); }
.home-feature__icon[data-color="2"] { background: linear-gradient(135deg, var(--c2), #ff9f0a); box-shadow: 0 8px 22px rgba(255, 45, 85, 0.35); }
.home-feature__icon[data-color="3"] { background: linear-gradient(135deg, var(--c3), var(--c2)); box-shadow: 0 8px 22px rgba(255, 159, 10, 0.35); }
.home-feature__icon[data-color="4"] { background: linear-gradient(135deg, var(--c4), var(--c5)); box-shadow: 0 8px 22px rgba(48, 209, 88, 0.35); }
.home-feature__icon[data-color="5"] { background: linear-gradient(135deg, var(--c5), var(--c0)); box-shadow: 0 8px 22px rgba(0, 200, 255, 0.35); }
.home-feature__icon[data-color="6"] { background: linear-gradient(135deg, var(--c6), var(--c1)); box-shadow: 0 8px 22px rgba(255, 59, 159, 0.35); }
.home-feature h3 {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: -0.015em;
  margin: 0 0 8px;
  color: var(--text-1);
}
.home-feature p { font-size: 14px; color: var(--text-3); line-height: 1.55; }

@media (max-width: 920px) { .home-features { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .home-features { grid-template-columns: 1fr; } }

/* ----- SECURITY DEEP DIVE ----- */
.home-security {
  display: grid;
  grid-template-columns: 1.05fr 0.85fr;
  gap: 60px;
  align-items: center;
}
.home-security h2 {
  font-size: clamp(26px, 3.4vw, 38px);
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1.12;
  margin: 14px 0 24px;
  color: var(--text-1);
}
.home-stack {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 20px;
}
.home-stack > li {
  display: grid;
  grid-template-columns: 44px 1fr;
  gap: 16px;
}
.home-stack i {
  width: 44px; height: 44px;
  border-radius: 12px;
  background: var(--surface-soft);
  border: 1px solid var(--border);
  color: var(--accent);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 22px;
}
.home-stack strong { display: block; font-size: 15px; color: var(--text-1); margin-bottom: 4px; }
.home-stack p { font-size: 14px; color: var(--text-3); margin: 0; }

.home-flow {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-xl);
  padding: 26px;
  backdrop-filter: var(--blur-2);
  -webkit-backdrop-filter: var(--blur-2);
  box-shadow: var(--shadow-2);
}
.home-flow__step {
  display: grid;
  grid-template-columns: 28px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 14px 16px;
  background: var(--surface-soft);
  border: 1px solid var(--border);
  border-radius: 14px;
}
.home-flow__step--accent {
  background: linear-gradient(135deg, var(--accent-glow), transparent);
  border-color: var(--accent);
}
.home-flow__num {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  display: inline-flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 13px;
}
.home-flow__step strong { font-size: 14px; color: var(--text-1); }
.home-flow__step code { font-size: 12px; color: var(--text-3); font-family: var(--mono); }
.home-flow__arrow {
  display: block;
  text-align: center;
  margin: 6px auto;
  color: var(--text-3);
}

@media (max-width: 920px) {
  .home-security { grid-template-columns: 1fr; gap: 40px; }
}

/* ----- CATEGORIES ----- */
.home-cats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 16px;
}
.home-cat {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 24px;
  text-align: center;
  backdrop-filter: var(--blur-1);
  -webkit-backdrop-filter: var(--blur-1);
  transition: transform var(--t1) var(--ease), border-color var(--t1) var(--ease);
}
.home-cat:hover { transform: translateY(-4px); border-color: var(--border-strong); }
.home-cat > i {
  font-size: 32px;
  width: 64px; height: 64px;
  border-radius: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, var(--c0), var(--accent-3));
  color: #fff;
  margin-bottom: 14px;
  box-shadow: 0 8px 22px var(--accent-glow);
}
.home-cat[data-color="2"] > i { background: linear-gradient(135deg, var(--c2), #ff9f0a); box-shadow: 0 8px 22px rgba(255, 45, 85, 0.35); }
.home-cat[data-color="3"] > i { background: linear-gradient(135deg, var(--c3), var(--c2)); box-shadow: 0 8px 22px rgba(255, 159, 10, 0.35); }
.home-cat[data-color="4"] > i { background: linear-gradient(135deg, var(--c4), var(--c5)); box-shadow: 0 8px 22px rgba(48, 209, 88, 0.35); }
.home-cat[data-color="6"] > i { background: linear-gradient(135deg, var(--c6), var(--c1)); box-shadow: 0 8px 22px rgba(255, 59, 159, 0.35); }
.home-cat h3 { font-size: 16px; font-weight: 700; margin: 0 0 6px; color: var(--text-1); }
.home-cat p { font-size: 13.5px; color: var(--text-3); }

/* ----- TRUST STRIP (below the hero) ----- */
.home-strip {
  padding: 22px 0;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  background: var(--surface-soft);
}
.home-strip__list {
  list-style: none; margin: 0; padding: 0;
  display: flex; flex-wrap: wrap;
  justify-content: center;
  gap: 14px 28px;
}
.home-strip__list li {
  display: inline-flex; align-items: center; gap: 8px;
  color: var(--text-2);
  font-size: 13.5px;
  font-weight: 500;
  letter-spacing: 0.01em;
}
.home-strip__list i {
  font-size: 18px;
  color: var(--accent);
}

/* ----- USE CASES ----- */
.home-usecases {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 18px;
}
.home-usecase {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 26px;
  backdrop-filter: var(--blur-1);
  -webkit-backdrop-filter: var(--blur-1);
  transition: transform var(--t2) var(--ease), border-color var(--t2) var(--ease), box-shadow var(--t2) var(--ease);
}
.home-usecase:hover {
  transform: translateY(-4px);
  border-color: var(--border-strong);
  box-shadow: var(--shadow-2);
}
.home-usecase__icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 54px; height: 54px;
  border-radius: 16px;
  background: linear-gradient(135deg, var(--c0), var(--accent-3));
  color: #fff;
  margin-bottom: 14px;
  box-shadow: 0 8px 22px var(--accent-glow);
}
.home-usecase__icon[data-color="1"] { background: linear-gradient(135deg, var(--c1, #6e0bff), var(--c0)); box-shadow: 0 8px 22px rgba(110, 11, 255, 0.35); }
.home-usecase__icon[data-color="2"] { background: linear-gradient(135deg, var(--c2), #ff9f0a); box-shadow: 0 8px 22px rgba(255, 45, 85, 0.35); }
.home-usecase__icon[data-color="3"] { background: linear-gradient(135deg, var(--c3), var(--c2)); box-shadow: 0 8px 22px rgba(255, 159, 10, 0.35); }
.home-usecase__icon[data-color="4"] { background: linear-gradient(135deg, var(--c4), var(--c5)); box-shadow: 0 8px 22px rgba(48, 209, 88, 0.35); }
.home-usecase__icon[data-color="6"] { background: linear-gradient(135deg, var(--c6), var(--c1)); box-shadow: 0 8px 22px rgba(255, 59, 159, 0.35); }
.home-usecase h3 {
  font-size: 17px;
  font-weight: 700;
  letter-spacing: -0.015em;
  margin: 0 0 8px;
  color: var(--text-1);
}
.home-usecase p { font-size: 14px; color: var(--text-3); line-height: 1.55; margin: 0; }

/* ----- Plans section embedded on the home ----- */
.home-plans { padding-top: 60px; padding-bottom: 60px; }
.home-plans .v-pricing-hero { margin-bottom: 32px; }
.home-plans .v-pricing-hero h1 {
  font-size: clamp(28px, 4vw, 42px);
  font-weight: 800;
  letter-spacing: -0.03em;
  margin: 0 0 10px;
  color: var(--text-1);
}
.home-plans .v-pricing-hero p {
  font-size: 16px;
  color: var(--text-3);
  max-width: 580px;
  margin: 0 auto;
}
.home-plans__compare {
  text-align: center;
  margin: 26px 0 0;
  font-size: 14px;
  color: var(--text-3);
}
.home-plans__compare a {
  color: var(--accent);
  text-decoration: none;
  font-weight: 600;
}
.home-plans__compare a:hover { text-decoration: underline; }

/* ----- Testimonials (home + public /password-generator) ----- */
.home-testimonials {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.home-testimonial {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 18px;
  padding: 22px 22px 20px;
  display: flex; flex-direction: column; gap: 14px;
  transition: border-color var(--t1) var(--ease), transform var(--t1) var(--ease-spring);
  position: relative;
}
.home-testimonial::before {
  content: '\201C'; /* comilla tipográfica */
  position: absolute; top: -10px; left: 18px;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 64px; line-height: 1; color: var(--accent);
  opacity: 0.18;
  pointer-events: none;
}
.home-testimonial:hover { border-color: var(--border-strong); transform: translateY(-2px); }
.home-testimonial__stars {
  display: inline-flex; gap: 1px; color: #f59e0b;
}
.home-testimonial__stars i { font-size: 18px; }
.home-testimonial__body {
  margin: 0; color: var(--text-2);
  font-size: 14px; line-height: 1.6;
  flex: 1;
}
.home-testimonial__foot {
  display: flex; align-items: center; gap: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}
.home-testimonial__avatar {
  width: 40px; height: 40px; border-radius: 50%;
  object-fit: cover; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
}
.home-testimonial__avatar--initial {
  background: linear-gradient(135deg, var(--accent), var(--accent-3, var(--accent)));
  color: #fff; font-weight: 700; font-size: 16px;
}
.home-testimonial__who { display: flex; flex-direction: column; line-height: 1.35; min-width: 0; }
.home-testimonial__who strong { color: var(--text-1); font-size: 14px; }
.home-testimonial__who span  { color: var(--text-3); font-size: 12px; }
@media (max-width: 920px) { .home-testimonials { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .home-testimonials { grid-template-columns: 1fr; } }

/* ----- Testimonial slider (when more than 3 items) -----
   Layout: las flechas son hermanas del track (no absolute), así viven
   FUERA del track sin solapar los cards. Una row flex con prev | track |
   next; los dots se cuelgan debajo. */
.home-testi-slider {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
}
.home-testi-slider__track {
  order: 2;
  flex: 1 1 0; min-width: 0;
  display: flex;
  gap: 18px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;            /* Firefox */
  -ms-overflow-style: none;          /* IE/Edge legacy */
  padding: 4px;
}
.home-testi-slider__track::-webkit-scrollbar { display: none; }
.home-testi-slider__track > .home-testimonial {
  flex: 0 0 calc((100% - 36px) / 3); /* 3 por vista (2 gaps de 18px) */
  scroll-snap-align: start;
  min-width: 0;
}
@media (max-width: 920px) {
  .home-testi-slider__track > .home-testimonial { flex: 0 0 calc((100% - 18px) / 2); }
}
@media (max-width: 600px) {
  .home-testi-slider__track > .home-testimonial { flex: 0 0 100%; }
}
.home-testi-slider__nav {
  flex: 0 0 auto;
  width: 42px; height: 42px;
  border-radius: 50%;
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text-1);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; padding: 0;
  box-shadow: 0 6px 18px rgba(0,0,0,0.10);
  transition: background var(--t1) var(--ease), border-color var(--t1) var(--ease), color var(--t1) var(--ease), transform var(--t1) var(--ease);
}
.home-testi-slider__nav:hover { color: var(--accent); border-color: var(--accent); transform: scale(1.06); }
.home-testi-slider__nav:disabled { opacity: 0.4; cursor: default; transform: none; color: var(--text-3); }
.home-testi-slider__nav--prev { order: 1; }
.home-testi-slider__nav--next { order: 3; }
.home-testi-slider__nav[hidden] { display: none; }
.home-testi-slider__nav i { font-size: 24px; }
.home-testi-slider__dots {
  order: 4;
  flex: 1 1 100%;
  display: flex; justify-content: center; gap: 8px;
  margin-top: 6px;
}
.home-testi-slider__dots[hidden] { display: none; }
.home-testi-slider__dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--border-strong); border: 0; padding: 0;
  cursor: pointer;
  transition: background var(--t1) var(--ease), transform var(--t1) var(--ease), width var(--t1) var(--ease);
}
.home-testi-slider__dot:hover { background: var(--text-3); }
.home-testi-slider__dot.is-active {
  background: var(--accent);
  width: 22px; border-radius: 999px;
}
@media (max-width: 600px) {
  /* En móvil ocultamos las flechas; el swipe nativo + dots bastan, así los
     cards ocupan todo el ancho disponible. */
  .home-testi-slider__nav { display: none; }
}

/* ----- FAQ (expand/collapse animated via grid-template-rows) ----- */
.home-faq {
  max-width: 820px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.home-faq__item {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-md);
  padding: 0 22px;
  transition: border-color var(--t2) var(--ease), background var(--t2) var(--ease), box-shadow var(--t2) var(--ease);
  overflow: hidden;
}
.home-faq__item:hover { border-color: var(--border-strong); }
.home-faq__item.is-open {
  border-color: var(--accent);
  background: var(--surface-2);
  box-shadow: 0 8px 28px var(--accent-glow);
}
.home-faq__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  width: 100%;
  padding: 18px 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  font-family: var(--font);
  font-size: 15.5px;
  font-weight: 600;
  color: var(--text-1);
  letter-spacing: -0.015em;
  user-select: none;
  text-align: left;
  outline: none;
}
.home-faq__q:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 4px;
  border-radius: 8px;
}
.home-faq__q i {
  transition: transform 0.4s var(--ease), color var(--t2) var(--ease);
  color: var(--text-3);
  flex-shrink: 0;
}
.home-faq__item.is-open .home-faq__q i { transform: rotate(180deg); color: var(--accent); }

.home-faq__a {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.42s var(--ease);
}
.home-faq__a-inner {
  overflow: hidden;
  color: var(--text-2);
  font-size: 14.5px;
  line-height: 1.65;
}
.home-faq__a-inner b, .home-faq__a-inner strong { color: var(--text-1); }
.home-faq__a-inner a { color: var(--accent); }
.home-faq__item.is-open .home-faq__a { grid-template-rows: 1fr; }
.home-faq__item.is-open .home-faq__a-inner { padding: 0 0 22px; }
/* Fallback para navegadores sin soporte de grid-template-rows interpolation */
@supports not (grid-template-rows: 1fr) {
  .home-faq__a { display: block; max-height: 0; overflow: hidden; transition: max-height 0.42s var(--ease); }
  .home-faq__item.is-open .home-faq__a { max-height: 800px; }
}

/* ----- FINAL CTA ----- */
.home-final__card {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--r-xl);
  padding: 60px 40px;
  text-align: center;
  overflow: hidden;
  backdrop-filter: var(--blur-2);
  -webkit-backdrop-filter: var(--blur-2);
}
.home-final__glow {
  position: absolute;
  inset: -50%;
  background: radial-gradient(circle at 50% 100%, var(--accent-glow), transparent 60%);
  pointer-events: none;
  z-index: 0;
}
.home-final__card > * { position: relative; z-index: 1; }
.home-final__card h2 {
  font-size: clamp(28px, 4vw, 42px);
  font-weight: 800;
  letter-spacing: -0.03em;
  margin: 0 0 12px;
  background: linear-gradient(135deg, var(--text-1), var(--accent));
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.home-final__card p {
  color: var(--text-2);
  font-size: 16px;
  margin: 0 0 26px;
}
.home-final__card .home-cta-row { justify-content: center; }

/* ----- FOOTER ----- */
.home-footer {
  padding: 50px 0 30px;
  border-top: 1px solid var(--border);
  margin-top: 40px;
}
.home-footer__inner {
  display: flex;
  flex-wrap: wrap;
  gap: 40px 60px;
  align-items: flex-start;
  justify-content: space-between;
}
.home-footer__brand {
  flex: 1 1 240px;
  max-width: 320px;
}
.home-footer__brand-logo img { height: 40px !important; }
.home-footer__brand-logo .v-brand__wordmark { font-size: 22px !important; }
.home-footer__brand p {
  margin: 10px 0 0;
  font-size: 13.5px;
  color: var(--text-3);
}
.home-footer__brand-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 18px;
  padding: 10px 18px;
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
}
.home-footer__brand-cta i { font-size: 18px; }
.home-footer__cols {
  display: flex;
  flex-wrap: wrap;
  gap: 32px 56px;
  flex: 1 1 auto;
  justify-content: flex-end;
}
.home-footer__col {
  flex: 0 0 auto;
  min-width: 140px;
}
.home-footer__col-title {
  margin: 0 0 14px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-3);
}
.home-footer__col-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: block;
}
.home-footer__col-list li { margin: 0 0 10px; }
.home-footer__col-list li:last-child { margin-bottom: 0; }
.home-footer__col-list a {
  color: var(--text-2);
  font-size: 14px;
  text-decoration: none;
  display: inline-block;
  transition: color var(--t1) var(--ease);
}
.home-footer__col-list a:hover { color: var(--accent); }
.home-footer__bottom {
  width: min(1180px, 92vw);
  margin: 30px auto 0;
  padding-top: 20px;
  border-top: 1px solid var(--border);
  text-align: center;
  font-size: 12.5px;
  color: var(--text-4);
}

@media (max-width: 720px) {
  .home-footer__inner { flex-direction: column; align-items: flex-start; gap: 32px; }
  .home-footer__brand { max-width: 100%; }
  .home-footer__cols { justify-content: flex-start; gap: 24px 56px; width: 100%; }
}

/* ----- Floating theme FAB (hidden on desktop, intended for mobile) ----- */
.home-fab-theme {
  display: none;
}

/* ----- Legal pages (/terms-of-service, /privacy-policy, …) ----- */
.legal-page { padding: 40px 0 80px; }
.legal-page .blog-breadcrumb-wrap { margin-bottom: 32px; }
.legal-page__head {
  text-align: center;
  max-width: 760px;
  margin: 0 auto 40px;
  padding: 0 16px;
}
.legal-page__icon {
  display: inline-flex; align-items: center; justify-content: center;
  width: 64px; height: 64px;
  margin: 0 auto 16px;
  border-radius: 18px;
  background: linear-gradient(135deg, var(--accent), var(--accent-3, var(--accent)));
  color: #fff;
  box-shadow: 0 12px 30px var(--accent-glow);
}
.legal-page__icon i { font-size: 32px; }
.legal-page__head h1 {
  font-size: clamp(32px, 4.5vw, 48px);
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.1;
  margin: 0 0 8px;
  color: var(--text-1);
}
.legal-page__updated { color: var(--text-3); font-size: 14px; margin: 0; }
.legal-page__body {
  max-width: 760px;
  margin: 0 auto;
  padding: 0 20px;
  color: var(--text-2);
  font-size: 16px;
  line-height: 1.7;
}
.legal-page__body h2 {
  font-size: 22px;
  font-weight: 800;
  letter-spacing: -0.015em;
  margin: 40px 0 12px;
  color: var(--text-1);
  padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}
.legal-page__body h2:first-child { margin-top: 0; }
.legal-page__body h3 {
  font-size: 17px;
  font-weight: 700;
  margin: 26px 0 8px;
  color: var(--text-1);
}
.legal-page__body p  { margin: 0 0 14px; }
.legal-page__body ul,
.legal-page__body ol { margin: 0 0 18px; padding-left: 22px; }
.legal-page__body li { margin: 0 0 6px; }
.legal-page__body strong { color: var(--text-1); font-weight: 700; }
.legal-page__body a { color: var(--accent); text-decoration: none; border-bottom: 1px solid var(--accent-glow); }
.legal-page__body a:hover { border-bottom-color: var(--accent); }
.legal-page__body code {
  font-family: var(--mono, ui-monospace, monospace);
  font-size: 13.5px;
  background: var(--surface-soft);
  padding: 1px 6px;
  border-radius: 5px;
}
.legal-page__body blockquote {
  margin: 18px 0;
  padding: 14px 18px;
  border-left: 3px solid var(--accent);
  background: var(--surface-soft);
  border-radius: 0 10px 10px 0;
  color: var(--text-2);
}
.legal-page__body table {
  width: 100%; border-collapse: collapse; margin: 18px 0;
  background: var(--surface);
  border-radius: 10px; overflow: hidden;
}
.legal-page__body th, .legal-page__body td {
  padding: 10px 14px; text-align: left;
  border-bottom: 1px solid var(--border);
  font-size: 14.5px;
}
.legal-page__body th { background: var(--surface-soft); font-weight: 700; color: var(--text-1); }

.legal-page__empty {
  text-align: center;
  padding: 80px 20px;
  color: var(--text-3);
}
.legal-page__empty i { font-size: 64px; color: var(--text-4); display: block; margin: 0 auto 16px; }
.legal-page__empty h1 { font-size: 28px; font-weight: 800; color: var(--text-1); margin: 0 0 8px; }
.legal-page__empty p  { margin: 0 0 22px; }

.legal-page__foot {
  max-width: 760px;
  margin: 60px auto 0;
  padding: 28px 20px 0;
  border-top: 1px solid var(--border);
  text-align: center;
  color: var(--text-3);
  font-size: 14px;
}
.legal-page__foot p { margin: 0 0 22px; }
.legal-page__foot a { color: var(--accent); text-decoration: none; }
.legal-page__other {
  display: flex; flex-wrap: wrap; justify-content: center; gap: 12px;
}
.legal-page__other a {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 10px 16px;
  border: 1px solid var(--border);
  border-radius: 999px;
  font-size: 13.5px; font-weight: 600;
  color: var(--text-2);
  text-decoration: none;
  transition: border-color var(--t1) var(--ease), color var(--t1) var(--ease), background var(--t1) var(--ease);
}
.legal-page__other a:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: var(--surface-soft);
}
.legal-page__other i { font-size: 18px; }

/* ----- Reveal on scroll ----- */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.7s var(--ease), transform 0.7s var(--ease);
}
.reveal.is-in {
  opacity: 1;
  transform: translateY(0);
}
