@layer base, components, utilities, overrides;
@layer base{
/* ── Auditoría 2026-08-07: contraste AA ──────────────────────────────────
   --teal (#01A298) rinde 3.01:1 sobre el fondo claro: sirve para bordes e
   iconos (WCAG 1.4.11) pero no para texto <18.66px (WCAG 1.4.3 pide 4.5:1).
   --teal-text (#00706A) rinde 4.98:1. --teal-solid (#017A72) rinde 4.55:1
   con texto blanco encima, para rellenos de botón.                        */
:root{--teal-text:#00706A;--teal-solid:#017A72;--teal-ring:#00706A;--teal-on-dark:#5BE8DE;
       /* Texto secundario sobre el reverso oscuro. Un único valor en lugar de un
          alfa distinto por elemento (.55, .62, .75, .78): con el velo al 72% de
          por medio, cualquier alfa por debajo de .85 cae bajo 4,5:1 en el peor
          caso (foto blanca). */
       --ink-dim:rgba(255,255,255,.88)}

@keyframes pulse{0%,to{opacity:.6}50%{opacity:1}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes scrollPulse{0%,to{opacity:.5;transform:scaleY(1)}50%{opacity:1;transform:scaleY(1.15)}}@keyframes seatsPulse{0%,to{opacity:1}50%{opacity:.4}}/* seatsBlink retirado: lo reemplaza ltHaloRing sobre el pseudo-elemento. */:root{--brand-teal:#01A298;--brand-teal-dark:#019992;--brand-gold:#ffd54d;--brand-gold-dark:#ffc107;--ink:#1a3a36;--ink-soft:#2c4a45;--paper:#fff;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-pill:999px;--shadow-sm:0 2px 6px rgba(0,0,0,.15);--shadow-md:0 4px 14px rgba(0,0,0,.20);--shadow-lg:0 8px 22px rgba(0,0,0,.25);--dur-fast:150ms;--dur-med:250ms;--ease-out:cubic-bezier(.16,1,.3,1);--teal:#01A298;--teal-d:#018a81;--teal-l:#33c5bd;--teal-bg:rgba(1,162,152,.08);--pink:#CD345B;--pink-d:#a82849;--pink-bg:rgba(205,52,91,.08);--green:#22c55e;--amber:#f59e0b;--red:#ef4444;--blue:#3b82f6;--dark:#121212;--dark-2:#1e1e1e;--dark-3:#2a2a2a;--white:#fff;--gray-bg:#f5f5f5;--gray-bg-2:#f9f9f9;--gray-line:#e0e0e0;--gray-line-2:#d0d4da;--gray-text:#666;--gray-text-2:#888;--hh:96px;--ease:cubic-bezier(.4,0,.2,1)}*,::after,::before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:"Open Sans",sans-serif;background:var(--white);color:var(--dark);-webkit-font-smoothing:antialiased;line-height:1.55}img{display:block;max-width:100%;image-rendering:auto}a{color:inherit;text-decoration:none}button{cursor:pointer;border:0;background:0 0}ul{list-style:none}button,input,select,textarea{font-family:inherit;color:inherit}.mono{font-family:"Montserrat",monospace}::selection{background:var(--teal-solid);color:#fff}#operator-strip{background:var(--dark);padding:28px 0}.op-strip-in,nav.main{display:flex;justify-content:center}.op-strip-in{max-width:1200px;margin:0 auto;padding:0 28px;align-items:center;gap:14px;flex-wrap:wrap}.op-strip-in span{font-family:"Montserrat",sans-serif;font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.75);display:inline-flex;align-items:center;gap:9px}.op-strip-in .dot{width:6px;height:6px;border-radius:50%;background:var(--teal);box-shadow:0 0 10px var(--teal);animation:pulse 2s infinite}.op-strip-in .accent{color:var(--teal)}.op-strip-in .sep{opacity:.4;font-weight:400}@media (max-width:680px){#operator-strip{padding:20px 0}.op-strip-in{padding:0 14px;gap:8px}.op-strip-in span{font-size:10px;letter-spacing:.12em}.op-strip-in .sep{display:none}}#hdr{position:fixed;top:0;left:0;right:0;z-index:900;height:var(--hh);background:rgba(18,18,18,.88);backdrop-filter:blur(10px) saturate(1.2);-webkit-backdrop-filter:blur(10px) saturate(1.2);transition:background .3s,box-shadow .3s}#hdr.scrolled{background:var(--dark);box-shadow:0 2px 20px rgba(0,0,0,.5)}.hdr-in,.logo{align-items:center}.hdr-in{max-width:1400px;margin:0 auto;height:100%;padding:0 28px;display:grid;grid-template-columns:1fr auto 1fr;gap:20px}.logo{display:flex;gap:10px;text-decoration:none;flex-shrink:0;justify-self:end;padding-right:8px}.logo img{height:104px;width:auto;filter:brightness(0) invert(1);transition:height .25s ease}nav.main{gap:6px;margin:0;justify-self:center}.dropdown a strong,.nlink{font-family:"Montserrat",sans-serif;font-weight:700}.nlink,nav.main{align-items:center}.nlink{padding:11px 20px;border-radius:6px;font-size:15.5px;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.9);transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;white-space:nowrap;cursor:pointer;display:inline-flex;gap:7px}.nlink:hover{color:#fff;background:rgba(255,255,255,.08)}.hero-title span,.nlink.active,.nlink.teal{color:var(--teal)}.nlink.teal:hover{background:rgba(1,162,152,.15)}.nlink,.nlink-drop{position:relative}.nlink-drop>.drop-arrow{width:10px;height:10px;opacity:.6;transition:transform .2s}.nlink-drop:hover>.drop-arrow{transform:rotate(180deg)}.dropdown{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%) translateY(8px);min-width:280px;background:var(--dark-2);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:6px;opacity:0;pointer-events:none;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;box-shadow:0 20px 50px rgba(0,0,0,.5)}.nlink-drop:hover .dropdown{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}.dropdown a,.dropdown a span{font-size:13px;font-weight:400}.dropdown a{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:6px;font-family:"Open Sans",sans-serif;letter-spacing:0;text-transform:none;color:rgba(255,255,255,.85);transition:background .15s}.dropdown a:hover{background:rgba(1,162,152,.12);color:#fff}.dropdown a .ddi,.hdr-right{display:flex;align-items:center;flex-shrink:0}.dropdown a .ddi{width:30px;height:30px;border-radius:6px;background:rgba(1,162,152,.15);justify-content:center}.dropdown a .ddi svg{width:14px;height:14px;color:var(--teal)}.dropdown a strong{display:block;font-size:12px;color:#fff;letter-spacing:.04em}.dropdown a span{display:block;color:rgba(255,255,255,.55);margin-top:2px;line-height:1.4}.hdr-right{gap:14px;justify-self:end}.lang-menu a,.usd-pill{align-items:center;cursor:pointer}.lang-btn,.usd-pill{display:inline-flex;border-radius:6px;transition:color .15s,background-color .15s,border-color .15s,box-shadow .15s,opacity .15s,transform .15s}.usd-pill{white-space:nowrap;padding:9px 18px;border:1.5px solid var(--teal);background:rgba(1,162,152,.18);font-family:"Montserrat",sans-serif;font-size:15px;font-weight:800;letter-spacing:.02em;color:var(--teal);box-shadow:0 2px 10px rgba(1,162,152,.15)}.usd-pill:hover{background:rgba(1,162,152,.2)}.usd-pill .dot{width:8px;height:8px;border-radius:50%;background:var(--teal);box-shadow:0 0 12px var(--teal);animation:pulse 2s infinite}.lang-btn{align-items:center;gap:7px;padding:8px 12px;border:1px solid rgba(255,255,255,.2);font-size:14px;font-weight:700;color:rgba(255,255,255,.92)}.lang-btn:hover{border-color:var(--teal);color:var(--teal)}.lang-btn .flag{font-size:14px;line-height:1}.lang-btn .arrow{width:9px;opacity:.5}#hero,.lang-wrap{position:relative}.lang-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:170px;background:var(--dark-2);border:1px solid rgba(255,255,255,.1);border-radius:7px;padding:5px;opacity:0;pointer-events:none;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;transform:translateY(6px);box-shadow:0 18px 40px rgba(0,0,0,.5);z-index:1000}.lang-wrap.open .lang-menu{opacity:1;pointer-events:auto;transform:translateY(0)}.lang-menu a{display:flex;gap:10px;padding:7px 10px;border-radius:5px;font-size:13px;color:rgba(255,255,255,.85)}.lang-menu a:hover{background:rgba(1,162,152,.15);color:#fff}.lang-menu a.cur{color:var(--teal);background:rgba(1,162,152,.15)}.ig-btn{display:inline-flex;align-items:center;justify-content:center;color:rgba(255,255,255,.7);font-size:20px;transition:color .2s}.adm-card.pink-accent .adm-icon svg,.ig-btn:hover{color:var(--pink)}.ig-btn svg{width:22px;height:22px}.view{display:none;animation:fadeIn .3s ease}.view.active{display:block}#hero{height:100vh;height:100svh;min-height:560px;overflow:hidden;background:#0a1a1d;background-image:image-set(url(img/hero-fallback-1280w.avif) type("image/avif"),url(img/hero-fallback-768w.jpg) type("image/jpeg"));background-position:center;background-size:cover;background-repeat:no-repeat}#vidWrap{pointer-events:none}#vidWrap video{width:100%;height:100%;min-width:100%;min-height:100%;object-fit:cover;object-position:center;display:block;filter:contrast(1.15) saturate(1.3) brightness(1.05);backface-visibility:hidden}.hero-overlay{background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.05) 40%,rgba(0,0,0,.25) 75%,rgba(0,0,0,.55) 100%)}#vidWrap,#vidWrap video,.hero-content,.hero-overlay{position:absolute;inset:0}.hero-content{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 20px;color:#fff;max-width:1100px;margin:0 auto;left:50%;transform:translateX(-50%)}.hero-badge,.hero-title{font-family:"Montserrat",sans-serif}.hero-badge{font-size:13px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--teal);background:rgba(1,162,152,.22);border:1px solid rgba(1,162,152,.55);border-radius:20px;padding:6px 18px;margin-bottom:24px;text-shadow:0 1px 6px rgba(0,0,0,.6);backdrop-filter:blur(2px)}.hero-title{font-size:clamp(2.4rem,5.5vw,5rem);font-weight:900;line-height:1.05;letter-spacing:-.02em;margin-bottom:20px;text-shadow:0 2px 20px rgba(0,0,0,.7),0 0 30px rgba(0,0,0,.4)}.hero-sub{font-size:1.2rem;font-weight:600;letter-spacing:.01em;opacity:1;max-width:880px;margin:0 auto 36px;text-shadow:0 2px 14px rgba(0,0,0,.85),0 0 24px rgba(0,0,0,.4);color:#fff}.hero-cta{display:inline-flex;align-items:center;gap:10px;background:var(--teal-solid);color:#fff;font-family:"Montserrat",sans-serif;font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:14px 34px;border-radius:4px;transition:background .2s,transform .2s}.hero-cta:hover{background:var(--teal-d);transform:translateY(-2px)}[data-usd-banner],.hero-scroll{display:flex;align-items:center}.hero-scroll{position:absolute;bottom:60px;left:50%;transform:translateX(-50%);flex-direction:column;gap:10px;color:rgba(255,255,255,.5);font-size:13px;letter-spacing:.12em;text-transform:uppercase}.scroll-line{width:1px;height:40px;background:linear-gradient(to bottom,rgba(255,255,255,.5),transparent);animation:scrollPulse 2s infinite}.hero-cta--bottom{margin-top:14px;font-size:11px;padding:12px 28px}[data-usd-banner]{background:var(--gray-bg-2);border-bottom:1px solid var(--gray-line);padding:10px 28px;justify-content:center;gap:16px;flex-wrap:wrap}.usd-banner-val{font-family:"Montserrat",sans-serif;font-size:1.1rem;font-weight:900;color:var(--teal)}.usd-banner-lbl{font-size:.75rem;color:var(--gray-text);letter-spacing:.08em;text-transform:uppercase}.section-head p,.usd-banner-date{font-size:.83rem;color:var(--gray-text)}#packs{padding:80px 0;background:var(--white)}.section-in{max-width:1320px;margin:0 auto;padding:0 24px}.section-head{text-align:center;margin-bottom:40px}.section-head h2{font-size:clamp(1.6rem,3vw,2.6rem);font-weight:800;margin-bottom:10px;color:var(--dark)}.rtab:hover,.section-head h2 span{color:var(--teal)}.section-head p{font-size:.95rem}.region-tabs{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:44px}.rtab,.section-head h2{font-family:"Montserrat",sans-serif}.rtab{font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:8px 20px;border-radius:20px;border:1.5px solid var(--gray-line);color:var(--gray-text);transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;cursor:pointer;background:var(--white)}.rtab:hover{border-color:var(--teal)}.rtab.active{background:var(--teal-solid);border-color:var(--teal);color:#fff}.month-tabs{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:-30px;margin-bottom:36px;padding:0 12px}.mtab-month{font-family:"Montserrat",sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:5px 12px;border-radius:16px;border:1.2px solid var(--gray-line);color:var(--gray-text);transition:color .15s,background-color .15s,border-color .15s,box-shadow .15s,opacity .15s,transform .15s;cursor:pointer;background:var(--white)}.mtab-month:hover{border-color:var(--teal);color:var(--teal)}.mtab-month.active{background:var(--teal-solid);border-color:var(--teal);color:#fff}.mtab-month.empty{opacity:.35;cursor:not-allowed}.mtab-month.empty:hover{border-color:var(--gray-line);color:var(--gray-text)}.pkg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:24px}.pkg-card{height:400px;perspective:1000px;cursor:pointer;border-radius:12px;overflow:hidden}.pkg-card:focus-visible{outline:2px solid var(--teal);outline-offset:3px}.card-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .55s var(--ease)}.pkg-card:focus .pkg-card:hover .card-inner{transform:rotateY(180deg)}.card-front{position:absolute}.card-back,.card-front{inset:0;backface-visibility:hidden;border-radius:12px;overflow:hidden;background:#191c27}.card-front-bg{position:absolute;inset:0;background-size:cover;background-position:center;transition:transform .55s var(--ease)}.pkg-card:hover .card-front-bg{transform:scale(1.04)}.card-front-ovl{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.75)0,rgba(0,0,0,.1) 60%)}.card-front-name,.card-region-tag{position:absolute;font-family:"Montserrat",sans-serif}.card-region-tag{top:12px;left:12px;text-transform:uppercase;background:rgba(0,0,0,.65);color:var(--teal);border:1px solid rgba(1,162,152,.5);border-radius:20px;padding:4px 10px}.card-front-name{bottom:20px;left:20px;right:20px;font-size:1.15rem;font-weight:800;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.5);line-height:1.2}.card-back{background:linear-gradient(155deg,#0e3531 0,#1a4f48 55%,#0e3531 100%);transform:rotateY(180deg);display:flex;flex-direction:column;padding:18px 18px 20px;gap:8px;color:#fff;position:relative}.card-back::before,.pkg-gallery-item::after{content:"";position:absolute;inset:0;pointer-events:none}.card-back::before{background:radial-gradient(circle at 80%0,rgba(1,162,152,.25),transparent 55%);border-radius:12px}.card-back>*{position:relative;z-index:1}.pkg-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:18px 0 20px}.pkg-gallery-item{position:relative;aspect-ratio:4/3;border-radius:8px;overflow:hidden;background:var(--gray-bg);cursor:pointer;transition:transform .2s var(--ease)}.pkg-gallery-item:hover{transform:scale(1.02)}.pkg-gallery-item img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .3s var(--ease)}.pkg-gallery-item:hover img{transform:scale(1.06)}.pkg-gallery-item::after{background:linear-gradient(to top,rgba(0,0,0,.15),transparent 40%)}@media (max-width:680px){.pkg-gallery{grid-template-columns:repeat(2,1fr)}}.cb-nights{font-family:"Montserrat",sans-serif;color:#5be8de;background:rgba(1,162,152,.18);align-self:flex-start;text-shadow:0 1px 4px rgba(0,0,0,.3)}.cb-route{font-size:.7rem;color:rgba(255,255,255,.75);margin:0;font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;height:2.8em}.cb-sal{font-family:"Montserrat",sans-serif;letter-spacing:.22em;color:rgba(255,255,255,.55);text-transform:uppercase;padding-top:10px;border-top:1px solid rgba(255,255,255,.12);height:1.3em}#overlay,.cb-dates{justify-content:center}.cb-dates,.dep-row{display:flex;flex-shrink:0}.cb-dates{flex-direction:column;gap:8px;overflow:hidden;height:108px;margin-top:4px}.dep-row{align-items:center;justify-content:space-between;gap:10px;background:rgba(255,255,255,.06);border:1px solid rgba(91,232,222,.18);border-left:3px solid #5be8de;border-radius:7px;padding:8px 11px;transition:background .2s,border-color .2s;min-height:46px;box-sizing:border-box}.dep-row:hover{background:rgba(91,232,222,.12);border-left-color:#7cf5eb}.dep-row .dep-date{font-family:"Montserrat",sans-serif;font-size:.92rem;font-weight:900;color:#fff;letter-spacing:.01em;line-height:1.05;text-shadow:0 1px 4px rgba(0,0,0,.35);white-space:nowrap}.dep-row .dep-price-block{display:flex;flex-direction:column;align-items:flex-end;gap:0;line-height:1}.dep-row .dep-price{font-family:"Montserrat",sans-serif;font-size:.92rem;font-weight:900;color:#5be8de;letter-spacing:.01em;line-height:1.1;text-shadow:0 1px 4px rgba(0,0,0,.4);white-space:nowrap}.dep-row .dep-tax{font-size:9px;color:rgba(255,255,255,.62);font-weight:600;letter-spacing:.03em;margin-top:2px;text-transform:uppercase;white-space:nowrap}.dep-row.sold-out{opacity:.45}.dep-row.sold-out .dep-date::after{content:" · AGOTADO";color:#fca5a5;font-size:9.5px;font-weight:700}.cb-cta,.cb-title{font-family:"Montserrat",sans-serif}.cb-cta{background:linear-gradient(135deg,#01a298,#018a81);text-align:center;line-height:1}.cb-cta:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(1,162,152,.55);background:linear-gradient(135deg,#0bbab0,#01a298)}.cb-cta::after{display:inline-block}.cb-cta:hover::after{transform:translateX(3px)}.dep-row.dep-placeholder{visibility:hidden;pointer-events:none;background:0 0;border:1px solid transparent;border-left:3px solid transparent}.cb-title{font-size:1.05rem;color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.4);display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;margin:0;word-break:normal}#overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:1000;display:none;align-items:flex-start;padding:20px;overflow-y:auto;backdrop-filter:blur(4px)}#overlay.open{display:flex;animation:fadeIn .2s}#modal{background:var(--white);border-radius:16px;width:100%;max-width:1100px;margin:auto;overflow:hidden;position:relative;box-shadow:0 24px 80px rgba(0,0,0,.5)}.modal-hero{height:240px;background-size:cover;background-position:center;position:relative}.modal-hero-ovl{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.75),transparent 60%)}.modal-hero-info{position:absolute;bottom:20px;left:28px;right:28px;color:#fff}.mhi-nights,.modal-hero-info h2{font-family:"Montserrat",sans-serif}.modal-hero-info h2{font-size:1.8rem;font-weight:900;line-height:1.1}.mhi-nights{font-size:13px;font-weight:700;color:var(--teal);letter-spacing:.15em;margin-bottom:4px;text-transform:uppercase}.mhi-route{font-size:.75rem;color:rgba(255,255,255,.75);margin-top:4px}.modal-close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;background:rgba(0,0,0,.5);color:#fff;font-size:20px;display:flex;align-items:center;justify-content:center;transition:background .2s}.modal-close:hover{background:rgba(0,0,0,.8)}.modal-tabs-nav{display:flex;border-bottom:2px solid var(--gray-line);padding:0 28px;background:var(--white);overflow-x:auto}.mtab{font-family:"Montserrat",sans-serif;font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:14px 18px;color:var(--gray-text);border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;cursor:pointer}.alta-step.active .alta-step-lbl strong,.mtab.active,.mtab:hover,.page-title span,.platform-card h3 span{color:var(--teal)}.mtab.active{border-bottom-color:var(--teal)}.modal-body{display:flex;gap:0}.modal-content{flex:1;min-width:0;padding:28px 28px 40px}.modal-sidebar{width:260px;flex-shrink:0;background:var(--gray-bg);border-left:1px solid var(--gray-line);padding:24px 20px}.tab-panel{display:none;animation:fadeIn .2s}.tab-panel.active{display:block}.tab-panel p{font-size:.9rem;color:#444;line-height:1.7;margin-bottom:10px}.tab-panel strong,.tarifas-block strong{color:var(--dark)}.map-wrap{border-radius:10px;overflow:hidden;height:380px;border:1px solid var(--gray-line);position:relative}.map-wrap iframe{width:100%;height:100%;border:0}.map-placa{margin-top:18px;border:1.5px dashed var(--gray-line);background:var(--gray-bg-2);border-radius:10px;padding:24px;text-align:center}.map-placa-img{width:100%;height:auto;object-fit:contain;border-radius:8px;display:block;margin:0 auto}.map-placa-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:30px 16px;color:var(--gray-text)}.map-placa-empty svg{width:38px;height:38px;color:var(--gray-text-2)}.map-placa-empty .lbl{font-family:"Montserrat",sans-serif;font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--dark)}.map-placa-empty .sub{font-size:.93rem;color:var(--gray-text);max-width:380px;line-height:1.55}.map-placa-empty .path{font-family:"JetBrains Mono",monospace;font-size:10.5px;color:var(--teal);background:rgba(1,162,152,.08);padding:5px 11px;border-radius:5px;display:inline-block;margin-top:4px}.itin-day{padding:14px 16px 14px 18px;border-left:3px solid rgba(1,162,152,.45);background:linear-gradient(90deg,rgba(1,162,152,.04),transparent)}.info-table th,.itin-day-title{font-family:"Montserrat",sans-serif;text-transform:uppercase}.itin-day-title{font-size:.93rem;font-weight:800;color:var(--teal);margin-bottom:6px;letter-spacing:.06em}.itin-day-text{font-size:.87rem;line-height:1.65;color:#444}.info-table{width:100%;border-collapse:collapse;font-size:.83rem;margin:8px 0 18px;border:1px solid var(--gray-line);border-radius:8px;overflow:hidden}.info-table th{background:var(--teal-solid);color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;padding:9px 12px;text-align:left}.info-table td{padding:9px 12px;border-bottom:1px solid #f1f3f5;color:#333;vertical-align:top}.info-table tr:last-child td{border-bottom:none}.info-table tr:nth-child(even) td{background:#fafafa}.info-table td:first-child{font-weight:600}.tab-section-title{font-family:"Montserrat",sans-serif;font-size:1.45rem;text-transform:uppercase;letter-spacing:.06em;display:block;text-align:center;padding:14px 16px;background:0 0;border-radius:0;line-height:1.2}.tab-section-title svg{display:none}.tarifas-block{background:var(--gray-bg-2);border-left:3px solid var(--teal);font-size:.86rem;margin-bottom:14px}.detalle-intro{font-size:.92rem;line-height:1.7;color:#333}.detalle-intro p,.inc-card h4{margin:0 0 12px}.inc-wrap{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}@media (max-width:680px){.inc-wrap{grid-template-columns:1fr}}.inc-card{border-radius:12px;padding:16px 18px;border:1px solid}.inc-card.yes{background:rgba(1,162,152,.06);border-color:rgba(1,162,152,.3)}.inc-card.no{background:rgba(205,52,91,.05);border-color:rgba(205,52,91,.25)}.inc-card h4{display:flex;align-items:center;gap:8px;font-family:"Montserrat",sans-serif;font-size:.95rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.inc-card h4 svg{width:18px;height:18px;flex:0 0 auto}.inc-card.yes h4{color:#017d75}.inc-card.no h4{color:#b02a4d}.inc-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px}.inc-list li{display:flex;align-items:flex-start;gap:9px;font-size:.86rem;line-height:1.5;color:#333}.inc-list li svg{flex:0 0 auto;width:16px;height:16px;margin-top:2px}.inc-card.yes .inc-list li svg{color:#01a298}.inc-card.no .inc-list li svg{color:#cd345b}.inc-list li.sub{margin-left:22px;font-size:.8rem;color:#666}.sb-title,.sb-vid-empty .lbl{font-family:"Montserrat",sans-serif;text-transform:uppercase}.sb-title{font-size:13px;font-weight:800;letter-spacing:.12em;color:var(--dark);margin-bottom:14px;padding-bottom:10px;border-bottom:2px solid var(--teal)}.sb-vid,.sb-vid video{width:100%;background:#000}.sb-vid{max-width:280px;margin:0 auto 14px;border-radius:10px;overflow:hidden;aspect-ratio:9/16;position:relative;box-shadow:0 4px 18px rgba(0,0,0,.25)}.sb-vid video{height:100%;object-fit:contain}.sb-vid-empty{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:linear-gradient(135deg,#1a2230,#0f161e);color:rgba(255,255,255,.55);text-align:center;padding:14px}.sb-vid-empty svg{width:36px;height:36px;color:rgba(255,255,255,.4)}.sb-vid-empty .lbl{font-size:10px;font-weight:700;letter-spacing:.1em;color:rgba(255,255,255,.65)}.sb-vid-empty .sub{font-size:13px;color:rgba(255,255,255,.4);max-width:200px;line-height:1.4}.platform-card h3,.sb-btn{font-family:"Montserrat",sans-serif;color:#fff}.sb-btn{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;transition:opacity .2s}.sb-btn svg{width:14px;height:14px;flex-shrink:0}.sb-btn:hover{opacity:.85}.sb-btn.teal{background:var(--teal-solid)}.sb-btn.pink{background:var(--pink)}.sb-btn.disabled{opacity:.35;cursor:default;pointer-events:none}.platform-showcase{margin:0 auto;max-width:1180px;padding:0 28px 50px}.platform-card{position:relative;border-radius:16px;overflow:hidden;background:linear-gradient(135deg,var(--dark) 0%,#0d1f24 50%,#003b39 100%);color:#fff;padding:48px 44px;display:grid;grid-template-columns:1.4fr .9fr;gap:36px;align-items:center;box-shadow:0 20px 50px rgba(1,162,152,.18)}.platform-card::before{content:"";position:absolute;inset:0;background:radial-gradient(700px 400px at 80% 20%,rgba(1,162,152,.25),transparent 60%),radial-gradient(500px 300px at 20% 90%,rgba(205,52,91,.12),transparent 60%);pointer-events:none}.platform-card-content{position:relative;z-index:1}.platform-eyebrow{display:inline-flex;align-items:center;gap:8px;padding:5px 14px;background:rgba(1,162,152,.18);border:1px solid rgba(1,162,152,.4);color:var(--teal);border-radius:30px;font-family:"Montserrat",sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin-bottom:16px}.platform-eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--teal);box-shadow:0 0 12px var(--teal);animation:pulse 2s infinite}.platform-card h3{font-size:clamp(1.4rem,2.6vw,2rem);font-weight:800;line-height:1.15;letter-spacing:-.02em;margin-bottom:14px}.platform-card p{font-size:.95rem;color:rgba(255,255,255,.85);line-height:1.65;margin-bottom:22px;max-width:560px}.platform-features{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:24px}.platform-feat{display:flex;align-items:flex-start;gap:8px;font-size:.84rem;color:rgba(255,255,255,.88);font-weight:500}.platform-feat svg{flex-shrink:0;width:18px;height:18px;color:var(--teal);margin-top:1px}.platform-cta,.platform-feat strong{color:#fff;font-weight:700}.platform-cta{display:inline-flex;align-items:center;gap:10px;padding:14px 28px;background:var(--teal);color:#000;border-radius:8px;font-family:"Montserrat",sans-serif;font-size:13px;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s}.platform-cta:hover{background:#33c5bd;transform:translateY(-2px);box-shadow:0 14px 32px rgba(1,162,152,.4)}.btn-primary svg,.platform-cta svg{width:14px;height:14px}.platform-stat{text-align:center;padding:30px 24px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.12);border-radius:14px;position:relative;z-index:1}.platform-stat-num{font-family:"Montserrat",sans-serif;font-size:clamp(2rem,4vw,3rem);font-weight:900;color:var(--teal);letter-spacing:-.02em;line-height:1}.platform-stat-lbl{font-family:"Montserrat",sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.75);margin-top:10px}.platform-stat-sub{font-size:.88rem;color:rgba(255,255,255,.55);margin-top:6px;line-height:1.5}.platform-stat-extra{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid rgba(255,255,255,.1)}.platform-stat-extra div{font-size:.88rem;color:rgba(255,255,255,.7)}.platform-stat-extra strong{display:block;font-family:"Montserrat",sans-serif;font-size:1.1rem;color:#fff;font-weight:800;margin-bottom:2px}@media (max-width:900px){.platform-card{padding:32px 26px;gap:24px}.platform-card,.platform-features{grid-template-columns:1fr}}.page-hero{position:relative;padding:140px 28px 70px;text-align:center;background:linear-gradient(180deg,var(--gray-bg-2) 0%,var(--white) 100%);border-bottom:1px solid var(--gray-line)}.page-hero-in{max-width:820px;margin:0 auto}.page-eyebrow,.page-title{font-family:"Montserrat",sans-serif}.page-eyebrow{display:inline-flex;align-items:center;gap:8px;padding:5px 14px;border:1px solid var(--teal);background:rgba(1,162,152,.08);color:var(--teal);border-radius:30px;font-size:10.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin-bottom:22px}.page-eyebrow .dot{width:6px;height:6px;border-radius:50%;background:var(--teal)}.page-title{font-size:clamp(1.9rem,4vw,3rem);font-weight:900;line-height:1.05;letter-spacing:-.02em;margin-bottom:16px;color:var(--dark)}.feat-card p,.page-sub{color:var(--gray-text);line-height:1.65}.page-sub{font-size:1rem;max-width:600px;margin:0 auto 32px}.page-cta-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.btn-primary{display:inline-flex;align-items:center;gap:10px;padding:14px 28px;background:var(--teal-solid);color:#fff;border-radius:6px;font-family:"Montserrat",sans-serif;font-size:12px;font-weight:700;letter-spacing:.1em;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;text-transform:uppercase}.btn-primary:hover{background:var(--teal-d);transform:translateY(-2px);box-shadow:0 12px 30px rgba(1,162,152,.3)}.btn-secondary,.field input,.field select,.field textarea{background:var(--white);border:1.5px solid var(--gray-line);color:var(--dark);transition:color .15s,background-color .15s,border-color .15s,box-shadow .15s,opacity .15s,transform .15s}.btn-secondary,.feat-card h3{font-family:"Montserrat",sans-serif}.btn-secondary{display:inline-flex;align-items:center;gap:10px;padding:14px 28px;border-radius:6px;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.btn-secondary:hover{border-color:var(--teal);color:var(--teal)}.features-section{padding:70px 28px;background:var(--white);border-bottom:1px solid var(--gray-line)}.features-in{max-width:1200px;margin:0 auto}.features-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.feat-card{padding:30px;background:var(--white);border:1px solid var(--gray-line);border-radius:10px;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s}.adm-card:hover,.feat-card:hover{border-color:var(--teal);transform:translateY(-3px);box-shadow:0 14px 36px rgba(0,0,0,.08)}.feat-icon{width:48px;height:48px;border-radius:10px;background:rgba(1,162,152,.1);border:1px solid rgba(1,162,152,.25);display:flex;align-items:center;justify-content:center;margin-bottom:18px}.feat-icon svg{width:22px;height:22px;color:var(--teal)}.feat-card h3{font-size:1.05rem;font-weight:800;margin-bottom:8px;color:var(--dark)}.feat-card p{font-size:.88rem}.security-strip{padding:32px 28px;background:var(--gray-bg-2);border-bottom:1px solid var(--gray-line);text-align:center}.security-strip-in{max-width:780px;margin:0 auto;display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap}.security-strip svg{width:20px;height:20px;color:var(--green)}.adm-card p,.security-strip p{color:var(--gray-text);font-size:.9rem}.security-strip strong{color:var(--green)}.adm-shell{padding:0 28px 80px;background:var(--white);min-height:60vh}.adm-container{max-width:1200px;margin:0 auto}.adm-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px;margin-top:30px}.adm-card{padding:32px;background:var(--white);border:1px solid var(--gray-line);border-radius:12px;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;position:relative;overflow:hidden}.adm-card::before{content:"";position:absolute;top:0;left:0;width:100%;height:3px;background:var(--teal);transform:scaleX(0);transform-origin:left;transition:transform .25s}.adm-card:hover{box-shadow:0 16px 36px rgba(0,0,0,.08)}.adm-card:hover::before{transform:scaleX(1)}.adm-card.pink-accent::before{background:var(--pink)}.adm-card.pink-accent:hover{border-color:var(--pink)}.adm-icon{width:56px;height:56px;border-radius:12px;background:rgba(1,162,152,.1);border:1px solid rgba(1,162,152,.25);display:flex;align-items:center;justify-content:center;margin-bottom:20px}.adm-icon svg{width:26px;height:26px;color:var(--teal)}.adm-card.pink-accent .adm-icon{background:rgba(205,52,91,.1);border-color:rgba(205,52,91,.25)}.adm-card h3,.adm-cta{font-family:"Montserrat",sans-serif}.adm-card h3{font-size:1.15rem;font-weight:800;margin-bottom:8px;color:var(--dark)}.adm-card p{font-size:.88rem;line-height:1.65;margin-bottom:20px}.adm-cta{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--teal);transition:gap .15s}.adm-cta:hover{gap:10px}.adm-cta svg{width:13px;height:13px}.adm-card.pink-accent .adm-cta,.field label .req{color:var(--pink)}.alta-shell{padding:0 28px 80px;background:var(--white);min-height:60vh}.alta-container{max-width:920px;margin:0 auto}.alta-stepper{display:grid;grid-template-columns:1fr 1fr 1fr;gap:0;margin-bottom:30px;background:var(--white);border:1px solid var(--gray-line);border-radius:10px;padding:5px}.alta-step{padding:13px 16px;border-radius:7px;display:flex;align-items:center;gap:12px;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s}.alta-step.active{background:rgba(1,162,152,.08)}.alta-step.done{opacity:.6}.alta-step-lbl,.alta-step-num{color:var(--gray-text);font-family:"Montserrat",sans-serif}.alta-step-num{width:30px;height:30px;border-radius:50%;background:var(--gray-bg);border:1px solid var(--gray-line);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0;transition:color .15s,background-color .15s,border-color .15s,box-shadow .15s,opacity .15s,transform .15s}.alta-step.active .alta-step-num,.alta-step.done .alta-step-num{background:var(--teal-solid);color:#fff;border-color:var(--teal)}.alta-step-num svg{width:14px;height:14px}.alta-step-lbl{font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.alta-step-lbl strong{display:block;color:var(--dark);font-size:13px;text-transform:none;letter-spacing:-.01em;margin-top:2px;font-weight:700;font-family:"Open Sans",sans-serif}.alta-card{background:var(--white);border:1px solid var(--gray-line);border-radius:12px;padding:34px}.alta-pane{display:none}.alta-pane.active{display:block;animation:fadeIn .25s}.alta-sec-title{font-family:"Montserrat",sans-serif;font-size:1.2rem;font-weight:800;margin-bottom:4px;color:var(--dark)}.alta-sec-sub{font-size:.88rem;color:var(--gray-text);margin-bottom:24px;line-height:1.6}.form-grid{display:grid;gap:16px}.form-grid.c2{grid-template-columns:1fr 1fr}.form-grid.c3{grid-template-columns:repeat(3,1fr)}.fieldset{padding:20px;border:1px solid var(--gray-line);border-radius:10px;background:var(--gray-bg-2);margin-bottom:16px}.field label,.fieldset-title{font-family:"Montserrat",sans-serif;font-size:10.5px;font-weight:700;text-transform:uppercase;display:flex;align-items:center}.fieldset-title{color:var(--teal);letter-spacing:.14em;margin-bottom:14px;gap:8px}.fieldset-title::after{content:"";flex:1;height:1px;background:var(--gray-line)}.field{display:flex;flex-direction:column;gap:5px}.field label{color:var(--gray-text);letter-spacing:.08em;gap:4px}.field input,.field select,.field textarea{width:100%;padding:11px 14px;border-radius:7px;font-size:14px;outline:0}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--teal)}.field input::placeholder{color:#aaa}.field-err{font-size:13px;color:var(--red);display:none}.field.invalid input,.field.invalid select{border-color:var(--red)}.field.invalid .field-err{display:block}.dropzone{border:2px dashed var(--gray-line);border-radius:10px;padding:32px;text-align:center;background:var(--white);transition:color .15s,background-color .15s,border-color .15s,box-shadow .15s,opacity .15s,transform .15s;cursor:pointer}.dropzone.over,.dropzone:hover{border-color:var(--teal);background:rgba(1,162,152,.04)}.dropzone svg{width:36px;height:36px;color:var(--gray-text-2);margin:0 auto 10px}.dropzone p{font-size:.9rem;color:var(--gray-text)}.dropzone strong,.footer-social a:hover svg{color:var(--teal)}.dropzone-file{padding:10px 14px;background:var(--gray-bg-2);border:1px solid var(--teal);border-radius:7px;display:flex;align-items:center;gap:10px;margin-top:10px;font-size:.85rem}.dropzone-file svg{width:16px;height:16px;color:var(--teal);margin:0}.dropzone-file .rm{margin-left:auto;color:var(--red);cursor:pointer;font-size:18px;line-height:1}.person-row{padding:18px;background:var(--white);border:1px solid var(--gray-line);border-radius:10px;margin-bottom:12px;position:relative}.person-row .pr-num,.review-block h4{font-family:"Montserrat",sans-serif;font-weight:700}.person-row .pr-num{position:absolute;top:-9px;left:18px;padding:3px 10px;background:var(--teal-solid);color:#fff;font-size:10px;border-radius:5px;letter-spacing:.1em}.person-row .pr-remove{position:absolute;top:14px;right:14px;color:var(--gray-text-2);font-size:18px;line-height:1;cursor:pointer;transition:color .15s}.person-row .pr-remove:hover{color:var(--red)}.add-person{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;background:var(--white);border:1px dashed var(--gray-line-2);border-radius:8px;color:var(--teal);font-size:12px;font-weight:600;cursor:pointer;transition:color .15s,background-color .15s,border-color .15s,box-shadow .15s,opacity .15s,transform .15s}.add-person:hover{border-color:var(--teal);background:rgba(1,162,152,.04)}.add-person svg{width:14px;height:14px}.review-block{padding:18px 22px;background:var(--gray-bg-2);border:1px solid var(--gray-line);border-radius:10px;margin-bottom:12px}.review-block h4{font-size:10.5px;color:var(--teal);text-transform:uppercase;letter-spacing:.14em;margin-bottom:12px}.review-row{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--gray-line);font-size:.85rem;gap:14px}.ind-dates-list li:last-child,.review-row:last-child{border-bottom:none}.review-row .lbl,.success-card p{color:var(--gray-text)}.review-row .val{color:var(--dark);font-weight:600;text-align:right}.alta-actions{display:flex;justify-content:space-between;margin-top:22px;gap:12px}.success-card{padding:60px 40px;background:var(--white);border:1px solid var(--teal);border-radius:12px;text-align:center}.success-icon{width:72px;height:72px;border-radius:50%;background:var(--teal-solid);color:#fff;display:flex;align-items:center;justify-content:center;margin:0 auto 22px}.success-icon svg{width:34px;height:34px}.success-card h3{font-family:"Montserrat",sans-serif;font-size:1.4rem;font-weight:800;margin-bottom:10px;color:var(--dark)}.success-card p{font-size:.95rem;max-width:440px;margin:0 auto 24px;line-height:1.65}.staff-shell{padding:0 28px 60px;background:var(--white)}.staff-container{max-width:1320px;margin:0 auto}.staff-emergency{background:var(--gray-bg-2);border:1px solid var(--gray-line);border-radius:12px;padding:20px 24px;margin-bottom:36px}.staff-emergency-top{display:flex;align-items:center;justify-content:center;gap:30px;flex-wrap:wrap;padding-bottom:16px;border-bottom:1px dashed var(--gray-line);margin-bottom:16px}.staff-emergency a,.staff-emergency-lbl{display:inline-flex;align-items:center;gap:8px;font-family:"Montserrat",sans-serif}.staff-emergency-lbl{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--pink)}.staff-emergency-lbl::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--pink);box-shadow:0 0 12px var(--pink);animation:pulse 2s infinite}.staff-emergency a{font-size:14px;transition:color .15s}.staff-emergency a:hover{color:#25d366}.staff-emergency a svg{width:16px;height:16px;color:#25d366}.staff-emergency-body{max-width:880px;margin:0 auto;font-size:.88rem;color:var(--gray-text);line-height:1.7}.staff-emergency-body p{margin-bottom:12px}.staff-emergency a,.staff-emergency-body p strong,.staff-info h3{color:var(--dark);font-weight:700}.staff-emergency-body ul{list-style:none;padding:0;margin:14px 0;display:grid;grid-template-columns:1fr 1fr;gap:8px 24px}.staff-emergency-body ul li{position:relative;padding-left:20px;font-size:.85rem;color:#444}.staff-emergency-body ul li::before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;background:var(--pink)}.staff-emergency-fallback{background:var(--white);border:1px solid var(--gray-line);border-left:3px solid var(--teal);border-radius:0 8px 8px 0;padding:12px 16px;margin-top:14px;font-size:.93rem;color:var(--gray-text)}.staff-emergency-fallback strong{color:var(--teal);font-weight:700}@media (max-width:680px){.staff-emergency-body ul{grid-template-columns:1fr}}.area-filter{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:40px}.afilt{font-family:"Montserrat",sans-serif;font-size:13px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:8px 18px;border-radius:20px;border:1.5px solid var(--gray-line);color:var(--gray-text);transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;cursor:pointer;background:var(--white)}.afilt:hover{border-color:var(--teal);color:var(--teal)}.afilt.active{background:var(--dark);border-color:var(--dark);color:#fff}.staff-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:20px}.staff-card{background:var(--white);border:1px solid var(--gray-line);border-radius:12px;overflow:hidden;transition:color .25s,background-color .25s,border-color .25s,box-shadow .25s,opacity .25s,transform .25s;display:flex;flex-direction:column}.staff-photo{background:linear-gradient(135deg,var(--teal),var(--teal-d));overflow:hidden;aspect-ratio:1/1;background:var(--gray-bg);background-size:cover;background-position:center top;position:relative}.staff-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;display:block;z-index:1}.staff-photo.no-img[data-initials]::before{content:attr(data-initials);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:"Montserrat",sans-serif;font-weight:800;font-size:3rem;color:rgba(255,255,255,.9);letter-spacing:.04em;z-index:0}.staff-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(0,0,0,.1);border-color:transparent}.staff-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(0,0,0,.5) 100%)}.staff-area-tag{position:absolute;top:12px;left:12px;font-family:"Montserrat",sans-serif;font-size:9px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;background:rgba(255,255,255,.95);color:var(--dark);border-radius:20px;padding:4px 10px;z-index:2}.staff-info{padding:18px 20px 16px}.staff-info h3{font-size:1.05rem;font-weight:800;line-height:1.2;letter-spacing:-.01em}.staff-info .role{font-size:.93rem;color:var(--teal);font-weight:600;margin-top:3px}.staff-info .phone,.staff-info h3{font-family:"Montserrat",sans-serif}.staff-info .phone{font-size:.88rem;color:var(--gray-text);margin-top:10px;font-weight:600}.staff-info .email{font-size:.88rem;color:var(--gray-text-2);margin-top:1px;word-break:break-all}.staff-actions{display:flex;gap:0;border-top:1px solid var(--gray-line)}.staff-act{flex:1;padding:11px;display:flex;align-items:center;justify-content:center;gap:6px;font-family:"Montserrat",sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gray-text);transition:color .15s,background-color .15s,border-color .15s,box-shadow .15s,opacity .15s,transform .15s;border-right:1px solid var(--gray-line)}.staff-act:last-child{border-right:none}.staff-act:hover{background:var(--gray-bg-2);color:var(--dark)}.footer-office-title svg,.staff-act svg{width:13px;height:13px}.staff-act.wa:hover{background:#25d366;color:#fff}#footer,.staff-act.email:hover,.tw-seg button.active{background:var(--teal-solid);color:#fff}.contact-section{padding:60px 28px 80px;background:var(--gray-bg-2);border-top:1px solid var(--gray-line)}.contact-in{max-width:720px;margin:0 auto}.contact-head{text-align:center;margin-bottom:32px}.contact-head h2,.footer-quick a{font-family:"Montserrat",sans-serif}.contact-head h2{font-size:1.6rem;font-weight:800;color:var(--dark);margin-bottom:8px}.contact-head p{color:var(--gray-text);font-size:.92rem}.contact-card{background:var(--white);border:1px solid var(--gray-line);border-radius:12px;padding:32px}#footer{padding:60px 0 24px;position:relative}#footer::before{content:"";position:absolute;inset:0;background:radial-gradient(800px 400px at 50%0,rgba(255,255,255,.06),transparent 60%);pointer-events:none}.footer-in{max-width:1280px;margin:0 auto;padding:0 28px;position:relative}.footer-top{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:48px;margin-bottom:44px}.footer-brand img{height:52px;margin-bottom:14px}.footer-brand p{font-size:1rem;opacity:.88;line-height:1.7;max-width:380px;margin-bottom:14px}.footer-quick{display:flex;flex-direction:column;gap:8px;margin-top:14px}.footer-quick a{display:inline-flex;align-items:center;gap:9px;font-size:.88rem;font-weight:600;letter-spacing:.04em;opacity:.95;transition:opacity .15s}.footer-col a:hover,.footer-quick a:hover{opacity:1;text-decoration:underline}.footer-quick a svg{opacity:.85}.footer-col h4{font-weight:800;letter-spacing:.18em;margin-bottom:18px;opacity:.7;border-bottom:1px solid rgba(255,255,255,.18);padding-bottom:8px}.footer-col a,.footer-col p{font-size:1rem;opacity:.9;line-height:1.85;display:block;cursor:pointer}.footer-col strong{font-weight:700;opacity:1}.footer-office{margin-bottom:14px}.footer-col h4,.footer-office-title{font-family:"Montserrat",sans-serif;font-size:13px;text-transform:uppercase}.footer-office-title{font-weight:700;letter-spacing:.06em;opacity:.95;display:flex;align-items:center;gap:6px;margin-bottom:4px}.footer-office p{font-size:.88rem;opacity:.82;line-height:1.6;margin-bottom:1px}.footer-guardia,.footer-social a{align-items:center;transition:color .15s,background-color .15s,border-color .15s,box-shadow .15s,opacity .15s,transform .15s}.footer-guardia{margin-top:8px;padding:9px 14px;background:rgba(255,255,255,.1);border-radius:6px;display:inline-flex;gap:9px;font-family:"Montserrat",sans-serif;font-size:.92rem;font-weight:700;letter-spacing:.04em;border:1px solid rgba(255,255,255,.18);cursor:pointer}.footer-guardia:hover{background:rgba(255,255,255,.2)}.footer-guardia svg,.footer-quick a svg{width:14px;height:14px}.footer-social{display:flex;gap:10px;margin-top:6px}.footer-social a{width:38px;height:38px;border-radius:50%;background:rgba(255,255,255,.15);display:flex;justify-content:center}.footer-social a:hover{background:#fff}.footer-social svg{width:17px;height:17px;color:#fff;transition:color .15s}.footer-cert-band{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:14px;padding:30px 32px;margin-bottom:30px;text-align:center}.footer-cert-title{font-family:"Montserrat",sans-serif;font-size:12px;font-weight:800;letter-spacing:.22em;text-transform:uppercase;opacity:.85;margin-bottom:6px}.footer-cert-sub{font-size:.95rem;opacity:.75;max-width:600px;margin:0 auto 24px;line-height:1.5}.footer-cert-row{flex-wrap:wrap;gap:24px}.footer-cert-row img{height:64px;width:auto;opacity:.95;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;filter:brightness(1.05)}.footer-cert-row a{display:inline-block;transition:transform .2s}.footer-cert-row a:hover,.footer-social a:hover{transform:translateY(-2px)}.footer-cert-row .cert-composite{height:88px;background:0 0;padding:8px 16px;border-radius:10px;display:flex;align-items:center}.footer-cert-row .cert-composite img{height:72px;filter:none}.footer-cert-row,.footer-cert-row .cert-single{display:flex;align-items:center;justify-content:center}.footer-cert-row .cert-single{height:64px;background:#fff;padding:8px 12px;border-radius:8px;min-width:90px}.footer-cert-row .cert-single img{height:42px;max-width:130px;width:auto;filter:none;object-fit:contain}.footer-legajo{font-family:"Montserrat",sans-serif;font-size:.88rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;opacity:.85;margin-top:20px;padding-top:18px;border-top:1px solid rgba(255,255,255,.18)}.footer-cancel-strip{font-size:.83rem;opacity:.7;line-height:1.6;max-width:760px;margin:0 auto 24px;text-align:center}.footer-bottom{border-top:1px solid rgba(255,255,255,.18);padding-top:20px;justify-content:space-between;flex-wrap:wrap;gap:14px;font-size:.9rem;opacity:.82}.footer-bottom a{opacity:1;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.4);transition:border-color .15s}.footer-bottom a:hover{border-color:#fff}.footer-bottom .legal-links{display:flex;gap:18px}#tweaks-panel,#waBtn{position:fixed;bottom:24px}#waBtn,.footer-bottom{display:flex;align-items:center}#waBtn{right:24px;z-index:800;width:58px;height:58px;border-radius:50%;background:#25d366;justify-content:center;box-shadow:0 4px 20px rgba(0,0,0,.25);transition:transform .2s}#waBtn:hover{transform:scale(1.1)}#waBtn svg{width:30px;height:30px;color:#fff}#tweaks-panel{right:100px;z-index:850;background:var(--white);border:1px solid var(--gray-line);border-radius:12px;padding:18px;min-width:260px;box-shadow:0 20px 50px rgba(0,0,0,.15);display:none}#tweaks-panel.open{display:block;animation:fadeIn .2s}.tw-row label,.tw-seg button,.tw-title{font-family:"Montserrat",sans-serif;font-size:10.5px;text-transform:uppercase}.tw-title{color:var(--teal);font-weight:700;letter-spacing:.14em;margin-bottom:14px;display:flex;justify-content:space-between;align-items:center}.tw-close{color:var(--gray-text);font-size:16px;cursor:pointer}.tw-row{margin-bottom:14px}.tw-row label,.tw-seg button{color:var(--gray-text)}.tw-row label{display:block;margin-bottom:6px;letter-spacing:.06em;font-weight:600}.tw-seg{display:flex;background:var(--gray-bg-2);border:1px solid var(--gray-line);border-radius:7px;padding:3px;gap:2px}.tw-seg button{flex:1;padding:7px 10px;font-weight:700;border-radius:5px;letter-spacing:.05em}.menu-toggle,.mobile-menu a{align-items:center;border-radius:8px}.menu-toggle{display:none;justify-content:center;width:44px;height:44px;background:0 0;border:1px solid rgba(255,255,255,.18);color:#fff;cursor:pointer;flex-shrink:0;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s}.menu-toggle:hover{background:rgba(255,255,255,.08)}.menu-toggle svg{width:22px;height:22px}.menu-toggle .close-icon,.menu-toggle.open .open-icon{display:none}.menu-toggle.open .close-icon{display:block}.mobile-menu{position:fixed;top:0;right:-100%;width:min(360px,85vw);height:100vh;height:100dvh;background:var(--dark);z-index:950;transition:right .3s var(--ease);padding:80px 26px 30px;overflow-y:auto;box-shadow:-20px 0 60px rgba(0,0,0,.4)}.mobile-menu.open{right:0}.mobile-menu-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:940;opacity:0;pointer-events:none;transition:opacity .3s}.mobile-menu-backdrop.open{opacity:1;pointer-events:auto}.mobile-menu a{display:flex;padding:14px 16px;font-size:15px;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.85);text-decoration:none;transition:color .15s,background-color .15s,border-color .15s,box-shadow .15s,opacity .15s,transform .15s;margin-bottom:4px;min-height:48px}.mobile-menu a:active,.mobile-menu a:hover{background:rgba(1,162,152,.15);color:#01a298}.mobile-menu-sep{height:1px;background:rgba(255,255,255,.1);margin:14px 0}.mobile-menu .mm-usd,.mobile-menu a,.mobile-menu-label{font-family:"Montserrat",sans-serif;font-weight:700}.mobile-menu-label{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.4);padding:0 16px;margin:10px 0 6px}.mobile-menu .mm-usd{display:inline-flex;align-items:center;gap:8px;padding:12px 16px;border:1px solid var(--teal);background:rgba(1,162,152,.12);border-radius:8px;font-size:13px;color:var(--teal);margin-top:16px;width:100%;justify-content:center}@media (max-width:1080px){nav.main{display:none}.menu-toggle{display:inline-flex}.hdr-in{gap:14px}.lang-wrap{margin-left:auto}.footer-top{grid-template-columns:1fr 1fr}.adm-grid,.alta-stepper,.features-grid,.form-grid.c2,.form-grid.c3{grid-template-columns:1fr}.modal-body{flex-direction:column}.modal-sidebar{width:100%;border-left:none;border-top:1px solid var(--gray-line)}.page-hero{padding:120px 22px 50px}#hero{height:auto;min-height:88vh;min-height:88svh}}@media (max-width:768px){.logo img{height:72px}.hdr-in{padding:0 16px;gap:10px}.usd-pill{font-size:10.5px;padding:4px 9px}.usd-pill .dot{width:5px;height:5px}.ig-btn svg{width:20px;height:20px}.hero-scroll{bottom:44px;max-width:100%;padding:0 16px}.hero-title{margin-bottom:6px}.hero-sub{max-width:92vw;margin-bottom:8px}.hero-title{font-size:clamp(2rem,9vw,3.4rem)}.hero-sub{font-size:1.05rem;font-weight:600;max-width:720px}.hero-cta{padding:14px 26px;font-size:13px;width:auto}.hero-badge{font-size:10px;padding:5px 14px}.pkg-grid{grid-template-columns:1fr;gap:18px}.pkg-card{height:340px}.footer-top{grid-template-columns:1fr;gap:28px}.modal-content{padding:22px 18px 30px}.modal-hero{height:200px}.modal-hero-info{left:18px;right:18px;bottom:14px}.modal-hero-info h2{font-size:1.25rem}.mtab{padding:12px 14px;font-size:10px}.modal-tabs-nav{padding:0 14px}.modal-sidebar{padding:20px 18px}.adm-card,.alta-card,.feat-card{padding:20px}.alta-actions{flex-direction:column-reverse;gap:8px}.alta-actions button{width:100%;min-height:48px}.alta-step{padding:10px 14px}.alta-step-num{width:28px;height:28px}.section-head h2{font-size:1.5rem}.page-title{font-size:clamp(1.6rem,5vw,2.2rem)}.page-cta-row{flex-direction:column;align-items:stretch}.alta-actions button,.page-cta-row a{justify-content:center}.btn-primary,.btn-secondary{min-height:48px;width:100%;justify-content:center}.staff-emergency-top{flex-direction:column;gap:12px;text-align:center}.staff-grid{grid-template-columns:1fr 1fr;gap:14px}.staff-card .staff-info{padding:14px}.field input,.field select,.field textarea{font-size:16px}.footer-cert-row{gap:14px}#waBtn,.footer-cert-row .cert-composite img{height:54px}.footer-cert-row .cert-single{height:64px}.footer-cert-row .cert-single img{height:48px}.footer-bottom{flex-direction:column;text-align:center;gap:10px}.footer-bottom .legal-links{justify-content:center}#waBtn{width:54px;bottom:18px;right:18px}#waBtn svg{width:26px;height:26px}#tweaks-panel{right:18px;left:18px;bottom:88px;min-width:auto}.pkg-gallery{grid-template-columns:1fr 1fr}}@media (max-width:480px){.staff-grid{grid-template-columns:1fr}.region-tabs{gap:6px}.rtab{padding:7px 14px;font-size:10.5px}.footer-in{padding:0 20px}}@media (prefers-reduced-motion:reduce){*,::after,::before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.scroll-line,.staff-emergency-lbl::before,.usd-pill .dot{animation:none!important}}@media print{#hdr,#tweaks-panel,#waBtn,.modal-sidebar,.modal-tabs-nav{display:none}body{background:#fff;color:#000}}.gallery-empty{padding:60px 20px}.gal-wrap{position:relative;width:100%;max-width:720px;margin:0 auto}.gal-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:14px;padding:8px 4px 18px;scroll-behavior:smooth}.gal-track::-webkit-scrollbar{height:6px}.gal-track::-webkit-scrollbar-thumb{background:#01a298;border-radius:3px}.gal-slide{flex:0 0 100%;min-width:100%;scroll-snap-align:start;position:relative;border-radius:10px;overflow:hidden;background:#0f161e;aspect-ratio:4/5}.gal-slide img,.gal-slide video{width:100%;height:100%;display:block}.gal-slide img{object-fit:cover;cursor:zoom-in;transition:transform .3s}.gal-slide video{object-fit:contain;background:#0f161e;cursor:default}.gal-slide img:hover{transform:scale(1.02)}.gal-caption,.gal-nav{position:absolute;color:#fff}.gal-caption{left:0;right:0;bottom:0;padding:14px;font-size:13px;background:linear-gradient(to top,rgba(0,0,0,.85),transparent)}.gal-nav{top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;background:rgba(0,0,0,.6);border:0;cursor:pointer;font-size:22px;line-height:1;display:flex;align-items:center;backdrop-filter:blur(4px);transition:background .2s;z-index:5}.gal-nav:hover{background:#01a298}.gal-nav.prev{left:8px}.gal-nav.next{right:8px}#lightbox,.gal-dots,.gal-nav{justify-content:center}.gal-dots{display:flex;gap:6px;margin-top:12px}.gal-dot{width:8px;height:8px;border-radius:50%;background:#cdd;border:0;cursor:pointer;transition:color .2s,background-color .2s,border-color .2s,box-shadow .2s,opacity .2s,transform .2s;padding:0}.gal-dot.active{background:#01a298;width:24px;border-radius:5px}.map-placa-only .map-placa-img{width:100%;max-width:100%;height:auto;max-height:82vh;margin:0 auto;border-radius:10px;display:block;cursor:zoom-in;box-shadow:0 6px 24px rgba(0,0,0,.15)}.map-placa-only .map-placa-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;background:#f4f6f6;border-radius:10px;color:#5b6664;text-align:center}.map-placa-only .map-placa-empty svg{width:48px;height:48px;color:#01a298;margin-bottom:14px}.map-placa-only .map-placa-empty .lbl{font-family:"Montserrat",sans-serif;font-size:14px;font-weight:700;color:#1a3c2e;margin-bottom:6px;letter-spacing:.04em;text-transform:uppercase}.map-placa-only .map-placa-empty .sub{font-size:12px;max-width:280px;line-height:1.4}#lightbox{position:fixed;inset:0;background:rgba(0,0,0,.92);z-index:9999;display:none;align-items:center;padding:20px;cursor:zoom-out;backdrop-filter:blur(8px)}#lightbox.open{display:flex}#lightbox img{max-width:96vw;max-height:90vh;object-fit:contain;border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.5)}#lightbox .lb-caption{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);color:#fff;font-size:14px;background:rgba(0,0,0,.65);padding:8px 16px;border-radius:20px;max-width:90vw;text-align:center}#lightbox .lb-close{position:absolute;top:24px;right:24px;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.15);color:#fff;border:0;font-size:22px;cursor:pointer;backdrop-filter:blur(6px)}#lightbox .lb-close:hover{background:rgba(255,255,255,.25)}.modal-hero,.pkg-gallery-item img{cursor:zoom-in}.fx-bar{background:linear-gradient(90deg,#1a3c2e,#0d2620);color:#fff;padding:8px 0;font-size:13px;border-bottom:1px solid rgba(1,162,152,.3)}.fx-bar-in{max-width:1280px;margin:0 auto;padding:0 24px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}.fx-bar-label{font-weight:700;color:#5be8de;font-size:11px;letter-spacing:.16em;text-transform:uppercase}.fx-bar-current{font-family:"Montserrat",sans-serif;font-size:18px;font-weight:800;color:#fff}.fx-bar-current small,.fx-bar-history{font-size:11px;color:rgba(255,255,255,.6)}.fx-bar-current small{font-weight:400;margin-left:6px}.fx-bar-history{display:flex;gap:10px;align-items:center;overflow-x:auto}.fx-bar-history span{white-space:nowrap;padding:2px 8px;background:rgba(255,255,255,.06);border-radius:4px}@media (max-width:720px){.fx-bar-history{display:none}}.detalle-text{font-size:.98rem;line-height:1.7;color:#3a4147}.detalle-text p{margin:0 0 14px}.detalle-text p:first-child{font-size:1.05rem;color:#1a3c2e;font-weight:600}@media (max-width:980px){.modal-body{flex-direction:column}.modal-sidebar{width:100%;border-left:none;border-top:1px solid var(--gray-line)}.sb-vid{max-width:320px}}@media (max-width:768px){.hero-title{font-size:clamp(1.9rem,7vw,3.2rem)}.hero-sub{font-size:1.02rem}.section-in{padding-left:18px;padding-right:18px}.pkg-card{height:360px}.modal-hero{height:200px}.info-table{font-size:.78rem}.info-table td,.info-table th{padding:7px 8px}.tab-section-title{font-size:1.2rem}.mtab{font-size:11px;padding:8px 10px}}@media (max-width:560px){nav.main{display:none}.hero-title{font-size:clamp(1.6rem,8vw,2.6rem)}.pkg-grid{grid-template-columns:1fr!important;gap:16px}.pkg-card{height:auto;min-height:380px}.month-tabs,.region-tabs{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;padding-bottom:6px}.month-tabs::-webkit-scrollbar,.region-tabs::-webkit-scrollbar{height:4px}.modal{width:100%!important;max-width:100%!important;border-radius:0!important;height:100%;max-height:100%}.modal-hero{height:170px}.modal-hero-info h2{font-size:1.2rem}.info-table{display:block;overflow-x:auto;white-space:nowrap}.gal-slide{aspect-ratio:3/4}.fx-bar-in{font-size:11px;gap:10px}.footer-cert-row{flex-wrap:wrap;justify-content:center;gap:10px}.staff-grid{grid-template-columns:1fr 1fr!important;gap:12px}}@media (max-width:400px){.staff-grid{grid-template-columns:1fr!important}.hero-cta,.hero-cta--bottom{font-size:10px;padding:11px 22px}.usd-pill{font-size:13px;padding:7px 12px}}@media (hover:none){.cb-cta,.mtab,.nlink,.rtab,.sb-btn{min-height:42px}.pkg-card .card-inner{transition:none}}.gal-slide img,.modal-hero img,.pkg-card img,.staff-photo img{-webkit-backface-visibility:hidden;backface-visibility:hidden}.usd-wrap{position:relative;display:inline-block}.usd-pill{gap:8px}.usd-caret{width:13px;height:13px;opacity:.7;transition:transform .25s var(--ease);flex-shrink:0}.usd-wrap.open .usd-caret{transform:rotate(180deg)}.usd-menu{position:absolute;top:calc(100% + 10px);right:0;min-width:268px;background:#fff;border:1px solid rgba(1,162,152,.2);border-radius:12px;box-shadow:0 18px 50px rgba(0,0,0,.2),0 2px 8px rgba(1,162,152,.1);opacity:0;pointer-events:none;transform:translateY(-8px) scale(.98);transform-origin:top right;transition:color .22s var(--ease),background-color .22s var(--ease),border-color .22s var(--ease),box-shadow .22s var(--ease),opacity .22s var(--ease),transform .22s var(--ease);z-index:1100;overflow:hidden}.usd-wrap.open .usd-menu{opacity:1;pointer-events:auto;transform:translateY(0) scale(1)}.usd-menu-head{background:linear-gradient(135deg,#1a3c2e,#0d2620);padding:14px 18px;color:#fff}.usd-menu-title{display:block;font-family:"Montserrat",sans-serif;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#fff}.usd-menu-sub{display:block;font-size:11px;color:#5be8de;margin-top:3px;font-weight:600}.usd-menu-list{max-height:320px;overflow-y:auto;padding:6px}.usd-menu-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-radius:8px;transition:background .15s}.usd-menu-row:hover{background:rgba(1,162,152,.06)}.usd-menu-row.is-current{background:rgba(1,162,152,.1)}.usd-menu-date{font-size:13px;color:#3a4147;font-weight:500;text-transform:capitalize}.usd-menu-row.is-current .usd-menu-date{color:#1a3c2e;font-weight:700}.usd-menu-rate{font-family:"Montserrat",sans-serif;font-size:14px;font-weight:800;color:var(--teal-d,#018a81);white-space:nowrap}.usd-menu-delta{font-size:10px;font-weight:700;padding:1px 6px;border-radius:5px;margin-left:6px}.usd-menu-delta.up{background:rgba(192,57,43,.12);color:#c0392b}.usd-menu-delta.down{background:rgba(34,153,84,.14);color:#229954}.usd-menu-delta.flat{background:rgba(120,120,120,.1);color:#888}.usd-menu-badge{font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--teal);background:rgba(1,162,152,.12);padding:2px 7px;border-radius:20px}.usd-menu-empty,.usd-menu-foot{padding:24px 18px;text-align:center;color:#999;font-size:13px}.usd-menu-foot{padding:10px 18px;border-top:1px solid #f0f2f4;font-size:10.5px}.usd-menu-list::-webkit-scrollbar{width:6px}.usd-menu-list::-webkit-scrollbar-thumb{background:rgba(1,162,152,.3);border-radius:3px}@media (max-width:560px){.usd-menu{position:fixed;top:auto;bottom:0;left:0;right:0;min-width:auto;border-radius:16px 16px 0 0;transform:translateY(100%)}.usd-wrap.open .usd-menu{transform:translateY(0)}}.ind-price small,.modal-newtab{font-weight:700;letter-spacing:.04em}.modal-newtab{position:absolute;top:16px;right:60px;display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 14px;border-radius:20px;background:rgba(1,122,114,.92);color:#fff;font-family:"Montserrat",sans-serif;font-size:11.5px;cursor:pointer;transition:color .2s var(--ease),background-color .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease),opacity .2s var(--ease),transform .2s var(--ease);box-shadow:0 2px 12px rgba(1,162,152,.4);backdrop-filter:blur(4px);border:0;z-index:3}.modal-newtab svg{width:15px;height:15px;flex-shrink:0}.modal-newtab:hover{background:var(--teal-solid);transform:translateY(-1px);box-shadow:0 4px 18px rgba(1,162,152,.6)}.modal-newtab:active{transform:translateY(0)}@media (max-width:560px){.modal-newtab span{display:none}.modal-newtab{padding:0;width:36px;justify-content:center;right:58px}}.map-placa-only{padding:0;width:100%}.map-placa-only .map-zoom-hint{text-align:center;font-size:11px;color:#5b6664;margin-top:10px;letter-spacing:.04em}@media (min-width:769px){#indGrid .pkg-card{height:470px}}#indGrid .cb-route,#indGrid .cb-title{-webkit-line-clamp:3;line-clamp:3;height:auto;max-height:none}#indGrid .cb-route{-webkit-line-clamp:6;line-clamp:6}#indGrid .cb-sal{height:auto}#indGrid .card-back{gap:7px;overflow-y:auto}.ind-price{font-family:"Montserrat",sans-serif;font-size:.95rem;color:#1a3c2e;margin:2px 0 14px;line-height:1.3}.ind-price b{display:block;font-size:1.45rem;color:#01a298;font-weight:900}.ind-price small{font-size:.7rem;color:#666}#mNights,.ind-dates-title{font-weight:800;text-transform:uppercase}.ind-dates-title{font-family:"Montserrat",sans-serif;font-size:11px;letter-spacing:.08em;color:#017a72;margin:6px 0}.ind-dates{font-size:.82rem;color:#444;line-height:1.55;white-space:pre-line;margin-bottom:16px;border-left:2px solid #e3e8e6;padding-left:10px}.ind-dates-note{font-size:.78rem;color:#667;line-height:1.4;margin:0 0 8px}.ind-dates-list{list-style:none;margin:0 0 16px;padding:0}.ind-dates-list li{font-size:.82rem;color:#3a4147;line-height:1.5;padding:3px 0 3px 14px;position:relative;border-bottom:1px solid #f0f3f2}.ind-dates-list li:before{content:"";position:absolute;left:0;top:11px;width:5px;height:5px;border-radius:50%;background:#01a298}#mNights{display:inline-flex;align-items:center;gap:6px;background:linear-gradient(135deg,#01a298 0,#0fa98e 100%);color:#fff;font-size:14px;letter-spacing:.12em;padding:8px 16px;border-radius:999px;box-shadow:0 4px 14px rgba(1,162,152,.35);margin-bottom:14px}#mNights::before{content:"🌙";font-size:16px;filter:brightness(1.6)}#mTitle{font-size:clamp(28px,4.5vw,44px)!important;font-weight:800!important;line-height:1.05;letter-spacing:-.02em;margin:8px 0 14px;color:#fff;text-shadow:0 2px 12px rgba(0,0,0,.4)}#mRoute{font-size:clamp(13px,1.4vw,17px)!important;letter-spacing:.14em;font-weight:600;line-height:1.5;opacity:.95;text-shadow:0 1px 6px rgba(0,0,0,.5)}.tab-section-title{display:flex;align-items:center;gap:12px;font-size:19px;font-weight:700;color:#1a202c;margin:28px 0 18px;padding-bottom:12px;border-bottom:2px solid #01a298}.tab-section-title svg{width:22px;height:22px;color:#01a298}.price-hero{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:22px;padding:20px 24px;background:linear-gradient(135deg,#f7fafc 0,#fff 100%);border:1px solid #e2e8f0;border-left:4px solid #01a298;border-radius:12px;margin-bottom:14px;transition:color .2s ease,background-color .2s ease,border-color .2s ease,box-shadow .2s ease,opacity .2s ease,transform .2s ease}.price-hero:hover{box-shadow:0 6px 20px rgba(1,162,152,.15);transform:translateY(-1px)}.ph-date-block{display:flex;flex-direction:column;align-items:center;gap:6px;padding-right:20px;border-right:1px solid #e2e8f0}.ph-date-icon{width:28px;height:28px;color:#01a298}.ph-date{font-size:14px;font-weight:700;color:#2d3748;text-align:center;white-space:nowrap}.ph-price-info{display:flex;flex-direction:column;gap:2px}.ph-from,.ph-price small{color:#718096;font-weight:600}.ph-from{font-size:11px;text-transform:uppercase;letter-spacing:.08em}.ph-price{font-size:28px;font-weight:800;color:#01a298;line-height:1}.ph-price small{font-size:13px;margin-left:4px}.ph-taxes{font-size:12px;color:#4a5568}.tarifas-block{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:24px 28px;white-space:pre-wrap;font-size:14px;line-height:1.85;color:#2d3748;font-family:"Inter",system-ui,sans-serif}.tar-section{margin:16px 0;padding:14px 16px;background:#f7fafc;border-left:3px solid #01a298;border-radius:6px}.tar-section-title{font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:#01a298;margin-bottom:6px;display:flex;align-items:center;gap:8px}.tar-section-title::before{content:"";width:6px;height:6px;background:#01a298;border-radius:50%}.tar-section-body{font-size:14px;color:#2d3748;line-height:1.7;white-space:pre-line}.tar-section-body strong{color:#01a298;font-weight:700}.cancel-timeline{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:8px}.cancel-step{text-align:center;padding:14px 8px;background:#fff;border:1px solid #e2e8f0;border-radius:10px}.cancel-step-days{display:block;font-size:22px;font-weight:800;color:#01a298;margin-bottom:4px}.cancel-step-label{font-size:11px;color:#718096;text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin-bottom:6px}.cancel-step-pct{font-size:14px;font-weight:700;color:#c53030}.cb-nights,.cb-title{font-weight:800!important}.cb-nights{display:inline-block;background:rgba(255,255,255,.2);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:6px 14px;border-radius:999px;font-size:13px!important;letter-spacing:.12em;text-transform:uppercase;margin-bottom:12px;border:1px solid rgba(255,255,255,.3)}.cb-title{font-size:clamp(15px,1.55vw,19px)!important;line-height:1.2!important;margin-bottom:10px;letter-spacing:-.01em;-webkit-line-clamp:2!important;line-clamp:2!important;min-height:2.4em!important;max-height:2.4em!important;height:auto!important;text-wrap:balance;overflow-wrap:break-word;hyphens:auto}.cb-route{font-size:11px!important;letter-spacing:.14em!important;line-height:1.6!important;opacity:.92;margin-bottom:14px}.cb-sal{font-size:14px;font-weight:600;margin:10px 0}.cb-cta{display:inline-flex;align-items:center;gap:6px;background:#fff;color:#01a298;padding:10px 22px;border-radius:999px;font-size:12px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;margin-top:10px;box-shadow:0 4px 14px rgba(0,0,0,.15);transition:transform .2s ease,box-shadow .2s ease}.cb-cta::after{content:"→";font-size:14px;transition:transform .2s ease}.card:hover .cb-cta,.itin-download:hover{transform:translateY(-1px);box-shadow:0 6px 18px rgba(0,0,0,.25)}.card:hover .cb-cta::after{transform:translateX(3px)}.card-region-tag{font-weight:700;letter-spacing:.12em;font-size:10px}.itin-download-wrap{display:flex;justify-content:flex-end;margin:0 0 18px}.itin-download{display:inline-flex;align-items:center;gap:10px;background:linear-gradient(135deg,#01a298,#018a81);color:#fff;padding:11px 22px;border-radius:10px;font-family:"Montserrat",sans-serif;font-size:13px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;text-decoration:none;box-shadow:0 4px 14px rgba(1,162,152,.32);transition:transform .15s ease,box-shadow .15s ease}.itin-download:hover{box-shadow:0 6px 20px rgba(1,162,152,.42);color:#fff}.itin-download svg{width:18px;height:18px}.itin-day{border:1px solid #e2e8f0;border-radius:12px;background:#fff;margin-bottom:10px;overflow:hidden;transition:box-shadow .2s ease,border-color .2s ease}.itin-day[open]{border-color:#01a298;box-shadow:0 4px 16px rgba(1,162,152,.12)}.itin-day-summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:14px;padding:16px 20px;font-family:"Montserrat",sans-serif;font-weight:800;font-size:15px;color:#1a202c;user-select:none;transition:background .15s ease}.itin-day-summary::-webkit-details-marker{display:none}.itin-day-summary:hover{background:#f7fafc}.itin-day[open] .itin-day-summary{background:linear-gradient(135deg,rgba(1,162,152,.06),rgba(1,162,152,.02));border-bottom:1px solid #e2e8f0}.itin-day-num{flex-shrink:0;width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#01a298,#018a81);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:900;font-family:"Montserrat",sans-serif;box-shadow:0 2px 8px rgba(1,162,152,.3)}.itin-day-title{flex:1;line-height:1.3}.itin-day-chevron{flex-shrink:0;width:20px;height:20px;color:#01a298;transition:transform .25s ease}.itin-day[open] .itin-day-chevron{transform:rotate(180deg)}.itin-day-body{padding:18px 22px 22px 70px;color:#4a5568;font-size:14px;line-height:1.75}@media (max-width:640px){.itin-day-summary{padding:14px 16px;font-size:14px;gap:11px}.itin-day-num{width:30px;height:30px;font-size:12px}.itin-day-body{padding:14px 16px 18px 56px;font-size:13px}}.seats-badge{display:inline-flex;align-items:center;gap:5px;font-family:"Montserrat",sans-serif;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;padding:4px 9px;border-radius:14px;line-height:1;white-space:nowrap}.seats-badge::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:currentColor;animation:seatsPulse 2s ease-in-out infinite}.seats-badge.seats-ok{background:rgba(34,197,94,.18);color:#22c55e;border:1px solid rgba(34,197,94,.35)}.seats-badge.seats-low{background:rgba(251,146,60,.2);color:#fb923c;border:1px solid rgba(251,146,60,.4)}.seats-badge.seats-urgent{background:rgba(239,68,68,.22);color:#ef4444;border:1px solid rgba(239,68,68,.45)}.seats-badge.seats-cancel,.seats-badge.seats-sold{background:rgba(120,120,120,.25);color:#cbd5e1;border:1px solid rgba(160,160,160,.4)}.seats-badge.seats-cancel{color:#a0aec0}.price-hero .ph-seats{margin-top:10px}.price-hero .ph-seats .seats-badge{font-size:11.5px;padding:6px 13px}.dep-row .seats-badge{font-size:9px;padding:3px 6px;letter-spacing:.05em;margin-left:6px;flex-shrink:0}.dep-row{flex-wrap:wrap}

/* Fix: badge cupos en dep-row (segundas fechas no cortadas) */
.dep-row .dep-price-block{display:flex;flex-direction:column;align-items:flex-end;gap:2px;}
.dep-row .seats-badge{margin-top:3px;margin-left:0;font-size:8.5px;padding:2px 6px;letter-spacing:.04em;}
.dep-row{padding-top:8px;padding-bottom:8px;}

/* Fix final: cb-dates altura auto + dep-row align top + badge visible */
.cb-dates{height:auto!important;overflow:visible!important;justify-content:flex-start!important;min-height:108px;}
.dep-row{align-items:flex-start;height:auto!important;min-height:46px!important;flex-wrap:nowrap!important;}
.dep-row .dep-price-block{align-items:flex-end!important;}
.dep-row .dep-price-block .seats-badge{margin-top:4px!important;margin-left:0!important;font-size:8.5px;padding:2px 7px;letter-spacing:.04em;align-self:flex-end;white-space:nowrap;}

/* Fix: compactar back para que entre el CTA "Ver detalle completo" */
.card-back .cb-nights{margin-bottom:7px;}
.card-back .cb-title{font-size:15.5px;line-height:1.18;margin-bottom:6px;min-height:2.36em;max-height:2.36em;-webkit-line-clamp:2;line-clamp:2;}
.card-back .cb-route{margin-bottom:8px;font-size:10.5px;line-height:1.5;height:auto;max-height:3.2em;overflow:hidden;}
.card-back .cb-sal{margin-top:6px;margin-bottom:6px;padding-top:7px;}
.card-back .cb-dates{margin-top:0;gap:6px;}
.card-back .cb-cta{margin-top:8px;padding:10px 11px;font-size:11.5px;flex-shrink:0;}
.card-back{padding:14px 14px 16px;}

/* ═══════ Doble a Compartir Garantizado ═══════ */
.mhi-double{display:inline-flex;align-items:center;gap:10px;background:linear-gradient(135deg,#ffd54d 0%,#ffc107 100%);color:#1a3a36;padding:8px 16px 8px 12px;border-radius:24px;margin-top:12px;box-shadow:0 4px 14px rgba(255,193,7,.32),0 2px 6px rgba(0,0,0,.18);font-family:'Montserrat',sans-serif;cursor:help;transition:transform .2s ease,box-shadow .2s ease;border:1.5px solid rgba(255,255,255,.4);}
.mhi-double:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(255,193,7,.45),0 3px 8px rgba(0,0,0,.22);}
.mhi-double svg{width:24px;height:24px;color:#1a3a36;flex-shrink:0;}
.mhi-double-text{display:flex;flex-direction:column;line-height:1.05;gap:1px;}
.mhi-double-lbl{font-size:11.5px;font-weight:700;letter-spacing:.04em;color:#2c4a45;}
.mhi-double-tag{font-size:13.5px;font-weight:900;letter-spacing:.06em;color:#1a3a36;}
@media(max-width:640px){
  .mhi-double{padding:7px 13px 7px 10px;margin-top:10px;}
  .mhi-double svg{width:20px;height:20px;}
  .mhi-double-lbl{font-size:10.5px;}
  .mhi-double-tag{font-size:12px;}
}

/* Tarjeta destacada en pestaña Tarifas */
.tar-double-badge{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,#fff8e1 0%,#fffde7 100%);border:2px solid #ffd54d;border-left:6px solid #ffc107;border-radius:14px;padding:18px 22px;margin:0 0 22px;box-shadow:0 4px 16px rgba(255,193,7,.18);position:relative;overflow:hidden;}

.tar-double-badge > svg{width:46px;height:46px;color:#01A298;flex-shrink:0;background:rgba(1,162,152,.1);padding:9px;border-radius:50%;}
.tar-double-body{flex:1;}
.tar-double-title{font-family:'Montserrat',sans-serif;font-size:1.05rem;font-weight:800;color:#1a3a36;margin-bottom:6px;letter-spacing:-.005em;}
.tar-double-title strong{color:#018a81;font-weight:900;text-transform:uppercase;background:linear-gradient(135deg,#01A298,#0bbab0);-webkit-background-clip:text;background-clip:text;color:transparent;}
.tar-double-desc{font-size:.92rem;line-height:1.55;color:#3a4a47;}
.tar-double-desc b{color:#018a81;font-weight:800;}
@media(max-width:640px){
  .tar-double-badge{flex-direction:column;text-align:center;gap:10px;padding:16px;}
  .tar-double-badge > svg{width:40px;height:40px;}
}

/* === Tarifa: PRECIO === Header del price-hero rediseñado === */
.price-hero .ph-price-info{display:flex;flex-direction:column;align-items:flex-start;gap:6px;}
.price-hero .ph-from{display:inline;font-size:18px !important;font-weight:800 !important;color:#018a81 !important;letter-spacing:.01em !important;text-transform:none !important;margin:0 !important;font-family:'Montserrat',sans-serif !important;}
.price-hero .ph-price{display:inline;color:#22c55e !important;font-size:1.8rem !important;font-weight:900 !important;margin-left:6px !important;}
.price-hero .ph-price small{color:#22c55e !important;opacity:.7 !important;font-size:0.55em !important;}
/* Unir Tarifa: + precio en una sola línea visual */
.price-hero .ph-tarifa-row{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;}
.price-hero .ph-taxes{display:block !important;font-size:0.95rem !important;color:#4a5568 !important;margin-top:2px !important;}
.price-hero .ph-taxes b{color:#2d3748 !important;}
/* === R3: focus-visible (a11y keyboard) === */
:focus:not(:focus-visible){outline:none}
:focus-visible{outline:3px solid var(--teal-ring);outline-offset:2px;border-radius:4px;box-shadow:0 0 0 5px rgba(255,255,255,.9)}
.btn:focus-visible,.cta:focus-visible,.pkg-card:focus-visible,.rtab:focus-visible,.mtab:focus-visible,.mtab-month:focus-visible,.afilt:focus-visible,.staff-act:focus-visible,.sb-btn:focus-visible,.gal-nav:focus-visible,.gal-dot:focus-visible,.lt-fab-wa:focus-visible{outline:3px solid #01A298;outline-offset:3px;box-shadow:0 0 0 6px rgba(1,162,152,.18)}
.lt-fab-wa:focus-visible{outline-offset:4px}
a:focus-visible,button:focus-visible{outline-color:var(--teal-ring)}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--teal-ring);outline-offset:0;border-color:var(--teal-ring)}

}
@layer overrides{
/* Aquí van overrides futuros sin !important */
}

/* === M4: :has() para sold-out cards === */
.pkg-card:has(.seats-badge.seats-sold) .cb-cta{background:#9ca3af;cursor:not-allowed}
.dep-row.sold-out{opacity:.6}

/* === M5: @container query sidebar modal === */
#overlay .modal-shell{container-type:inline-size;container-name:modal}
@container modal (max-width:900px){
  #mSidebar{position:static;width:100%;margin-top:24px}
  #mSidebar .sb-btn{flex:1 1 calc(50% - 6px)}
}
@container modal (min-width:901px){
  #mSidebar{position:sticky;top:24px;align-self:flex-start}
}

/* === L1: Dark mode con prefers-color-scheme === */
@media (prefers-color-scheme: dark) and (max-width: 0px) {
  :root{
    --bg:#0a0f0d;
    --bg-2:#101816;
    --surface:#152120;
    --text:#e8eded;
    --text-muted:#9aa5a3;
    --line:#1f2e2b;
    color-scheme: dark;
  }
  body{background:var(--bg);color:var(--text)}
  .pkg-card,.modal-content,.staff-card,.why-card,.why-card-hero,.why-brand{background:var(--surface);color:var(--text)}
  .pkg-card .cb-title,.modal-hero-info h2,.section-head h2{color:var(--text)}
  .section-head p,.packs-intro,.pkg-card .cb-route,.staff-info h3{color:var(--text-muted)}
  .why-brand p,.why-brand h4{color:var(--text)}
  .modal-content,#tabPanel,.tab-panel{background:var(--surface)}
  .info-table th{background:var(--teal-solid);color:#fff}
  .info-table td{background:var(--surface);color:var(--text);border-bottom-color:var(--line)}
  .inc-card.yes{background:rgba(1,162,152,.08);border-color:var(--line)}
  .inc-card.no{background:rgba(220,38,38,.08);border-color:var(--line)}
  input,textarea,select{background:var(--bg-2);color:var(--text);border-color:var(--line)}
  .footer-cert-row .cert-single{background:#152120}
  .usd-menu{background:var(--bg-2);border:1px solid var(--line)}
}

.dep-row.sold-out{opacity:.85;background:rgba(220,38,38,.08)}.dep-row.sold-out .dep-date{color:#9ca3af}.dep-row.sold-out .dep-date::after{content:""}.dep-row.sold-out .dep-price,.dep-row.sold-out .dep-tax{text-decoration:line-through;color:#9ca3af;opacity:.7}.dep-row.sold-out .seats-badge{display:none}.dep-row.sold-out::before{content:"AGOTADA";position:absolute;top:6px;right:8px;background:#dc2626;color:#fff;font-size:9px;font-weight:800;padding:2px 7px;border-radius:4px;letter-spacing:.6px;z-index:2}.dep-row{position:relative}
/* ─── Fix dropdown AGV: puente invisible entre trigger y dropdown ─── */
.nlink-drop::after{content:"";position:absolute;left:0;right:0;top:100%;height:14px;pointer-events:auto}.nlink-drop .dropdown{transition:opacity .15s ease,transform .15s ease,visibility 0s linear .2s;visibility:hidden}.nlink-drop:hover .dropdown,.nlink-drop:focus-within .dropdown{visibility:visible;transition:opacity .15s ease,transform .15s ease,visibility 0s linear 0s}

/* Itinerario: línea pequeña Incluye + ciudad chica */
.itin-day-body .itin-meals-mini{margin-top:10px;font-size:12px;color:#94a3b8;line-height:1.4}.itin-day-body .itin-meals-lbl{font-weight:600;color:#64748b;text-transform:uppercase;letter-spacing:.5px;font-size:10.5px;margin-right:4px}.itin-city-mini{color:#fbbf24;font-weight:500;font-size:.92em}/* Staff card: ocultar líneas vacías para evitar 'null' visible */
.staff-card .staff-phone:empty,
.staff-card .staff-email:empty{display:none}

/* ─── Badge AGOTADO visible dentro de modal Tarifas (.price-hero) ─── */
.price-hero .seats-badge,
.ph-seats .seats-badge{
  display:inline-block;
  padding:5px 14px;
  border-radius:20px;
  font-size:11px;
  font-weight:800;
  letter-spacing:.8px;
  text-transform:uppercase;
  line-height:1
}
.price-hero .seats-badge.seats-sold,
.ph-seats .seats-badge.seats-sold{
  background:#dc2626;
  color:#fff;
  border:1px solid #b91c1c;
  opacity:1;
  box-shadow:0 2px 8px rgba(220,38,38,.35)
}
.price-hero .seats-badge.seats-cancel,
.ph-seats .seats-badge.seats-cancel{
  background:#6b7280;
  color:#fff;
  opacity:1
}
.price-hero .seats-badge.seats-urgent,
.ph-seats .seats-badge.seats-urgent{
  background:#f59e0b;
  color:#fff;
  opacity:1
}
.price-hero .seats-badge.seats-low,
.ph-seats .seats-badge.seats-low{
  background:#0891b2;
  color:#fff;
  opacity:1
}
.price-hero .seats-badge.seats-ok,
.ph-seats .seats-badge.seats-ok{
  background:#10b981;
  color:#fff;
  opacity:1
}

/* Staff card: alineación uniforme de botones WhatsApp/Email al fondo */
.staff-card{display:flex;flex-direction:column;height:100%}
.staff-info{flex:1 1 auto}
.staff-actions{margin-top:auto;display:grid;grid-template-columns:1fr 1fr;gap:0}
.staff-actions .staff-act{display:flex;align-items:center;justify-content:center;min-height:44px;width:100%}
.staff-grid,#staffGrid{align-items:stretch}
/* ═══════════ MOBILE RESPONSIVE FIXES — junio 2026 ═══════════ */
/* Tabs del modal: scroll horizontal sin pisarse */
.modal-tabs-nav{
  display:flex ;
  overflow-x:auto ;
  overflow-y:hidden;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:thin;
  flex-wrap:nowrap;
  scroll-snap-type:x proximity;
}
.modal-tabs-nav::-webkit-scrollbar{height:3px}
.modal-tabs-nav::-webkit-scrollbar-thumb{background:var(--teal);border-radius:2px}
.mtab{
  flex:0 0 auto !important;
  flex-shrink:0 !important;
  white-space:nowrap !important;
  scroll-snap-align:start;
}
@media (max-width:768px){
  .modal-tabs-nav{padding:0 10px }
  .mtab{
    font-size:11px !important;
    padding:11px 12px !important;
    letter-spacing:.04em !important;
    min-height:44px;
    display:inline-flex;
    align-items:center;
  }
}
@media (max-width:560px){
  .mtab{
    font-size:10.5px !important;
    padding:11px 10px !important;
    letter-spacing:.03em !important;
  }
  /* Hero del modal más compacto */
  .modal-hero-info h2{font-size:1.05rem }
  .modal-hero-info{padding:14px }
  /* Sidebar y body en columna en mobile */
  .modal-body{
    display:block ;
    grid-template-columns:1fr ;
  }
  .modal-sidebar{
    width:100% ;
    max-width:none ;
    padding:16px ;
    border-left:none ;
    border-top:1px solid var(--gray-line);
  }
  .modal-content{padding:16px }
  /* Tablas dentro del modal scrolleables */
  .info-table{
    display:block;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    font-size:11px !important;
  }
  .info-table th,.info-table td{padding:6px 8px !important;white-space:nowrap}
  /* Region/month tabs no se pisan */
  .rtab,.mtab-month{flex:0 0 auto !important;white-space:nowrap}
  #regionTabs,#monthTabs{
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    flex-wrap:nowrap !important;
  }
  /* Touch targets mínimos 44px */
  .rtab,.mtab,.mtab-month,.afilt,.sb-btn{min-height:42px}
  /* Modal con margen lateral y ancho controlado */
  #overlay .modal-frame{
    width:96vw ;
    max-width:96vw ;
    margin:8px auto ;
    max-height:calc(100vh - 16px) ;
  }
  /* Hero responsivo */
  .hero{min-height:480px !important}
  .hero-title{font-size:clamp(1.7rem,7vw,2.6rem) }
  .hero-sub{font-size:.95rem }
  /* Cards de paquete más cómodas */
  .pkg-grid{grid-template-columns:1fr !important;gap:14px !important;padding:0 12px !important}
  /* Section paddings reducidos */
  section{padding-left:14px !important;padding-right:14px !important}
  /* No overflow horizontal global */
  body,html{overflow-x:hidden !important;max-width:100vw}
}
@media (max-width:380px){
  .mtab{font-size:10px !important;padding:10px 8px !important;letter-spacing:.02em !important}
  .ph-price{font-size:1.6rem !important}
}
/* Indicador visual de scroll en tabs (degradado a la derecha) */
.modal-tabs-nav{position:relative}
.modal-tabs-nav::after{
  content:"";
  position:sticky;
  right:0;
  width:24px;
  height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.95));
  pointer-events:none;
  align-self:stretch;
  flex-shrink:0;
  margin-left:-24px;
}

/* F4 — CLS prevention: aspect-ratio para hero (LCP candidate) */
.hero{aspect-ratio:16/9;min-height:520px}
@media (max-width:768px){.hero{aspect-ratio:4/5;min-height:480px}}
.hero img{aspect-ratio:inherit;width:100%;height:100%;object-fit:cover}

/* L1-FIX 2026-06-30 — Force light scheme: dark mode CSS estaba incompleto y causaba layout roto en navegadores con prefers-color-scheme: dark. */
:root{color-scheme:light !important;forced-color-adjust:none}
html{color-scheme:light}
body{background:#fff;color:#222}
@media (prefers-color-scheme:dark){
  :root{color-scheme:light}
  html,body{background:#fff !important;color:#222 !important;color-scheme:light !important}
}

/* Descripciones expandidas de política de cancelación */
.cancel-desc-list{
  list-style:disc;
  padding-left:22px;
  margin:14px 0 4px 0;
  color:#4b5563;
  font-size:.94rem;
  line-height:1.55
}
.cancel-desc-list li{margin-bottom:6px}
.cancel-desc-list li:last-child{margin-bottom:0}

/* INP fixes — Fase 1 2026-07-02 · GPU compositing sólo donde no rompe flip cards */
.card-front-ovl {
  will-change: opacity;
}

/* Touch targets mobile mínimos 44px */
@media (max-width: 500px) {
  .rtab, .mtab, .mtab-month, .afilt {
    min-height: 44px;
    padding: 10px 14px;
  }
}



/* Fix flip cards — 2026-07-02 · restaurar hover flip en desktop con puntero fino */
@media (hover: hover) and (pointer: fine) {
  .pkg-card:hover .card-inner,
  .pkg-card:focus .card-inner,
  .pkg-card:focus-within .card-inner {
    transform: rotateY(180deg) ;
  }
  .pkg-card .card-inner {
    transition: transform .55s cubic-bezier(.4, 0, .2, 1) ;
  }
}

/* Política de cancelación · cards con rangos de días (v2 · 2026-07-02) */
.cancel-step {
  display: flex;
  flex-direction: column;
  gap: 8px;
  text-align: center;
  padding: 18px 14px;
}
.cancel-step-range {
  font-family: 'Montserrat', sans-serif;
  font-size: 15px;
  font-weight: 700;
  color: var(--teal);
  line-height: 1.25;
  text-transform: none;
  letter-spacing: 0;
}
.cancel-step-pct {
  font-family: 'Montserrat', sans-serif;
  font-size: 13px;
  font-weight: 700;
  color: #b91c1c;
  letter-spacing: .04em;
  text-transform: uppercase;
}
@media (max-width: 768px) {
  .cancel-step-range { font-size: 13px }
  .cancel-step-pct { font-size: 11.5px }
}

/* Hotel links (pestaña Hotelería) - clickeables al sitio oficial */
.hotel-link{color:#01A298;text-decoration:none;font-weight:600;border-bottom:1px dotted #01A298;transition:color .15s ease,border-color .15s ease}
.hotel-link:hover{color:#017a72;border-bottom-color:#017a72;text-decoration:none}
.hotel-link:focus-visible{outline:2px solid #01A298;outline-offset:2px;border-radius:2px}


/* ═══════ GRUPAL · ACOMPAÑADA · GARANTIZADA badges ═══════ */
.card-guarantee-tag{
  position:absolute;
  top:44px;left:12px;
  z-index:3;
  background:linear-gradient(135deg,#01A298 0%,#019992 100%);
  color:#fff;
  font-size:9px;
  font-weight:800;
  letter-spacing:.3px;
  padding:5px 9px;
  border-radius:6px;
  box-shadow:0 2px 6px rgba(0,0,0,.25);
  text-transform:uppercase;
  white-space:nowrap;
  line-height:1;
  pointer-events:none;
  text-align:center;
  max-width:calc(100% - 24px);
}
@media (max-width:480px){
  .card-guarantee-tag{font-size:8px;padding:4px 7px;top:38px;left:10px;letter-spacing:.2px}
}
.card-front .card-region-tag{z-index:3}

/* Segundo pill "GRUPAL · ACOMPAÑADA · GARANTIZADA" en modal */
.mhi-double-tag--extra{
  display:inline-block;
  margin-top:4px;
  background:linear-gradient(135deg,#01A298 0%,#019992 100%) ;
  color:#fff ;
  font-size:10px ;
  padding:3px 8px ;
  border-radius:4px;
  letter-spacing:.5px;
  white-space:nowrap;
}

/* ═══════ Dos pills .mhi-double lado a lado ═══════ */
.mhi-double + .mhi-double{
  margin-left:10px;
}
@media (max-width:640px){
  .mhi-double + .mhi-double{
    margin-left:0;
    margin-top:8px;
  }
  .modal-hero-info .mhi-double{
    display:flex;
  }
}

/* Limpiar el estilo del pill --extra que ya no se usa (por si quedara alguno en cache) */
.mhi-double-tag--extra{display:none ;}

/* ═══════ WCAG 2.4.1 · Skip Link ═══════ */
.skip-link{
  position:absolute;
  top:-40px;
  left:0;
  background:var(--teal-solid);
  color:#fff;
  padding:8px 16px;
  z-index:9999;
  text-decoration:none;
  font-weight:700;
  border-bottom-right-radius:6px;
  transition:top .15s cubic-bezier(.16,1,.3,1);
}
.skip-link:focus{top:0;outline:2px solid #ffd54d;outline-offset:2px}

/* ═══════ Utility classes (extraídas de style inline) ═══════ */
.form-label{display:block;font-size:13px;font-weight:600;margin-bottom:4px}
.form-input{width:100%;padding:9px 12px;border:1.5px solid #ddd;border-radius:6px;box-sizing:border-box}
.form-input--textarea{resize:vertical}
.form-input--gray{background:#fafafa}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.footer-logo{height:110px;width:auto;margin-left:-6px;filter:brightness(0) invert(1)}

/* Spacing utilities */
.u-mt-16{margin-top:16px}
.u-mt-18{margin-top:18px}
.u-mt-20{margin-top:20px}
.u-mt-22{margin-top:22px}
.u-mb-12{margin-bottom:12px}
.u-mb-20{margin-bottom:20px}
.u-mb-36{margin-bottom:36px}
.u-pt-30{padding-top:30px}
.u-pt-40{padding-top:40px}
.u-pt-50{padding-top:50px}

/* Layout utilities */
.u-nowrap{white-space:nowrap}
.u-text-right{text-align:right}
.u-hidden{display:none}
.u-invisible{visibility:hidden}
.visually-hidden-focusable{position:absolute;left:-9999px;z-index:9999}
.visually-hidden-focusable:focus{left:0;position:fixed;top:0}

/* Button reset */
.btn-reset{background:none;border:none;cursor:pointer;color:inherit;font:inherit;padding:0}

/* ═══════ Content-visibility · optimización LCP/TBT ═══════ */
/* El navegador skippea rendering hasta que están cerca del viewport */
#why-elegirnos,
#por-que-elegirnos,
.operator-strip,
#footer,
footer,
.footer{
  content-visibility:auto;
  contain-intrinsic-size:600px;
}

/* Reducir motion para usuarios que lo prefieren (WCAG 2.3.3) */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
}

/* ═══════ Ocultar pills grupales en modal individual ═══════ */
#modal.modal--individual .mhi-double{
  display:none !important;
}


/* ── Auditoría 2026-08-07 · @layer overrides ───────────────────────────── */
@layer overrides{
  /* Sólo elementos sobre el fondo CLARO. .dep-price y .cb-nights viven dentro
     de .card-back, que es superficie oscura (foto + velo): ahí el teal oscuro
     cae a 1,22:1 y el correcto es el claro original. .why-eyebrow se corrige en
     su <style> inline: una declaración sin capa gana contra cualquier @layer,
     así que overrides no puede alcanzarla. */
  .usd-banner-val,.usd-banner-val span,.page-eyebrow,
  .hotel-link,.adm-cta,.staff-act{color:var(--teal-text)}
  /* Superficie oscura: se conserva el teal claro (4,86:1 sobre el velo) */
  .dep-price,.cb-nights{color:var(--teal-on-dark)}
  /* Era #fff sobre fondo #fff — invisible desde antes de esta auditoría */
  .usd-menu-title{color:#1a3c2e}
  .hotel-link{border-bottom-color:var(--teal-text)}
  /* Los skip links NO van acá: .lt-skip-link se declara en el <style> inline de
     index.html (sin capa, gana contra cualquier @layer) y .skip-to-content no
     tenía regla CSS alguna — se pintaba desde atributos onfocus/onblur. Ambos
     se corrigen en su origen. */
  .hero-cta,.rtab.active,.mtab-month.active,.btn-primary,.cta{background:var(--teal-solid)}
  .usd-menu-sub{color:var(--teal-text)}
  .usd-menu-empty{color:#5b6664}
  .ig-btn{min-width:24px;min-height:24px}
  /* el reverso de la tarjeta necesita un velo propio: el contraste del texto
     no puede depender de la foto de portada */
  .card-back::before{content:"";position:absolute;inset:0;background:rgba(4,26,22,.72);z-index:0}
  .card-back>*{position:relative;z-index:1}
  /* botón de pausa del video de fondo (WCAG 2.2.2) */
  .hero-motion-toggle{position:absolute;left:16px;bottom:16px;z-index:6;
    display:inline-flex;align-items:center;gap:8px;min-height:44px;min-width:44px;
    padding:10px 14px;border:2px solid rgba(255,255,255,.85);border-radius:8px;
    background:rgba(4,26,22,.62);color:#fff;font:600 13px/1 'Montserrat',sans-serif;
    cursor:pointer;backdrop-filter:blur(4px)}
  .hero-motion-toggle:hover{background:rgba(4,26,22,.85)}
  .hero-motion-toggle svg{width:16px;height:16px;fill:currentColor}
  /* estado degradado del catálogo (reemplaza el bucle de recarga) */
  .pkg-fallback{grid-column:1/-1;padding:40px 24px;text-align:left;
    border:2px solid rgba(26,60,46,.14);border-radius:14px;background:#fff}
  .pkg-fallback h3{font:700 20px/1.2 'Montserrat',sans-serif;color:#1a3c2e;margin:0 0 8px}
  .pkg-fallback p{color:#5b6664;font-size:15px;line-height:1.6;margin:0 0 18px;max-width:56ch}
  .pkg-fallback .pkg-fallback-actions{display:flex;flex-wrap:wrap;gap:10px}
  .pkg-skeleton{border-radius:14px;background:#e9eeed;aspect-ratio:3/4;
    animation:pulse 1.4s ease-in-out infinite}
  /* error por campo en el formulario de alta (WCAG 3.3.1) */
  .field-error{display:block;margin-top:6px;color:#a8140b;font-size:13px;line-height:1.4;font-weight:600}
  .field input[aria-invalid="true"],.field select[aria-invalid="true"]{border-color:#a8140b}
  .alta-error-summary{border:2px solid #a8140b;background:#fff5f4;padding:16px 18px;margin:0 0 20px;border-radius:10px}
  .alta-error-summary h3{margin:0 0 8px;font:700 16px/1.2 'Montserrat',sans-serif;color:#a8140b}
  .alta-error-summary ul{margin:0;padding-left:18px}
  .alta-error-summary a{color:#a8140b;font-weight:600}
}


/* ═══════════════════════════════════════════════════════════════════════════
   Auditoría 2026-08-07 · reverso de la tarjeta — contraste
   SIN @layer a propósito: las reglas sin capa de esta misma hoja le ganan a
   cualquier @layer, así que "overrides" no alcanzaba. Van al final, sin capa.

   El reverso es superficie oscura (foto + velo .card-back::before al 72%), pero
   los chips que van encima tenían fondo BLANCO translúcido. Esa capa aclara el
   fondo local y hunde el texto claro que lleva arriba:
     .cb-nights   2,94:1   ·  .dep-price 4,15:1
     .dep-tax     3,51:1   ·  .seats-badge 2,29:1
   Los cuatro piden 4,5:1 (ninguno califica como texto grande).

   Se invierten los chips a oscuro en vez de subir la opacidad del velo, que
   necesitaría .98 y borraría la foto de portada.
   ═══════════════════════════════════════════════════════════════════════════ */
.card-back .cb-nights{background:rgba(4,26,22,.45)}
.card-back .dep-row{background:rgba(4,26,22,.35)}
.card-back .dep-tax{color:var(--ink-dim)}
/* Auditoría 2026-08-07 · badges de cupo en el reverso — corrección de regresión
   La corrección de contraste anterior escribió UNA regla para .seats-badge y
   aplastó las cuatro variantes a verde: "AGOTADO" se pintaba con el color de
   "hay lugar", y las urgentes quedaban con el halo rojo detrás de un badge
   verde. Sólo el borde de 1px conservaba el matiz, que no es señal usable.
   Ahora va una por variante, cada una medida contra el fondo compuesto
   (foto blanca → velo .72 → fondo del badge), el peor caso. */
.card-back .seats-badge.seats-ok{background:rgba(22,101,52,.55);color:#86EFAC}
.card-back .seats-badge.seats-low{background:rgba(120,53,15,.60);color:#FCD34D}
.card-back .seats-badge.seats-urgent{background:rgba(127,29,29,.60);color:#FCA5A5}
.card-back .seats-badge.seats-sold,
.card-back .seats-badge.seats-cancel{background:rgba(38,38,38,.62);color:#D4D4D4}

/* ── Reverso, continuación ──────────────────────────────────────────────────
   Barrido exhaustivo: TODO nodo con texto propio dentro de .card-back, en los
   dos estados (normal y agotado) y contra los dos extremos de foto. Aparecieron
   tres casos que la tanda anterior no cubría, por corregir una lista de
   selectores en vez de la clase de problema:

   · .cb-cta  — pastilla BLANCA OPACA con texto teal: 3,17:1. No dependía del
     velo. En estado agotado el gris #9CA3AF lo dejaba en 1,25:1, peor que el
     normal, y es el affordance principal del reverso.
   · .cb-sal y .cb-route — texto blanco con alfa .55 / .75 directo sobre el
     velo: 3,48:1 y 4,47:1.
   · La paleta gris del estado agotado (#9CA3AF) estaba calibrada contra los
     chips blancos anteriores; sobre el chip oscuro cae a 4,06:1.

   Todo el texto secundario del reverso pasa a --ink-dim en lugar de un alfa
   distinto por elemento: con el velo al 72% de por medio, cualquier alfa por
   debajo de .85 cae bajo 4,5:1 con foto blanca. Mínimo resultante: 5,06:1. */
.card-back .cb-cta{background:var(--teal-solid);color:#fff}
.pkg-card:has(.seats-badge.seats-sold) .cb-cta{background:#4B5563;color:#fff}
.card-back .cb-sal,
.card-back .cb-route{color:var(--ink-dim)}
.card-back .dep-row.sold-out{opacity:1}
.card-back .dep-row.sold-out .dep-date,
.card-back .dep-row.sold-out .dep-price,
.card-back .dep-row.sold-out .dep-tax{color:var(--ink-dim)}

/* ── Estado agotado: la señal vuelve al flujo del texto ─────────────────────
   .dep-row.sold-out::before era un badge absoluto (right:8px, z-index:2) sobre
   una fila flex que no reservaba espacio para él: tapaba lo que estuviera en el
   extremo derecho en las 6 filas agotadas. El opacity:.45 original disimulaba
   el solape atenuando todo el bloque; al subirlo para recuperar contraste, el
   badge quedó sólido encima.

   Se elimina el overlay y la marca vuelve a .dep-date::after, dentro del flujo.
   Además de resolver el apilamiento, deja de depender del color para comunicar
   el estado (WCAG 1.4.1 Use of Color): "31 AGOSTO · AGOTADA" se lee igual en
   monocromo o con el CSS a medio cargar. */
.card-back .dep-row.sold-out::before{content:none}
.card-back .dep-row.sold-out .dep-date::after{
  content:" · AGOTADA";
  font-weight:800;
  letter-spacing:.06em;
  color:#FCA5A5;
}
.card-back .dep-row.sold-out{border-left-color:#FCA5A5}

/* ── Filtro por año ─────────────────────────────────────────────────────────
   Reusa .month-tabs / .mtab-month para no inventar un componente paralelo. Los
   años son el filtro más amplio, así que van arriba y con algo más de peso que
   los meses; el margen inferior los separa de la fila de regiones. */
.year-tabs{margin-bottom:14px}
.year-tabs .mtab-month{font-size:.82rem;font-weight:800;letter-spacing:.04em;padding:7px 18px}

/* ═══════════════════════════════════════════════════════════════════════════
   Auditoría 2026-08-07 · rendimiento de composición
   SIN @layer: la hoja declara base/components/utilities/overrides pero tiene
   234 reglas fuera de toda capa, que le ganan a cualquier @layer. Hasta que esa
   deuda se salde, lo correcto acá es no usar capas.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Animaciones infinitas que repintaban en cada frame ─────────────────────
   seatsBlink y lt-fab-pulse animaban box-shadow: el navegador repinta el
   elemento 60 veces por segundo, para siempre, aunque nadie lo mire. El mismo
   halo con un pseudo-elemento que escala y se desvanece corre en el compositor
   (transform + opacity), sin repaint. */
@keyframes ltHaloRing{from{transform:scale(1);opacity:.55}to{transform:scale(1.35);opacity:0}}

/* El halo va SÓLO en .seats-urgent, que es donde estaba seatsBlink. En un primer
   intento lo puse en .seats-low, que nunca tuvo animación: eso dejaba el
   repintado intacto y además inventaba un efecto donde no lo había.
   El color va explícito, no currentColor: el badge resuelve currentColor a su
   propio texto, así que el anillo de urgencia habría salido del color de "hay
   lugar" y comunicaba lo contrario. isolation:isolate acota el z-index:-1 al
   badge para que el halo no se cuele detrás de la tarjeta. */
.seats-badge.seats-urgent{position:relative;isolation:isolate}
.seats-badge.seats-urgent::after{
  content:"";position:absolute;inset:0;border-radius:inherit;
  background:rgba(239,68,68,.45);z-index:-1;
  animation:ltHaloRing 1.4s ease-out infinite;
  will-change:transform,opacity}

/* ── Propiedades de layout animadas ─────────────────────────────────────────
   Cada una dispara reflow de todo el documento en cada frame. */
.logo img{transition:transform .25s ease}          /* era height */
.why-block .why-card::before{
  transform-origin:left center;transition:transform .25s ease}  /* era width */
.why-block .why-card:hover::before{transform:scaleX(1)}

/* ── backdrop-filter fuera del reverso ──────────────────────────────────────
   16 .cb-nights con backdrop-filter = 16 capas de composición permanentes por
   un desenfoque que sólo se ve al girar la tarjeta. Desde la corrección de
   contraste el chip ya tiene fondo sólido, así que el blur no aporta nada. */
.card-back .cb-nights{backdrop-filter:none;-webkit-backdrop-filter:none}

/* ── El flip declara su intención al compositor sólo mientras dura ──────────
   will-change permanente en 16 tarjetas reserva memoria de GPU sin motivo; se
   activa al acercar el puntero y se libera al salir. */
.card-inner{transform:translateZ(0)}
.pkg-card:hover .card-inner,.pkg-card:focus-within .card-inner{will-change:transform}

/* ── Trabajo de render omitido en lo que está fuera de pantalla ─────────────
   contain-intrinsic-size evita que el salto de altura genere CLS. */
@supports (content-visibility:auto){
  .view:not(.active){content-visibility:hidden}
  /* #why-elegirnos no existe en el DOM: el bloque es .why-block. */
  .why-block,#footer,.staff-grid{content-visibility:auto;contain-intrinsic-size:auto 600px}
}

/* ═══════════════════════════════════════════════════════════════════════════
   Material para agencias · reproductor ampliado
   El bloque del sidebar dejó de reproducir: ahora es una portada con botón.
   Un solo reproductor activo evita que el chico y el grande suenen a la vez.
   ═══════════════════════════════════════════════════════════════════════════ */
.sb-vid{position:relative}
.sb-vid video{display:block;pointer-events:none}

.sb-vid-play{
  position:absolute; inset:0; width:100%; height:100%;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
  border:0; cursor:pointer; color:#fff;
  background:linear-gradient(180deg,rgba(4,26,22,.15) 0%,rgba(4,26,22,.62) 100%);
  font-family:'Montserrat',sans-serif; font-size:11px; font-weight:800;
  letter-spacing:.14em; text-transform:uppercase;
  transition:background-color .2s ease;
}
.sb-vid-play:hover{background:linear-gradient(180deg,rgba(4,26,22,.3) 0%,rgba(4,26,22,.75) 100%)}
.sb-vid-play-ico{
  width:54px; height:54px; border-radius:50%;
  display:grid; place-items:center;
  background:var(--teal-solid,#017A72); box-shadow:0 6px 18px -4px rgba(0,0,0,.5);
  transition:transform .2s ease;
}
.sb-vid-play:hover .sb-vid-play-ico{transform:scale(1.08)}
.sb-vid-play-ico svg{width:24px;height:24px;margin-left:3px}
.sb-vid-play-lbl{text-shadow:0 1px 4px rgba(0,0,0,.6)}
.sb-vid-play:focus-visible{outline:3px solid #fff;outline-offset:-4px}

#vidLightbox{
  position:fixed; inset:0; z-index:1100;               /* por encima de #overlay (1000) */
  background:rgba(4,14,12,.92); backdrop-filter:blur(6px);
  display:none; align-items:center; justify-content:center; padding:24px;
}
#vidLightbox.open{display:flex; animation:fadeIn .18s ease}
#vidLightbox[hidden]{display:none}

.vidlb-shell{width:100%; max-width:1080px; display:flex; flex-direction:column; gap:12px}
.vidlb-bar{display:flex; align-items:center; justify-content:space-between; gap:16px}
.vidlb-title{
  margin:0; color:#fff; font-family:'Montserrat',sans-serif;
  font-size:15px; font-weight:800; letter-spacing:.1em; text-transform:uppercase;
}
.vidlb-close{
  flex-shrink:0; width:44px; height:44px; border-radius:50%;
  background:rgba(255,255,255,.15); color:#fff; border:0;
  font-size:24px; line-height:1; cursor:pointer;
  transition:background-color .2s ease;
}
.vidlb-close:hover{background:rgba(255,255,255,.28)}
.vidlb-close:focus-visible{outline:3px solid #fff;outline-offset:3px}
.vidlb-player{
  width:100%; max-height:78vh; background:#000; border-radius:10px;
  display:block; box-shadow:0 24px 60px -20px rgba(0,0,0,.8);
}
.vidlb-hint{margin:0;color:rgba(255,255,255,.82);font-size:13px}

@media (max-width:640px){
  #vidLightbox{padding:12px}
  .vidlb-title{font-size:12px}
  .vidlb-player{max-height:64vh}
}

/* ═══════════════════════════════════════════════════════════════════════════
   Directorio de partners
   Los logos vienen en formatos y proporciones dispares, así que la celda fija
   una caja y object-fit:contain los encaja sin deformarlos ni recortarlos.
   ═══════════════════════════════════════════════════════════════════════════ */
.u-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}

.ptn-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:32px}
.ptn-search{position:relative;flex:1 1 280px;max-width:380px}
.ptn-search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);width:18px;height:18px;color:#7b8785;pointer-events:none}
.ptn-search input{
  width:100%;box-sizing:border-box;padding:12px 14px 12px 42px;
  border:1px solid var(--gray-line,#dde3e2);border-radius:10px;background:#fff;
  font-family:'Open Sans',sans-serif;font-size:15px;color:var(--dark,#1a3c2e);
}
.ptn-search input:focus-visible{outline:3px solid var(--teal-ring,#00706A);outline-offset:1px;border-color:var(--teal-ring,#00706A)}
.rtab-n{opacity:.65;font-weight:600}

.ptn-group{margin-bottom:44px}
.ptn-group-head{margin-bottom:18px;padding-bottom:10px;border-bottom:1px solid var(--gray-line,#dde3e2)}
.ptn-group-head h3{
  margin:0;font-family:'Montserrat',sans-serif;font-size:13px;font-weight:800;
  letter-spacing:.16em;text-transform:uppercase;color:var(--dark,#1a3c2e);
}
.ptn-group-head p{margin:4px 0 0;font-size:14px;color:#5b6664}

.ptn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px}

.ptn-card{
  display:flex;flex-direction:column;background:#fff;
  border:1px solid var(--gray-line,#dde3e2);border-radius:12px;overflow:hidden;
  text-decoration:none;color:inherit;
  transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;
}
.ptn-card:hover{border-color:var(--teal-solid,#017A72);box-shadow:0 10px 24px -14px rgba(0,0,0,.28);transform:translateY(-2px)}
.ptn-card:focus-visible{outline:3px solid var(--teal-ring,#00706A);outline-offset:2px}

.ptn-card-logo{
  height:104px;display:grid;place-items:center;padding:18px;
  background:var(--gray-bg-2,#f4f7f6);border-bottom:1px solid var(--gray-line,#dde3e2);
}
.ptn-card-logo img{max-width:100%;max-height:100%;object-fit:contain;display:block}
/* Las iniciales son la única identidad visual de un partner sin logo, y con
   40+ proveedores por cargar es el estado que más se va a ver. #9aa6a4 rendía
   2,38:1 sobre la celda y 2,51:1 sobre el blanco de la vista propia — por
   debajo del 3:1 que exige el texto grande. #6b7775 da 4,41:1 y 4,65:1: pasa
   incluso como texto normal, así que aguanta si el tamaño baja, y sigue
   subordinado al logo real. */
.ptn-card-ini{
  font-family:'Montserrat',sans-serif;font-size:28px;font-weight:800;
  letter-spacing:.04em;color:#6b7775;
}
.ptn-card-meta{padding:14px 16px 16px;display:flex;flex-direction:column;gap:3px}
.ptn-card-name{font-family:'Montserrat',sans-serif;font-size:14px;font-weight:800;color:var(--dark,#1a3c2e);line-height:1.25}
.ptn-card-dest{font-size:12.5px;color:#5b6664;line-height:1.4}
.ptn-card-docs{margin-top:4px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--teal-text,#00706A)}

.ptn-empty,.ptn-sinresultado{
  padding:44px 24px;text-align:center;background:var(--gray-bg-2,#f4f7f6);
  border:1px dashed var(--gray-line,#dde3e2);border-radius:12px;color:#5b6664;
}
.ptn-empty-t{font-family:'Montserrat',sans-serif;font-size:16px;font-weight:800;color:var(--dark,#1a3c2e);margin-bottom:8px}
.ptn-empty p,.ptn-sinresultado{margin:0;font-size:14.5px;line-height:1.6}

/* ── Vista propia del partner ───────────────────────────────────────────── */
.ptn-head{background:var(--gray-bg-2,#f4f7f6);border-bottom:1px solid var(--gray-line,#dde3e2);padding:32px 0 36px}
.ptn-head-in{max-width:1200px;margin:0 auto;padding:0 24px}
.ptn-back{
  display:inline-flex;align-items:center;gap:6px;margin-bottom:22px;
  font-family:'Montserrat',sans-serif;font-size:12px;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:var(--teal-text,#00706A);text-decoration:none;
}
.ptn-back svg{width:16px;height:16px}
.ptn-back:hover{text-decoration:underline}
.ptn-head-brand{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.ptn-head-logo{
  width:132px;height:88px;flex-shrink:0;display:grid;place-items:center;padding:14px;
  background:#fff;border:1px solid var(--gray-line,#dde3e2);border-radius:12px;
}
.ptn-head-logo img{max-width:100%;max-height:100%;object-fit:contain}
.ptn-head-name{margin:0;font-family:'Montserrat',sans-serif;font-size:clamp(22px,3vw,32px);font-weight:800;color:var(--dark,#1a3c2e);line-height:1.1}
.ptn-head-dest{margin:6px 0 0;font-size:15px;color:#5b6664}
.ptn-head-about{margin:20px 0 0;max-width:70ch;font-size:15.5px;line-height:1.7;color:#3f4a48}
.ptn-head-web{
  display:inline-flex;align-items:center;gap:7px;margin-top:18px;
  font-family:'Montserrat',sans-serif;font-size:12px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;color:var(--teal-text,#00706A);text-decoration:none;
}
.ptn-head-web svg{width:15px;height:15px}
.ptn-head-web:hover{text-decoration:underline}

.ptn-docs{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}
.ptn-doc{
  display:flex;align-items:center;gap:14px;padding:16px 18px;background:#fff;
  border:1px solid var(--gray-line,#dde3e2);border-radius:10px;
  text-decoration:none;color:inherit;
  transition:border-color .2s ease,background-color .2s ease;
}
.ptn-doc:hover{border-color:var(--teal-solid,#017A72);background:#fafcfb}
.ptn-doc:focus-visible{outline:3px solid var(--teal-ring,#00706A);outline-offset:2px}
.ptn-doc-ico{
  flex-shrink:0;width:42px;height:42px;border-radius:8px;display:grid;place-items:center;
  background:var(--teal-solid,#017A72);color:#fff;
  font-family:'Montserrat',sans-serif;font-size:10px;font-weight:800;letter-spacing:.06em;
}
.ptn-doc-body{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.ptn-doc-t{font-family:'Montserrat',sans-serif;font-size:14px;font-weight:700;color:var(--dark,#1a3c2e);line-height:1.3}
.ptn-doc-y{font-size:12px;color:#5b6664}
.ptn-doc svg{width:20px;height:20px;flex-shrink:0;color:var(--teal-text,#00706A)}

@media (max-width:640px){
  .ptn-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
  .ptn-card-logo{height:88px;padding:14px}
  .ptn-head-logo{width:104px;height:72px}
  .ptn-docs{grid-template-columns:1fr}
}

/* ═══════════════════════════════════════════════════════════════════════════
   Partners · agrupación por sección y consulta a ventas — 2026-08-09
   ═══════════════════════════════════════════════════════════════════════════ */

/* .ptn-docs es un grid de tarjetas; un grupo tiene que ocupar el ancho entero
   y llevar su propio grid adentro. Se usa grid-column en vez de :has() para no
   depender del soporte del selector. */
.ptn-grupo{grid-column:1/-1;border:1px solid var(--gray-line,#dde3e2);border-radius:12px;background:#fff;overflow:hidden}
.ptn-grupo+.ptn-grupo{margin-top:2px}

.ptn-grupo-h{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:15px 18px;cursor:pointer;list-style:none;
  background:var(--gray-bg-2,#f4f7f6);
  border-bottom:1px solid transparent;
  transition:background .15s ease,border-color .15s ease;
}
.ptn-grupo[open] .ptn-grupo-h{border-bottom-color:var(--gray-line,#dde3e2)}
.ptn-grupo-h:hover{background:#eef3f2}
.ptn-grupo-h::-webkit-details-marker{display:none}   /* Safari dibuja su propio triángulo */
.ptn-grupo-h:focus-visible{outline:3px solid var(--teal-ring,#00706A);outline-offset:-3px}

.ptn-grupo-t{
  font-family:'Montserrat',sans-serif;font-size:14px;font-weight:800;
  color:var(--dark,#1a3c2e);letter-spacing:.01em;line-height:1.3;flex:1;min-width:0;
}
.ptn-grupo-n{
  flex-shrink:0;min-width:26px;height:22px;padding:0 8px;border-radius:11px;
  display:grid;place-items:center;background:var(--teal-solid,#017A72);color:#fff;
  font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;
}
/* Indicador de abierto/cerrado propio: el marcador nativo no se puede alinear
   igual en todos los navegadores. */
.ptn-grupo-h::after{
  content:'';flex-shrink:0;width:10px;height:10px;margin-left:2px;
  border-right:2px solid #5b6664;border-bottom:2px solid #5b6664;
  transform:rotate(45deg) translate(-2px,-2px);transition:transform .18s ease;
}
.ptn-grupo[open] .ptn-grupo-h::after{transform:rotate(-135deg) translate(-2px,-2px)}

.ptn-grupo-body{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));
  gap:12px;padding:14px;
}

/* Cada circuito: el PDF arriba, la consulta a ventas debajo. */
.ptn-doc-row{display:flex;flex-direction:column;gap:0}
.ptn-doc-row .ptn-doc{border-bottom-left-radius:0;border-bottom-right-radius:0;border-bottom:0}

.ptn-doc-ventas{
  display:flex;gap:1px;background:var(--gray-line,#dde3e2);
  border:1px solid var(--gray-line,#dde3e2);border-top:0;
  border-radius:0 0 10px 10px;overflow:hidden;
}
.ptn-wa{
  flex:1;display:flex;align-items:center;justify-content:center;gap:7px;
  padding:9px 10px;background:#fff;color:#0f6b3f;text-decoration:none;
  font-family:'Montserrat',sans-serif;font-size:12px;font-weight:700;
  transition:background .15s ease,color .15s ease;
}
.ptn-wa svg{width:15px;height:15px;flex-shrink:0}
.ptn-wa:hover,.ptn-wa:focus-visible{background:#25D366;color:#fff}
.ptn-wa:focus-visible{outline:3px solid var(--teal-ring,#00706A);outline-offset:-3px}

/* En pantallas chicas el nombre del vendedor se corta antes que el ícono. */
@media (max-width:420px){
  .ptn-wa{font-size:11px;padding:9px 6px}
  .ptn-grupo-body{grid-template-columns:1fr;padding:10px}
  .ptn-grupo-h{padding:13px 14px}
}

/* ═══════════════════════════════════════════════════════════════════════════
   Partners · encabezados y logos — revisión 2026-08-09
   ───────────────────────────────────────────────────────────────────────────
   El material de marca que publica el proveedor no es homogéneo: de 27 imágenes
   15 son banners de página (header-*.jpg) que YA traen el nombre impreso, y las
   otras 12 son logos sueltos. Las proporciones van de 1:1 a 4,7:1.

   Con una caja de alto fijo, los banners anchos quedaban pegados al título y se
   leían como un bloque con el nombre repetido. Se pasa a una caja con relación
   de aspecto propia, fondo blanco y separación explícita del texto, para que
   cualquiera de los dos formatos entre sin pisar nada.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Tarjeta de la grilla ─────────────────────────────────────────────────── */
.ptn-card-logo{
  height:auto;                 /* la reemplaza la relación de aspecto */
  aspect-ratio:5/2;            /* acompaña al ancho de la columna */
  padding:14px 16px;
  background:#fff;             /* los banners suelen venir sobre blanco */
  border-bottom:1px solid var(--gray-line,#dde3e2);
}
.ptn-card-logo img{
  max-width:100%;max-height:100%;width:auto;height:auto;
  object-fit:contain;display:block;
}
/* El nombre pasa a leerse como epígrafe del banner, no como un segundo título
   compitiendo con el que ya trae la imagen. */
.ptn-card-meta{padding:13px 16px 15px;gap:4px}
.ptn-card-name{font-size:13.5px;line-height:1.3}
.ptn-card-dest{font-size:12px;color:#67716f}
.ptn-card-docs{margin-top:6px;font-size:10.5px}

/* ── Encabezado de la ficha ───────────────────────────────────────────────── */
/* Grid en lugar de flex+wrap: en pantallas angostas el logo y el texto se
   apilaban con separaciones distintas según el alto de cada imagen. */
.ptn-head{padding:28px 0 32px}
.ptn-head-brand{
  display:grid;
  grid-template-columns:minmax(0,172px) minmax(0,1fr);
  align-items:center;
  gap:24px;
}
.ptn-head-logo{
  width:100%;height:auto;aspect-ratio:5/2;
  padding:12px 14px;
  background:#fff;border:1px solid var(--gray-line,#dde3e2);border-radius:10px;
  display:grid;place-items:center;
}
.ptn-head-logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}

/* Jerarquía del texto: nombre, después destinos, después el resto. */
.ptn-head-name{font-size:clamp(20px,2.6vw,29px);line-height:1.15;letter-spacing:-.01em}
.ptn-head-dest{
  margin:7px 0 0;font-size:14px;color:#5b6664;line-height:1.45;
  display:flex;flex-wrap:wrap;gap:4px 10px;
}
.ptn-head-about{margin:18px 0 0;font-size:15px;line-height:1.65;max-width:68ch}
.ptn-head-web{margin-top:16px}

@media (max-width:640px){
  .ptn-head-brand{grid-template-columns:1fr;gap:16px;justify-items:start}
  .ptn-head-logo{max-width:200px}
  .ptn-head{padding:22px 0 26px}
}

/* ═══════════════════════════════════════════════════════════════════════════
   Partners · ajuste de proporción y encabezado centrado — 2026-08-09 (2ª vuelta)
   ───────────────────────────────────────────────────────────────────────────
   Con la caja en 5/2 (2,5:1) todo logo más cuadrado que esa proporción entraba
   por altura y quedaba angosto: un logo 1:1 usaba el 40% del ancho disponible.
   Los diez que se reportaron mal —TUI, Asian Spirit, Caucasus, Tailor, TUI
   Cruceros, Meridian, Miller, Best Costa Rica, Imperatore, Vive México,
   Exotic— son exactamente los de relación ≤ 2,10.

   La caja pasa a 2/1 y las tarjetas crecen. Un logo cuadrado ahora ocupa la
   mitad del ancho en vez del 40%, y los banners de 4,7:1 siguen entrando
   holgados: pierden altura, que es la dimensión que menos les importa.
   ═══════════════════════════════════════════════════════════════════════════ */

/* Tarjetas más grandes: la columna mínima sube de 200 a 250px. */
.ptn-grid{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:18px}

.ptn-card-logo{
  aspect-ratio:2/1;
  padding:12px 14px;
}

/* ── Encabezado de la ficha, centrado ─────────────────────────────────────── */
/* Pedido: logo y título centrados. Se abandona el grid de dos columnas por una
   pila centrada, que además resuelve sola el caso del móvil. */
.ptn-head{padding:30px 0 34px;text-align:center}
.ptn-head-brand{
  display:flex;flex-direction:column;align-items:center;gap:16px;
  grid-template-columns:none;      /* anula el grid de la vuelta anterior */
}
.ptn-head-logo{
  width:min(260px,72vw);height:auto;aspect-ratio:2/1;
  padding:14px 16px;margin:0 auto;
}
.ptn-head-name{text-align:center}
.ptn-head-dest{justify-content:center;text-align:center;margin-top:8px}
.ptn-head-about{margin:16px auto 0;text-align:center;max-width:62ch}
.ptn-head-web{margin-top:18px}
/* .ptn-back es un enlace suelto arriba: queda a la izquierda, no centrado. */
.ptn-back{text-align:left;align-self:flex-start}

/* Los documentos vuelven a alinearse a la izquierda: centrar listas largas
   perjudica la lectura. */
#ptnViewDocs,.ptn-docs,.ptn-grupo{text-align:left}

@media (max-width:640px){
  .ptn-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px}
  .ptn-head-logo{width:min(220px,80vw)}
}

/* ─────────────────────────────────────────────────────────────────────────
   Contraste AA — auditoría UI/UX 2026-08-11
   El teal de marca #01A298 da 3.17:1 sobre blanco: alcanza para controles y
   títulos grandes (umbral 3.0) pero no para texto normal, que exige 4.5:1.
   El sistema ya definía las dos variantes accesibles y ninguna regla las usaba.
   La corrección depende del fondo, no del selector:
     · sobre fondo claro  → --teal-text   #00706A  (5.96:1)
     · sobre fondo oscuro → --teal-on-dark #5BE8DE (7.6:1 sobre la placa negra)
   Se dejan intactos los estados .active de las pestañas (texto blanco sobre
   teal, ya correctos) y la franja oscura, donde el teal de marca da 5.91:1.
   ───────────────────────────────────────────────────────────────────────── */
.nlink.active, .nlink.teal,
.usd-pill, .usd-banner-val,
.lang-btn:hover, .lang-menu a.cur,
.hero-badge,
.rtab:hover,
.mtab-month:hover,
.mtab.active, .mtab:hover,
.mhi-nights,
.alta-step.active .alta-step-lbl strong,
.itin-day-title,
.platform-eyebrow, .platform-stat-num,
.page-eyebrow,
.btn-secondary:hover {
  color: var(--teal-text);
}

/* Etiqueta de región: va sobre una placa oscura encima de la foto, así que
   necesita el teal claro. Con el de marca daba 3.59:1 a 10px en negrita. */
.card-region-tag { color: var(--teal-on-dark); }

/* Badge del bloque "por qué elegirnos": blanco sobre el teal de marca a 10px
   daba 3.17:1. Se oscurece el fondo al teal sólido del sistema. */
.why-badge { background: var(--teal-solid); }

/* El logo se aplastaba dentro del encabezado (auditoría 2026-08-11).
   .logo img fija height:104px con width:auto, pero al ser hijo de un contenedor
   flex conserva flex-shrink:1 por defecto: cuando el ancho aprieta, el navegador
   le recorta el ancho sin tocar el alto y el logo sale deformado. Lighthouse lo
   medía en 54x104 sobre una imagen cuadrada. */
.logo img { flex-shrink: 0; }

/* El logo salía aplastado (auditoría 2026-08-11).
   .hdr-in es un grid "1fr auto 1fr". Las dos columnas 1fr no reparten en partes
   iguales: cada una tiene un piso implícito de min-content, y la tercera —idioma,
   cotización, Instagram— es ancha. A 1350px las columnas quedaban en
   60,7px | 861px | 317px, de modo que al logo le tocaban 61px; con la regla
   global img{max-width:100%} la imagen se recortaba a 53px de ancho conservando
   sus 104px de alto. Resultado: el logo estirado a la mitad, justo en la
   resolución de escritorio más común.
   Se le da un piso a la columna. El "auto" del centro cede el espacio. */
.hdr-in { grid-template-columns: minmax(124px, 1fr) auto 1fr; }
@media (max-width: 768px) {
  .hdr-in { grid-template-columns: minmax(84px, 1fr) auto 1fr; }
}

/* ===== FIX 2026-08-19 - salidas AGOTADAS: la tarifa quedaba cortada =====
   .dep-row ponia fecha y precio en una sola linea, ambos con white-space:nowrap.
   El ::after " - AGOTADA" sumaba ~55px y el bloque de precio se desbordaba del
   recuadro (hasta 31px). Ahora el cartel AGOTADA baja a su propia linea. */
.dep-row { gap: 8px; }
.dep-row .dep-date { flex: 1 1 auto; min-width: 0; }
.dep-row .dep-price-block { flex: 0 0 auto; }
.dep-row.sold-out .dep-date,
.card-back .dep-row.sold-out .dep-date { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; }
.dep-row.sold-out .dep-date::after,
.card-back .dep-row.sold-out .dep-date::after { content: "AGOTADA"; align-self: flex-start; font-family: Montserrat, sans-serif; font-size: 8.5px; font-weight: 800; letter-spacing: .09em; color: #fca5a5; background: rgba(252,165,165,.14); border: 1px solid rgba(252,165,165,.38); border-radius: 9px; padding: 1px 6px; line-height: 1.5; }
.dep-row.sold-out { opacity: .55; }
.dep-row.sold-out .dep-price { text-decoration-thickness: 1px; }

/* ===== FIX 2026-08-21 · el hero de la ficha recortaba la informacion =====
   .modal-hero tenia alto FIJO (240/200/170px segun ancho) y .modal-hero-info
   esta anclada abajo con position:absolute. Con ruta de una linea el bloque
   arranca en top=+14 y entra; con ruta de DOS lineas arranca en top=-11, o sea
   que se sale 11px por el borde superior de la imagen y recorta la insignia de
   noches y dias. Lo disparaba la unica salida con 10 destinos en la ruta
   (Paises Nordicos) contra 6 de las demas.

   PRIMER INTENTO FALLIDO, anotado para no repetirlo: poner solo
   height:auto + min-height NO alcanza. Al ser los hijos position:absolute no
   aportan altura al padre, asi que el hero colapsa y queda clavado en el
   min-height. Verificado en el navegador: seguia saliendose 11px.

   Lo que si funciona: el hero pasa a flex con el contenido alineado abajo, y el
   bloque de informacion vuelve al flujo (position:static). Asi el hero crece
   solo cuando la ruta ocupa dos lineas (medido: 240px -> 271px) y las otras 17
   fichas no cambian, porque su contenido entra en el minimo.
   Los tres minimos son los medidos en el navegador, no supuestos. */
.modal-hero { height: auto; min-height: 240px; display: flex; align-items: flex-end; }
.modal-hero-info { position: static; width: 100%; padding: 20px 28px; }
@media (max-width: 768px) {
  .modal-hero { min-height: 200px }
  .modal-hero-info { padding: 14px 18px }
}
@media (max-width: 560px) { .modal-hero { min-height: 170px } }

/* line-height 1.1 sobre Montserrat 900 recortaba 4px de los trazos inferiores
   del titulo en TODAS las fichas, no solo en la nordica. */
.modal-hero-info h2 { line-height: 1.18; }

/* 2026-08-24 · auditoria integral.
   A-1: los fondos teal con texto blanco daban 3,17:1 (WCAG AA pide 4,5 para
   texto normal). Se pasaron a var(--teal-solid) = #017A72, que da 5,21:1.
   El token ya existia en :root y no se usaba. El teal #01A298 se conserva en
   textos sobre fondo oscuro (5,91:1) y en superficies decorativas.
   P-1: el #hero descargaba el 768w mientras el poster del video descargaba el
   1280w y un preload sin consumidor traia el 1920w: 673 KB para una sola
   imagen visible. Ahora el fondo apunta al MISMO 1280w que el poster. */

/* Auditoria 2026-08-26 · el boton flotante de WhatsApp (fixed, 54x54, bottom:18px right:18px, z-index 800) se apoyaba justo encima de la ultima fila del pie y tapaba el enlace 'Defensa del Consumidor' en 320 y 390 px: quedaba cortado al medio y no se podia tocar. Es un enlace exigido por ley, no puede vivir debajo de un boton. 84px = los 72 que ocupa el boton (18 de separacion + 54 de alto) mas aire. Solo en pantallas chicas: en escritorio el boton cae al costado de la columna y no molesta. */
@media (max-width:768px){.footer-bottom{padding-bottom:84px}}

/* ── Encabezado en móvil · auditoría 2026-08-26 ──────────────────────────────
   Causa: .hdr-in es un grid de tres columnas y en móvil nav.main queda en
   display:none. Un item con display:none sale del flujo del grid, así que el
   autoposicionamiento mete .hdr-right en la columna del medio —la "auto"—, que
   se dimensiona al contenido (345px) y se sale de la pantalla, mientras la
   tercera columna queda en 0. En flex no puede pasar: el hijo oculto
   simplemente no existe y los otros dos reparten la fila. */
@media (max-width:768px){
  .hdr-in{display:flex;justify-content:space-between;gap:10px}
  .logo{justify-self:auto}
  .hdr-right{gap:10px;min-width:0}

}

/* Instagram sale de la barra en el celular: hoy queda cortado por la mitad y no
   se puede tocar, y el mismo enlace está en el pie. En tablet sí entra, así que
   se conserva. Se corta en 600px y no en 400 a propósito: a 390 entraba por 3px,
   un margen que se evapora en cuanto una traducción hace más ancho el botón de
   idioma. */
@media (max-width:600px){
  .ig-btn{display:none}
}

/* La regla de 400px agrandaba la píldora en vez de achicarla: a 390px medía
   154px y a 430px, 134px. Estaba peleando con la de 768px y ganando por ser más
   específica en el orden. Ahora acompaña. */
@media (max-width:400px){
  .usd-pill{font-size:10.5px;padding:4px 9px}
}

@media (max-width:430px){
  .hdr-in{padding:0 12px}
  .logo img{height:52px}
  .logo{padding-right:0}
  .lang-btn{padding:6px 9px;gap:5px;font-size:13px}
  .usd-pill{font-size:10.5px;padding:4px 9px}
}

@media (max-width:340px){
  .lang-btn .flag{display:none}
  .usd-pill{font-size:9.5px;padding:4px 7px}
}

/* El aspa para cerrar el menú quedaba debajo del propio menú.
   .mobile-menu es fixed con z-index:950 y #hdr con 900, así que el panel —que
   ocupa todo el alto y la franja derecha— tapaba el botón. Y como .menu-toggle
   vive dentro de #hdr, subirle el z-index a él no sirve: no puede salirse del
   contexto de apilamiento que crea su padre. Hay que subir el encabezado.
   El panel ya traía padding-top:80px, pensado para dejar el aspa a la vista;
   como el encabezado mide 96px, se lo lleva a la altura real más aire. */
@media (max-width:1080px){
  #hdr{z-index:960}
  .mobile-menu{padding-top:calc(var(--hh) + 18px)}
}

/* Ficha de salida en pantallas de 320px · auditoría 2026-08-26.
   Dos bloques de la pestaña "Tarifas y condiciones" declaran columnas con ancho
   fijo y no caben en una pantalla angosta:

   .price-hero      grid de 125px + 22 de gap + 119px + 48 de padding = 314px
                    mínimos dentro de una caja de 248. Se salía 10px: cortaba el
                    "USD" de la tarifa y la mitad del cartel de lugares.
   .cancel-timeline tres columnas de 83,7px + 24 de gaps = 275 dentro de 213.
                    El tercer tramo de la política de cancelación quedaba afuera.

   De 340px para arriba los dos entran bien, así que la regla se limita a lo
   angosto y apila. */
@media (max-width:340px){
  .price-hero{grid-template-columns:1fr;gap:12px;padding:16px}
  .cancel-timeline{grid-template-columns:1fr;gap:10px}
}

/* Texto por debajo del mínimo legible · auditoría 2026-08-26.
   iOS y Android toman 11px como piso para texto incidental. En las tarjetas del
   catálogo había cuatro rótulos por debajo: el sello de garantía a 8px en
   celular (9 en escritorio), el cartel de lugares a 8,5, la línea de impuestos a
   9 y la etiqueta de región a 10. Suben a 11.
   Los paddings quedan como estaban: agrandar las cápsulas arriesga cortes en
   pantallas angostas, y lo que hace falta acá es leer, no que ocupen más. */
.card-guarantee-tag{font-size:11px}
.card-region-tag{font-size:11px}
.dep-row .dep-tax{font-size:11px}
.dep-row .seats-badge{font-size:11px}
.dep-row .dep-price-block .seats-badge{font-size:11px}

@media (max-width:480px){
  .card-guarantee-tag{font-size:11px}
}

/* El sello lleva white-space:nowrap y max-width:calc(100% - 24px). En una
   tarjeta de 204px —lo que da una pantalla de 320— "GRUPAL · ACOMPAÑADA ·
   GARANTIZADA" necesita 209px a 10px de fuente y la tarjeta lo recorta. Se le
   permite pasar a dos renglones: prefiero dos líneas legibles antes que una
   sola a 8px, o media frase cortada. */
@media (max-width:360px){
  .card-guarantee-tag{white-space:normal;line-height:1.3;max-width:calc(100% - 20px)}
}

/* La cápsula de lugares quedaba más angosta que su propio texto (caja 101,
   contenido 112): el fondo redondeado terminaba antes que el signo final, y
   "¡2 LUGARES!" salía pisando el borde. No es que le falte ancho propio: la fila
   de la fecha no tiene más lugar para darle, así que agrandarla empujaría al
   precio. Se recupera el espacio por dentro — sin interletrado y con dos píxeles
   menos de padding a cada lado alcanza para que el texto entre a 11px. */
.dep-row .seats-badge,
.dep-row .dep-price-block .seats-badge{letter-spacing:0;padding:2px 5px}

/* El botón "Ver detalle completo" se cortaba al dar vuelta la tarjeta.
   auditoría 2026-08-26.

   .pkg-card tiene altura FIJA (400px en escritorio, 360 entre 561 y 768) y
   .card-back lleva overflow:hidden. El dorso de las salidas con más contenido
   —dos fechas, ruta larga y título de dos renglones— necesita 428px en
   escritorio y 401 en tablet, así que el botón, que es lo último de la columna,
   quedaba partido por el borde inferior: se veía el 65% en escritorio y apenas
   el 26% en tablet. En celular no pasa porque el giro está desactivado
   (@media hover:hover and pointer:fine) y ahí la tarjeta ya es de alto
   automático.

   Dos cambios. El primero resuelve lo de hoy: la tarjeta crece hasta que el
   dorso más alto entra entero. El segundo evita que vuelva a pasar mañana con
   una salida nueva de ruta más larga: el botón se ancla abajo y es la lista de
   fechas la que cede espacio, no él. Entre quedarse sin ver la tercera fecha y
   quedarse sin el botón que lleva a la ficha completa, prefiero lo primero. */
@media (min-width:769px){
  .pkg-card{height:436px}
}
@media (min-width:561px) and (max-width:768px){
  .pkg-card{height:410px}
}

.card-back .cb-cta{margin-top:auto;flex:0 0 auto}
.card-back .cb-dates{min-height:0!important;flex:0 1 auto;overflow:hidden!important}

/* Contraste del encabezado · auditoría 2026-08-26.
   La corrección de contraste del 11-ago metió .nlink.active y .usd-pill en el
   grupo de "fondo claro" y les puso --teal-text (#00706A). Pero esos dos viven
   en la franja negra del encabezado, no sobre blanco: ahí el teal oscuro da
   3.15:1 donde hacen falta 4.5. El propio comentario de aquella corrección lo
   decía —"se deja intacta la franja oscura, donde el teal de marca da 5.91:1"—
   pero los selectores quedaron del lado equivocado de la lista.
   Se les devuelve el teal de marca, que sobre #121212 da 5.91:1. */
.nlink.active, .nlink.teal, .usd-pill{color:var(--teal)}

/* De dónde sale el grupo · pedido 2026-08-27.
   Dos lugares:
     · en la ficha, debajo del título y de los dos sellos garantizados
     · en el dorso de la tarjeta, en chico, debajo de cada fecha
   La agencia no tenía forma de saber si el vuelo salía de su ciudad sin abrir
   el itinerario y leer el día 1. */

/* ── En la ficha ──────────────────────────────────────────────────────────
   Cápsula al tono de los sellos de arriba, pero más discreta: es un dato, no
   una promesa comercial. El icono de ubicación va como pseudo-elemento para no
   tocar el HTML del modal más de lo necesario. */
.mhi-origin{
  display:inline-flex; align-items:center; gap:7px;
  margin-top:10px; padding:6px 13px;
  border:1px solid rgba(255,255,255,.28);
  border-radius:999px;
  background:rgba(0,0,0,.28);
  -webkit-backdrop-filter:blur(3px); backdrop-filter:blur(3px);
  font-family:"Montserrat",sans-serif;
  font-size:12.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase;
  color:#fff; line-height:1.25; text-shadow:0 1px 3px rgba(0,0,0,.5);
  max-width:100%;
}
.mhi-origin::before{
  content:""; flex:0 0 auto; width:13px; height:13px;
  background:currentColor;
  -webkit-mask:var(--icono-pin) center/contain no-repeat;
          mask:var(--icono-pin) center/contain no-repeat;
  opacity:.9;
}
:root{
  --icono-pin:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0z'/%3E%3Ccircle cx='12' cy='10' r='3'/%3E%3C/svg%3E");
}
@media (max-width:560px){
  .mhi-origin{ font-size:11px; padding:5px 11px; letter-spacing:.04em; }
}

/* ── En el dorso de la tarjeta ────────────────────────────────────────────
   .dep-row es flex; con flex-basis:100% la línea cae debajo de la fecha y el
   precio en vez de pelearles el ancho. */
.dep-row{ flex-wrap:wrap; }
.dep-origin{
  flex:0 0 100%;
  margin-top:5px; padding-top:5px;
  border-top:1px solid rgba(255,255,255,.10);
  font-size:11px; font-weight:600; letter-spacing:.02em;
  color:rgba(255,255,255,.62); line-height:1.3;
}
.dep-row.sold-out .dep-origin{ opacity:.55; }

/* Corrección · el origen debajo de cada fecha, no encima de ella.
   La regla anterior .dep-row{flex-wrap:nowrap!important} le ganaba a mi
   flex-wrap:wrap y el texto quedaba en el mismo renglón, montado sobre la fecha
   y el precio. Se le gana con un selector más específico, y solo en el dorso de
   la tarjeta, que es el único lugar donde esta línea existe. */
.card-back .dep-row{ flex-wrap:wrap !important; }
.card-back .dep-row .dep-origin{
  order:9;                 /* siempre último, después de fecha y precio */
  flex:0 0 100%;
  width:100%;
  margin-top:6px; padding-top:5px;
  border-top:1px solid rgba(255,255,255,.10);
  font-size:11px; font-weight:600; letter-spacing:.02em;
  color:rgba(255,255,255,.62); line-height:1.3;
  white-space:normal;
}

/* La línea del origen ya no vive dentro de .dep-row sino como hermana suya.
   .cb-dates es una columna flex, así que se apila debajo de la fila sola, sin
   depender del flex-wrap de la fila —que una corrección anterior fija en
   nowrap!important y no había forma limpia de ganarle. */
.card-back .dep-origin{
  display:block; width:100%;
  margin:-2px 0 4px; padding:0 12px;
  font-size:11px; font-weight:600; letter-spacing:.02em;
  color:rgba(255,255,255,.62); line-height:1.3;
  flex:0 0 auto;
}
.card-back .dep-origin::before{
  content:"↳"; margin-right:5px; opacity:.55; font-weight:400;
}
.card-back .dep-row.sold-out + .dep-origin{ opacity:.55; }

/* La línea "Salida desde …" suma un renglón por cada fecha del dorso, así que
   el dorso más alto —Maravillas de China, dos fechas y ruta larga— pasó de 428
   a 467px y el botón volvía a quedar cortado. Se sube la altura de la tarjeta.
   El ancla del botón (margin-top:auto) sigue puesta desde el 26-ago, así que si
   mañana una salida trae más contenido cede la lista de fechas, no el botón. */
@media (min-width:769px){
  .pkg-card{height:474px}
}
@media (min-width:561px) and (max-width:768px){
  .pkg-card{height:474px}
}

/* "Sale desde" un poco más marcado en la ficha · pedido 2026-08-27.
   Estaba en gris translúcido junto a dos sellos dorados y se perdía. Se le pone
   el teal de marca con fondo sólido —sobre foto, un fondo translúcido nunca
   garantiza contraste— borde propio y un punto más de cuerpo. Sigue por debajo
   de los sellos en jerarquía: es un dato, no una promesa comercial. */
.mhi-origin{
  background:rgba(1,122,114,.94) !important;
  border:1.5px solid rgba(91,232,222,.55) !important;
  box-shadow:0 2px 10px rgba(0,0,0,.35), 0 0 0 1px rgba(0,0,0,.18) !important;
  font-size:13.5px !important;
  font-weight:800 !important;
  letter-spacing:.07em !important;
  padding:7px 15px !important;
  color:#fff !important;
  text-shadow:0 1px 2px rgba(0,0,0,.45) !important;
}
.mhi-origin::before{
  width:15px !important; height:15px !important;
  opacity:1 !important;
  color:#5BE8DE !important;
  background:#5BE8DE !important;
}
@media (max-width:560px){
  .mhi-origin{ font-size:12px !important; padding:6px 12px !important; letter-spacing:.05em !important; }
  .mhi-origin::before{ width:13px !important; height:13px !important; }
}

/* ══════════════════════════════════════════════════════════════════════════
   REDISEÑO DE LAS TARJETAS DE SALIDA GRUPAL · Figma, 27-08-2026
   Clases nuevas con prefijo nc- a propósito: el CSS viejo de .card-front,
   .cb-* y .dep-row está lleno de !important de correcciones sucesivas y
   pelearle la cascada ya salió mal antes. Con nombres nuevos, ninguna regla
   vieja alcanza al marcado nuevo. Se conservan .pkg-card, .card-inner,
   .card-front y .card-back porque de ellos dependen el giro al pasar el cursor
   y el clic que abre la ficha.
   ══════════════════════════════════════════════════════════════════════════ */

:root{
  --nc-verde:#003936;
  --nc-verde-claro:#036962;
  --nc-rojo:#BF1212;
  --nc-radio:23px;
}

/* La tarjeta: el diseño la define en 301×475 (proporción 1 : 1,578). Acá el
   ancho lo pone la grilla, así que la altura se deriva con aspect-ratio para
   respetar la proporción en cualquier columna. */
/* Altura fija por punto de quiebre, no aspect-ratio: .card-inner y .card-back
   se dimensionan con height:100% y ese porcentaje no resuelve contra un alto
   derivado de aspect-ratio. La proporción del diseño (301x475 = 0,634) se
   respeta con los valores de abajo para el ancho de columna de cada rango. */
.pkg-card{
  border-radius:var(--nc-radio) !important;
  overflow:visible;
}
@media (min-width:769px){ .pkg-card{ height:474px; } }
@media (min-width:561px) and (max-width:768px){ .pkg-card{ height:474px; } }
@media (max-width:560px){ .pkg-card{ height:auto; min-height:470px; } }
.pkg-card .card-inner{ border-radius:var(--nc-radio); }
.card-front.nc-front, .card-back.nc-back{
  border-radius:var(--nc-radio) !important;
  overflow:hidden;
}

/* ── FRENTE ─────────────────────────────────────────────────────────────── */
.nc-front{ background:var(--nc-verde) !important; }
.nc-front .card-front-bg{
  position:absolute; inset:0;
  background-size:cover; background-position:center;
  border-radius:var(--nc-radio);
}
.nc-front-ovl{
  position:absolute; inset:0; border-radius:var(--nc-radio);
  background:linear-gradient(180deg, rgba(0,57,54,0) 0%, rgba(0,57,54,.5) 100%);
  pointer-events:none;
}
/* Pastilla de región, arriba a la derecha */
.nc-region{
  position:absolute; top:10px; right:9px; z-index:3;
  display:inline-flex; align-items:center; justify-content:center;
  min-height:27px; padding:6px 14px;
  background:rgba(255,255,255,.5);
  border:1px solid var(--nc-verde);
  border-radius:50px;
  -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  font-family:"Montserrat",sans-serif; font-weight:700; font-size:12px; line-height:15px;
  letter-spacing:-.05em; text-transform:uppercase; text-align:center;
  color:var(--nc-verde);
}
/* Nombre de la salida, apoyado sobre la base del bloque */
.nc-front-name{
  position:absolute; left:18px; right:18px; bottom:78px; z-index:2;
  display:flex; align-items:flex-end;
  font-family:"Bricolage Grotesque","Montserrat",sans-serif;
  font-weight:800; font-size:24px; line-height:25px; letter-spacing:-.07em;
  color:#fff; text-shadow:0 2px 10px rgba(0,0,0,.35);
}
/* ── DORSO ──────────────────────────────────────────────────────────────── */
.nc-back{
  background:linear-gradient(180deg, var(--nc-verde) 0%, var(--nc-verde-claro) 100%) !important;
  display:flex; flex-direction:column;
  padding:17px 18px 18px !important;
  height:100%;
  color:#fff;
}
.nc-back::before{ content:none; }
.nc-nights{
  align-self:flex-end;
  display:inline-flex; align-items:center; justify-content:center;
  min-height:27px; padding:6px 14px; margin-bottom:6px;
  border:1px solid #fff; border-radius:50px;
  font-family:"Montserrat",sans-serif; font-weight:400; font-size:12px; line-height:15px;
  letter-spacing:-.05em; text-transform:uppercase; color:#fff; white-space:nowrap;
}
.nc-back-title{
  font-family:"Bricolage Grotesque","Montserrat",sans-serif;
  font-weight:800; font-size:24px; line-height:25px; letter-spacing:-.07em;
  color:#fff; margin:0 0 8px;
  display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.nc-back-route{
  font-family:"Montserrat",sans-serif; font-weight:400; font-size:12px; line-height:15px;
  letter-spacing:-.05em; color:#fff; opacity:.92; margin:0 0 10px;
  display:-webkit-box; -webkit-line-clamp:2; line-clamp:2; -webkit-box-orient:vertical; overflow:hidden;
}
.nc-rule{ height:1px; background:rgba(255,255,255,.85); margin:0 0 7px; flex:0 0 auto; }
.nc-salidas-row{
  display:flex; align-items:baseline; justify-content:space-between; gap:10px;
  margin:0 0 9px; flex:0 0 auto;
}
.nc-salidas{
  font-family:"Montserrat",sans-serif; font-weight:700; font-size:12px; line-height:15px;
  letter-spacing:-.05em; text-transform:uppercase; color:#fff; white-space:nowrap;
}
.nc-desde{
  font-family:"Montserrat",sans-serif; font-style:italic; font-weight:300;
  font-size:10px; line-height:12px; letter-spacing:-.09em; text-align:right;
  color:#fff; opacity:.95; min-width:0;
}
.nc-deps{ display:flex; flex-direction:column; gap:10px; flex:1 1 auto; min-height:0; overflow:hidden; }

/* ── Bloque de fecha + tarifa ───────────────────────────────────────────── */
.nc-dep{
  position:relative;
  background:rgba(245,247,245,.24);
  border-radius:12px;
  padding:13px 7px 6px;
  display:flex; flex-direction:column; align-items:center; gap:11px;
  flex:0 0 auto;
}
/* la marquita vertical del diseño, a la izquierda */
.nc-dep-line{
  position:absolute; left:12px; top:15px;
  width:1px; height:17px; background:#fff; opacity:.9;
}
.nc-dep-top{ display:flex; align-items:center; gap:16px; width:100%; padding:0 7px; }
.nc-dep-when{ display:flex; flex-direction:column; align-items:flex-start; gap:2px; flex:1 1 auto; min-width:0; }
.nc-dep-day{
  font-family:"Montserrat",sans-serif; font-weight:700; font-size:16px; line-height:20px;
  letter-spacing:-.05em; color:#fff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%;
}
.nc-dep-year{
  font-family:"Montserrat",sans-serif; font-style:italic; font-weight:300;
  font-size:13px; line-height:16px; letter-spacing:-.09em; color:#fff; opacity:.95;
}
.nc-dep-price{ display:flex; flex-direction:column; align-items:flex-end; gap:3px; flex:0 0 auto; }
.nc-dep-usd{
  font-family:"Montserrat",sans-serif; font-weight:700; font-size:16px; line-height:20px;
  letter-spacing:-.05em; text-align:right; color:#fff; white-space:nowrap;
}
.nc-dep-tax{
  font-family:"Montserrat",sans-serif; font-style:italic; font-weight:300;
  font-size:12px; line-height:15px; letter-spacing:-.05em; text-align:right;
  color:#fff; opacity:.95; white-space:nowrap;
}
.nc-dep-seats{
  width:100%; min-height:21px; padding:4px 10px;
  display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.24); border-radius:50px;
  font-family:"Montserrat",sans-serif; font-weight:700; font-size:10px; line-height:12px;
  letter-spacing:-.05em; text-transform:uppercase; text-align:center; color:#fff;
}
/* Agotada: el diseño la pinta entera en rojo */
.nc-dep--out{ background:rgba(191,18,18,.28); }
.nc-dep--out .nc-dep-line{ background:var(--nc-rojo); opacity:1; }
.nc-dep--out .nc-dep-day,
.nc-dep--out .nc-dep-year,
.nc-dep--out .nc-dep-usd,
.nc-dep--out .nc-dep-tax{ color:#FF6B6B; }
.nc-dep--out .nc-dep-seats{ background:rgba(191,18,18,.45); color:#FFC9C9; }

/* ── Pastilla "ver detalle" ─────────────────────────────────────────────── */
.nc-cta{
  display:flex; align-items:center; justify-content:center; gap:5px;
  min-height:34px; padding:7px 16px;
  border:1px solid #fff; border-radius:50px;
  font-family:"Montserrat",sans-serif; font-weight:500; font-size:12px; line-height:15px;
  letter-spacing:-.05em; text-transform:uppercase; color:#fff;
  transition:background-color .2s, color .2s;
}
.nc-cta .nc-arrow{ width:19.5px; height:10px; flex:0 0 auto; }
.nc-cta--front{ position:absolute; left:10px; right:9px; bottom:15px; z-index:3;
  background:rgba(0,57,54,.35); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); }
.nc-cta--back{ margin-top:auto; flex:0 0 auto; }
.pkg-card:hover .nc-cta--back,
.pkg-card:focus-within .nc-cta--back{ background:rgba(255,255,255,.14); }

/* ── Pantallas chicas ───────────────────────────────────────────────────── */
@media (max-width:560px){
  .nc-front-name, .nc-back-title{ font-size:22px; line-height:23px; }
  .nc-dep-day, .nc-dep-usd{ font-size:15px; line-height:19px; }
  .nc-back{ padding:15px 15px 16px; }
}

/* Color según cuántos lugares quedan · pedido 2026-08-27.
   Amarillo cuando quedan pocos, verde cuando hay margen. El corte en 8 no es
   inventado: es el mismo que usaba seatsBadge para su estado "bajo", así que
   cambia el color pero no el criterio con el que la agencia venía leyendo la
   tarjeta. Es un solo número en el bundle si querés moverlo.
   Texto oscuro sobre color sólido y no color sobre translúcido: sobre el
   degradado teal del dorso, un fondo translúcido no garantiza contraste. */
.nc-dep-seats.nc-seats--pocos{
  background:#FBBF24;
  color:#3B2A05;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);
}
.nc-dep-seats.nc-seats--muchos{
  background:#22C55E;
  color:#04240F;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.12);
}
.nc-dep-seats.nc-seats--neutro{
  background:rgba(255,255,255,.24);
  color:#fff;
}
/* La agotada la sigue definiendo el bloque entero en rojo, como en el diseño. */
.nc-dep--out .nc-dep-seats{ background:rgba(191,18,18,.45); color:#FFC9C9; box-shadow:none; }

/* La pastilla de AGOTADA quedaba en 4,36:1 —por debajo de AA— y translúcida,
   desentonando con las de pocos/muchos que ahora son sólidas. Va con el rojo
   del diseño (#BF1212) y texto blanco: 7,16:1. */
.nc-dep--out .nc-dep-seats{
  background:#BF1212;
  color:#fff;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.18);
}

/* El sello de salida garantizada vuelve al frente · 27-08-2026.
   No estaba en el Figma y lo había sacado; se repone en el lenguaje del diseño
   nuevo, no con el estilo viejo.

   Va en su propia fila debajo de la pastilla de región y no al lado: "GRUPAL ·
   ACOMPAÑADA · GARANTIZADA" necesita unos 215px y la región ya se lleva 110 de
   los 282 útiles, así que compartir renglón lo cortaría en las tarjetas
   angostas.

   Se invierte la paleta de la región —teal sólido con texto blanco, en vez de
   blanco con texto teal— para que las dos pastillas se lean como pareja sin
   confundirse entre sí. */
@media (max-width:560px){
}

/* Contraste del bloque agotado · medido sobre píxeles, 27-08-2026.
   El texto #FF6B6B sobre el bloque rojo translúcido compuesto contra el
   degradado teal da 3,98:1, por debajo del 4,5 de AA. Con #FFA8A8 sube a 5,7:1
   y sigue leyéndose como rojo. El bloque normal ya pasaba (blanco a 5,15:1);
   ese lo marcaba mi chequeo por comparar contra la capa translúcida en vez de
   contra el color que realmente se ve. */
.nc-dep--out .nc-dep-day,
.nc-dep--out .nc-dep-year,
.nc-dep--out .nc-dep-usd,
.nc-dep--out .nc-dep-tax{ color:#FFA8A8; }

/* Prefijos -webkit- para Safari · auditoría 2026-09-01.

   El giro de la tarjeta se apoya en transform-style:preserve-3d y en
   backface-visibility:hidden. Safari soporta backface-visibility sin prefijo
   recién desde la 15.4, y su implementación de preserve-3d se apoya en el
   prefijo: sin ellos, el contexto 3D colapsa a plano y en un iPhone se ve la
   cara de atrás asomando sobre la foto, o las dos superpuestas. Es lo que se
   lee como "la imagen no funciona bien".

   backdrop-filter sin prefijo recién anda en Safari 18: hasta ahí, ocho
   elementos pierden el desenfoque y quedan translúcidos sobre la foto. */
.pkg-card .card-inner{
  -webkit-transform-style:preserve-3d;
  transform-style:preserve-3d;
}
.pkg-card .card-front, .pkg-card .card-back{
  -webkit-backface-visibility:hidden;
  backface-visibility:hidden;
}
.hero-badge, #overlay, .gal-nav, #lightbox, #lightbox .lb-close,
.modal-newtab, .hero-motion-toggle, #vidLightbox{
  -webkit-backdrop-filter:blur(6px);
}
#lightbox{ -webkit-backdrop-filter:blur(8px); }
.hero-badge{ -webkit-backdrop-filter:blur(2px); }
#overlay, .gal-nav, .modal-newtab, .hero-motion-toggle{ -webkit-backdrop-filter:blur(4px); }

/* Alto real de la ventana en iPhone · auditoría 2026-09-01.
   100vh en Safari de iOS mide la ventana sin la barra de direcciones, así que
   lo que se declara a 100vh queda más alto que lo que se ve y su base se
   esconde. 100dvh sí sigue a la barra. Se declara primero el vh como respaldo
   para navegadores viejos y después el dvh, que gana donde exista. */
#hero{ height:100vh; height:100dvh; }
#overlay .modal-frame{ max-height:calc(100vh - 16px); max-height:calc(100dvh - 16px); }

/* El notch y la barra de gestos · el meta viewport declara viewport-fit=cover,
   que lleva el contenido hasta el borde físico de la pantalla. Eso está bien
   para la foto del hero, pero deja los elementos fijos debajo del recorte: en
   un iPhone con notch el encabezado se mete abajo de la muesca y el botón de
   WhatsApp abajo de la barra de gestos. Se compensa solo lo fijo; en pantallas
   sin recorte, env() vale 0 y no cambia nada. */
#hdr{ padding-top:env(safe-area-inset-top, 0px); height:calc(var(--hh) + env(safe-area-inset-top, 0px)); }
.mobile-menu{ padding-top:calc(var(--hh) + 18px + env(safe-area-inset-top, 0px));
              padding-bottom:calc(30px + env(safe-area-inset-bottom, 0px)); }
.footer-bottom{ padding-bottom:calc(84px + env(safe-area-inset-bottom, 0px)); }
@media (min-width:769px){ .footer-bottom{ padding-bottom:env(safe-area-inset-bottom, 0px); } }

/* El hero, de borde a borde en el teléfono · auditoría 2026-09-01.
   Una regla general —section{padding:0 14px !important} por debajo de 560px—
   también alcanza al hero, que va a sangre. El resultado son dos franjas claras
   de 14px a los costados del video en todos los teléfonos. Se compensan con
   márgenes negativos exactos en vez de pelearle el !important a la regla
   general, que existe por algo para el resto de las secciones. */
@media (max-width:560px){
  #hero{ margin-left:-14px; margin-right:-14px; width:calc(100% + 28px); }
}

/* Fondo del hero para Safari anterior a la 17.
   Se declaraba solo con image-set(url(...) type("image/avif"), ...). El
   descriptor type() dentro de image-set recién existe en Safari 17: antes, la
   declaración ENTERA es inválida y el hero se queda con el color liso, o sea un
   rectángulo oscuro donde va la foto. Se antepone un background-image simple en
   jpg —que entiende cualquier navegador— y el image-set de abajo lo pisa donde
   se lo soporte. El orden importa: primero el respaldo, después lo moderno. */
#hero{
  background-image:url(img/hero-fallback-768w.jpg);
  background-image:image-set(url(img/hero-fallback-1280w.avif) type("image/avif"),
                             url(img/hero-fallback-768w.jpg) type("image/jpeg"));
}


/* ── Pantallas de 345px o menos · 2026-09-01 ────────────────────────────────
   La tarjeta se cortaba 25px por la derecha en un iPhone SE (320px): el ancho
   de 287px que viene del diseño de Figma actuaba como piso —un item de grid
   trae min-width:auto, así que la pista de 1fr no podía achicarse por debajo
   del contenido— y encima la cadena de rellenos (view 14 + section 14 +
   section-in 18 + grid 12 = 58 por lado) se comía 116 de los 320. El corte
   empezaba justo por debajo de 345px, de ahí el tope.
   No se toca nada por encima: a 360px la tarjeta sigue midiendo sus 287px. */
@media (max-width:345px){
  .view-home .section-in{ padding-left:6px !important; padding-right:6px !important; }
  .pkg-grid{ grid-template-columns:minmax(0,1fr) !important; padding:0 !important; }
  .pkg-card{ min-width:0; max-width:287px; margin-inline:auto; }

  /* Con la tarjeta más angosta, la fecha se comía en puntos suspensivos
     ("20 SEPTIEMBRE" -> "20 SEPTIEMB..."). Estos tres ajustes liberan los
     30px que hacían falta adentro del dorso; nada se recorta. */
  .nc-back{ padding-left:13px; padding-right:13px; }
  .nc-dep{ padding-left:5px; padding-right:5px; }
  .nc-dep-top{ gap:8px; padding:0 3px; }
}


/* ══ ADENTRO DE LA FICHA · auditoría del 2026-09-01 ═════════════════════════
   Se midieron las 18 salidas × 6 pestañas × 3 anchos (324 paneles). Lo que
   sigue arregla lo que esa medición encontró. Cada bloque dice qué pasaba. */

/* 1 · Tablas de "Hotelería y Vuelos".
   Eran <table display:block; overflow-x:auto> con las celdas en nowrap. Al ser
   display:block la tabla dejaba de repartir columnas y las filas se salían de
   su propia caja; en un teléfono el nombre del hotel quedaba cortado a mitad
   de palabra ("Casona Plaza Ecolodge Co…") y el único indicio de que había más
   era una barra de 6 px que iOS ni dibuja. 13 de las 18 salidas estaban así.
   Ahora la tabla vuelve a ser tabla y quien scrollea es el contenedor. */
.tabla-scroll{
  position:relative;
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  border:1px solid var(--gray-line);
  border-radius:8px;
  margin:8px 0 18px;
}
.tabla-scroll .info-table{
  display:table !important;
  width:100%;
  margin:0;
  border:0;
  border-radius:0;
}
/* El aviso: una sombra en el borde derecho, y sólo cuando queda contenido.
   La pinta el script del bundle poniendo .hay-mas; si la tabla entra, no
   aparece nada. */
.tabla-scroll::after{
  content:"";
  position:absolute; top:0; right:0; bottom:0; width:34px;
  background:linear-gradient(to left, rgba(0,0,0,.14), rgba(0,0,0,0));
  opacity:0; transition:opacity .18s ease;
  pointer-events:none;
}
.tabla-scroll.hay-mas::after{ opacity:1; }
.tabla-scroll::-webkit-scrollbar{ height:8px; }
.tabla-scroll::-webkit-scrollbar-thumb{ background:#01a298; border-radius:4px; }

/* 2 · Texto de la ficha por debajo de 12 px.
   El encabezado de las tablas estaba en 10 px y las celdas en 11. Medido sobre
   las 18 salidas eran 1.250 nodos por debajo de 12 px sólo en móvil. */
.info-table{ font-size:12px !important; }
.info-table th{ font-size:12px; }
.info-table th,.info-table td{ padding:8px 10px !important; }
.itin-day-body .itin-meals-lbl{ font-size:12px; }
.seats-badge{ font-size:12px; }
.price-hero .ph-seats .seats-badge{ font-size:12px; }

/* 3 · El nombre del hotel: era un enlace de 16 px de alto, imposible de
   acertar con el dedo, y encima en 11 px. Con esto queda en 12,5 px y ~30 px
   de alto de área tocable, por encima del mínimo de 24×24 de la WCAG 2.5.8. */
.hotel-link{
  display:inline-block;
  padding:7px 2px;
  font-size:12.5px;
  line-height:1.25;
  /* El punteado venía de un border-bottom: al pasar a inline-block quedaba
     despegado del texto y ocupando todo el ancho de la caja. Subrayado de
     texto: se pega a las palabras y respeta los renglones. */
  border-bottom:0;
  text-decoration:underline dotted;
  text-underline-offset:3px;
  text-decoration-thickness:1px;
}
.hotel-link:hover{ border-bottom:0; text-decoration:underline dotted; }

/* 4 · En pantallas chicas el nombre del hotel envuelve en vez de obligar a
   scrollear. Con esto la tabla de hoteles entra entera; la de vuelos, que
   tiene cinco columnas, sigue scrolleando pero ahora se nota. */
@media (max-width:560px){
  .tabla-scroll .info-table td{ white-space:normal !important; }
  .tabla-scroll .info-table th{ white-space:nowrap; }
  .tabla-scroll .info-table td:first-child{ min-width:88px; }
}

/* 5 · El precio partido en dos renglones.
   A 390 px "U$D 2.190" caía como "U$D" / "2.190" y la cápsula de lugares se
   salía 16 px de la tarjeta. La grilla de dos columnas no daba de sí: pasa a
   una sola columna, que es donde el precio entra completo. Antes esto sólo
   ocurría por debajo de 340 px. */
@media (max-width:560px){
  .price-hero{ grid-template-columns:1fr; gap:14px; padding:18px 16px; }
  .price-hero .ph-price-info{ align-items:flex-start; }
  .price-hero .ph-price{ white-space:nowrap; }
  .price-hero .ph-seats{ margin-top:12px; }
  /* El bloque de la fecha traía una línea vertical a la derecha para separarlo
     de la columna del precio. En una sola columna esa línea queda flotando al
     costado, separando nada; y su centrado descolocaba la fecha respecto del
     resto, que va alineado a la izquierda. */
  .ph-date-block{
    flex-direction:row; align-items:center; gap:10px;
    padding-right:0; border-right:0;
    padding-bottom:12px; border-bottom:1px solid #e2e8f0;
  }
  .ph-date{ text-align:left; }
}

/* 6 · Los puntitos del carrusel de la galería medían 8×8 px (24×14 el activo).
   Se les da un área tocable de 40×40 sin cambiar en nada cómo se ven. */
.gal-dot{ position:relative; }
/* Ojo con el ancho: los puntitos están a 14 px de distancia entre centros. Un
   área de 40 px de ancho se monta sobre la del vecino y, como los hermanos
   posteriores se pintan encima, tocar el punto 6 activaba el 7. El alto sí se
   agranda libremente; a lo ancho el área llega hasta la mitad del espacio que
   los separa, y en pantallas táctiles el punto en sí crece. */
.gal-dot::after{
  content:""; position:absolute; top:50%; left:-3px; right:-3px;
  height:40px; transform:translateY(-50%);
}
@media (pointer:coarse){
  .gal-dots{ gap:14px; }
  .gal-dot{ width:12px; height:12px; }
  .gal-dot.active{ width:26px; }
  .gal-dot::after{ left:-7px; right:-7px; }
}

/* 7 · La política de cancelación en móvil estaba en 11,5 px. */
@media (max-width:768px){
  .cancel-step-pct{ font-size:12px; }
}


/* ══ RESTO DEL SITIO · revisión 2026-09-02 ═══════════════════════════════════
   Recorrido de las 7 secciones (home, individuales, contacto, autogestión,
   alta de clientes, partner, administración) en 5 anchos. No había nada roto:
   0 errores de JS, 0 recursos caídos, 0 imágenes rotas y ninguna página que
   scrollee de costado. Lo que sí apareció fue texto por debajo de 12 px en las
   siete secciones y unos enlaces difíciles de acertar con el dedo. */

/* 1 · Tarjetas del home, todas del mismo ancho por debajo de 345 px.
   Cinco de las dieciocho quedaban entre 3 y 15 px más anchas que el resto: la
   pista de la grilla mide 252 px y esas cinco no bajaban de su min-content. Con
   width:100% se emparejan, pero entonces la fecha más larga ("20 SEPTIEMBRE")
   se comía 14 px en puntos suspensivos; los 4 px por lado que se recuperan acá
   adentro alcanzan para que no se corte ninguna. */
@media (max-width:345px){
  .pkg-card{ width:100%; }
  .nc-back{ padding-left:11px; padding-right:11px; }
  .nc-dep-top{ gap:6px; padding:0 2px; }
  /* "20 SEPTIEMBRE" seguía pidiendo 10 px más que los que quedan. Un punto
     menos de cuerpo, sólo en iPhone SE, y entra entera. */
  .nc-dep-day{ font-size:13.5px; }
  .nc-dep{ padding-left:4px; padding-right:4px; }
}

/* 2 · La franja de marca del home tenía min-width:240px sobre un contenedor de
   190 px: en un iPhone SE el bloque se salía 50 px de su caja. */
.why-brand-text{ min-width:0; }

/* 3 · Piso de 12 px en todo el sitio.
   Las etiquetas de los formularios eran las más delicadas: quien da de alta una
   agencia tiene que leer "Constancia de CUIT e IIBB" en 10,5 px. */
.field label,
.field label span,
.fieldset-title,
.page-eyebrow span,
.platform-eyebrow span,
.alta-step-lbl span,
.why-divider span,
.ptn-card-docs,
.platform-stat-lbl,
.staff-act,
.staff-emergency-lbl,
.pr-num,
.rtab,
.rtab-n,
.mtab-month,
.why-badge,
.hero-cta,
.hero-cta--bottom{ font-size:12px; }

/* La etiqueta de área va sobre la foto del asesor, en una cápsula chica: 11 px
   es lo que entra sin taparle la cara. */
.staff-area-tag{ font-size:11px; }

/* 4 · Enlaces que hacían de botón pero medían 16–22 px de alto. Con esto pasan
   de 32, bastante por encima del mínimo de 24×24 de la WCAG 2.5.8. */
.adm-cta,
.ptn-back,
.ptn-head-web,
.staff-emergency-top a{ padding-top:7px; padding-bottom:7px; }

/* 5 · El dorso de la tarjeta traía 10 px del diseño de Figma en la cápsula de
   lugares y en "Desde ...". Se comprobó que a 12 px no se corta ni se sale
   nada, en 1440, 390 y 320 px. */
.nc-dep-seats{ font-size:12px; }
.nc-desde{ font-size:12px; }

/* 6 · "Ingresar tu CV" es un <button> y no tomó el relleno de los <a> de al
   lado: quedaba en 30 px de alto contra los 32 del resto. */
button.adm-cta{ padding-top:8px; padding-bottom:8px; }

/* 7 · La etiqueta de área del asesor: 11 px era mi propio piso improvisado.
   Comprobado que a 12 px sigue entrando en la cápsula sin taparle la cara. */
.staff-area-tag{ font-size:12px; }
