/* ==========================================================================
   CADIPA — hoja de estilos compartida (extraída de src/styles.css + Tailwind
   utility classes usadas en los componentes del proyecto Lovable original).
   ========================================================================== */

:root{
  --radius: 0.625rem;
  --background: oklch(0.99 0.003 250);
  --foreground: oklch(0.22 0.05 260);
  --card: oklch(1 0 0);
  --gradient-brand: linear-gradient(135deg, oklch(0.32 0.16 262), oklch(0.48 0.18 258));
  --primary: oklch(0.32 0.16 262);
  --primary-foreground: oklch(0.99 0.003 250);
  --secondary: oklch(0.86 0.21 92);
  --secondary-foreground: oklch(0.22 0.05 260);
  --muted: oklch(0.968 0.007 247.896);
  --muted-foreground: oklch(0.554 0.046 257.417);
  --border: oklch(0.929 0.013 255.508);
  --alt-bg: oklch(0.96 0.01 260);
  --wa: #25D366;
}
*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--background);
  color:var(--foreground);
  font-family:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  display:flex;flex-direction:column;min-height:100vh;
}
a{text-decoration:none;color:inherit;}
img{max-width:100%;display:block;}
.icon{width:16px;height:16px;flex-shrink:0;stroke:currentColor;}
.icon-lg{width:24px;height:24px;}
.wrap{max-width:1280px;margin:0 auto;padding:0 24px;}
.wrap-narrow{max-width:960px;margin:0 auto;padding:0 24px;}
.wrap-prose{max-width:768px;margin:0 auto;padding:0 24px;}

/* ---------- Header ---------- */
header.site{position:sticky;top:0;z-index:50;background:color-mix(in oklch, var(--background) 90%, transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);}
header.site .bar{max-width:1280px;margin:0 auto;padding:0 24px;height:80px;display:flex;align-items:center;justify-content:space-between;gap:16px;}
header.site .logo img{height:48px;width:auto;}
nav.desktop{display:none;align-items:center;gap:24px;font-size:14px;font-weight:500;color:var(--muted-foreground);}
nav.desktop a:hover{color:var(--primary);}
nav.desktop a.active{color:var(--primary);font-weight:600;}
.header-actions{display:flex;align-items:center;gap:8px;}
.hide-mobile{display:none;}
nav.mobile{display:flex;gap:16px;overflow-x:auto;padding:10px 24px;border-top:1px solid var(--border);font-size:12px;font-weight:500;color:var(--muted-foreground);white-space:nowrap;}
nav.mobile a:hover{color:var(--primary);}
nav.mobile a.active{color:var(--primary);font-weight:600;}
@media(min-width:1024px){ nav.desktop{display:flex;} nav.mobile{display:none;} }
@media(min-width:768px){ .hide-mobile{display:inline-flex;} }

/* ---------- Buttons / badges ---------- */
.btn{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:10px 20px;font-size:14px;font-weight:600;white-space:nowrap;transition:.15s;border:0;cursor:pointer;}
.btn-primary{background:var(--primary);color:var(--primary-foreground);}
.btn-primary:hover{opacity:.9;}
.btn-secondary{background:var(--secondary);color:var(--secondary-foreground);box-shadow:0 1px 3px rgba(0,0,0,.15);}
.btn-secondary:hover{filter:brightness(.95);}
.btn-wa{background:var(--wa);color:#fff;box-shadow:0 1px 3px rgba(0,0,0,.15);}
.btn-wa:hover{filter:brightness(.95);}
.btn-outline{border:1px solid var(--border);font-weight:600;}
.btn-outline:hover{border-color:var(--primary);}
.btn-lg{border-radius:8px;height:44px;padding:0 24px;}
.badge{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:6px 14px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;}
.badge-secondary{background:color-mix(in oklch, var(--secondary) 30%, transparent);color:var(--primary);}
.badge-outline{border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.1);color:#fff;}

/* ---------- Layout helpers ---------- */
.section{padding:96px 0;}
.section-sm{padding:64px 0;}
.section-alt{background:var(--alt-bg);}
.section-gradient{background:var(--gradient-brand);}
.eyebrow{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--primary);}
.eyebrow-light{color:var(--secondary);}
h2.title{margin:12px 0 0;font-size:32px;font-weight:700;letter-spacing:-.02em;}
@media(min-width:768px){ h2.title{font-size:44px;} }
.lead{margin-top:16px;font-size:18px;color:var(--muted-foreground);max-width:640px;}
.center{text-align:center;margin-left:auto;margin-right:auto;}
.grid-2{display:grid;gap:32px;grid-template-columns:1fr;}
.grid-3{display:grid;gap:20px;grid-template-columns:1fr;}
.grid-6{display:grid;gap:16px;grid-template-columns:1fr;}
@media(min-width:640px){ .grid-6{grid-template-columns:1fr 1fr;} }
@media(min-width:768px){ .grid-2{grid-template-columns:1fr 1fr;} .grid-3{grid-template-columns:repeat(3,1fr);} }

/* ---------- Cards ---------- */
.card{border-radius:16px;border:1px solid var(--border);background:var(--card);}
.card-hover{transition:.2s;}
.card-hover:hover{border-color:var(--primary);box-shadow:0 20px 40px -20px rgba(0,0,0,.2);transform:translateY(-2px);}
.icon-circle{display:inline-flex;height:44px;width:44px;align-items:center;justify-content:center;border-radius:12px;background:color-mix(in oklch, var(--primary) 10%, transparent);color:var(--primary);flex-shrink:0;}
.feature-row{display:flex;gap:12px;border-radius:12px;padding:12px;}
.feature-row:hover{background:color-mix(in oklch, var(--primary) 5%, transparent);}
.feature-row .title{font-weight:600;font-size:14px;}
.feature-row .desc{font-size:12px;color:var(--muted-foreground);}

/* ---------- Page hero (interior pages) ---------- */
.page-hero{position:relative;overflow:hidden;padding:64px 0;isolation:isolate;}
.page-hero img.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(4px);transform:scale(1.05);z-index:-3;}
.page-hero .overlay1{position:absolute;inset:0;background:color-mix(in oklch, var(--primary) 85%, transparent);z-index:-2;}
.page-hero .overlay2{position:absolute;inset:0;opacity:.7;background:var(--gradient-brand);mix-blend-mode:multiply;z-index:-1;}
.page-hero .inner{color:var(--primary-foreground);}
.page-hero h1{margin-top:12px;font-size:36px;font-weight:700;letter-spacing:-.02em;text-shadow:0 2px 8px rgba(0,0,0,.25);}
.page-hero p{margin-top:16px;font-size:18px;color:rgba(255,255,255,.9);max-width:720px;}
@media(min-width:768px){ .page-hero{padding:80px 0;} .page-hero h1{font-size:48px;} }

/* ---------- Home hero carousel ---------- */
.hero-carousel{position:relative;overflow:hidden;height:640px;}
@media(min-width:768px){ .hero-carousel{height:720px;} }
.hero-slide{position:absolute;inset:0;opacity:0;transition:opacity 1s;}
.hero-slide.active{opacity:1;}
.hero-slide img{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;transform:scale(1.05);}
.hero-slide .grad{position:absolute;inset:0;background:linear-gradient(120deg, oklch(0.22 0.13 262 / 0.92) 0%, oklch(0.32 0.16 262 / 0.75) 60%, oklch(0.32 0.16 262 / 0.55) 100%);}
.hero-content{position:relative;z-index:10;max-width:1280px;margin:0 auto;padding:0 24px;height:100%;display:grid;gap:32px;align-items:center;grid-template-columns:1fr;color:var(--primary-foreground);}
@media(min-width:768px){ .hero-content{grid-template-columns:1.4fr 1fr;} }
.hero-text{max-width:640px;position:relative;}
.hero-slide-text{display:none;}
.hero-slide-text.active{display:block;}
.hero-slide-text h1{margin-top:20px;font-size:38px;font-weight:700;letter-spacing:-.02em;}
.hero-slide-text p{margin-top:16px;font-size:18px;color:rgba(255,255,255,.85);max-width:640px;}
@media(min-width:768px){ .hero-slide-text h1{font-size:56px;} }
.hero-dots{margin-top:40px;display:flex;align-items:center;gap:8px;}
.hero-dots button{height:6px;border-radius:999px;background:rgba(255,255,255,.4);border:0;cursor:pointer;width:20px;transition:.2s;}
.hero-dots button.active{width:40px;background:var(--secondary);}
.hero-logo{display:none;justify-content:flex-end;align-items:center;}
.hero-logo img{max-height:280px;width:auto;filter:drop-shadow(0 10px 30px rgba(0,0,0,.4));}
@media(min-width:768px){ .hero-logo{display:flex;} }

/* ---------- Quote form ---------- */
.quote-form{border-radius:16px;background:var(--card);box-shadow:0 25px 50px -12px rgba(0,0,0,.25);border:1px solid var(--border);padding:24px;}
@media(min-width:768px){ .quote-form{padding:40px;} }
.quote-form-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.quote-form-head h2{font-size:26px;font-weight:700;color:var(--primary);}
.quote-form-head p{margin-top:4px;font-size:14px;color:var(--muted-foreground);}
.quote-grid{margin-top:24px;display:grid;gap:16px;grid-template-columns:1fr;}
@media(min-width:768px){ .quote-grid{grid-template-columns:repeat(3,1fr);} }
.field label{font-size:14px;font-weight:600;color:color-mix(in oklch, var(--foreground) 80%, transparent);}
.field input, .field select, .field textarea{
  margin-top:6px;width:100%;height:44px;border-radius:8px;border:1px solid var(--border);
  background:var(--background);padding:0 12px;font-size:14px;outline:none;font-family:inherit;color:inherit;
}
.field textarea{height:auto;padding:10px 12px;min-height:100px;resize:vertical;}
.field select{appearance:auto;}
.quote-submit-row{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.quote-submit-row p{font-size:12px;color:var(--muted-foreground);}
.quote-submit-row button{height:48px;padding:0 32px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;box-shadow:0 10px 25px -5px rgba(0,0,0,.2);}

/* ---------- Service cards (home + list) ---------- */
.service-card{position:relative;overflow:hidden;border-radius:24px;border:1px solid var(--border);background:var(--card);transition:.2s;}
.service-card:hover{box-shadow:0 25px 50px -12px rgba(0,0,0,.25);}
.service-card.highlight{border-color:var(--secondary);box-shadow:0 0 0 2px color-mix(in oklch, var(--secondary) 40%, transparent);}
.service-card .media{position:relative;height:224px;overflow:hidden;}
.service-card .media img{position:relative;height:100%;width:100%;object-fit:cover;}
.service-card .media .fade{position:absolute;inset:0;background:linear-gradient(to top, color-mix(in oklch, var(--primary) 70%, transparent), transparent);}
.service-card .media .tag{position:absolute;top:16px;left:16px;}
.service-card .media .ic{position:absolute;bottom:16px;left:16px;display:inline-flex;height:56px;width:56px;align-items:center;justify-content:center;border-radius:16px;background:var(--primary);color:var(--primary-foreground);box-shadow:0 10px 20px rgba(0,0,0,.25);}
.service-card .body{padding:32px;}
.service-card .body h3{font-size:22px;font-weight:700;}
.service-card .body p.desc{margin-top:12px;color:var(--muted-foreground);}
.service-card ul.features{margin:20px 0 0;padding:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:14px;}
.service-card ul.features li{display:flex;align-items:flex-start;gap:8px;}
.service-card ul.features li svg{color:var(--secondary);flex-shrink:0;margin-top:2px;}
.service-card .actions{margin-top:24px;display:flex;flex-wrap:wrap;gap:12px;}

.specialty-card{border-radius:16px;background:var(--card);border:1px solid var(--border);padding:24px;transition:.2s;display:block;}
.specialty-card:hover{border-color:var(--primary);box-shadow:0 10px 25px -5px rgba(0,0,0,.15);}
.specialty-card h3{margin-top:16px;font-weight:700;font-size:18px;}
.specialty-card p{margin-top:6px;font-size:14px;color:var(--muted-foreground);}
.specialty-card .more{margin-top:12px;display:inline-block;font-size:14px;font-weight:600;color:var(--primary);}

/* ---------- Coverage / map cards ---------- */
.map-card{border-radius:24px;border:1px solid var(--border);background:var(--card);box-shadow:0 10px 25px -5px rgba(0,0,0,.15);overflow:hidden;}
.map-card-head{padding:20px;display:flex;align-items:center;justify-content:space-between;}
.map-card-head .city{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--primary);}
.map-card-head .label{margin-top:2px;font-size:14px;color:var(--muted-foreground);}
.map-card iframe{width:100%;height:288px;border:0;display:block;}

/* ---------- Branch / sucursal cards ---------- */
.branch-card{border-radius:16px;border:1px solid var(--border);background:var(--card);padding:24px;display:block;transition:.2s;}
.branch-card:hover{border-color:var(--primary);box-shadow:0 10px 25px -5px rgba(0,0,0,.15);}
.branch-code{display:inline-flex;height:40px;width:56px;align-items:center;justify-content:center;border-radius:6px;background:var(--primary);color:var(--primary-foreground);font-size:12px;font-weight:700;}
.branch-card h3{margin-top:16px;font-size:18px;font-weight:700;}
.branch-card p.addr{margin-top:8px;font-size:14px;color:var(--muted-foreground);}
.branch-card p.hours{margin-top:12px;font-size:12px;font-weight:500;display:flex;align-items:center;gap:6px;}

/* ---------- Viva/Volaris banner ---------- */
.airline-badge{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;border-radius:16px;border:1px solid var(--border);background:var(--card);padding:24px 40px;box-shadow:0 10px 25px -5px rgba(0,0,0,.15);}
.airline-badge .name{font-size:30px;font-weight:900;letter-spacing:-.02em;color:var(--primary);}
.airline-badge .sub{margin-top:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted-foreground);}

/* ---------- Blog cards ---------- */
.blog-card{border-radius:16px;border:1px solid var(--border);background:var(--card);overflow:hidden;transition:.2s;display:block;}
.blog-card:hover{border-color:var(--primary);box-shadow:0 20px 40px -20px rgba(0,0,0,.25);transform:translateY(-3px);}
.blog-card .thumb{position:relative;aspect-ratio:16/9;overflow:hidden;}
.blog-card .thumb img{height:100%;width:100%;object-fit:cover;}
.blog-card .thumb .cat{position:absolute;top:12px;left:12px;}
.blog-card .body{padding:24px;}
.blog-card h3{font-size:18px;font-weight:700;}
.blog-card p{margin-top:8px;font-size:14px;color:var(--muted-foreground);}
.blog-card .meta{margin-top:16px;display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--muted-foreground);}
.blog-card .meta .more{font-weight:600;color:var(--primary);}

/* ---------- FAQ accordion ---------- */
dl.faq{margin-top:40px;}
dl.faq details{padding:20px 0;border-top:1px solid var(--border);}
dl.faq details:first-child{border-top:0;}
dl.faq summary{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;cursor:pointer;list-style:none;}
dl.faq summary::-webkit-details-marker{display:none;}
dl.faq dt{font-weight:600;}
dl.faq .plus{margin-top:2px;height:24px;width:24px;flex-shrink:0;border-radius:999px;background:color-mix(in oklch, var(--secondary) 30%, transparent);color:var(--primary);display:inline-flex;align-items:center;justify-content:center;font-weight:700;transition:.2s;}
dl.faq details[open] .plus{transform:rotate(45deg);}
dl.faq dd{margin:12px 0 0;font-size:14px;color:var(--muted-foreground);line-height:1.6;}

/* ---------- Footer ---------- */
footer.site{background:var(--primary);color:var(--primary-foreground);}
.footer-grid{max-width:1280px;margin:0 auto;padding:56px 24px;display:grid;gap:48px;grid-template-columns:1fr;}
@media(min-width:768px){ .footer-grid{grid-template-columns:repeat(3,1fr);} }
footer.site img.logo-white{height:64px;width:auto;object-fit:contain;}
footer.site p.tag{margin-top:16px;font-size:14px;color:rgba(255,255,255,.75);max-width:320px;}
.footer-actions{margin-top:24px;display:flex;flex-wrap:wrap;gap:12px;}
.footer-actions a{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:8px 16px;font-size:14px;font-weight:600;}
footer.site h4{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--secondary);}
footer.site ul{margin:16px 0 0;padding:0;list-style:none;font-size:14px;color:rgba(255,255,255,.8);}
footer.site ul.menu-list{display:grid;grid-template-columns:1fr 1fr;gap:4px 32px;}
footer.site ul.contact-list li{display:flex;align-items:center;gap:8px;margin-bottom:12px;}
footer.site a:hover{color:var(--secondary);}
.footer-bottom{border-top:1px solid rgba(255,255,255,.1);}
.footer-bottom .wrap{padding:20px 24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;font-size:12px;color:rgba(255,255,255,.6);}
.footer-bottom .links{display:flex;align-items:center;gap:20px;}

/* ---------- Floating WhatsApp ---------- */
.floating-wa{position:fixed;bottom:24px;right:24px;z-index:50;display:inline-flex;align-items:center;gap:8px;border-radius:999px;background:var(--wa);color:#fff;padding:16px 20px;font-weight:600;box-shadow:0 20px 40px rgba(0,0,0,.25);}
.floating-wa span.label{display:none;}
@media(min-width:640px){ .floating-wa span.label{display:inline;} }

/* ---------- Blog post hero ---------- */
.post-hero{position:relative;height:380px;overflow:hidden;}
.post-hero img{position:absolute;inset:0;height:100%;width:100%;object-fit:cover;}
.post-hero .grad{position:absolute;inset:0;background:linear-gradient(120deg, oklch(0.22 0.13 262 / 0.92) 0%, oklch(0.32 0.16 262 / 0.75) 100%);}
.post-hero .inner{position:relative;z-index:10;height:100%;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:40px;color:var(--primary-foreground);}
.post-hero .inner h1{margin-top:16px;font-size:32px;font-weight:700;letter-spacing:-.02em;}
.post-hero .inner time{margin-top:12px;display:block;font-size:14px;color:rgba(255,255,255,.8);}
@media(min-width:768px){ .post-hero .inner h1{font-size:38px;} }

/* ---------- Misc content pages (nosotros, convenios, políticas, privacidad) ---------- */
.prose h2{margin-top:40px;font-size:24px;font-weight:700;}
.prose h2:first-child{margin-top:0;}
.prose p{margin-top:12px;color:var(--muted-foreground);line-height:1.7;}
.prose ul{margin-top:12px;padding-left:20px;color:var(--muted-foreground);line-height:1.8;}
.pending-note{border-radius:12px;border:1px solid var(--secondary);background:color-mix(in oklch, var(--secondary) 15%, transparent);padding:12px 16px;font-size:14px;color:color-mix(in oklch, var(--foreground) 80%, transparent);}
.pending-note strong{color:var(--primary);}

/* ---------- Table (sucursales / políticas) ---------- */
table.data-table{width:100%;border-collapse:collapse;font-size:14px;}
table.data-table th, table.data-table td{text-align:left;padding:12px 16px;border-bottom:1px solid var(--border);}
table.data-table th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted-foreground);}


/* 
==========================================================================
  Validación de formularios
========================================================================== */

/* Leyendas debajo de cada campo (ej: "Mínimo 2 caracteres") */
.field .hint {
  display: block;
  margin-top: 4px;
  font-size: 11px;
  color: var(--muted-foreground);
}

/* Mensaje de error por campo (oculto por defecto) */
.field .field-error {
  display: none;
  margin-top: 4px;
  font-size: 12px;
  color: #dc2626;
  font-weight: 600;
}

/* Cuando el campo tiene error, se marca en rojo */
.field.has-error input,
.field.has-error select,
.field.has-error textarea {
  border-color: #dc2626;
  background: color-mix(in oklch, #dc2626 4%, var(--background));
}

/* Y se muestra el mensaje de error */
.field.has-error .field-error {
  display: block;
}

/* ==========================================================================
   Botón bloqueado con spinner
   ========================================================================== */

/* Cuando el botón está deshabilitado */
.btn[disabled] {
  opacity: .7;
  cursor: not-allowed;
  pointer-events: none;
}

/* Spinner circular giratorio */
.btn .spinner {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(255, 255, 255, .4);
  border-top-color: #fff;
  border-radius: 50%;
  animation: spin .7s linear infinite;
  margin-right: 6px;
  vertical-align: -2px;
}

@keyframes spin {
  to { transform: rotate(360deg); }
}